谈谈linear regression 和 SVM

来源:互联网 发布:淘宝客博主的收入 编辑:程序博客网 时间:2024/05/02 04:37

线性分类是一个简单而又非常实用的概念。因为其速度快,在工业界中广泛应用。

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的原理看出。





0 0
原创粉丝点击