《Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow》一书5.4节《Under the Hood》在解释SVM模型的数学模型时,有些地方并不是很详细。这里我把相关的知识补上。关于SVM,这篇文章有比较详细的解释,有兴趣的朋友可以参考。
目标函数
我们假设样本线性可分,一类标记为1,另一类标记为-1。每个样本可用向量表示。则我们可以找到一个超平面,使得超平面的一侧都是正类样本,另一侧都是负类样本。这个超平面(不妨称为平面0)可以用下面这个方程式表示:
我们可以把这个超平面向正类样本方向平移,直到碰到第一个正类样本为止。平移完成之后新的超平面我们可以称为平面1,其方程是:
同理,我们把平面0向负类样本方向平移,直到碰到第一个负类样本为止。平移完成之后新的超平面我们可以称为平面2,其方程是:
和并不一定相等,不过我们可以调整平面0的b,使得。也就是说,通过选择适当的b,我们可以使得平面1和平面2的方程可以写成下面的形式:
事实上,这两个方程还可以进一步化简。我们让两个式子两边都除以,也就是调整了和。这样,平面1和平面2的方程可以写成:
这两个平面的距离是。因此,我们优化的目标就是使得最小。
约束条件
当然,我们还有约束条件,就是上面的平面能够使得所有正负样本正好在平面两侧,这就是所谓硬间隔SVM(Hard margin linear SVM)。用数学语言说,对于任意正样本i,我们有:
对于任意负样本i,我们有:
我们定义,规则是,对于正样本,其值为1;对于负样本,其值为-1。于是,上面两个约束条件可以合并为一个:
这就是约束条件。于是:
这就是Hard margin linear SVM模型的优化目标。