逻辑回归是一个假设样本服从伯努利分布,利用极大似然估计和梯度下降求解的二分类模型,在分类、CTR预估领域有着广泛的应用。
逻辑回归是用来解决分类问题用的,与线性回归不同的是,逻辑回归输出的不是具体的值,而是一个概率。除去了sigmoid函数的逻辑归回和线性回归几乎是一样的。
有人说逻辑回归不是回归,因为输出的不是回归值。
也可理解为逻辑回归是先求回归函数,再将结果通过逻辑函数转化一下得到最终的结果。
基本步骤:
逻辑回归的H可以看做是一个线性回归方程的结果经过一个sigmoid函数得到的结果,线性回归方程可以用如下的式子表示。
θ 0 + θ 1 x 1 + , … , + θ n x n = ∑ i = 1 n θ i x i = θ T x ( 1 ) \theta_{0}+\theta_{1} x_{1}+, \ldots,+\theta_{n} x_{n}=\sum_{i=1}^{n} \theta_{i} x_{i}=\theta^{T} x (1) θ0+θ1x1+,…,+θnxn=i=1∑nθixi=θTx(1)
Sigmoid 函数如下,该函数又称为逻辑函数
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1
将式子(1)通过逻辑函数转化得到的概率即使我们的hypothesis,
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} hθ(x)=g(θTx)=1+e−θTx1
函数 h θ ( x ) h_{\theta}(x) hθ(x) 表示样本被预测为正例1的概率,我们很容易的得到样本被预测为正例和负例的概率如下;
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) \begin{array}{l}{P(y=1 | x ; \theta)=h_{\theta}(x)} \\ {P(y=0 | x ; \theta)=1-h_{\theta}(x)}\end{array} P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
上式可以合并为一个式子
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y ( 2 ) P(y | x ; \theta)=\left(h_{\theta}(x)\right)^{y}\left(1-h_{\theta}(x)\right)^{1-y} (2) P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y(2)
我们对预测结果的概率表示(式子(2)) 取似然函数,取似然函数就是将模型对样本的概率预测值累乘起来。得到如下的似然函数
L ( θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=\prod_{i=1}^{m} P\left(y^{(i)} | x^{(i)} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)\right)^{y^{(i)}}\left(1-h_{\theta}\left(x^{(i)}\right)\right)^{1-y^{(i)}} L(θ)=i=1∏mP(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
由于该式比较麻烦涉及连乘法,所以我们对其去对数操作得到对数似然函数。
l ( θ ) = log L ( θ ) = ∑ i = 1 m ( y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ) l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right) l(θ)=logL(θ)=i=1∑m(y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))))
上述利用的是最大似然估计原理:极大似然估计就是就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大。
当似然函数求得最大值时,模型能够最大可能的满足当前的样本,求最大值使用梯度向上法,我们可以对似然函数加个负号,通过求等价问题的最小值来求原问题的最大值,这样我们就可以使用极大似然估计法。
令:
J ( θ ) = − 1 m l ( θ ) J(\theta)=-\frac{1}{m} l(\theta) J(θ)=−m1l(θ)
这样我们就能得到损失函数的最终形式
J ( θ ) = − 1 m ∑ i = 1 n ( y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ) ( 3 ) J(\theta)=-\frac{1}{m} \sum_{i=1}^{n}\left(y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right) (3) J(θ)=−m1i=1∑n(y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))))(3)
即等价于
Cost ( h θ ( x ) , y ) = { − log ( h θ ( x ) ) if y = 1 − log ( 1 − h θ ( x ) ) if y = 0 \operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{array}{ll}{-\log \left(h_{\theta}(x)\right)} & {\text { if } y=1} \\ {-\log \left(1-h_{\theta}(x)\right)} & {\text { if } y=0}\end{array}\right. Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) if y=1 if y=0
我们下图为推倒式,面试推倒的时候可以不写下标(假设我们使用随机梯度下降法),这样可以使推导式更简洁。
求梯度:
这里需要提一下的是,sigmoid函数有如下性质,在上述推倒的第三行中可以看到:
S ′ ( x ) = e − x ( 1 + e − x ) 2 = S ( x ) ( 1 − S ( x ) ) S^{\prime}(x)=\frac{e^{-x}}{\left(1+e^{-x}\right)^{2}}=S(x)(1-S(x)) S′(x)=(1+e−x)2e−x=S(x)(1−S(x))
θ \theta θ更新式: α \alpha α为学习率
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j} :=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
LR在确定了模型的形式后,通过最大似然估计法来实现最小散度从而求出模型参数。
首先要说明的是,Sigmoid不是被选择出来的,而是被推导出来后给它署名Sigmoid.
逻辑回归模型是一种广义线性模型,而逻辑回归满足伯努利分布,伯努利分布是指数分布族的一种,而指数族分布有如下的形式:
p ( y ; η ) = b ( y ) exp ( η T T ( y ) − a ( η ) ) p(y ; \eta)=b(y) \exp \left(\eta^{T} T(y)-a(\eta)\right)\\ p(y;η)=b(y)exp(ηTT(y)−a(η))
伯努利分布形式如下:
p ( y = 1 ; ϕ ) = ϕ ; p ( y = 0 ; ϕ ˙ ) = 1 − ϕ p(y=1 ; \phi)=\phi ; p(y=0 ; \dot{\phi})=1-\phi p(y=1;ϕ)=ϕ;p(y=0;ϕ˙)=1−ϕ
根据伯努利分布的结果,逻辑回归的广义线性模型的形式可写为:
p ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y p(y ; \phi)=\phi^{y}(1-\phi)^{1-y} p(y;ϕ)=ϕy(1−ϕ)1−y
我们现在的目标就是求 η \eta η的表达式:
写成如下的形式
p ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = exp ( y log ϕ + ( 1 − y ) log ( 1 − ϕ ) ) = exp ( ( log ( ϕ 1 − ϕ ) ) y + log ( 1 − ϕ ) ) \begin{aligned} p(y ; \phi) &=\phi^{y}(1-\phi)^{1-y} \\ &=\exp (y \log \phi+(1-y) \log (1-\phi)) \\ &=\exp \left(\left(\log \left(\frac{\phi}{1-\phi}\right)\right) y+\log (1-\phi)\right) \end{aligned} p(y;ϕ)=ϕy(1−ϕ)1−y=exp(ylogϕ+(1−y)log(1−ϕ))=exp((log(1−ϕϕ))y+log(1−ϕ))
让逻辑回归的表达式满足伯努利分布的指数分布族表达式,即(1)式子,即让:
b ( y ) exp ( η T T ( y ) − a ( η ) ) = = exp ( ( log ( ϕ 1 − ϕ ) ) y + log ( 1 − ϕ ) ) b(y) \exp \left(\eta^{T} T(y)-a(\eta)\right) ==\exp \left(\left(\log \left(\frac{\phi}{1-\phi}\right)\right) y+\log (1-\phi)\right) b(y)exp(ηTT(y)−a(η))==exp((log(1−ϕϕ))y+log(1−ϕ))
那么:
从(1)式子可以推出
ϕ = 1 ( 1 + e − η ) \phi=\frac{1}{ \left(1+e^{-\eta}\right)} ϕ=(1+e−η)1
即Sigmoid函数的形式。
所以,LR是用Sigmoid 函数不是因为,LR选择了它当作越阶函数,而是根据线性模型和直属分布族的性质推导出了它。
LR的基本形式如下
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} hθ(x)=g(θTx)=1+e−θTx1
假如一元逻辑回归, 那么预测值 y ^ \hat{y} y^
y ^ = σ ( w ⋅ x + b ) \hat{y}=\sigma(w \cdot x+b) y^=σ(w⋅x+b)
其中 σ \sigma σ 是sigmoid 函数
C = ( y − y ^ ) 2 2 C=\frac{(y-\hat{y})^{2}}{2} C=2(y−y^)2
其中 y ^ \hat{y} y^是模型的预测值, y ^ = σ ( z ) , z = w ⋅ x + b \hat{y}=\sigma(z), z=w \cdot x+b y^=σ(z),z=w⋅x+b, 采用梯度下降的方法对 w w w和 b b b进行更新,那么就需要将损失函数对这两个参数进行求导:
∂ C ∂ w = ( y ^ − y ) σ ′ ( z ) x = ( y ^ − y ) σ ′ ( z ) x \frac{\partial C}{\partial w}=(\hat{y}-y) \sigma^{\prime}(z) x=(\hat{y}-y) \sigma^{\prime}(z) x ∂w∂C=(y^−y)σ′(z)x=(y^−y)σ′(z)x
∂ C ∂ b = ( y ^ − y ) σ ′ ( z ) x = ( y ^ − y ) σ ′ ( z ) \frac{\partial C}{\partial b}=(\hat{y}-y) \sigma^{\prime}(z) x=(\hat{y}-y) \sigma^{\prime}(z) ∂b∂C=(y^−y)σ′(z)x=(y^−y)σ′(z)
可以看到 w , b w,b w,b的更新速率与当前的预测值sigmoid函数的导数有关,sigmoid的图像如下
所以,如果当前模型的输出接近0或者1时, σ ′ ( z ) \sigma^{\prime}(z) σ′(z)就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。
对于二分类问题,交叉熵的形式是由极大似然估计下概率的连乘然后求对数得到的:
C = − 1 n ∑ [ y In y ^ + ( 1 − y ) In ( 1 − y ^ ) ] C=-\frac{1}{n} \sum_{}[y \operatorname{In} \hat{y}+(1-y) \operatorname{In}(1- \hat{y})] C=−n1∑[yIny^+(1−y)In(1−y^)]
对w求导得
∂ C ∂ w = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial C}{\partial w}=\frac{1}{n} \sum_{} x(\sigma(z)-y) ∂w∂C=n1∑x(σ(z)−y)
可以看到, w w w的梯度是和当前的预测值与实际值的差有关的,没有受到sigmoid函数导数的影响,且真实值与预测值差别越大,梯度越大,更新的速度也就越快,这正是我们想要的。
如果用的是均方差作为损失函数,求得的梯度受到simoid函数导数的影响
LR模型假设样本服从伯努利分布,确定模型的形式后参数是未知的。
并通过在已知样本上进行训练,并且事先赋予其输出的工程意义,即输出的是为正样本的概率,然后用极大似然估计让这个结果去拟合训练集的概率分布,通过这种方式来不断调整参数使模型的输出结果能够很好的拟合样本。
所以个人理解就是用样本分布去训练模型的过程就是赋予了输出结果概率的意义。
是线性模型,但属于广义线性模型。
下面说明普通线性模型和广义线性模型。
普通线性模型有如下的表达式:
Y = β 0 + β 1 x 1 + β 2 x 2 + … + β p − 1 x p − 1 + ϵ Y=\beta_{0}+\beta_{1} x_{1}+\beta_{2} x_{2}+\ldots+\beta_{p-1} x_{p-1}+\epsilon Y=β0+β1x1+β2x2+…+βp−1xp−1+ϵ
β i \beta_{i} βi是未知参数, β 0 \beta_{0} β0是截距项
普通线性模型有如下特点:
所以可知,逻辑回归是响应变量服从伯努利分布的广义线性模型
下面答案有些不是LR进行离散化特有的原因,而是离散化本身比较general的原因
LR模型中特征的共线性不会影响模型的最优解,但是会影响系数的稳定性。比如现在两个特征x1,x2,分别表示米和厘米,这两个长度高度共线性。
1.5 米 = 1 ∗ x 1 + 50 ∗ x 2 , 也 可 以 表 示 为 2 ∗ x 1 − − 50 ∗ x 2 1.5米= 1*x_{1} + 50*x_{2},也可以表示为2*x_{1} - -50*x_{2} 1.5米=1∗x1+50∗x2,也可以表示为2∗x1−−50∗x2
x 2 x_{2} x2的系数发生的质的翻转,但是表达能力没有变。
所以LR模型中特征的共线性不会影响模型的最优解,但是会使得系数不稳定,从而解释性变差。
如果是出现重复特征,比如某个特征重复了100次,那么相当于把原来唯一的特征分成了一百份,这一百个特征效果和原来单个特征的效果相同。
不一定,首先特征可能没有归一化,系数收到量级的影响,(1米=1cm * 100)
其次,特征间可能存在共线性,导致特征系数不稳定,可解释性差。
https://www.zhihu.com/question/31989952
https://www.cnblogs.com/ModifyRong/p/7739955.html
https://cosx.org/2011/01/how-does-glm-generalize-lm-assumption/
http://www.sohu.com/a/228212348_349736
https://zhuanlan.zhihu.com/p/22876460