SVM简介?

  • 支持向量机(Support Vector Machine)是一个二分类模型,它的基本模型是定义在特征空间上间隔最大的线性分类器,由于间隔最大使得它和感知机不同;
  • 并且SVM还包括核技巧,这使得它成为一个非线性分类器;
  • SVM的学习策略是间隔最大化,该策略可形式化为求解凸二次规划问题,也等价于合页损失函数最小化的问题。

SVM的原理?

  • SVM的基本想法是最大化离超平面最近的点到该平面的距离。
  • 对于线性可分的数据集来说,可分离的超平面有无数个,但是几何间隔最大的超平面只有一个;
  • 对于线性可分的数据集,可以把问题转化为凸优化问题,再使用拉格朗日乘子法简化求解;
  • 对于线性不可分的数据集,可以使用核函数将样本映射到高维空间中,使它变成线性可分的数据再求解。

SVM推导

强推:svm原理从头到尾详细推导

大致过程:

  • SVM要求解的问题是最大化离超平面最近点到超平面的距离。即优化如下问题:
    $$\underset{\omega,b}{max}(\underset{x_i}{min}\frac{y_i(\omega ^Tx_i+b)}{||\omega||})$$
  • 为了简化计算,假设最近点离超平面的距离为1,此时其他点的函数距离$y_i(\omega^T x_i+b)>1$。问题转化为在$y_i(\omega^T x_i+b)≥1$的不等式约束下关于$\omega$的最小化问题:
    $$\underset{\omega,b}{max}\frac{1}{||\omega||}=>\underset{\omega,b}{min}\frac{1}{2}||\omega||^2 \quad\quad\quad s.t.\quad y_i(\omega^T x_i+b)≥1$$
  • 为了方便求解上式,需要把不等式约束问题转化为无约束的极小极大值问题,并且该优化结果满足kkt条件(拉格朗日乘子法的泛化),所以可以进一步把不等式的约束问题转化为它的对偶问题(极小极大值问题)。再利用kkt条件求导可以求解最终参数结果。
  • 为了防止由于标签标记错误(离群点)对模型性能产生影响,此时会对离群点引入松弛因子$\beta_i$,加入后的损失函数为
    $$\underset{\omega,b,\beta}{min}(\frac{1}{2}||\omega||^2+C\overset{m}{\underset{i=1}{\sum}}\beta_i)\quad\quad\quad s.t.\quad y_i(\omega^T x_i+b)≥1-\beta_i\beta_i≥0$$
    $\beta$表示超平面两侧离群点之间的距离,$C$表示对离群点的重视程度。当$\beta_i$固定时,$C=0$表示可以忽略这些离群点,$C=+\infty$表示离群点非常重要,此时会导致模型线性不可分(可以借助核函数映射到线性空间)。增大惩罚因子$C$,模型的泛化能力会变弱,$C=+\infty$时,模型退化为线性可分的SVM(硬间隔),减小惩罚因子,模型的泛化能力变好。

SVM如何防止过拟合?

对离群点引入松弛因子$\beta_i$,SVM希望通过引入松弛因子$\beta_i$和惩罚因子$C$来容忍离群点的存在,$C$越大,表示越重视离群点,$C$越小,表示可以忽略该离群点的存在。

LR和SVM的联系和区别?

参考

  • 联系:

    • 一般都用来处理二分类问题;
    • 都是线性分类器,本质上都是求一个最佳的分类超平面;
    • 都是监督学习算法;
    • 都是判别模型,判别模型不关注数据的生成,只关注数据之间的差别。
  • 区别:

    • LR是参数模型(假设输出服从二项分布),SVM是非参数模型;
    • 解决非线性问题时,SVM采用核函数,LR一般不采用;(因为LR考虑所有的样本,SVM只依赖于决策面附近的支持向量,计算量不一样)
    • SVM的损失函数自带正则化,而LR需要在损失函数之外另外加入(如下);
    • 从损失函数上看,LR的损失函数是交叉熵,是基于概率分类的,如下:
      $$J(\theta)=-\frac{1}{m}[\overset{m}{\underset{i=1}{\sum}}y^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]$$
      SVM的损失函数是合页损失函数,是基于几何间隔最大化的原理,是基于几何距离进行分类的,如下:
      $$L(\omega,b,\alpha)=\frac{1}{2}||w||^2-\overset{m}{\underset{i=1}{\sum}}\alpha_i(y_i(\omega^Tx_i+b)-1)$$

[注]

  • 常见的判别模型有LR,KNN,SVM,常见的生成模型有朴素贝叶斯,隐马尔可夫模型;
  • 参数模型是指假设数据总体服从某个分布,这个分布可以由具体数量的参数确定(参数确定,模型就确定了);非参数模型是指数据分布未知,无法得到分布的相关参数,只有在给定一些样本的条件下,通过非参数估计的方法推断。

特征数量与LR和SVM的关系?

参考

  • 如果特征数量很大,和样本数量差不多,选用LR或者线性核的SVM;
  • 如果特征数量比较少,样本数量不多不少,选择RBF核(高斯核)的SVM;
  • 如果特征数量比较少,样本数量很多,需要手动添加特征再选用线性核的SVM。

为什么SVM对缺失数据敏感?

参考

一般的缺失数据指数据的特征不完整,SVM没有处理缺失值的策略。而且SVM希望样本在特征空间中是线性可分的,所以特征空间的好坏会影响SVM的性能,缺失某些数据的特征会影响训练的结果。

为什么要将求解SVM的原始问题转换为其对偶问题?

参考

  • 因为原问题是个带有不等式约束的问题,为了方便求解,可以把目标函数和约束全部融入拉格朗日函数,再求解其对偶问题,把原问题转化为无约束的极小极大值问题,利用kkt条件求解;
  • 转化为对偶问题可以自然地引入核函数,进而推广到非线性问题。

SVM如何选择核函数?

参考

  • 当特征维度较大,样本数很小时(文本分类),使用线性核;
  • 当特征维度较小,样本数不大不小时,使用高斯核(RBF核);
  • 当特征维度较小,样本数较多时,此时SVM的性能不如神经网络。

SVM的优缺点?

参考

  • 优点
    • SVM是个凸优化问题,所以求得的解是一个全部最优而不是局部最优解;
    • 不仅适用于线性问题,使用核技巧后还能处理非线性问题;
    • 对于高维样本空间的数据也能使用,因为数据集的复杂度只取决于支持向量而不是数据集的维度,可以避免“维度灾难”。
  • 缺点
    • 二次规划问题求解设计$m$阶矩阵的计算($m$为样本数),所以SVM不适合超大数据集(SMO算法可缓解这个问题);
    • 样本数量比较多,效果不如神经网络。

SVM是否可以使用随机梯度下降算法?

参考

SVM的求解本质上是个带约束的二次规划问题,可以通过拉格朗日乘子法或$Hinge Loss$转化为无约束的优化问题。$Hinge Loss$是个凸函数,可以使用随机梯度下降优化,只是使用拉格朗日乘子法对SVM优化有个好处,如果SVM有使用到核技巧,使用SMO算法直接求解比使用随机梯度下降更高效。