【算法岗面试知识点】逻辑回归LR

目录

LR介绍

LR假设

LR损失函数

交叉熵和似然函数

LR损失函数的求解

其他问题

逻辑回归如何分类

为什么LR不使用平方误差(MSE)当作损失函数?

逻辑回归的优缺点

LR为什么是线性模型?

逻辑回归为什么要对特征进行离散化

LR为什么用极大似然函数

LR为什么用sigmoid函数, 为什么不用其他函数?优缺点?

LR如何实现多分类

逻辑回归估计参数时的目标函数,如果加上一个先验的服从高斯分布的假设,会是什么样?

逻辑回归能否解决非线性分类问题?

线性回归与逻辑回归区别

极大似然估计(MLE)与极大后验估计(MAP)

经验风险最小化与结构风险最小化

模型对比

LR和朴素贝叶斯

LR和SVM

LR和决策树


LR介绍

逻辑回归(Logistic Regression)是一种广义线性回归。线性回归解决的是回归问题,预测值是实数范围,逻辑回归则相反,解决的是分类问题,预测值是[0,1]范围。所以逻辑回归名为回归,实为分类。接下来让我们用一句话来概括逻辑回归(LR):

逻辑回归假设数据服从伯努利分布,通过极大化似然函数推导损失函数,运用梯度下降来求解参数,来达到将数据二分类的目的

LR假设

逻辑回归的第一个基本假设是假设数据服从伯努利分布。

伯努利分布:是一个离散型概率分布,若成功,则随机变量取值1;若失败,随机变量取值为0。成功概率记为p,失败为q = 1-p。

逻辑回归的第二个假设是正类的概率由sigmoid的函数计算,即:

p.s.   sigmoid函数的导数是   f′(x)=f(x)(1−f(x))​  (面试遇到过要求推导)

LR损失函数

回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法(MLE)来推导出我们的损失函数。有点人把LR的损失函数成为log损失函数,也有人把它称为交叉熵损失函数(Cross Entropy)。

极大似然估计:利用已知的样本结果信息,反推最具可能导致这些样本结果出现的模型参数值。

似然函数:

为了更方便求解,我们对等式两边同取对数,写成对数似然函数:加上ln

在机器学习中我们有损失函数的概念,其衡量的是模型预测错误的程度。如果取整个数据集上的平均对数似然损失,我们可以得到:

交叉熵和似然函数

即在逻辑回归模型中,我们最大化似然函数和最小化损失函数实际上是等价的。所以说LR的loss function可以由MLE推导出来。(所以交叉熵和似然函数的差别在于最大化和最小化,符号不同)

x表示样本,y表示预测的输出,a表示实际的输出,n表示样本总数量。

LR损失函数的求解

解逻辑回归的方法有非常多,主要有梯度下降(一阶方法)和牛顿法(二阶方法)。优化的主要目标是找到一个方向,参数朝这个方向移动之后使得损失函数的值能够减小,这个方向往往由一阶偏导或者二阶偏导各种组合求得。

其他问题

逻辑回归如何分类

设定一个阈值,判断正类概率是否大于该阈值,一般阈值是0.5,所以只用判断正类概率是否大于0.5即可。

为什么LR不使用平方误差(MSE)当作损失函数?

1.  平方误差损失函数加上sigmoid的函数将会是一个非凸的函数,不易求解,会得到局部解,用对数似然函数得到高阶连续可导凸函数,可以得到最优解。

2.  其次,是因为对数损失函数更新起来很快,因为只和x,y有关,和sigmoid本身的梯度无关。如果你使用平方损失函数,你会发现梯度更新的速度和sigmod函数本身的梯度是很相关的。sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。

但是可以替换。

逻辑回归的优缺点

优点:

  1. 形式简单,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
  2. 模型效果不错。在工程上是可以接受的(作为baseline),如果特征工程做的好,效果不会太差,并且特征工程可以大家并行开发,大大加快开发的速度。
  3. 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
  4. 资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
  5. 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cut off,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。

缺点:

  1. 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
  2. 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
  3. 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
  4. 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

LR为什么是线性模型?

典型的LR模型是

明明用了非线性函数,那为什么LR还是线性模型呢?

判断一个模型是否是线性的,是通过分界面是否是线性来判断的。这个P函数是y关于x的后验概率,它的非线性性不影响分界面的线性性。可以通过令两种类别的概率相等,求解x的表达式,如果是线性的,那么就是线性模型。

逻辑回归为什么要对特征进行离散化

  1. 非线性:LR属于广义线性回归模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合; 离散特征的增加和减少都很容易,易于模型的快速迭代;
  2. 速度快,稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  3. 鲁棒性,离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
  4. 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
  5. 稳定性:特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
  6. 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

LR为什么用极大似然函数

  • 想要让每一个样本的预测都要得到最大的概率,即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.
  • 对极大似然函数取对数以后相当于对数损失函数,由梯度更新的公式可以看出,对数损失函数的训练求解参数的速度是比较快的,而且更新速度只和x,y有关,比较的稳定

LR为什么用sigmoid函数, 为什么不用其他函数?优缺点?

       LR是广义线性模型,假设数据服从伯努利分布,广义线性模型理论和伯努利分布推导出的函数形式和sigmoid函数相同

优点

1.输入范围是−∞→+∞,而之于刚好为(0,1),正好满足概率分布为(0,1)的要求。我们用概率去描述分类器,自然比单纯的某个阈值要方便很多;

2.单调上升的函数,具有良好的连续性,不存在不连续点。

3.函数关于(0,0.5) 中心对称

缺点

1.幂运算相对耗时

2.sigmoid 函数反向传播时,很容易就会出现梯度消失的情况(反向传播求误差梯度时,求导涉及除法)

LR如何实现多分类

Softmax回归

K Binary Classifiers K个二分类器

逻辑回归估计参数时的目标函数,如果加上一个先验的服从高斯分布的假设,会是什么样?

相当于求最大后验概率

MAP与ML最大的不同在于p(参数)项,所以可以说MAP是正好可以解决ML缺乏先验知识的缺点,将先验知识加入后,优化损失函数。

其实p(参数)项正好起到了正则化的作用。如:如果假设p(参数)服从高斯分布,则相当于加了一个L2 norm;如果假设p(参数)服从拉普拉斯分布,则相当于加了一个L1 norm。

逻辑回归能否解决非线性分类问题?

可以,引入核函数,但是要考虑所有样本,计算慢

也可以对数据进行离散化

线性回归与逻辑回归区别

  1. 逻辑回归是广义线性回归模型,名为回归,实为分类,输出是【0,1】,可作为概率;线性回归是回归模型,输出是负无穷到正无穷;
  2. 线性回归使用最小化平方误差(MSE),对偏离真实值越远的数据惩罚越严重。逻辑回归是最大化似然函数进行参数估计,使用交叉熵做损失函数
  3. 也正是因为使用的参数估计的方法不同,线性回归模型更容易受到异常值(outlier)的影响,有可能需要不断变换阈值,使用逻辑回归的方法进行分类,就明显对异常值有较好的稳定性。

极大似然估计(MLE)与极大后验估计(MAP)

极大似然估计是频率学派模型参数估计的常用方法(认为参数是个定值),似然,可以理解为概率,也就是最大化这件事的概率它是根据已知样本,希望通过调整模型参数来使模型能够最大化样本情况出现的概率最大后验概率估计是贝叶斯派参数估计的常用方法,最大化在给定数据样本的情况下模型参数的后验概率,依然是根据已知样本,来通过调整模型参数使得模型能够产生该数据样本的概率最大,只不过对于模型参数有了一个先验假设,即模型参数可能满足某种分布,不再一味地依赖数据样例(万一数据量少或者数据不靠谱呢)。

在这里举个掷硬币的例子:抛一枚硬币10次,有10次正面朝上,0次反面朝上。问正面朝上的概率p。

在频率学派来看,利用极大似然估计可以得到 p= 10 / 10 = 1.0。显然当缺乏数据时MLE可能会产生严重的偏差。

如果我们利用极大后验概率估计来看这件事,先验认为大概率下这个硬币是均匀的 (例如最大值取在0.5处的Beta分布),那么P(p|X),是一个分布,最大值会介于0.5~1之间,而不是武断的给出p= 1。

显然,随着数据量的增加,参数分布会更倾向于向数据靠拢,先验假设的影响会越来越小。

经验风险最小化与结构风险最小化

经验风险最小化与结构风险最小化是对于损失函数而言的。可以说经验风险最小化只侧重训练数据集上的损失降到最低;而结构风险最小化是在经验风险最小化的基础上约束模型的复杂度,使其在训练数据集的损失降到最低的同时,模型不至于过于复杂,相当于在损失函数上增加了正则项,防止模型出现过拟合状态。这一点也符合奥卡姆剃刀原则:如无必要,勿增实体。 经验风险最小化可以看作是采用了极大似然的参数评估方法,更侧重从数据中学习模型的潜在参数,而且是只看重数据样本本身。这样在数据样本缺失的情况下,很容易管中窥豹,模型发生过拟合的状态;结构风险最小化采用了最大后验概率估计的思想来推测模型参数,不仅仅是依赖数据,还依靠模型参数的先验假设。这样在数据样本不是很充分的情况下,我们可以通过模型参数的先验假设,辅助以数据样本,做到尽可能的还原真实模型分布

模型对比

LR和朴素贝叶斯

 

LR和SVM

相同点:LR和SVM都是分类模型,监督学习,判别模型,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
不同点:
1.损失函数不同,LR基于概率理论,假设正样本概率为sigmoid函数,通过极大似然方法推导出损失函数。SVM是基于几何间隔最大化,认为存在最大几何间隔的分类面为最优分类面
2.对数据和参数的敏感程度不同。SVM考虑分类边界附近的样本,对支持向量外的样本添加或减少任何样本对分类没有影响;LR依赖数据分布,受所有数据点影响,每个样本点都会影响决策面结果,如果非均衡,需进行均衡处理。
  LR是参数模型,假设数据服从伯努利分布,SVM是非参数模型,对分布不做假设
3.SVM基于距离,依赖数据距离测度,需要做归一化,LR基于概率,不受影响
4.解决非线性问题,SVM采用核函数机制,而LR通常不采用核函数的方法(假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。)
5.小规模数据集上,线性SVM略好于LR,但差别不大,而线性SVM的计算复杂度受数据量限制,对海量数据使用LR
6.SVM自带正则,LR需要额外添加正则化

LR和决策树

1.LR对观测样本的概率值输出,树无法输出分数,只能给出直接的分类结果

2.决策树有直观的决策过程,能够处理非线性特征,LR处理非线性需要引入核函数。

 

 

优点

缺点

LR

(1)对观测样本的概率值输出

(2)实现简单高效,是大量的工业界解决方案

 

 

(1)特征空间太大时表现不太好

(2)对于非线性特征需要做特征变化

(3)依赖所有样本数据

决策树

(1)直观的决策过程

(2)能够处理非线性特征

(1)极易过拟合(剪枝,RF)

(2)无法输出score,只能直接的分类结果

SVM

(1)可以处理高维特征

(2)使用核函数轻松应对非线性特征空间

(3)分类面不依赖于所以数据

(1)对于大量的观测样本,效率会很低

(2)难以找到合适的核函数

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值