逻辑回归别看简单,但是里面在面试里面考察的内容还是很多的。尤其在推荐算法领域,GBDT+LR就是在前几年还相当流行的一个推推荐算法手段。
在这篇文章之前,已经写过一些关于logistics Regression的补充了。
问题1:逻辑回归相比于线性回归,有何异同
首先,逻辑回归是处理分类问题,线性回归是处理回归问题。这是两者最最本质的区别。
逻辑回归是给定自变量和超参数后,得到因变量的期望,基于期望来处理预测分类的文同。
线性回归实际上是求解 ,来拟合我们的真实关系。
然后最重要的来了,先给出结论,逻辑回归可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的。
下面来分别解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:
逻辑回归:
首先,逻辑回归就是在线性回归的基础上加伤了一个Sigmod函数进行非线性因社会的,本质上来说,两者都是一个广义的线型模型。作为什么这么说呢?
我们先把sigmod函数给写出来:
他有以下几个特点:
1. 输出的范围都在0-1之间
2. 1/2处的倒数最大
3. sigmod的导数 = sigmod(x)(1-sigmod(x))
4. 在sigmod的两端会有硬饱和出现,会出现提督消失的情况
然后他的损失函数是一个交叉熵损失函数:
关键是这个函数是这么来的:
我们首先看一个样本的情况: 如果等于类别1,P=y,如果等于类别0,P=(1-y)
于是我们可以将这个判断式子写成一条式子:
我们是想这个式子越大越好的,因为预测概率 越大, 就越接近1。而如果等于0, 我们预测概率是1-y_pred, 我们依然希望这个越大越好。
然后我们推广到多个样本:
然后用极大似然的思想,还是求max,我们对这个多样本的情况进行取对数和取反,这样我们就得到了上述的loss形式了。
上述等式的推到,都是基于样本服从伯努利分布得到的。然后损失函数就是伯努利分布的极大似然估计。
因为面试时可能会考到,我们就手推一下上述这个loss的求梯度过程:
了解完sigmod的基本面后,我们开始深挖sigmod了,究竟sigmod是怎么来的?
我们先给出答案:假设我们要解决的是一个二分类问题,所以这个分类的概率是服从指数族分布里面的伯努利分布,然后在加上广义线性模型的条件,我们可以求得sigmod出来,其中所谓的对数线性模型,是指数族分布里面的一个小东西,这个小东西结合上广义线性模型的第三假设而得出的。
首先,什么是指数族分布?
如果概率分布满足以下的式子,我们说这个这个概率满足指数族分布:
其中指数族分布里面有很多成员:beta分布,gamma分布,正态分布,以及伯努利分布。
我们的现实问题就是一个二分类问题,所以满足概率分布服从伯努利分布:
我们将这些东西都拆分以下:
所以,这个伯努利的分布是满足指数分布的通式的,也就是我们现实的二分类问题是一个指数族分布,然后我们再来看广义模型
为了推导出广义模型,我们要假设三个条件:
于是我们把伯努利分布给掏出来:
有同学可能这里理解不了这个期望和概率的相等的,这个是某一件事的发生概率,然后咱们的期望是在X发生的情况下,Y发生的期望,也就是 了
然后根据咋们伯努利服从指数族分布的:
然后咱们的 应用广义模型的第三条假设,就得出sigmod函数了:
这样就可以解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况了。
下面就解释在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:
在线性回归模型里面,有一个非常重要的假设,就是假设误差项(残差)是服从标准的正态分布的。
其中当误差项(残差)符合正态分布时,残差就是预测值-实际值,那我现在残差已经是正态分布了,因变量(预测值)也会符合正态分布的(因为实际值是一个实数)
对于每一个样本,线型回归都可以写成:
这个b就是误差项,我们假设误差项就是服从正态分布的。
然后把 用线性回归的表达式去替换出来:
这个是误差项出现的概率鸭,我们肯定要让误差项出现概率最小呀,但是因为e的指数是负的,所以我们要让这个指数是最大的。我们先假设有N个样本,于是这N个样本的误差的出现概率相乘起来:
因为里面前面一项都是常数,我们只要后面那一项,也就是e指数那一块,然后我们要让这一块最小,于是我们给他加上log,分母也不要了,也就是求的最大了
也就是
然后去掉负号,就变成求最小了:也就是我们课本上提到了最小二乘法了:
至此:我们证明了使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的
说了一大堆不同的地方,我们现在来说相同的地方:
就是他们求解最佳参数的时候,都是可以使用提督下降的方法去求解的。
问题2:当使用逻辑回归处理度标签的分类问题时,有那些常见做法?分别应用于哪些场景,他们之间又有什么联系?
这个问题看得我头都大了,真的不知道该从什么角度去回答。最后一问就是问逻辑回归和多分类softmax的关系。
这之前做了笔记,现在刚好也整理上来了:
我们先看softmax的公式:
但是因为这个函数是非凸的,所以在有局部极小值处,而且极小值处还是一个平坦的区域,所以我们在这个范围内怎么取值,他输出的都是一样的。
你看我们减去了一个 他输出还是一样的。所以我们来看J=2的时候:
我们认为他也是冗余的,然后令 ,就有:
你看,这不就对上了咋们用sigmod去做激活函数了嘛,最后一个矩阵她们两个元素相加是等于1的
这就是用softmax当类别只有2的时候,softmax是怎么退化成sigmod的!
然后如果真的非得用二分类去处理多分类。就可以这么训练:属于第i个类别和不属于第i个类别,然后一直分类下去,就像一个二叉树一样。
下面是softmax的求导: