百面机器学习 之 逻辑回归

        逻辑回归别看简单,但是里面在面试里面考察的内容还是很多的。尤其在推荐算法领域,GBDT+LR就是在前几年还相当流行的一个推推荐算法手段。

        在这篇文章之前,已经写过一些关于logistics Regression的补充了。

问题1:逻辑回归相比于线性回归,有何异同

        首先,逻辑回归是处理分类问题,线性回归是处理回归问题。这是两者最最本质的区别。

        逻辑回归是给定自变量和超参数后,得到因变量的期望,基于期望来处理预测分类的文同。

        线性回归实际上是求解 \hat{y} = \theta^Tx,来拟合我们的真实关系y = ax+b

        然后最重要的来了,先给出结论,逻辑回归可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的。

        下面来分别解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:

        逻辑回归:

        首先,逻辑回归就是在线性回归的基础上加伤了一个Sigmod函数进行非线性因社会的,本质上来说,两者都是一个广义的线型模型。作为什么这么说呢?

         我们先把sigmod函数给写出来:

sigmod = \frac{1}{1+e^{-x}}

        他有以下几个特点:

        1. 输出的范围都在0-1之间

        2. 1/2处的倒数最大

        3. sigmod的导数 = sigmod(x)(1-sigmod(x))

        4. 在sigmod的两端会有硬饱和出现,会出现提督消失的情况

        然后他的损失函数是一个交叉熵损失函数:

loss = -(\sum^N_{i=1} y_i logy_{i,pred} + (1-y_i)log(1-y_{i,pred}))

        关键是这个函数是这么来的:

        我们首先看一个样本的情况: 如果等于类别1,P=y,如果等于类别0,P=(1-y)

        于是我们可以将这个判断式子写成一条式子:

        y_{pred}^{y_i}(1-y_{pred})^{1-y_i}        

        我们是想这个式子越大越好的,因为预测概率 y_{pred} 越大, 就越接近1。而如果等于0, 我们预测概率是1-y_pred, 我们依然希望这个越大越好。

        然后我们推广到多个样本:

\prod y_{pred}^{y_i}*(1-y_{pred})^{1-y_i}

        然后用极大似然的思想,还是求max,我们对这个多样本的情况进行取对数和取反,这样我们就得到了上述的loss形式了。

        上述等式的推到,都是基于样本服从伯努利分布得到的。然后损失函数就是伯努利分布的极大似然估计。

        因为面试时可能会考到,我们就手推一下上述这个loss的求梯度过程:

         了解完sigmod的基本面后,我们开始深挖sigmod了,究竟sigmod是怎么来的?

        我们先给出答案:假设我们要解决的是一个二分类问题,所以这个分类的概率是服从指数族分布里面的伯努利分布,然后在加上广义线性模型的条件,我们可以求得sigmod出来,其中所谓的对数线性模型,是指数族分布里面的一个小东西,这个小东西结合上广义线性模型的第三假设而得出的。

        首先,什么是指数族分布?

        如果概率分布满足以下的式子,我们说这个这个概率满足指数族分布:

         其中指数族分布里面有很多成员:beta分布,gamma分布,正态分布,以及伯努利分布。

        我们的现实问题就是一个二分类问题,所以满足概率分布服从伯努利分布:

         我们将这些东西都拆分以下:

 

         所以,这个伯努利的分布是满足指数分布的通式的,也就是我们现实的二分类问题是一个指数族分布,然后我们再来看广义模型

        为了推导出广义模型,我们要假设三个条件:

         

        于是我们把伯努利分布给掏出来:P(y|x;\theta) \sim Bernoulli(\phi )

h(x) = E\left [ T(y)|x \right ] = E\left [ y|x \right ] = \phi

        有同学可能这里理解不了这个期望和概率的相等的,这个\phi是某一件事的发生概率,然后咱们的期望是在X发生的情况下,Y发生的期望,也就是 y_{pred}^{y_i}(1-y_{pred})^{1-y_i}

        然后根据咋们伯努利服从指数族分布的:

         然后咱们的\eta 应用广义模型的第三条假设,就得出sigmod函数了:

h(x) = \frac{1}{1+e^{-x}}

        这样就可以解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况了。

        下面就解释在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:

        在线性回归模型里面,有一个非常重要的假设,就是假设误差项(残差)是服从标准的正态分布的。

        其中当误差项(残差)符合正态分布N(0,\sigma ^2)时,残差就是预测值-实际值,那我现在残差已经是正态分布了,因变量(预测值)也会符合正态分布的(因为实际值是一个实数)

        对于每一个样本,线型回归都可以写成:

y^i = \beta^Tx_i+\varepsilon _i

        这个b就是误差项,我们假设误差项就是服从正态分布的。

P(\beta_i) = \frac{1}{\sigma *\sqrt{2\pi}}e^{-\frac{\varepsilon_i ^2}{2\sigma^2}}

        然后把\large b_i 用线性回归的表达式去替换出来:

P(y_i|x_i,\beta,\sigma) = \frac{1}{\sigma *\sqrt{2\pi}}e^{-\frac{(y_i-\beta^Tx_i)^2}{2\sigma^2}}

        这个是误差项出现的概率鸭,我们肯定要让误差项出现概率最小呀,但是因为e的指数是负的,所以我们要让这个指数是最大的。我们先假设有N个样本,于是这N个样本的误差的出现概率相乘起来:

\prod^N_{i=1} P(y_i|x_i,\beta,\sigma)

        因为里面前面一项都是常数,我们只要后面那一项,也就是e指数那一块,然后我们要让这一块最小,于是我们给他加上log,分母也不要了,也就是求y_i-\beta^Tx的最大了

        也就是argmax\sum^N_{i=1}-(y_i-\beta^T*x_i)

        然后去掉负号,就变成求最小了:也就是我们课本上提到了最小二乘法了:

argmin \sum^N_{i=1}(y_i-\beta^T*x_i)

        至此:我们证明了使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的

        说了一大堆不同的地方,我们现在来说相同的地方:

        就是他们求解最佳参数的时候,都是可以使用提督下降的方法去求解的。

问题2:当使用逻辑回归处理度标签的分类问题时,有那些常见做法?分别应用于哪些场景,他们之间又有什么联系?

        这个问题看得我头都大了,真的不知道该从什么角度去回答。最后一问就是问逻辑回归和多分类softmax的关系。

        这之前做了笔记,现在刚好也整理上来了:

        我们先看softmax的公式:

P(Y=1,...,N|X;\theta) =\begin{bmatrix} P(Y=1|X;\theta) \\ P(Y=2|X;\theta) \\ \vdots \\P(Y=N|X;\theta) \end{bmatrix} =\frac{e^{\theta^Tx_i}}{\sum^J_{j=1}e^{\theta^T_jx_i}} = \\ \begin{bmatrix} e^{\theta^T_1x_i} \\ e^{\theta^T_2x_i} \\ \vdots \\ e^{\theta^T_Nx_i} \end{bmatrix} * \frac{1}{\sum^J_{j=1}e^{\theta^T_jx_i}}

        但是因为这个函数是非凸的,所以在有局部极小值处,而且极小值处还是一个平坦的区域,所以我们在这个范围内怎么取值,他输出的都是一样的。

         你看我们减去了一个 \psi 他输出还是一样的。所以我们来看J=2的时候:

P(Y|X;\theta) = \begin{bmatrix} e^{\theta^T_1x_i} \\ e^{\theta^T_2x_i} \end{bmatrix} * \frac{1}{e^{\theta^T_1x_i} + e^{\theta^T_2x_i}}

        我们认为他也是冗余的,然后令 \psi = \theta_1,就有:

P(Y|X;\theta) = \begin{bmatrix} e^{(\theta^T_1 - \theta^T_1)x_i} \\ e^{\theta^(T_2 - \theta^T_1)x_i} \end{bmatrix} * \frac{1}{e^{(\theta^T_1 - \theta^T_1)x_i} + e^{(\theta^T_2 - \theta^T_1)x_i}} = \begin{bmatrix} e^{(0)} \\ e^{(\theta^T_2 - \theta^T_1)x_i} \end{bmatrix} * \frac{1}{e^{(0)x_i} + e^{(\theta^T_2 - \theta^T_1)x_i}} = \begin{bmatrix}\frac{1}{1 + e^{(\theta^T_2 - \theta^T_1)x_i}} \\ \frac{e^{(\theta^T_2 - \theta^T_1)x_i}}{1 + e^{(\theta^T_2 - \theta^T_1)x_i}} \end{bmatrix}

        你看,这不就对上了咋们用sigmod去做激活函数了嘛,最后一个矩阵她们两个元素相加是等于1的

        这就是用softmax当类别只有2的时候,softmax是怎么退化成sigmod的!

        然后如果真的非得用二分类去处理多分类。就可以这么训练:属于第i个类别和不属于第i个类别,然后一直分类下去,就像一个二叉树一样。

        下面是softmax的求导:

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值