一、概念
1、分离超平面:空间内能够将数据分为不同类别的平面
2、线性可分:不同类别数据能够被一个超平面完全分开
3、损失项:模型在数据上违反自身分类原则的程度(是一个求和项)
4、损失系数:损失项的系数(是一个超参数,由模型给定)
5、损失函数L = min (1/2*(||w||)2) + C*max(Σi max(0,1-y(i)*(w.x(i) +c))
6、预测损失:损失函数的第二项(称作 hinge loss)
7、惩罚项:损失函数的第一项 (在svm中,惩罚项的初衷是最大化margin(两个分类之间的距离))
8、hard margin : C比较大,此时margin较小,模型更注重靠近超平面的异常点
9、soft margin :C比较小,此时margin较大,模型更注重靠近类别中心的点
10、核函数:机器学习重要的数据处理技巧,通过核函数将原空间中的非线性数据映射为高维(或者无限维)空间中近似线性关系的数据,机器学习模型搭载核函数的方法大体一致。
常用的核函数: 1、线性核函数(linear kernel)
2、多项式核函数(ploynomial kernel)
3、S型核函数(sigmoid kernel)
4、拉普拉斯核函数(laplacian kernel)
5、高斯核函数(RBF kernel)
常用的核函数选择方法:
1、网格搜寻 (grid search)
11、拉格朗日对偶:一种在一个或多个约束下,寻找多元函数极值的方法。一定条件下 原始问题 和 对偶问题 等价。
12、KKT条件:
二、svm的直观理解
1、支持向量机模型的数学表达,本质上就是该模型对应的最优化问题
2、支持向量机模型的思路:寻找与被预测数据相似的训练数据,并将相应的因变量加权平均得到最后的预测值。权值是关键。
3、机器学习领域的共识:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
4、只有落在虚线上,或者两条虚线时间的点,权重才有可能不等于0,这些点成为 支持向量(support vector)
三、、模型实际应用,所面对实际条件:
1、现实生活中需要面对的数据集大多数是线性不可分的
2、隐含假设:每个数据点权重其实不一样,越靠近分离超平面,数据的权重越大,而且损失系数C越大(hard margin ),数据权重不一样的现象越严重
3、选择模型依据: (1)希望模型对靠近‘边缘’的点更加敏感,则选择 hard margin ;(2) 希望综合考虑每一个点,使用soft margin ,或者逻辑回归
4、支持向量机对特征(自变量)的线性变换 不稳定(scale variant),即是说在预处理时,对自变量做不同的线性变换,会极大影响svm的分类效果
解决办法:将各个变量归一化后,再使用svm进行分类
4、python scikit-learn 包 中 svc 用法
本身这个函数也是基于libsvm实现的,所以在参数设置上有很多相似的地方。(PS: libsvm中的二次规划问题的解决算法是SMO)。
sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False,
tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None,random_state=None)
参数:
l C:C-SVC的惩罚参数C?默认值是1.0
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛华能力弱。
C值小,泛化能力较强,对误分类的惩罚减小,允许容错,将他们当成噪声点。
l kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 线性:u'v
1 – 多项式:(gamma*u'*v + coef0)^degree
2 – RBF函数:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
l degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
l gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
l coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
l probability :是否采用概率估计?.默认为False
l shrinking :是否采用shrinking heuristic方法,默认为true
l tol :停止训练的误差值大小,默认为1e-3
l cache_size :核函数cache缓存大小,默认为200
l class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)
l verbose :允许冗余输出?
l max_iter :最大迭代次数。-1为无限制。
l decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
l random_state :数据洗牌时的种子值,int值
主要调节的参数有:C、kernel、degree、gamma、coef0。
来源:https://www.cnblogs.com/wl413911/p/11321378.html