Python

逻辑回归算法原理

2019-03-31  本文已影响0人  阿ashang

一、从线性回归到逻辑回归

\quad首先从线性回归模型出发,线性回归模型的输出值y是连续型变量,值域为R;逻辑回归的输出值y是离散型变量,值域为\{0,1\}
\quad逻辑回归实属广义线性模型,线性回归预测函数可简单表示为y=X\theta,而逻辑回归预测函数需要做一个函数转换y=g(z),其中z=X\theta,即通过g将线性回归原本的值域R映射到[0,1]区间内,当取值大于临界值时为一类,小于临界值时为另一类,从而达到0-1分类的目的。这里g一般使用sigmoid函数,即
g(z)=\frac{1}{1+e^{-z}}
sigmoid有一个性质:当z趋于+\infty时,g(z)趋于1;当z趋于-\infty时,g(z)趋于0
因此,线性回归实际解决的是预测实数连续值的问题;逻辑回归解决的是分类问题。

二、 逻辑回归原理

逻辑回归的假设函数为:
h_\theta(X)=g(X\theta)=\frac{1}{1+e^{-X\theta}}
其中X为样本输入,h_\theta(X)为模型输出,\theta为要求解的模型参数。设0.5为临界值,当h_\theta(X)>0.5时,即X\theta>0时,y为1;当h_\theta(X)<0.5时,即X\theta<0时,y为0。
模型输出值h_\theta(X)[0,1]区间内取值,因此可从概率角度进行解释:h_\theta(X)越接近于0,则分类为0的概率越高;h_\theta(X)越接近于1,则分类为1的概率越高;h_\theta(X)越接近于临界值0.5,则无法判断,分类准确率会下降。

三、逻辑回归损失函数及求解

1.逻辑回归损失函数

逻辑回归采用对数似然损失函数:
J(Y,P(Y|X))=-log(P(Y|X))

假设样本输出y是0,1两类,则

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}

则损失函数为:
J(\theta)=-\sum_{i=1}^n{log( [h_\theta(x^{(i)})]^{y^{(i)}}[1-h_\theta(x^{(i)})]^{1-y^{(i)}} )}
=-\sum_{i=1}^n [ y^{(i)}log([h_\theta(x^{(i)})])+(1-y^{(i)})log( [1-h_\theta(x^{(i)})] ) ]

写成向量形式即:
J(\theta)=-Y^T log(h_\theta(X)) - (E-Y)^T log(E-h_\theta(X))
其中E为全1向量。

2.损失函数优化求解

\quad逻辑回归损失函数求解可用梯度下降法、牛顿法等,这里仅介绍梯度下降法求解的迭代公式推导。
迭代公式为:
\theta^t=\theta^{t-1}-\alpha \nabla J(\theta^{t-1})
下面推导损失函数的梯度\nabla J(\theta)

h_{\theta}(X)=\frac{1}{1+e^{-X\theta}}

log(h_\theta(X))=X\theta-log(1+e^{X\theta})

log(E-h_\theta(X))=-log(1+e^{X\theta})

将上式代入逻辑回归损失函数得:

J(\theta)=-[Y^TX\theta-E^Tlog(1+e^{X\theta})]

根据矩阵求导术计算微分dJ(\theta)得:

dJ(\theta)=-[Y^TXd\theta-E^T \frac{1}{1+e^{-X\theta}}⊙Xd\theta ]

根据E^T(u⊙v)=u^Tv,则:

dJ(\theta)=- [Y^TX-h_\theta(X)^TX] d\theta

带入迹技巧,由dJ=\frac{\partial J}{\partial \theta}^TdX,可得梯度为:

\nabla J(\theta)= X^T(h_\theta(X)-Y)

则梯度下降法求解参数\theta的迭代公式为:

\theta^t=\theta^{t-1}-\alpha X^T(h_{\theta^{t-1}}(X)-Y)

四、 逻辑回归的正则化

\quad与线性回归的正则化相似,逻辑回顾的正则化同样是在损失函数上加上正则化项,即L1范数或L2范数,超参数\alpha作为惩罚系数,调节惩罚的大小。
L1正则化损失函数为:
J(\theta)=-Y^T log(h_\theta(X)) - (E-Y)^T log(E-h_\theta(X)) + \alpha ||\theta||_1

L2正则化损失函数为:
J(\theta)=-Y^T log(h_\theta(X)) - (E-Y)^T log(E-h_\theta(X)) + \alpha ||\theta||_2 ^2

五、模型评估指标

\quad分类问题有通用的评估指标,常用的是准确率(accuary)、召回率(recall)、精度(precision)、ROC曲线、AUC

六、逻辑回归的优缺点

优点:

1.便于理解和实现,可以观测样本的概率分数 \quad\quad
2.训练速度快 \quad\quad
3.由于经过了sigmoid函数的映射,对数据中小噪声的鲁棒性较好
4.不受多重共线性的影响(可通过正则化进行消除)

缺点:

1.容易欠拟合 \quad\quad
2.特征空间很大时效果不好 \quad\quad
3.由于sigmoid函数的特性,接近0/1的两侧概率变化较平缓,中间概率敏感,波动较大;导致很多区间特征变量的变化对目标概率的影响没有区分度,无法确定临界值。

七、样本不均衡问题解决办法

\quad样本不均衡指的是数据集中正负例样本比例失衡,不再是1:1。此类问题的解决方法一般是基于数据集的重采样或者基于模型的调整。对于逻辑回归来说可以调整预测函数的临界值,使其适当偏向少数类样本,平衡召回率和精度。

八、 Logistic回归sklearn参数

LR参数.png

参考
https://www.cnblogs.com/pinard/p/6029432.html
https://zhuanlan.zhihu.com/p/24709748
https://blog.csdn.net/garfielder007/article/details/51646604
https://blog.csdn.net/Mr_HHH/article/details/79433094

上一篇下一篇

猜你喜欢

热点阅读