X Lab

Any sufficiently advanced technology is indistinguishable from magic.

AeroX's avatar AeroX

Support Vector Machine | 支持向量机

Support Vector Machine

A long time ago in a galaxy far, far away,有一张桌子上放了两种不同颜色的球,要你用一根棍子把它们按颜色分开

你轻而易举地就成功分开了

这时大反派登场,为了阻止你他放了更多的球

SVM试图找到分类的最佳位置,使得棍两边的间隙最大

于是你依然能成功分开

大反派开启了HARD模式,不存在能把球按颜色分开的棍子了

机智的你拍案而起,球飞到了空中,此时用时间宝石使时间暂停(或者import antigravity),然后拿出一张纸把球分开

现在从大反派的视角看,球被一条曲线成功分开了

后来,愚蠢的人类把这些球叫做「data」,把棍子和纸叫做「hyperplane」,找最大间隙 叫做「optimization」,拍桌子叫做「kernelling」


定义超平面为
点到超平面距离
各点到超平面距离的最小值为Margin,SVM要找到使Margin最大的Boundary,即


损失函数 Loss Function

Loss Function用于衡量Score Function输出结果与真实结果之间的差异,也就是误差

多类支持向量机损失 Multiclass Support Vector Machine Loss

SVM的损失函数想要SVM在正确分类上的得分始终比不正确分类上的得分高出一个边界值Δ
作为Score Function
针对第j个类别的得分:
针对第i个数据的多类SVM的损失函数定义:

(为正确类别的标签)
错误分类的分数减去正确分类的分数加上边界值
再经max函数处理,如果小于0则认为分类正确,loss为0
最后求和
多类SVM想要正确类别的分类分数比其他不正确分类类别的分数要高,而且至少高出delta的边界值

Hinge Loss

以上用到的函数被称为Hinge Loss 折页损失
另一种方法是平方折页损失
误差大的分类对损失函数的影响会更大。在某些数据集中,平方折叶损失效果会更好。可以通过交叉验证来决定到底使用哪个。

Regularization

只看Loss Function会发现,能正确分类的权重不唯一。于是要找到其中泛化能力最强的
方法是Regularization Penalty正则化惩罚
最常用的正则化惩罚是L2 norm

为权重中各元素的平方和
于是可以得到完整的多类SVM损失函数

展开为

L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。这一效果将会提升分类器的泛化能力,并避免过拟合。