机器学习技法(4)--Soft-Margin Support Vector Machine
即便是有了margin的控制,SVM还是会有overfit。
如果我们坚持严格地将数据分开,那我们就免不了连noise一起算进去,这样就产生了过拟合。
和之前pocket的算法类似,我们可以不那么坚持严格地分界线。我们可以容忍一些错误,退而求其次,找一条犯错误最小的分类线。
所以:
最佳化的式子前半部分代表找个越短越好的w,后半部分代表犯的错误越少越好。
C这个参数是margin和noise tolerance的trade off。
将式子整理以下:
目前解上面的式子有两个困难的地方:
布尔问题没有办法最佳化NP Hard;
没有办法衡量小错误和大错误。
为了解决错误大小的问题,引入新变量ξn用来记录错误,1–ξn用来记录错误的大小(1是我们想要的值)。这样的话,通过衡量错误的大小来替代True or False的布尔型最佳化问题。
C控制着我们的margin。
还是用拉格朗日对偶来解决:
通过对ξn做偏微分,进行第一步的简化:
于是得到,ξn也顺带着消除了:
继续简化,分别对b和w做偏微分:
得到:
继续用QP程序来解就行了。
soft的kernel:
和之前比较,q多了一些上限,b的算法可能不同了。
类比之前的b的解法(complementary slackness),也可以求解出b:
如果没有free SV的话,b就是一个范围而不是一个固定的解。
上图讲述了free SV和bounded SV的区别。
总结: