传统机器学习算法复习:逻辑回归、因子分解机和梯度提升树

逻辑回归(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等变种。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydjfw.html