线性分类是一个简单而又非常实用的概念。因为其速度快,在工业界中广泛应用。
SVM一般是学习机器学习接触的又一个学习方法,非常fasion,学术界研究大热,数学上有严格的证明。但是由于神经网络的优异表现,风头渐渐不如以前。
这里就一个知识点进行自己小小总结。
线性回归和SVM有什么区别呢。网上很多人直接拿出这张图给你。例如知乎上这个答案 https://www.zhihu.com/question/26768865
只要看过SVM,对这个图都非常熟悉,但是究竟有什么区别呢。如果不跑一跑真实的例子,理解永远不深。下面不谈理论,直接从结果上看看LR和SVM的区别。
建议学习所有机器学习算法中,至少自己能编写逻辑回归的算法,会理解更好。
如上图的的二维的二分类问题,如果用线性回归分类,结果可能是蓝线,可能是红线。跟初始状态,梯度下降幅度有关系。其实还有更多的可能性,因为,在所有这些线中,对训练集来说,误差为0,目标损失函数都最小。不同的初始化状态可能对应不同的最终结果。如下图。
这样就引来一个问题,如果我的结果是蓝线。那么对于新的数据,很可能就造成了错误的分类结果。形象上来说红线的结果更好, 为什么?这就是SVM理论了。
上面是线性可分的情况,SVM要求的是上图的两个红色虚线的间距距离最大。那么如果线性不可分呢。怎么得到虚线?这时候就需要加入一个参数,我们允许一定的错误分类,在这种情况下,满足两个红色虚线间隔最大。这就是线性不可分情况下的SVM。可以用libSVM简单测试下不同条件下SVM分类结果。https://www.csie.ntu.edu.tw/~cjlin/libsvm/
上面是不同参数的结果。效果不是很明显。可以感受一下有重叠的情况下不同惩罚项的分类效果。
sklearn 中有SVM优劣总结:
The advantages of support vector machines are:
Effective in high dimensional spaces.Still effective in cases where number of dimensions is greater than the number of samples.Uses a subset of training points in the decision function (called support vectors), so it is also memory efficient.Versatile: different Kernel functions can be specified for the decision function. Common kernels are PRovided, but it is also possible to specify custom kernels.The disadvantages of support vector machines include:
If the number of features is much greater than the number of samples, the method is likely to give poor performances.SVMs do not directly provide probability estimates, these are calculated using an expensive five-fold cross-validation (see Scores and probabilities, below).另外,SVM在数据分析中会大量内存消耗,速度并不算快,随着数量增加复杂度显著提高。平方数据量的关系?SVM虽然在大数据中应用不佳,但是小量数据中,拥有非常好的范化能力。可由前面的SVM的原理看出。
新闻热点
疑难解答