文章目录
-
- 1.支持向量机的基本原理(fundamental idea)是什么?
- 2. 什么是支持向量(support vector)?
- 3.为什么用SVM的时候,scale the input 很重要?
- 4.SVM分类器在对样本进行分类的时候,能输出置信度数值(confidence score)么?能输出概率值么?
- 5.在一个有百万量级的样本和数以百计的特征的训练集上,该用原始形式还是对偶形式的SVM来训练模型?
- 6.假如用RBF核训练一个SVM分类器的时候,模型似乎出现欠拟合了:此时应该增大还是减小γ(gamma)?增大还是减小C?
- 7.用现成(off-the-shelf )的QP(二次规划,Quadratic Programming)求解器,如何设置QP参数(H,f,A,b)来解决软间隔线性SVM分类问题?【另一种表述,如何设置这些参数,把软间隔线性SVM模型转化为二次规划问题】【除非特别说明,以下向量默认为列向量】
本文直译自《hands on ML》课后题。(有改动的以【】表示)。
1.支持向量机的基本原理(fundamental idea)是什么? 【硬间隔】支持向量机的基本原理是在(不同的)类间找到合适的最宽的‘街道’(street)。换句话说,目标是在划分两类训练样本的决策边界之间找到最大的间隔。
【软间隔】当用软间隔(soft-margin)进行分类时,SVM在‘完美划分两类’和‘找到最宽街道’之间做一个折中(亦即少数样本会落到‘街道’上)。
【核】另外一个关键思想是当在非线性数据集上用核(kernel)。
2. 什么是支持向量(support vector)? 训练完一个SVM之后,落在‘街道’(street)及其边界上的样本称为支持向量。
决策边界完全由这些支持向量决定。不是支持向量的样本(亦即远离‘街道’的那些)对SVM没有任何影响;可以移除它们,添加更多样本或者移动它们,只要它们远离‘街道’它们就不会影响决策边界。计算预测值时只用到支持向量而非整个训练集。
3.为什么用SVM的时候,scale the input 很重要? SVM是在不同的类中寻找最宽的合适街道,因此如果训练集没有scaled,SVM倾向于忽视小特征。如下图所示:左图为Unscaled,右图为Scaled。
文章图片
4.SVM分类器在对样本进行分类的时候,能输出置信度数值(confidence score)么?能输出概率值么? SVM分类器能输出(测试)样本和决策边界的距离,可以把这个距离当做一个置信度数值。当然,这个数值不能直接转化成类的概率。在Scikit-Learn的SVM函数中,设置probability=True,训练完之后,程序会用LogisticsRegression把SVM输出的分值校准(calibrate)为概率值(在这个训练集上对LR用五折交叉验证训练)。这会给SVM(python对象)添加predict_proba()和predict_log_proba()方法。
5.在一个有百万量级的样本和数以百计的特征的训练集上,该用原始形式还是对偶形式的SVM来训练模型? 这个问题只能是对线性SVM来说有意义,因为核-SVM只能用 对偶形式。
SVM的原始形式的计算复杂度与样本数m成比例(O(m)),对偶形式的计算复杂度在m2和m3之间(O(m2)~O(m3))。因此如果有百万量级的样本,肯定需要用原始形式,因为对偶形式慢得多。
6.假如用RBF核训练一个SVM分类器的时候,模型似乎出现欠拟合了:此时应该增大还是减小γ(gamma)?增大还是减小C? 欠拟合可能是因为过分正则化了。需要增加gamma或增加C(或二者都增加)。
7.用现成(off-the-shelf )的QP(二次规划,Quadratic Programming)求解器,如何设置QP参数(H,f,A,b)来解决软间隔线性SVM分类问题?【另一种表述,如何设置这些参数,把软间隔线性SVM模型转化为二次规划问题】【除非特别说明,以下向量默认为列向量】 把硬间隔SVM问题的QP参数记为H’,f’,A’,b’。软间隔问题的QP参数有m个额外参数和m个额外的约束条件。这些可以定义如下:
(a)对H’扩充,在其右侧添加m列0向量,在其底部添加m行0向量。得到H,如下:
文章图片
(b)在f’(尾端)添加m个超参数C,得到f。
(c)在b’(尾端)添加m个0,得到b。
(d)对A’进行扩充,在其右侧添加m阶单位矩阵,在其右下方添加m阶负单位矩阵,其下方添加0矩阵,得到A如下:【个人觉得原答案有问题,右上角应该也为负单位矩阵,下面有解释】
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- 人工智能|入门机器学习(西瓜书+南瓜书)支持向量机总结(python代码实现)
- 机器学习|Task02 详读西瓜书+南瓜书第3章
- 机器学习|datawhale学习之一西瓜书和南瓜书概论
- Quant|量化分析师的Python日记【Q Quant兵器谱之函数插值】
- 一点就分享系列|一点就分享系列(实践篇4-上篇)深度学习部署之Tensorrt转换思路(“授人与鱼不如授人与渔”)
- 一点就分享系列|一点就分享系列(理解篇5)补更必看(SwintransformerV2.0版本的改进以及使用理解(上篇))
- 数据分析|会员数据化运营概论
- 目标检测|深入目标检测原理学习笔记1
- 机器学习|pyhton 机器学习 sklearn——手把手教你预测心脏病