逻辑回归

目录

Q1:逻辑回归的原理

Q2:逻辑回归为什么又叫对率回归

Q3:逻辑回归为什么使用sigmoid

Q4:信息熵的定义及推导过程

Q5:逻辑回归损失函数的推导过程

Q6:逻辑回归为什么要用交叉熵作为损失函数,为什么不用平方损失函数

Q7:逻辑回归为什么可以表示概率,表示的是真实的概率吗?

Q8:如何求解逻辑回归的损失函数

Q9:逻辑回归如何防止过拟合

Q10:逻辑回归如何做多分类

Q11:逻辑回归和线性回归的异同点

Q12:逻辑回归的特征为什么要做离散化,这样做有什么好处

Q13:逻辑回归的优缺点

参考博客


 

Q1:逻辑回归的原理

logistic回归是一种广义线性回归(generalized linear model),假设待预测数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据分类的目的。

Q2:逻辑回归为什么又叫对率回归

将逻辑回归的公式进行整理,我们可以得到

如果把一个事件的几率(odds)定义为该事件发生的概率与该事件不发生的概率的比值 p / (1 - p) ,那么逻辑回归可以看作是对于“y=1|x”这一事件的对数几率的线性回归,于是“逻辑回归”这一称谓也就延续了下来。

Q3:逻辑回归为什么使用sigmoid

先来看一下sigmoid函数和它的图像: 

(1)sigmoid函数的输出范围是(0,1),符合概率的定义;

(2)sigmoid函数是一个单调递增函数;

(3)对于二分类问题,其满足伯努利分布。

上述的回答过于笼统,下面我将详细的描述为什么会是这个函数。事实上并不是因为sigmoid函数有很多优秀的性质才使得logstic回归选择了它,而是冥冥之中自有定数。

首先贴一个描述指数簇分布广义线性模型的图。

明白这两个性质之后,我们就可以开始推导了。

Q4:信息熵的定义及推导过程

信息熵考虑该随机变量(可以理解为label,只能是分类,不能用于回归)的所有可能取值(即所有可能发生事件)所带来的信息量的期望。表示随机变量的不确定性,显然均匀分布的不确定性最大,当随机变量为一个定值的时候,信息熵是最小的

假设现在有两个互相独立的事件a和事件b,这两件事的信息量之和,显然应该是它们两相加 h(a,b)=h(a)+h(b)

同时由于事件a和事件b互相独立,所以有 p(a,b)=p(a)*p(b)

一眼看过去这两个公式,好像有那么点log联系!

也就是说,我们似乎可以用概率去度量信息量。

于是我们得到了信息量的度量公式,符号很明显是为了把负数变为正数。

h(x)=-log_2 p(x)

当一件事情是确定一定发生的,也就是当 p(x)=1 时,该事件的信息量最小,这听起来很符合常理——比如说我们知道父亲一定是男性,众所周知,这句话也就没什么信息量(一个好无聊的例子...)。

那么信息熵则是一个随机变量所有可能取值所带来的信息量的期望,于是就有:

h(x)=-sum(p(x)log_2 p(x))

(待补充,均匀分布的信息熵最大)

Q5:逻辑回归损失函数的推导过程

我们从伯努利分布的质量函数说起,对于二分类问题,我们假设 y 是服从伯努利分布的,当样本和参数确定时,属于类别1和类别2的概率也就确定了。

这显然又是一个似然函数,可以通过极大似然估计+梯度下降(牛顿法也行)求解。还是常规操作,先取一个log

注意:最后一个式子右边少了一个log

于是我们就得到了逻辑回归的损失函数,我们又称其为交叉熵:

Q6:逻辑回归为什么要用交叉熵作为损失函数,为什么不用平方损失函数

当逻辑回归使用平方损失函数时,损失函数是非凸的,有很多局部最小值;而交叉熵则是凸函数,图像如下:

如果使用均方误差,有梯度下降法可知

 有绝对值项,很麻烦,而且从上面sigmoid函数的导数图像可知,当自变量 x 很大或很小时,导数接近0,梯度下降的速度将会极其缓慢,用交叉熵则不然,这也要得益于sigmoid函数的优良性质。我们会发现当真实值和预测值的误差较大时,梯度下降会更快;反之则会更慢,这完全符合我们的预期。

注意:这里第二个式子下面应该是b不是w

Q7:逻辑回归为什么可以表示概率,表示的是真实的概率吗?

当待预测变量 y 确实服从伯努利分布且满足广义线性模型的第三个条件时,可以认为逻辑回归输出的就是真实的概率,训练模型的过程,就确实是在对概率进行建模。但一般都不满足这个条件,所以呢,很多情况下,我们得出的逻辑回归输出值,无法当作真实的概率,只能作为置信度来使用。

这里再简单说明一下怎么判断一个随机变量是否符合二项分布。

二项分布(Binomial Distribution),即重复n次的伯努里试验(Bernoulli Experiment),如果

(1)在每次试验中只有两种可能的结果,而且是互相对立的;

(2)每次实验是独立的,与其它各次试验结果无关;

(3)结果事件发生的概率在整个系列试验中保持不变,则这一系列试验称为伯努力试验.

简单来说就是要满足二分类+对立、每次互相独立、概率不变

Q8:如何求解逻辑回归的损失函数

这里用批梯度下降法来推导。 

几种梯度下降法的优劣:

(1)批梯度下降通常会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢;

(2)随机梯度下降是以高方差频繁更新,优点是使得SGD会跳到新的和潜在更好的局部最优解,速度较快,缺点是使得收敛到局部最优解的过程更加杂乱,且有可能收敛到局部最优解;

(3)小批量梯度下降结合了SGD和BGD的优点,每次更新的时候使用一小部分样本。减少了参数更新的次数,可以达到更加稳定收敛结果,一般在深度学习当中我们采用这种方法。

 这里其实还有几个问题,我会专门写一个梯度下降和牛顿法的博客来解释。

(1)如何对模型选择合适的学习率;

(2)如何对参数选择合适的学习率。

Q9:逻辑回归如何防止过拟合

算法层面-正则化:

  1. L1正则,通过增大正则项导致更多参数为0,参数系数化降低模型复杂度,从而抵抗过拟合。
  2. L2正则,通过使得参数都趋于0,变得很小,降低模型的抖动,从而抵抗过拟合。
  3. 特征离散化

数据层面:

  1. 加大样本量。
  2. 通过特征选择减少特征量。

业务层面:

  1. EDA-探索有区分性的特征。
  2. 特征派生-不断派生更多强组合的特征。

来源:https://www.zhihu.com/question/269763205/answer/599663035

Q10:逻辑回归如何做多分类

方法一:多分类问题中的拆分策略

有两种简单的拆分策略:

(1)"一对一" (OvO)

(2)"一对其余"(OvR,rest)

OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,例如OvO将为区分类别Ci和Cj训练一个分类器,该分类器把D中的Ci类样例作为正例,Cj类样例作为反例。在测试阶段,新样本将同时提交给所有分类器,于是我们将得到N(N-1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果

OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信,选择置信度最大的类别标记作为分类结果。

方法二:多项逻辑回归(softmax regression)

Q11:逻辑回归和线性回归的异同点

Q12:逻辑回归的特征为什么要做离散化,这样做有什么好处

工业界CTR预估一般都是用LR,而且特征都是离散的。这样做有这么几个好处:

(1)离散特征的增加和减少都很容易,易于模型的快速迭代;

(2)稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

(3)散化后的特征对异常数据有很强的鲁棒性,更加稳定;

(4)特征离散化后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

(5)离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;

(6)特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

当使用连续特征时,一个特征对应于一个权重,那么,如果这个特征权重较大,模型就会很依赖于这个特征,这个特征的一个微小变化可能会导致最终结果产生很大的变化,这样子的模型很危险,当遇到新样本的时候很可能因为对这个特征过分敏感而得到错误的分类结果,也就是泛化能力差,容易过拟合。而使用离散特征的时候,一个特征变成了多个,权重也变为多个,那么之前连续特征对模型的影响力就被分散弱化了,从而降低了过拟合的风险。

总结一下就是:

(1)计算快,易存储;

(2)方便调整特征,更加稳定,更易迭代;相当于简化了模型,降低过拟合的风险。

(3)表达能力提升,更强的鲁棒性;

参考:https://blog.csdn.net/zhangbaoanhadoop/article/details/82657791?utm_source=blogxgwz5

Q13:逻辑回归的优缺点

优点

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

缺点

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

 

 

 

参考博客

https://blog.csdn.net/qq_19645269/article/details/79551576

https://blog.csdn.net/huwenxing0801/article/details/82791879

https://www.jianshu.com/p/a8d6b40da0cf?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin

https://www.zhihu.com/question/269763205

https://blog.csdn.net/zhangbaoanhadoop/article/details/82657791?utm_source=blogxgwz5

https://blog.csdn.net/luanlong123/article/details/82905408

https://www.cnblogs.com/ModifyRong/p/7739955.html

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值