请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

运用多项式核函数和直接使用多项式特征SVM结果差异

波波老师,我理解了核函数的思想:先不将x(i),x(j) 添加多项式特征转化为x’(i),x’(j), 再做乘法,而是直接对原来的两个样本进行数学运算,直接计算出x’(i),x’(j) 图片描述在这张图中,一直到这一步骤,多项式核函数和先多项式转换数据再SVM应该是一样的吧?您在视频中说应用核函数技巧,省去对原数据先进性变形,再对变形后的结果点乘的运算步骤,但是不使用核函数其实可以达到等价效果,那么为什么代码实现的时候,最终观察到的决策边界图案是有区别的呢 ?
![图片描述
使用多项式核函数的决策边界

图片描述
PolynomialFeatures预处理的决策边界

正在回答

插入代码

1回答

我试验了一下,这里的关键其实是 C。因为 sklearn 的 SVC 必须包含 C 这个参数,即正则化项的比重。但是,对于 C 来说,原来样本的特征数很重要。


如果先使用多项式特征的话,C 控制的,就是多项式化以后各个特征的 soft margin;而如果直接使用多项式核函数,C 控制的,还是原特征的 soft margin。


另外一个区别在于归一化过程。先使用多项式特征以后,就可以将这些多项式特征进行归一化后,再送给 linearSVM;但是,如果使用多项式核,其实这些多项式特征没有进行归一化。转化成多项式特征的过程,变成了运算的一部分。具体可以参考这里:https://coding.imooc.com/learn/questiondetail/147686.html 


由于这些区别,所以,这两个方式得到的决策边界不同。但是,这两个结果,其实都是将原特征,映射到多维特征以后,尝试进行 SVM,得到的结果。


其实,在使用 SVM 算法的时候,多项式核使用的很少,主要集中在使用 RBF 核。你要不提,我都没有特别注意这个问题。这一节主要是使用多项式核来说明核函数的原理。对于 SVM 算法来说,在大多数情况,都是使用RBF 核的。


如果非要使用多项式特征 + SVM 的话,哪种方式好?通过你的绘图(我也试验了一下),我个人认为你,SVM + 多项式核泛化能力更好,更不容易过拟合。所以,如果不肯定特征和结果之间存在多项式关系,只是调参实验的话,SVM + 多项式核 更好;如果比较肯定特征和结果之间存在多项式关系的话,先进行一下多项式特征更好。


也不妨可以将这两种方式当做超参数来处理:)


继续加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 Fastpengmi #1
    非常感谢波波老师解答!太细致了!
    回复 有任何疑惑可以回复我~ 2019-12-09 08:56:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信