代码地址:https://github.com/fengdu78/lihang-code
面试问的最多的就是LR,代码也要会写,如何推导、如何计算损失、如何求导等。

常见问题

1.LR和SVM的相同点

  • 都是有监督的分类算法;
  • 如果不考虑核函数,LR和SVM都是线性分类算法,分类决策面都是线性的。
  • LR和SVM都是判别模型。LR、SVM、决策树等判别式模型直接生成一个表示P(Y|X)或者Y=f(X) 的判别函数。而生成模型,例如朴素贝叶斯(NB), 隐马尔可夫链(HMM), 都是先计算联合概率分布P(Y,X),然后通过贝叶斯公式转化为 P(Y|X)。

2.LR与SVM的不同点

  • loss函数不同。LR的目标是最小化模型分布和经验分布之间的交叉熵;SVM的目标是最大间隔化分类间隔(硬SVM)。
  • SVM是结构化风险,LR是经验风险最小化。结构化风险最小化是在训练误差和模型复杂度之间寻求平衡,防止过拟合,减小泛化误差。为了达到结构风险最小化的目的,最常用的方法是添加正则项。SVM的loss函数的第一项可看作L2正则项;LR则需要加入正则化项。
  • SVM只考虑分界面附近的少数点;LR则考虑所有点。
  • SVM不能产生概率,LR可以产生概率。
  • 在解决非线形问题的时候,SVM采用核函数机制,只有少数几个样本参与核计算(即 kernel machine 解的系数是稀疏的)。LR里每个样本点都要参与核计算,计算复杂度太高,故LR通常不用核函数。
  • SVM计算复杂,但效果比LR好,适合小数据集;LR计算简单,适合大数据集,可以在线训练。