支持向量机(SVM)

故事扮演 提交于 2019-11-26 12:59:28
一、概念 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。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!