Sklearn 与 TensorFlow 机器学习实用指南——第五章总结
本章主要介绍了支持向量机及相关内容,软间隔分类,非线性,对偶问题,核函数,SVM回归等等,主要在于代码的编写,公式推导方面不够详细,详细推动可以参考西瓜书,本文就写一下习题。
- 支持向量机背后的基本思想是什么?
支持向量机通过计算wx+b来预测新样本的类别,wx+b=0是决策面,wx+b=1和-1是相互平行的两条直线,到决策边界相等,形成了一个间隔,目的就是通过训练找到w值和b值使得这个间隔尽可能地大。在执行软间隔分类时,SVM在完全分离两个类别和尽可能大间隔直接做出折中。另一个关键思想就是在训练非线性数据集时使用核函数。
- 什么是支持向量?
在训练SVM之后,支持向量是位于“街道”上的任何实例(参见上一个答案),包括其边界。 决策边界完全由支持向量决定。 任何不是支持向量的实例(即街道外)都没有任何影响; 您可以删除它们,添加更多实例或移动它们,只要它们离开街道它们就不会影响决策边界。 计算预测仅涉及支持向量,而不是整个训练集。
- 当使用 SVM 时,为什么标准化输入很重要?
SVM尝试适应类之间尽可能大的“街道”,因此如果训练集未缩放,SVM将倾向于忽略小特征。
- 分类一个样本时,SVM 分类器能够输出一个置信值吗?概率呢?
SVM分类器可以输出测试实例与决策边界之间的距离,您可以将其用作置信度分数。 但是,这个分数不能直接转换为类概率的估计。 如果在Scikit-Learn中创建SVM时设置probability = True,则在训练之后,它将使用SVM分数的Logistic回归校准概率(通过对训练数据进行额外的五重交叉验证进行训练)。 这会将predict_proba()和predict_log_proba()方法添加到SVM。
- 在一个有数百万训练样本和数百特征的训练集上,你是否应该使用 SVM 原始形式或对偶形式来训练一个模型?
此问题仅适用于线性SVM,因为kernelized只能使用对偶形式。 SVM问题的原始形式的计算复杂度与训练实例m的数量成比例,而对偶形式的计算复杂度与m^2和m^3之间的数量成比例。 所以如果有数百万个实例,你肯定应该使用原始形式,因为双重形式会太慢。
- 假设你用 RBF 核来训练一个 SVM 分类器,如果对训练集欠拟合:你应该增大或者减小γ吗?调整参数C呢?
可能存在过多的正则化,可以增大γ,C
参考:https://hand2st.apachecn.org/#/docs/5.支持向量机