sklearn保存svm分类模型_SVM学习总结及应用

1. SVM原理理解

SVM——即支持向量机,是一种用于二分类问题的机器学习方法。它的基本思想是寻找到两类对象的一个分界面,并且使界面到两类对象最近的点距离最大,也就是间隔最大。

v2-054f207d797926cf1ed43396b871c365_b.jpg

图中位于“蓝线”和“红线”上的点即为支持向量,“黑线”即为两类对象的分界面,支持向量机的作用就是寻找到这样一个“黑”色界面,它满足支持向量到界面的距离最大,其数学模型如下:

v2-ece71d51d3a2e180dab3c8ed27220e31_b.jpg
注:摘自《机器学习》(周志华)

问题归结于求解出满足以边界条件的

的值。这是一个凸二次规划问题,通过拉格朗日乘子法,将问题转换为其“对偶问题”后,原问题即转换为:

v2-8d39ffff7c1c9b981193cc41929fac73_b.jpg
注:摘自《机器学习》(周志华)

v2-1db5fe78541fe4866b4f83fc47bede71_b.jpg
注:摘自《机器学习》(周志华)

其中:

v2-6ff27460a9fa6e7e652dd9b7bee8b096_b.jpg
注:摘自《机器学习》(周志华)

v2-0ff94c1c4eb7a06bdd75f756288baf7c_b.jpg
注:摘自《机器学习》(周志华)

={
}为所有支持向量集。这样,只需要求解满足上述条件的
即可,计算方法比较多,著名且有效的是SMO(Sequential Minimal Optimization)算法。

同时,为了防止过拟合,一般会允许分界面不完全分割两类对象,存在一定的划分误差。但又为了尽量减小这种划分误差,在上述的计算模型中引入松驰变量,这样原数学模型又变为带松驰变量的模型:

v2-2307352c4a373361f98a23dca2c1a99c_b.jpg
注:摘自《机器学习》(周志华)

v2-78493b37fe2ccd2340c73e659338d5a1_b.jpg
注:摘自《机器学习》(周志华)

用同样的方法,求解上述问题的“对偶问题”,并将原问题转换为:

v2-85edd024372638ee4d4a1ae7c7026b23_b.jpg
注:摘自《机器学习》(周志华)

v2-609589ae9cd4936c9936de450e445181_b.png
注:摘自《机器学习》(周志华)

同样采用SMO算法求得满足上述边界条件的

,即找到问题的解。

对于某些问题,并不是线性可分的,很难直接找到其分界面,但如果将特征转换到更高维度后,往往能很容易找到其分界面。

将特征转换到更高维度,需要进行更多更复杂的计算,假设转换关系为

,则需要将计算模型中的
需要替换为
。为了使计算能更快捷、简单,引入核函数(Kernel)使得下式成立:

这样就可以大大简化计算,但核函数一般很难直接找到,现在已有一些常用核函数。同时,对于一个特征,很难知道需要把特征转换到哪个维度才可以很好的分界,也就很难知道哪个核函数是适合的,在实际应用中只能进行多次实践。

另外,由于SVM是二元分类器,在进行多标签分类时,还需要采用一些其它策略,常用方法如下:

v2-0050c221a90e6fe8ee6422ded2a58a3a_b.jpg
注:摘自贪心学院教学课件

左侧图是指OVR方法(one versus rest):对于K个类别的情况, 训练K个SVM, 第 j 个SVM用于判读任意条数据是属于类别 j 还是属于类别非 j. 预测的时候, 具有最大值的 θ_i^T x表示给定的数据 x属于类别 i。

右侧图是指OVO方法(one versus one):对于K个类别的情况, 训练K * (K-1) /2 个SVM, 每一个SVM只用于判读任意条数据是属于K中的特定两个类别. 预测的时候, 使用K * (K-1) /2 个SVM做 K * (K-1) /2 次预测, 使用计票的方式决定数据被分类为哪个类别的次数最多, 就认为数据 x 属于此类别。

2. SVM实例应用

本实例来自贪心学院课堂实践内容,利用SVM进行人脸识别。

(1)首先,从sklearn中导入人脸识别数据。

v2-0deea839882f5916293acfccac55d373_b.png

(2)由于图像被转换为了62×47个像素值,特征维度较高,采用PCA主成分分析方法进行降维,最终降到150维。同时,由于每次训练模型都需要用PCA进行降维分析,因此采用pipeline的方法重复应用PCA降维后进行SVM模型训练。

v2-bf45535e7fbe04a8f5ebbbd9fbb7c87d_b.png

(3)然后,利用sklearn中的model_selection对数据划分为训练数据和测试数据。

v2-ff0a37174693cb7382bf98b9d093aef3_b.png

(4)由于SVM模型中还需要手动确定带允许误差的常数C,即带松驰变量模型中的C值,而一般这个最优C值是未知的,需要通过sklearn中的model_selection中的GridSearchCV进行交叉验证,得到最优参数C。

v2-1a22d107f50f3cf80b66262c3f615fdf_b.jpg

(5)选择带最优参数C值的最优模型,并用最优模型对测试数据进行预测。

v2-608ff13e9c2e8a944ee94f05e6dc3fa5_b.png

(6)通过与测试数据比较预测结果,可以利用sklearn.metrics中的classification_report对模型预测准确性进行评估。其中precision是指某一对象预测的准确性,recall是该对象预测正确占总的预测正确的比值,f1是前两个值的综合评价指标,support 是该对象在测试数据中的数量。

v2-69dd935c538f626ee5f2d08dd3e6186c_b.jpg

(7)可以通过sklearn.metrics中的confusion_matrix输出混淆矩阵,可以查看每一个对象预测正确及预测错误的具体情况。

v2-51f88fc4359fa2dca5fa394e1e2b2ec2_b.jpg
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值