美文网首页每天学点机器学习机器学习大杂烩机器学习
SVM和Logistic Regression分别在什么时候使用

SVM和Logistic Regression分别在什么时候使用

作者: fighting41love | 来源:发表于2016-08-07 09:19 被阅读636次

    写在前面:简书上搞机器学习的人极少,大都在CSDN上吧。我也在个人博客 http://fighting41love.github.io/#blog 上写了一些文章,苦于只能自我驱动,没有读者,有点难于坚持下去。

    所以,自己还是没能免俗,希望有更多人关注和支持。这是我在这里写技术博客的初衷。简书机器学习受众少,也是弊端。但从自己内心来说,不断写文章,就是加大自己的输出,那就必须加大输入,多读书,多总结!经济学领域里所谓的“加大杠杆”。所以,这件事要坚持下去。

    SMV和Logistic Regression已经是工业界广泛应用的方法了。
    在解决实际问题中,什么时候用SVM?
    什么时候用Logistic Regression呢?

    Logistice Regression 和 SVM都能解决线性分类问题,也都能解决非线性分类问题(都使用kernel trick即可,只是LR引入kernel没有支持向量的话,计算代价有点高)。在这里我们仅讨论线性分类问题,即Logistic Regression 和 SVM with linear kernel。如果非线性分类,当然首选SVM。

    先抛一下Andrew Ng老师在Coursera上《Machine Learning》from stanford的结论:
    n: feature 数目 m: sample 数目

    以上只是Andrw Ng大神直观的总结,还有一些细节需要讨论:

    1. SVM不是概率输出,Logistic Regression是概率输出。

    也就是说,当一个新样本来了,SVM只会告诉你它的分类,而Logistic Regression会告诉你它属于某类的概率!
    什么意思呢?当你想要知道某个样本属于一个类的概率时,SVM就不适用了。此时,应该使用Logistic Regression。

    那么问题来了,点到SVM分类面的距离,是否可以转化为“概率输出”呢,即离分类面越远,其属于该类的概率越大,反之越小呢?《PRML》里确实提过类似的做法,也有一些其他的办法让SVM输出概率,但作者说这些方法都不太实用。

    2. 异常点的鲁棒性问题

    当训练样本中存在异常点时,由于Logistic Regression的lost function中有每一个点的贡献,所以某种程度上“削弱了”异常点的贡献。而SVM只需要考虑支持向量,此时支持向量本来就不是很多的情况下,几个异常点就很有可能极大影响SVM的表现。

    3. 目标函数 lost function

    Logistic Regression使用entropy loss,极大化似然函数。
    而SVM使用hinge loss, 最大化间隔。两个loss差别不是很大,所以算是一个相同点了。

    4. 实际问题:

    实际问题中,如果数据量非常大,特征维度很高,使用SVM搞不定时,还是用Logistic Regression吧,速度更快一些。

    个人水平有限,如有错误请指出!谢谢!

    相关文章

      网友评论

      • davidac:感谢作者的分享,有个问题想请教一下的,Andrew Ng 提到的 n 与 m 的比较,其中 m(sample 数目)代表着什么?
        fighting41love:就是样本数目哈

      本文标题:SVM和Logistic Regression分别在什么时候使用

      本文链接:https://www.haomeiwen.com/subject/fjclsttx.html