由于SVM是解决线性可分的数据集,对于非线性可分的数据集,就需要进行非线性变换将非线性可分的数据集变成线性可分的数据集。一个常用的方法是使用kernel trick中的多项式核函数。但是直接对数据集做升维处理的时候一个很大的问题就是维数增加的很快。如何将这么庞大的维数变为较小的样本数来做处理是一个比较重要的问题。对偶SVM就是用来解决这个问题的。它将非常高的维度模型转换为一个与样本量有关的模型。
上图是SVM的原模型。使用拉格朗日乘子法,将上述模型变为下边的形式:
然后将SVM转化成如下的式子:
上边的关系又满足以下不等式:
对于二次规划问题,上边的等号是成立的。因此,上边的式子就可以写成:
依次对b,w,a求导。得到:
用上边的式子可以消去b,w。变成下边的形式。由KKT条件,得到:
最终,就得到了以下的形式:
至此,将SVM升维后的模型变为一个只跟数据量有关的模型。
注意到当an不为0的时候,点一定在支撑边界上。