非线性 SVM 的原始权重

Posted

技术标签:

【中文标题】非线性 SVM 的原始权重【英文标题】:Primal weights of non-linear SVM 【发布时间】:2012-03-16 13:27:21 【问题描述】:

我正在尝试不同种类的非线性内核并试图解释学习模型,这导致我提出以下问题:是否有一种通用方法可以获取类似的非线性支持向量机的原始权重这对于线性 SVM 来说是如何实现的(参见 related question)?

说,你有三个特征abc 和一个全子集/多项式内核的生成模型。有没有办法提取这些子集的原始权重,例如 a * ba^2


我已经尝试扩展线性内核的方法,您可以在其中为以下示例生成输出:

 a, b, c
[0, 0, 0]
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]

如果我对所有子集内核使用相同的方法,我可以生成更多样本:

 a, b, c
[1, 1, 0]
[1, 0, 1]
...

接下来,为了计算a * b 的原始权重,我将预测分析如下:[1, 1, 0] - ([1, 0, 0] + [0, 1, 0] + [0, 0, 0])

我看到的问题是它需要大量的样本,不能解决a^2 等子集,也不能推广到其他非线性内核。

【问题讨论】:

【参考方案1】:

提取显式特征的权重通常在计算上不可行,但原像是一个不错的次优方案:生成样本 z,使其特征对应于您的权重'在追求。

这可以正式描述为找到 z 使得 phi(z) = w,权重隐式定义为训练样本的组合,这与内核技巧一样:w=sum_i(alpha_i * phi(x_i) )。 phi 是特征图。

一般来说,不存在精确的原像,大多数方法会找到最小化平方误差的原像。

对高斯核原像的经典高斯-牛顿迭代以及基于 KPCA 的另一种更一般的方法的一个很好的描述如下:

James T. Kwok、Ivor W. Tsang,“内核方法中的前映像问题”,ICML 2003

直接链接:http://machinelearning.wustl.edu/mlpapers/paper_files/icml2003_KwokT03a.pdf

【讨论】:

【参考方案2】:

没有。我并不声称自己是这方面的终极专家,但我已经对 SVM 进行了大量阅读和研究,我认为你所说的不可能。当然,在二次多项式内核的情况下,如果属性的数量非常少,您可以枚举内核诱导的特征空间。对于高阶多项式内核和大量属性,这很快变得难以处理。

非线性 SVM 的强大之处在于它能够引入特征空间,而无需在该空间中进行计算,实际上无需知道该特征空间是什么。有些内核甚至可以诱导出无限维的特征空间。

如果您回顾您的问题,您可以看到部分问题 - 您正在寻找 primal 权重。但是,内核是以 dual 形式引入的,其中数据显示为点积。在数学上逆转这个过程将涉及将核函数分开——知道从输入空间到特征空间的映射函数。内核函数的强大正是因为我们不需要知道这个映射。当然对于线性核也可以,因为没有用到映射函数。

【讨论】:

我有一半期望答案是“不”。但是,从您的回答看来,如果从高维内核空间到低维特征空间的映射是已知的,这听起来是可能的。这给了我一些需要调查的东西。谢谢,karenu! 是的,你没有理由不能创建自己的映射函数 - 缺点是你必须在更高维度上执行点积来求解 SVM,你会不再具有“内核技巧”的优势。但是,那里有很多创新的内核方法,也许有一种具有您正在寻找的属性,我不知道。您必须深入了解优化理论和内核方法。

以上是关于非线性 SVM 的原始权重的主要内容,如果未能解决你的问题,请参考以下文章

Matlab-libsvm - 从原始权重向量、线性核再现决策值

逻辑回归和SVM的区别是啥?各适用于解决啥问题

Svm相关

怎么从通俗意义上理解逻辑回归的损失函数

在 sklearn 或任何 python 库中确定对非线性 SVM 回归贡献最大的特征

SVM-核函数