我在尝试不同的非线性核函数,并试图解释所学习的模型,这引发了以下问题:是否存在一种通用的方法来获取非线性支持向量机的原始权重,类似于线性SVM中可以做到的那样(参见相关问题)?
假设你有三个特征a
、b
、c
,以及一个全子集/多项式核函数生成的模型。是否有办法提取这些子集的原始权重,例如a * b
和a^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
这样的子集,并且不能推广到其他非线性核函数。
回答:
不。我不自称是这方面的终极专家,但我已经做了很多关于SVM的阅读和研究,我认为你说的不可能实现。当然,对于二次多项式核函数,如果属性数量非常少,你可以枚举核函数诱导的特征空间。对于高阶多项式核函数和更多数量的属性,这很快就会变得难以处理。
非线性SVM的强大之处在于它能够诱导特征空间,而无需在该空间中进行计算,实际上甚至不知道该特征空间是什么。一些核函数甚至可以诱导无限维的特征空间。
如果你回顾你的问题,你可以看到部分问题所在 – 你在寻找原始权重。然而,核函数是在对偶形式中引入的,数据以点积的形式出现。数学上逆转这个过程将涉及分解核函数 – 知道从输入空间到特征空间的映射函数。核函数之所以强大,正是因为我们不需要知道这个映射。当然,对于线性核函数可以做到,因为没有使用映射函数。