当面试官问LR与SVM的问题时,他们会问些什么

目录

 

一、LR原理介绍及公式推导

二、SVM 的原理介绍

三、LR与SVM的异同及使用场景


一、LR原理介绍及公式推导

1. 什么是逻辑回归

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)

回归模型中,y是一个定性变量,比如y=0或1,logistic方法主要应用于研究某些事件发生的概率

2. 逻辑回归的优缺点
优点:
1)速度快,适合二分类问题
2)简单易于理解,直接看到各个特征的权重
3)能容易地更新模型吸收新的数据
缺点:
对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

3. 逻辑回归和多重线性回归的区别
Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。
这一家族中的模型形式基本上都差不多,不同的就是因变量不同。这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

如果是连续的,就是多重线性回归
如果是二项分布,就是Logistic回归

4. 公式推导
1) Logistic函数(或称为Sigmoid函数),函数形式为:

这里写图片描述

对于线性边界的情况,边界形式如下:

这里写图片描述

其中,训练数据为向量

这里写图片描述

最佳参数

这里写图片描述

构造预测函数为:

这里写图片描述

函数h(x)的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

P(y=1│x;θ) = h_θ (x)
P(y=0│x;θ) = 1-h_θ (x)

2) 损失函数推导

概率综合起来写成:

这里写图片描述

取似然函数为:

这里写图片描述

对数似然函数为:

这里写图片描述

最大似然估计就是求使l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。

在Andrew Ng的课程中将J(θ)取为下式,即:

这里写图片描述

3)梯度下降法求解最小值

这里写图片描述

\theta 更新过程可以写成:

这里写图片描述

5、向量化

ectorization是使用矩阵计算来代替for循环,以简化计算过程,提高效率。
向量化过程:
约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值:

这里写图片描述

g(A) 的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。
\theta 更新过程可以改为:

这里写图片描述

综上所述,Vectorization 后 \theta 更新的步骤如下:

  1. A=x*\theta
  2. 求  E=g(A)-y
  3. 求 \theta:=\theta-ax^TE

6、正则化

(1) 过拟合问题
过拟合即是过分拟合了训练数据,使得模型的复杂度提高,泛化能力较差(对未知数据的预测能力)
下面左图即为欠拟合,中图为合适的拟合,右图为过拟合。

(2)过拟合主要原因
过拟合问题往往源自过多的特征
解决方法
1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)
• 可用人工选择要保留的特征;
• 模型选择算法;
2)正则化(特征较多时比较有效)
• 保留所有特征,但减少θ的大小

(3)正则化方法
正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化项就越大。

正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为:
这里写图片描述

lambda是正则项系数:
• 如果它的值很大,说明对模型的复杂度惩罚大,对拟合数据的损失惩罚小,这样它就不会过分拟合数据,在训练数据上的偏差较大,在未知数据上的方差较小,但是可能出现欠拟合的现象;
• 如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。


正则化后的梯度下降算法θ的更新变为:
这里写图片描述

正则化后的线性回归的Normal Equation的公式为:

7. Python 实现

在我的这篇博客

https://blog.csdn.net/Matrix_cc/article/details/104802914

二、SVM 的原理介绍

1、SVM简介

SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型):

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

  • 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

  • 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

2、SVM 为什么采用间隔最大化(与感知机的区别)

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

3、SVM的目标(硬间隔)

有两个目标:

  • 第一个是使间隔最大化,

  • 第二个是使样本正确分类,

稍微解释一下,w 是超平面参数,目标一是从点到面的距离公式化简来的,具体不展开,目标二就相当于感知机,只是把大于等于0进行缩放变成了大于等于1,为了后面的推导方便。有了两个目标,写在一起,就变成了svm的终极目标:

4、求解目标

从上面的公式看出,这是一个有约束条件的最优化问题,用拉格朗日函数来解决。

上式的拉格朗日函数为:

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

先求内部最小值,对 w和 b求偏导并令其等于0可得:

将其代入到上式中去可得到

此时需要求解 \alpha,利用SMO(序列最小优化)算法:

SMO算法的基本思路是每次选择两个变量 \alpha_i 和 \alpha_j,选取的两个变量所对应的样本之间间隔要尽可能大,因为这样更新会带给目标函数值更大的变化。SMO算法之所以高效,是因为仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另一个表示,这样的二次规划问题具有闭式解。

5、SVM从原始问题变为对偶问题来求解的原因

1,对偶问题将原始问题中的约束转为了对偶问题中的等式约束

2,方便核函数的引用

3,改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。

6、软间隔

不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,由于数据通常有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。这样的想法就意味着对目标函数的改变,之前推导的目标函数里不允许任何错误,并且让间隔最大,现在给之前的目标函数加上一个误差,就相当于允许原先的目标出错,引入松弛变量 \xi _i\geqslant0 ,公式变为:

那么这个松弛变量怎么计算呢,最开始试图用0,1损失去计算,但0,1损失函数并不连续,求最值时求导的时候不好求,所以引入合页损失(hinge loss):

函数图长这样:

理解起来就是,原先制约条件是保证所有样本分类正确,y_i(w^Tx_i+b)\geq 1, \forall i ,现在出现错误的时候,一定是这个式子不被满足了,即 y_i(w^Tx_i+b)< 1, \forall i_{fault} 错误 ,衡量一下错了多少呢?因为左边一定小于1,那就跟1比较,因为1是边界,所以用1减去 y_i(w^Tx_i+b) 来衡量错误了多少,所以目标变为(正确分类的话损失为0,错误的话付出代价):

但这个代价需要一个控制的因子,引入C>0,惩罚参数,即:

可以想象,C越大说明把错误放的越大,说明对错误的容忍度就小,反之亦然。当C无穷大时,就变成一点错误都不能容忍,即变成硬间隔。实际应用时我们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。

所以软间隔的目标函数为:

其中:

7、软间隔求解

与硬间隔类似:

上式的拉格朗日函数为:

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

先求内部最小值,对 w , b 和 \xi 求偏导并令其等于 0 可得:

将其代入到上式中去可得到,注意 \beta 被消掉了:

此时需要求解 \alpha ,同样利用SMO(序列最小优化)算法。

8、核函数

为什么要引入核函数:

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数。核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。

用自己的话说就是,在SVM不论是硬间隔还是软间隔在计算过程中,都有X转置点积X,若X的维度低一点还好算,但当我们想把X从低维映射到高维的时候(让数据变得线性可分时),这一步计算很困难,等于说在计算时,需要先计算把X映射到高维的的ϕ(x),再计算ϕ(x1)和ϕ(x2)的点积,这一步计算起来开销很大,难度也很大,此时引入核函数,这两步的计算便成了一步计算,即只需把两个x带入核函数,计算核函数,举个列子一目了然(图片来自:从零推导支持向量机):

个人对核函数的理解:核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。

9、核函数的优缺点

10、如何选择核函数

  • 当特征维数 d 超过样本数 m 时 (文本分类问题通常是这种情况), 使用线性核;

  • 当特征维数 d 比较小. 样本数 m 中等时, 使用RBF核;

  • 当特征维数 d 比较小. 样本数 m 特别大时, 支持向量机性能通常不如深度神经网络

11、谈谈SVM的损失函数

此处说的是软间隔:

先看软间隔的基本型形式:

稍微做一点变化:

这样写是为了符合标准的损失函数+正则化的样子,其中, 第一项称为经验风险, 度量了模型对训练数据的拟合程度;第二项称为结构风险, 也称为正则化项, 度量了模型自身的复杂度。 正则化项削减了假设空间, 从而降低过拟合风险. λ 是个可调节的超参数, 用于权衡经验风险和结构风险。

其中:

这样的话给上式乘以mc,就会变成上上式了。

12、 为什么SVM对缺失数据敏感?

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

13、SVM的优缺点

优点:

  • 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。

  • 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。

  • 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。

  • 理论基础比较完善(例如神经网络就更像一个黑盒子)。

缺点:

  • 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)

  • 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)

三、LR与SVM的异同及使用场景

相同点:

  • LR和SVM都是分类算法。
  • 如果不考虑核函数,LR和SVM都是线性分类算法,即分类决策面都是线性的。
  • LR和SVM都是监督学习算法。

不同点:

  • 本质上是其loss function不同。
  • 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
  • 线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。
  • 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
  • ​这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​
  • ​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
  • SVM的损失函数就自带正则!!!(损失函数中的\frac{1}{2}||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

使用场景

1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

参考:

https://blog.csdn.net/pakko/article/details/37878837

https://mp.weixin.qq.com/s/GdBFYVV7K1m0zOTrYMUkpQ

Linear SVM 和 LR 有什么异同? - 追风少年的回答 - 知乎 https://www.zhihu.com/question/26768865/answer/139613835

发布了25 篇原创文章 · 获赞 1 · 访问量 1423

猜你喜欢

转载自blog.csdn.net/Matrix_cc/article/details/105240748