机器学习|机器学习思考题目——05支持向量机(SVM)


文章目录

    • 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模型转化为二次规划问题】【除非特别说明,以下向量默认为列向量】
【机器学习|机器学习思考题目——05支持向量机(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。
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片

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,如下:
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片

(b)在f’(尾端)添加m个超参数C,得到f。
(c)在b’(尾端)添加m个0,得到b。
(d)对A’进行扩充,在其右侧添加m阶单位矩阵,在其右下方添加m阶负单位矩阵,其下方添加0矩阵,得到A如下:【个人觉得原答案有问题,右上角应该也为负单位矩阵,下面有解释】
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片
机器学习|机器学习思考题目——05支持向量机(SVM)
文章图片

    推荐阅读