逻辑回归模型是一个非常经典的算法,其中包含非常多的细节。本文就是总结下我眼中的逻辑回归模型,方便以后有更多的认识后继续修正。
一、模型简介
Logistic Regression(简称LR)虽然被称为回归,但其实是分类模型,并常用于二分类。LR由于其简单、可并行化、可解释性强深受工业界喜爱,尤其是金融领域。
LR模型的本质是:假设数据集服从这个分布,然后用极大似然估计做参数的估计。
1.1 Logistic分布
Logistic分布是一种连续型的概率分布,其分布函数为:
F(x)=P(X<=x)=11+e−(x−μ)/γF(x) = P(X<=x) = \frac{1}{1+e^{-(x-\mu)/\gamma}}F(x)=P(X<=x)=1+e−(x−μ)/γ1
其中μ\muμ表示位置参数,γ>0\gamma>0γ>0为形状参数,其密度函数分布如下图所示:
Logistic分布的形状与正态分布的形状类似,但是Logistic分布的尾部更长,更符合现实世界的数据分布。如人们的工资分布,大部分集中在3000-7000的区域,7000以上的尾部要比小于3000的头部更长,所以更适合用Logistic分布拟合数据。
1.2 Logistic回归
LR模型主要用于分类问题,在本文中以二分类为例。对于所有数据集假设存在一条直线可以将数据完全线性可分。
图中数据集的决策边界可以表示为ω1x1+ω2x2+b=0\omega_1x_1+\omega_2x_2+b=0ω1x1+ω2x2+b=0,假设某个样本点hω(x)=ω1x1+ω2x2+b>0h_\omega(x)=\omega_1x_1+\omega_2x_2+b>0hω(x)=ω1x1+ω2x2+b>0那么就能判断为它的类别是1,这个过程其实就是感知机。
LR模型还要在决策边界上再加一层,它要找的是分类概率P(Y=1)与输入向量X的直接关系,然后通过比较概率值来判断类别。考虑二分类问题,给定数据集D=(x1,y1),(x2,y2),...,(xN,yN)、xi⊆Rn、yi∈0,1、i=1,2,...,ND = (x_1, y_1),(x_2, y_2),...,(x_N,y_N)、x_i\subseteq R^n、y_i\in 0,1、i=1,2,...,ND=(x1,y1),(x2,y2),...,(xN,yN)、xi⊆Rn、yi∈0,1、i=1,2,...,N
考虑到wTx+bw^Tx+bwTx+b的取值是连续的,因此它不能拟合离散变量。可以考虑用它拟合条件概率p(Y=1∣x)p(Y=1|x)p(Y=1∣x),因为概率的取值是连续的。
最理想的是单位阶跃函数:
但是这个阶跃函数不可导,使得没法用梯度下降法求解参数的值,故使用Logistic分布代替阶跃函数。Logistic分布是在0和1之间的连续值,符合二分类问题的取值要求。
于是:y=P(Y=1∣x)=11+e−(wTx+b)y=P(Y=1|x)=\frac{1}{1+e^{-(w^Tx+b)}}y=P(Y=1∣x)=1+e−(wTx+b)1
也就是说,Y=1的概率可以表示成输入X的线性函数的模型,这就是逻辑回归模型。当wTx+bw^Tx+bwTx+b的值越接近正无穷,P(Y=1∣x)P(Y=1|x)P(Y=1∣x)概率值也越接近1。因此逻辑回归的思路就是:先拟合决策边界,再建立这个边界与分类的概率联系,从而得到二分类的概率。
1.3 代价函数
逻辑回归模型的数学形式确定了之后,剩下的就是如何求解模型中的参数。在统计学中,常常使用极大似然估计法求解。即找到一组参数,使得在这组参数下,数据集的似然度(概率)最大。
假设:P(Y=1∣x)=p(x),则P(Y=0∣x)=1−p(x)P(Y=1|x)=p(x),则P(Y=0|x)=1-p(x)P(Y=1∣x)=p(x),则P(Y=0∣x)=1−p(x)。
似然函数:
L(ω)=∏[p(x)]yi[1−p(x)]1−yiL(\omega)=\prod[p(x)]^{y_i}[1-p(x)]^{1-y_i}L(ω)=∏[p(x)]yi[1−p(x)]1−yi
为了更方便的求解,我们对等式两边同时取对数:
ln(L(ω))=∑[yilnp(xi)+(1−yi)ln(1−p(xi)]ln(L(\omega))=\sum[y_ilnp(x_i)+(1-y_i)ln(1-p(x_i)]ln(L(ω))=∑[yilnp(xi)+(1−yi)ln(1−p(xi)]
在机器学习中有损失函数的概念,其衡量的是模型预测错误的程度。如果取整个数据集上的平均对数似然损失,我们可以得到:
J(ω)=−1NlnL(ω)J(\omega)=-\frac{1}{N}lnL(\omega)J(ω)=−N1lnL(ω)
即在逻辑回归模型中,最大化似然函数和最小化损失函数实际上是一样的。
1.4 求解
求解逻辑回归的方法有很多,这里主要用梯度下降法和牛顿法。优化的主要目的是找到一个方向,使得参数朝着这个方向移动后的损失函数下降的最快,这个方向往往是由一阶导数或二阶导数的各种组合求得。逻辑回归的损失函数是:
J(ω)=−1n∑i=1n[yilnp(xi)+(1−yi)ln(1−p(xi)]J(\omega)=-\frac{1}{n}\sum_{i=1}^n[y_ilnp(x_i)+(1-y_i)ln(1-p(x_i)]J(ω)=−n1i=1∑n[yilnp(xi)+(1−yi)ln(1−p(xi)]
随机梯度下降法:随机梯度下降是通过J(w)J(w)J(w)对www的一阶导数去找下降方向,找到后不断迭代更新参数,直到∣J(ωk)−J(ωk+1)∣|J(\omega^k)-J(\omega^{k+1})|∣J(ωk)−J(ωk+1)∣小于阈值或者达到最大迭代次数停止。
牛顿法:在现有极小点附近对f(x)f(x)f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。
二、正则化
正则化是一个通用的算法思想,所有会产生过拟合的算法都可以使用正则化来避免过拟合。
在经验风险最小化(也是训练误差最小化)的基础上,尽可能的采用简单的模型,可以有效提高模型泛化预测精度。如果模型过于复杂,变量值稍微变动就会引起预测精度问题。正则化之所以有效,就是因为其降低了特征的权重,使得模型更为简单。
正则化一般会采用L1正则和L2正则,其形式分别为Φ(ω)=∣∣x∣∣1\Phi(\omega)=||x||_1Φ(ω)=∣∣x∣∣1和Φ(ω)=∣∣x∣∣2\Phi(\omega)=||x||_2Φ(ω)=∣∣x∣∣2。
2.1 L1正则化
Lasso回归相当于为模型添加了一个先验知识:www服从零均值拉普拉斯分布。拉普拉斯分布如下:
f(ω∣μ,b)=12bexp(−∣ω−μ∣b)f(\omega|\mu,b)=\frac{1}{2b}exp^{(-\frac{|\omega-\mu|}{b})}f(ω∣μ,b)=2b1exp(−b∣ω−μ∣)
由于引入了先验知识,所以似然函数如下:
L(ω)=P(y∣ω,x)P(ω)L(\omega)=P(y|\omega,x)P(\omega)L(ω)=P(y∣ω,x)P(ω)
L(ω)=P(y∣ω,x)P(ω)=∏[p(x)]yi[1−p(x)]1−yi∏12bexp(−∣ωj∣b)\begin{align}
L(\omega) & = P(y|\omega,x)P(\omega) \\
& = \prod[p(x)]^{y_i}[1-p(x)]^{1-y_i} \prod\frac{1}{2b}exp^(-\frac{|\omega_j|}{b}) \\
\end{align}L(ω)=P(y∣ω,x)P(ω)=∏[p(x)]yi[1−p(x)]1−yi∏2b1exp(−b∣ωj∣)
取log再取负后,得到目标函数:
−ln(L(ω))=−∑i[yilnp(xi)+(1−yi)ln(1−p(xi))]+12b2∑j(∣ωj∣)-ln(L(\omega))=-\sum_i[y_iln p(x_i)+(1-y_i)ln(1-p(x_i))]+\frac{1}{2b^2}\sum_j(|\omega_j|)−ln(L(ω))=−i∑[yilnp(xi)+(1−yi)ln(1−p(xi))]+2b21j∑(∣ωj∣)
等价于原始损失函数的后面加上了L1正则,因此L1正则的本质是为模型增加了“模型参数服从从零均值拉普拉斯分布”这一先验知识。
2.2 L2正则化
L2正则也叫做Ridge回归或岭回归,相当于为模型增加了这样一个先验知识:www服从从零均值正态分布。正态分布的密度函数如下:
f(ω∣μ,σ)=12πσexp(−(ω−μ)22σ2)f(\omega|\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\omega-\mu)^2}{2\sigma^2})f(ω∣μ,σ)=2πσ1exp(−2σ2(ω−μ)2)
按时上述同样的方法可以得到目标函数为:
−ln(L(ω))=−∑i[yilnp(xi)+(1−yi)ln(1−p(xi))]+12σ2ωTω-ln(L(\omega))=-\sum_i[y_iln p(x_i)+(1-y_i)ln(1-p(x_i))]+\frac{1}{2\sigma^2}\omega^T\omega−ln(L(ω))=−i∑[yilnp(xi)+(1−yi)ln(1−p(xi))]+2σ21ωTω
等价于原始的损失函数后面加了L2正则,因此L2正则的本质其实是模型增加了“模型参数服从零均值正态分布”这一先验知识。
2.3 L1和L2的区别
从上面的目标函数可以看出,L1正则化增加了所有参数的权重www的绝对值之和,这样使得更多的www变为0,也就是变稀疏。L2因为其导数也趋于0,奔向0的速度就不如L1了。
我们对稀疏规则趋之若附的一个原因是能实现特征的自动选择,一般来说,大部分特征xix_ixi和最终的输出yiy_iyi之间没有什么关系。在最小化目标函数的时候考虑这些额外的特征,虽然可以获得更小的训练误差,但在预测新样本时,这些没用的特征权重反而是干扰正确结果。L1正则化可以把一些不重要的特征过滤掉,对应的特征权重也就是0
L2正则化中加入的是权重www的平方之和,逼迫所有www尽可能趋向于0但是部位0,L2相比L1可以对较大的权重www施加更大的惩罚,所以L2正则化的参数更加的平滑。
给损失函数加上正则化项,使得新得到的优化目标函数h=f+∣∣ω∣∣h=f+||\omega||h=f+∣∣ω∣∣,需要在fff和∣∣ω∣∣||\omega||∣∣ω∣∣中做一个权衡。如果还是只优化fff的话,那么可能会得到一组比较复杂的解,使得正则项∣∣ω∣∣||\omega||∣∣ω∣∣比较大,那么hhh就不是最优的。因此加正则项可以让解更加简单,符合奥卡姆剃刀理论,同时也符合在偏差和方差(模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差。