《Spark机器学习进阶实战》——3.2.3 SVM模型
3.2.3 SVM模型
SVM(Support Vector Machine,支持向量机)模型能有效防止过拟合,在大量的应用场景中表现突出,对于线性可分的训练数据集,一般存在无穷多个可以正确划分不同类别的超平面,但是间隔最大的超平面是唯一的。SVM本质就是在样本空间中找出能区分不同类别而且使得间隔最大的超平面。划分超平面间隔最大,意味着该平面以充分大的确信度对训练数据进行分类,而且对未知样本的泛化能力最强。
在样本空间中,划分超平面可以表示为以下方程:
wTx + b = 0
超平面由法向量w和截距b决定,可用(w, b)表示。针对样本空间中的任意点x,该点到划分超平面(w, b)的距离r为:
针对二分类问题,划分超平面可以将样本空间划分成两部分,一部分是正类,另一部分为负类。假设超平面能将所有训练样本正确分类,那么对于训练样本(xi, yi),如果yi=1,则有wTxi + b > 0;如果yi=-1,则有wTxi + b < 0。训练样本中离划分超平面最近的样本点称为支持向量。如图3-3所示,对于正类的样本,支持向量在超平面H1:wT·x + b = 1上。对于负类的样本,支持向量在超平面H2:wT·x + b = -1上。H1和H2两超平面是平行的,中间的间隔等于,如图3-3所示。
图3-3 SVM中支持向量示例
算法想找到具有最大间隔的超平面,也就是说要最大化。由于最大化等价于||w||2最小,所以可以形式化表示为如下的最优化问题:
s. t. yi (w·xi + b)-1≥0, i = 1, 2, …, N
求解该凸二次规划问题,可以得到最优间隔的超平面(w*, b*)。一般来说,法向量指向的一侧对应正类,另一侧则对应负类。模型最终的决策函数为:
f(x) = sign (w*·x + b*)
在线性SVM的基础上,非线性SVM模型引入了核函数,对特征进行空间变换,将低维空间映射到高维空间,解决线性不可分的问题,常用的核函数有多项式核、RBF核等。核函数的引入使得模型的计算复杂度变高、训练速度很慢且模型的可解释性变差,因此在大规模样本的训练中,非线性的SVM使用得较少。
MLlib库仅支持线性SVM。线性SVM有着效率高、擅长高维场景的优点,在文本分类中有不错的表现。求解该问题,损失函数为hinge loss。默认情况下,线性SVM使用L2正则,当然也可以使用L1正则。
- 点赞
- 收藏
- 关注作者
评论(0)