逻辑回归全方位认识

目录

1.逻辑回归的原理和推导

2.逻辑回归相关面试题


1.逻辑回归的原理和推导

逻辑回顾假设数据服从伯努利分布,则P(y|X)---在已知x的情况下y服从伯努利分布,通过极大化似然函数的方法,运用梯度下降或者拟牛顿法等优化方法来求解参数,以达到将数据二分类的目的。

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

逻辑回归有两个假设:第一个是假设数据服从伯努利分布;第二个假设是假设样本为正的概率由sigmoid函数计算,即p=\frac{1}{1+e^{-\theta^Tx}}.

首先,sigmoid函数为:

g(z)=\frac{1}{1+e^{-z}}

它有一个非常好的性质:

g'(z)=g(z)(1-g(z))

逻辑回归说白了就是线性回归的形式加入sigmoid函数中:

 其中h的值越小,则分类为0的概率越高,否则分类问1的概率越高,靠近临界点则分类准确率下降。

需要注意,这里的h表示的是输出结果为1的概率而不是0.

 上面两个式子合并得到:

其中y的取值只能是0或者1.

得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数θ。极大似然函数为:

 其中m为样本的个数,因为这里是极大似然式需要进行梯度上升法求解最大值,不过比较常见的是梯度下降法,所以对上式做一个变形得到:

分别对每一个参数θ求一阶导,可以得到:

梯度下降法公式:

第j个权重系数θj=第j个权重系数θj-学习率*(损失J(θ)关于θj的一阶导数),将上面的损失函数J(θ)的公式带入可得:

 α是学习率,n是特征数量,m是样本量。

mini-batch就是这里的m变成了batch里的样本数量而已。

2.逻辑回归相关面试题

为什么lr或者神经网络等使用梯度下降法求解的算法要提前对数据做标准化?

https://www.cnblogs.com/silence-tommy/p/7113498.html

机器学习——标准化/归一化的目的和作用_归一化处理的目的和意义_o_Eagle_o的博客-CSDN博客

基于上面的链接,我们来举个例子说明。

假定为预测房价的例子,自变量为面积,房间数两个,因变量为房价。那么可以得到的公式为:

其中x1代表房间数,θ1代表变量x1前面的系数。其中x2代表面积,θ2代表变量x2前面的系数。 

我们来画出数据是否归一化的最优解寻解过程。

未归一化:

归一化之后:

 我们在寻找最优解的过程也就是在使得损失函数最小的θ1,θ2.上述两幅图就是损失函数的等高线。我们很容易看出,当数据没有归一化的时候,面积数的范围可以从0~1000,房间数的范围一般为0~10,可以看出面积数的取值范围大于房间数。

这样造成的影响就是在画损失函数的时候,数据没有归一化的表达式,可以为:

J=(3\theta1+600\theta2-y_{correct}^2)

造成图像的等高线为类似椭圆形状,最优解的寻优过程就是像未归一化的那个图所示。

而数据归一化后,损失函数的表达式可以表示为:

J=(0.5\theta1+0.55\theta2-y_{correct})^2

其中变量的前面系数几乎一样,则图像的等高线为类似圆形形状,最优解的寻优过程归一化的那个图所示。

总而言之,从上可以看出,数据归一化后,消除了不同特征的量纲的影响,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。否则量纲大的特征的梯度更新量大,量纲校的特征的梯度更新量小,特征之间的收敛速度差别大导致整体的收敛速度慢(因为更新快的特征要等更新慢的特征的权重系数收敛),这就是数据为什么要归一化的原因。

逻辑回归是线性模型还是非线性模型?

classification - Why is logistic regression a linear classifier? - Cross Validated

这个涉及到我们怎么去定义线性还是非线性,如果从输出的角度来看,逻辑回归的输出是非线性的数据,经过sigmoid映射之后的输出值是非线性的:

但是如果我们从它的决策面来说,它又是超平面而不是曲面:

 上述现象的原因是:

sigmoid函数就是一个纯粹的数学变换没有任何的可学习参数,我们的决策是直接根据右边的式子得到的,sigmoid只是负责映射成非线性的输出,直观的说就是我们的逻辑回归的输出在进入sigmoid函数之前是图2这样的线性的值,经过sigmoid之后称为非线性的值,所以从决策平面的来说逻辑回归是线性模型,从输出来看逻辑回归是非线性模型,不过一般是从决策平面来定义线性和非线性的,所以我们还是将逻辑回归作为线性模型

逻辑回归可以用在线性不可分吗?那怎么才能让逻辑回归能用?

逻辑回归的决策边界时平面或者超平面,并不能用在非线性关系的拟合上,如果要用逻辑回归来拟合非线性关系有这两种方法:

1.提高特征的维度,比如ctr领域常见的特征交叉组合,lr+gbdt增大有效特征的维度等方式,根据covar定理,维度越高则线性可分的概率越高,实际上目的和核技巧类似,把问题转化到高维空间上去以找到某一个决策的超平面,实现原始问题的线性可分。

2.kernel trick,核技巧。

逻辑回归中损失函数的实际意义?

直观的,根据极大似然法将这些条件概率连乘取对数取反得到逻辑回归的损失函数,意义在于希望能够最大化这些样本出现的概率,极大似然本身的假设就是真实存在的样本出现的概率最大,而相对应的参数就是能够使得这些数据出现概率最大的参数,取反则变成希望真实存在的样本出现的概率的负数最小(也就是我们上面的损失函数的公式)

推导逻辑回归的迭代公式:直接背下面这个公式面试的时候过去默写把。(其实就是第一个逻辑回回归的原理,不过这里是以梯度上升法来做的,我们实际用梯度下降法来做)

逻辑函数如下:

h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

这个式子表示正样本,也就是常见的标签为1的样本的概率。

样本分到每个类的概率如下(即logisitic分布):

P(y=1|x;\theta)=h_\theta(x)\\ P(y=0|x;\theta)=1-h_\theta(x)\\ P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

似然函数如下:

似然函数取对数(一般为了使用梯度下降法会再取负使得原始的问题从求极大值变成求极小值):

求导:

求导利用如下性质:

 得到递推公式如下:

\theta_j:=\theta_j+\alpha(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}

逻辑回归有什么特点(逻辑回归的思想和过程)?如果使用逻辑回归,你是如何提升模型性能的(如何训练得到最优参数)?

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

特征离散化、特征交叉、调参(学习率和正则化系数等)、gbdt提取高阶特征、使用正则化等。

逻辑回归为什么用极大似然函数作为损失函数?

一般和平方损失函数(最小二乘法)拿来比较,因为线性回归用的是平方损失函数,原因就是平方损失函数加上sigmoid的函数将会是一个非凸的函数,不易求解,会得到局部解,用对数似然函数得到高阶连续可导凸函数,可以得到最优解。

其次,是因为对数损失函数更新起来很快,因为只和x,y有关,和sigmoid本身的梯度无关。

逻辑回归在训练过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

先说结论,如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。

但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,现在将它重复100遍。训练完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。

为什么我们还是会在训练的过程当中将高度相关的特征去掉

去掉高度相关的特征会让模型的可解释性更好。

可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

LR与线性回归的区别与联系

逻辑回归是一种广义线性模型,它引入了sigmoid函数,是非线性输出,但本质上还是一个线性回归模型,因为除去sigmoid函数映射关系,其他的算法都是线性回归的。

逻辑回归和线性回归首先都是广义的线性回归,在本质上没多大区别,区别在于逻辑回归多了个sigmoid函数,使样本映射到[0,1]之间的数值,从而来处理分类问题。另外逻辑回归是假设变量服从伯努利分布,线性回归假设变量服从高斯分布。逻辑回归输出的是离散型变量,用于分类,线性回归输出的是连续性的,用于预测。逻辑回归是用最大似然法去计算预测函数中的最优参数值,而线性回归用最小二乘法对自变量关系进行拟合。

连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果?例如ctr预估中,特征大多数是离散的,这样做的好处在哪里?

在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0,1特征交给逻辑回归模型,这样做的优势有以下几点:

  • 离散特征的增加和减少都很容易,易于模型的快速迭代,容易扩展。
  • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0.如果特征没有离散化,一个异常数据"年龄300"会给模型造成很大的干扰;
  • 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合。具体来说,离散化后可以进行特征交叉,由M+N个变量变为M*N个变量;
  • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是个学问。

逻辑回归的优缺点

优点:

  • 形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
  • 模型效果不错。在工程上是可以接受的(作为 baseline),如果特征工程做的好,效果不会太差,并且特征工程可以并行开发,大大加快开发的速度。
  • 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化 SGD 发展比较成熟。
  • 方便调整输出结果,通过调整阈值的方式。
  • 资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
  • 可以满足线性实时的需求因为lr可以很方便的做成线性学习(online learning)形式

缺点:

  • 准确率欠佳。因为形式非常的简单,而现实中的数据非常复杂,特征工程方面也做的不好的话,因此,很难达到很高的准确性。
  • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1。我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
  • 无法自动的进行特征筛选。
  • 只能处理二分类问题。

逻辑回归的适用场景(在什么情况下你会选择用逻辑回归):

  • 基本假设:输出类别服从伯努利二项分布
  • 样本线性可分
  • 不必在意特征间相关性的情况(如果强调可解释性,特征相关性会影响结果,因为相关性太高的特征之间会接近"平分"梯度的更新值,如果不在意解释性,那么其实也不太需要额外处理特征共线性的问题因为共线性不影响模型的使用效果)
  • 后续会有大量新数据的情况(因为lr很容易做成在线学习的形式)
  • 一般作为一个baseline的分类模型会选择逻辑回归,构建速度快,可解释性强,特别是金融机构这类对于可解释性比较看重的(可解释性意味着可以使用业务层面的丰富的先验知识来辅助模型效果会更好也更直观) 

【面经】关于逻辑回归,面试官们都怎么问_zenRRan的博客-CSDN博客

逻辑回归面经总结,cheat sheet_牛客网

https://www.cnblogs.com/lian1995/p/11728848.html

关于逻辑回归,面试官都怎么问_kaiyuan_sjtu的博客-CSDN博客

逻辑回归算法面经 - 知乎

逻辑回归面经整理——from牛客 - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值