问题标签 [kernel-methods]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 对于具有预先计算的 Gram 矩阵的 SVM,是否需要将内核归一化到 0 和 1 之间?
我在 Python 中使用 Scikit-Learn 进行文本分类。我的分类器目前正在对所有内容做出错误的预测(我被愚弄了一段时间,因为当 75% 的标签为错误时,它报告“75% 的准确率”),所以我试图找出问题所在。
目前,我正在SVC(kernel='precomputed')
手动执行和计算 Gram 矩阵,然后将其传递给fit()
and predict()
。Gram 矩阵的入口 $G_{ij}$ 是内核 $K(d_i, d_j)$,其中 K 表示内核函数,d_i 是第 i 个文档。
对于我的核函数,Gram 矩阵项没有被归一化,即有些大于 1。我需要应用核归一化吗
让它在 0 和 1 之间?还是 SVM 不在乎?
python - 多项式内核不是PSD?
我目前正在低级学习不同的机器学习方法。由于多项式核
K(x,z)=(1+x^T*z)^d
是最常用的内核之一,我假设这个内核必须为一组固定的数据 {x1,...,xn} 产生一个正(半)定矩阵。但是,在我的实现中,情况似乎并非如此,如以下示例所示:
输出将是
我也得到了 d>2 的负特征值。我在这里完全误解了什么吗?或者多项式内核根本不是 PSD?
编辑:在以前的版本中,我曾经x=np.float32(np.random.uniform(0,1,5))
减少计算时间,这会导致更多的负特征值(我相信由于数值不稳定性,正如@user2357112 提到的)。我想这是一个很好的例子,说明精度很重要?由于负特征值仍然存在,即使对于 float64 精度,后续问题将是如何避免这种数值不稳定性?
python - Sklearn 自定义内核给出了错误的决策函数
我已经成功实现了我自己的自定义线性内核,使用clf.predict
. 但是,当我想使用clf.decision_function
它时,它会为所有点提供恒定值。
这是自定义内核的代码:
现在将此内核用于小型线性训练集。
这给出了以下结果:
现在我想使用以下方法重现情节clf.decision_function
:
(!请注意,我在这里不小心切换了颜色!)
这给出了以下情节:
这是使用集成线性内核 (kernel="linear") 绘制相同数据的示例:
由于自定义内核的预测函数刚刚起作用,它应该与这里的决策函数给出相同的工作图,对吧?我不知道为什么这适用于集成线性函数,但不适用于自定义线性函数,它也适用于仅预测没有决策函数的点。希望有人可以在这里提供帮助。
python - 我可以在 scikit 中平均内核吗?
我有一个 RBF 内核列表,每个内核都有不同的参数。有没有办法让我在 scikit 中获得这个列表的平均内核?
我发现我可以添加和乘以内核,但还没有弄清楚如何将它们除以常数。