您的位置:首页 > 职场人生

校招算法工程师常见面试题及答案总结02——SVM

2017-01-20 12:51 856 查看
        SVM是很常考的一个机器学习基本算法,除了要知道其理论优缺点适用范围等,还要掌握其推导。本篇博客对SVM做概述,并分别介绍线性可分SVM、线性SVM、非线性SVM、SMO。

       支持向量机(supportvector machine ,SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法。



       SVM的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面,对线性可分的训练数据集而言线性可分分离超平面有无穷多个(等价于感知机,但是几何间隔最大的分离超平面是唯一的,这里的间隔最大化又称为硬间隔最大化与将要讨论的训练数据集近似线性可分时的软间隔最大化相对应) 间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类,也就是说不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开,这样的超平面对新实例有很好的分类预测能力。

        在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,即:



       在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。

推导(线性可分支持向量机)





















SVM中各函数总结





损失函数:


线性支持向量机
       修改硬间隔最大化,使其成为软间隔最大化。通常情况是,训练数据中的一些特异点导致线性不可分。我们引入松弛变量。
                 


                 


                 


                 


       核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积,满足正定条件。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机,这样的方法称为核技巧,核方法是比支持向量机更为一般的机器学习方法。







       一般选择线性核和高斯核,也就是Linear核与RBF核。

       Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。

       RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。

       如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM。

       如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel。

SMO:序列最小最优化算法

        SVM的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这问题的求解。但是当训练样本容量很大时这些算法往往变得非常低效以致无法使用。所以,采用序列最小最优化SMO算法来快速实现SVM。
        SMO算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规 划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到 所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最 优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数 很多,但在总体上还是高效的。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息