逻辑回归(Logistic Regression, LR)
逻辑回归是一种广义线性模型,通过对数概率函数,将线性函数的结果进行映射,从而将目标函数的取值空间从\((- \infinity ,+\infinity)\)映射到了\((0,1)\),从而可以处理分类问题。注意:逻辑回归是一种分类算法。
前置知识
对数概率函数
又称对数几率函数,sigmoid函数等。函数表达式:
\[
g(z)=\frac{1}{1+e^{-z}}
\]
s形曲线,值域:\((0,1)\)
且其导数满足:
\[
g'(z)=g(z)(1-g(z))
\]
梯度
梯度的本质是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向能够取得最大值,即函数在该点处沿着梯度的方向变化最快,变化率最大。
参见:梯度-百度百科
指数运算法则
\[
log_a\prod_{i=0}^m h(x)=\sum_{i=0}^m log_ah(x)\\
log_aM^n=nlog_aM
\]
定义
二项逻辑回归模型的条件概率分布:
\[
P(Y=1|X)=\frac{1}{1+e^{-\theta ^Tx}}\\
P(Y=0|X)=1-\frac{1}{1+e^{-\theta ^Tx}}
\]
其中,\(x\in R^n\)是输入,\(Y\in \{0,1\}\)是输出,\(\theta ^T\)是待学习参数。对于给定的输入实例\(X\),将样本\(X\)输入到上述公式中求得\(P(Y=1|X)\)和\(P(Y=0|X)\),比较两个条件概率值,将样本归到条件概率值较大的那一类。
梯度下降法求解逻辑回归
\[
h_\theta=\frac{1}{1+e^{-\theta^Tx}}
\]
即:
\[
h_\theta=g(\theta^Tx)
\]
其中,\(g(z)\)为上述的对数概率函数或称sigmoid函数
构造对应的最大似然:
\[
L(\theta)=\prod_{i=1}^mP(y_i|x_i;\theta)=\prod_{i=1}^{m}(h_{\theta}(x))^y(1-h_{\theta}(x))^{1-y}
\]
两端取对数:
\[
l(\theta)=logL(\theta)=\sum_{i=1}^{m}(y_ilogh_{\theta}(x_i)+(1-y_i)log(1-h_{\theta}(x_i)))
\]
为简化问题,现在以只有一个训练样本的情况为例(实际这种情形就是随机梯度下降):
\[
l(\theta)=ylogh_{\theta}(x)+(1-y)log(1-h_\theta(x))\\
\]
对参数\(\theta\)求偏导:
\[
\frac{\partial}{\partial \theta_j} l(\theta)=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{\partial}{\partial \theta_j}g(\theta^Tx)\\
\frac{\partial}{\partial \theta_j} l(\theta)=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx)(1-g(\theta^Tx))\frac{\partial}{\partial\theta_j}\theta^Tx\qquad 该步使用g'(z)=g(z)(1-g(z))\\
\frac{\partial}{\partial \theta_j} l(\theta)=(y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j\qquad 注意:\frac{\partial}{\partial \theta_j}\theta^Tx=x_j,x_j为样本x的第j个特征\\
\frac{\partial}{\partial \theta_j} l(\theta)=(y-h_{\theta}(x))x_j\qquad 整理结果
\]
求得参数梯度,现在希望最大化似然函数,因此梯度上升,迭代参数。参数\(\theta\)的迭代公式:
\[
\theta_{j+1}:=\theta_j+\alpha(y-h_{\theta}(x))x_j
\]
其中,\(\alpha\)为学习率,\((y-h_{\theta}(x))x_j\)为上述所求得的梯度
推广至m个样本:
\[
\theta_{j+1}:=\theta_j+\alpha\frac{1}{m}\sum_{i=1}^m(y^i-h_{\theta}(x^i))x^{i}_j
\]
逻辑回归算法流程
输入:训练数据集$T={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},x_1\in X \subseteq R^n,y_1\in Y \subseteq R^n $
输出:逻辑回归模型\(\hat f(x)\)
随机初始化参数\(\theta\);
对样本\(i=1,2,...,m\),计算\(\theta_{j+1}:=\theta_j+\alpha\frac{1}{m}\sum_{i=1}^m(y^i-h_{\theta}(x^i))x^{i}_j\),其中:\(j=1,2,...,n\)为样本的特征数
迭代获得逻辑回归模型
逻辑回归算法的快速迭代
在实际应用中,为了提高算法收敛速度和节省内存,在迭代求解时往往采用高效的优化算法如LBFGS、信赖域算法,这些算法是基于批量处理的,无法高效处理超大规模数据集,也无法对线上模型进行快速实时更新。随机梯度下降是相对批处理的另一种优化算法,每次只用一个样本更新模型权重。谷歌的FTRL就是基于随机梯度下降的一种逻辑回归优化算法。
FTRL算法参见:各大公司广泛使用的在线学习算法FTRL详解
逻辑回归应用
逻辑回归适合用来学习需要大规模训练的样本和特征,对于计算广告等有天然优势。其缺点是:1.模型表达能力弱,需要大量的特征组合提高特征的表达;2.模型简单,容易欠拟合。
对逻辑回归的求解有很多优化方法,如BFGS、LBFGS、共轭梯度法、信赖域法,其中前两种是牛顿法的变种,LBFGS算法是BFGS在内存受限情况下的近似优化;针对逻辑回归在线学习的稀疏性和准确性,逻辑回归又有FOBOS、RDA和FTRL等变种。