问题标签 [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.

0 投票
1 回答
537 浏览

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 不在乎?

0 投票
1 回答
89 浏览

machine-learning - SVM 内核的 O(n) 时间

尽管在 O(n^d) 维空间中工作,但我无法理解计算内核 K(x,z) 仅需要线性时间。请解释一下。我是 ML 的新手。 在此处输入图像描述

0 投票
0 回答
177 浏览

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 精度,后续问题将是如何避免这种数值不稳定性?

0 投票
1 回答
49 浏览

python - Sklearn 自定义内核给出了错误的决策函数

我已经成功实现了我自己的自定义线性内核,使用clf.predict. 但是,当我想使用clf.decision_function它时,它会为所有点提供恒定值。

这是自定义内核的代码:

现在将此内核用于小型线性训练集。

这给出了以下结果:

自定义线性内核的结果。

现在我想使用以下方法重现情节clf.decision_function

(!请注意,我在这里不小心切换了颜色!)

这给出了以下情节:

自定义内核的不断预测。

这是使用集成线性内核 (kernel="linear") 绘制相同数据的示例: 工作决策函数使用

由于自定义内核的预测函数刚刚起作用,它应该与这里的决策函数给出相同的工作图,对吧?我不知道为什么这适用于集成线性函数,但不适用于自定义线性函数,它也适用于仅预测没有决策函数的点。希望有人可以在这里提供帮助。

0 投票
0 回答
14 浏览

python - 我可以在 scikit 中平均内核吗?

我有一个 RBF 内核列表,每个内核都有不同的参数。有没有办法让我在 scikit 中获得这个列表的平均内核?

我发现我可以添加和乘以内核,但还没有弄清楚如何将它们除以常数。