逻辑回归常用于解决二分类问题,它将具有 nnn 维特征的样本 XXX,经过线性加权后,通过 sigmoidsigmoidsigmoid 函数转换得到一个概率值 yyy,预测时根据一个门限 thresholdthresholdthreshold (例如 0.5) 来划分类别,y<thresholdy<thresholdy < threshold 为负类,y≥thresholdy≥thresholdy \geq threshold 为正类。
感性认识
sigmoidsigmoidsigmoid 函数 σ(z)=11+e−zσ(z)=11+e−z\sigma (z) = \frac{1}{1+e^{-z}} 有如下图所示的漂亮 S 型曲线。
逻辑回归其实是在线性回归的基础上 z=∑ni=1wixiz=∑i=1nwixiz = \sum_{i=1}^{n} {w_ix_i} ,借助 sigmoidsigmoidsigmoid 函数将预测值压缩到 0-1 之间,实际上它是一种线性模型。其决策边界并不是上图中的 S 型曲线,而是一条直线或平面,如下图所示。
基本套路
机器学习问题,无外乎三点:模型,代价函数,优化算法。首先找到一个模型用于预测未知世界,然后针对该模型确定代价函数,以度量预测错误的程度,最后使用优化算法在已有的样本数据上不断地优化模型参数,来最小化代价函数。通常来说,用的最多的优化算法主要是梯度下降或拟牛顿法,计算过程都需要计算参数梯度值,下面仅从模型、代价函数以及参数梯度来描述一种机器学习算法。
基本模型:
hθ(X)=11+e−θTXhθ(X)=11+e−θTX h_ \theta(X) = \frac {1} {1 + e^{-\theta^T X}}
θθ\theta 为模型参数,XXX 为表示样本特征,它们均为 nnn 维向量。
代价函数:
J(θ)=−1m∑i=1m(y(i)loghθ(X(i))+(1−y(i))(1−loghθ(X(i)))J(θ)=−1m∑i=1m(y(i)loghθ(X(i))+(1−y(i))(1−loghθ(X(i))) J(\theta) = - \frac {1} {m} \sum{i=1}^m \left( y^{(i)} logh\theta(X^{(i)}) + (1-y^{(i)})(1-logh_\theta(X^{(i)}) \right)
上述公式也称之为交叉熵,mmm 为样本个数,(X(i),y(i))(X(i),y(i))(X^{(i)}, y^{(i)}) 为第 iii 个样本。
参数梯度:
▽θjJ(θ)=1m∑i=1m[(y(i)−hθ(X(i)))X(i)j]▽θjJ(θ)=1m∑i=1m[(y(i)−hθ(X(i)))Xj(i)] \bigtriangledown{\theta_j} J(\theta) = \frac {1} {m} \sum{i=1}^m \left[ \left( y^{(i)} - h_\theta(X^{(i)}) \right) X^{(i)}_j \right]
θjθj\theta_j 表示第 jjj 个参数,X(i)jXj(i)X^{(i)}_j 表示样本 X(i)X(i)X^{(i)} 的第 jjj 个特征值。
应用套路
在实际应用时,基于上述基本套路可能会有些小变化,下面还是从模型、代价函数以及参数梯度来描述。
通常来说在模型中会加个偏置项,模型变成如下形式:
hθ,b(X)=11+e−(θTX+b)hθ,b(X)=11+e−(θTX+b) h_ {\theta,b}(X) = \frac {1} {1 + e^{-(\theta^T X + b)}}
为了防止过拟合,一般会在代价函数上增加正则项,常见的正则方法参考前面的文章 “线性回归”。
加上正则项后,代价函数变成如下形式:
J(θ,b)=−1m∑i=1m(y(i)loghθ,b(X(i))+(1−y(i))(1−loghθ,b(X(i)))+λm(α‖θ‖+1−α2‖θ‖2)J(θ,b)=−1m∑i=1m(y(i)loghθ,b(X(i))+(1−y(i))(1−loghθ,b(X(i)))+λm(α‖θ‖+1−α2‖θ‖2) \begin{split} J(\theta, b) =& - \frac {1} {m} \sum{i=1}^m \left( y^{(i)} log h{\theta,b}(X^{(i)}) + (1-y^{(i)})(1-log h_{\theta,b}(X^{(i)}) \right) \ &+ \frac {\lambda} {m} \left(\alpha \left | \theta \right | + \frac {1-\alpha} {2} {\left | \theta \right |}^2 \right) \end{split}
λλ\lambda 为正则项系数,αα\alpha 为 ElasticNet 参数,他们都是可调整的超参数, 当 α=0α=0\alpha = 0,则为 L2 正则, 当 α=1α=1\alpha = 1,则为 L1 正则。L1 正则项增加 1/m1/m1/m 以及 L2 正则项增加 1/2m1/2m1/2m 系数,仅仅是为了使求导后的形式规整一些。
由于 sigmoidsigmoidsigmoid 函数在两端靠近极值点附近特别平缓,如果使用梯度下降优化算法,收敛非常慢,通常实际应用时,会使用拟牛顿法,它是沿着梯度下降最快的方向搜索,收敛相对较快,常见的拟牛顿法为 L-BFGS 和 OWL-QN。L-BFGS 只能处理可导的代价函数,由于 L1 正则项不可导,如果 αα\alpha 不为 0,那么不能使用 L-BFGS,OWL-QN 是基于 L-BFGS 算法的可用于求解 L1 正则的算法,所以当 αα\alpha 不为 0,可以使用 OWL-QN。基于上述代价函数,下面仅列出包含 L2 正则项时的参数梯度:
▽θjJ(θ,b)▽bJ(θ,b)=1m∑i=1m(y(i)−hθ,b(X(i)))X(i)j+βmθj∗=1m∑i=1m(y(i)−hθ,b(X(i)))▽θjJ(θ,b)=1m∑i=1m(y(i)−hθ,b(X(i)))Xj(i)+βmθj∗▽bJ(θ,b)=1m∑i=1m(y(i)−hθ,b(X(i))) \begin{split} \bigtriangledown{\theta_j} J(\theta, b) &= \frac {1} {m} \sum{i=1}^m \left( y^{(i)} - h{\theta,b} (X^{(i)}) \right) X^{(i)}_j + \frac {\beta} {m} {\theta_j}^\ast \ \bigtriangledown_b J(\theta, b) &= \frac {1} {m} \sum{i=1}^m \left( y^{(i)} - h_{\theta,b} (X^{(i)}) \right) \end{split}
θj∗θj∗{\theta_j}^\ast 为上一次迭代得到的参数值。
Softmax
上述逻辑回归为二元逻辑回归,只能解决二分类问题,更一般地,可以推广到多元逻辑回归,用于解决多分类问题,一般将其称之为 softmax,其模型、代价函数以及参数梯度描述如下。
基本模型
HΘ(X)=1∑kj=1exp(ΘTjX)⎡⎣⎢⎢⎢⎢exp(ΘT1X)exp(ΘT2X)…exp(ΘTkX)⎤⎦⎥⎥⎥⎥HΘ(X)=1∑j=1kexp(ΘjTX)[exp(Θ1TX)exp(Θ2TX)…exp(ΘkTX)] H\Theta(X) = \frac {1} {\sum{j=1}^k exp(\Theta_j^T X)} \begin{bmatrix} exp(\Theta_1^T X)\ exp(\Theta_2^T X)\ …\ exp(\Theta_k^T X) \end{bmatrix}
HΘ(X)HΘ(X)H_ \Theta(X) 是一个 kkk 维向量,kkk 为类别的个数,对于一个实例 XXX ,经过上述模型输出 kkk 个概率值,表示预测不同类别的概率,不难看出,输出的 kkk 个概率值之和为 1。模型中的参数则可以抽象为如下矩阵形式:
Θ=⎡⎣⎢⎢⎢⎢−ΘT1−−ΘT2−⋯−ΘTk−⎤⎦⎥⎥⎥⎥Θ=[−Θ1T−−Θ2T−⋯−ΘkT−] \Theta = \begin{bmatrix}-\Theta_1^T-\ -\Theta_2^T-\ \cdots \ -\Theta_k^T-\end{bmatrix} ΘjΘj\Theta_j 表示第 jjj 个参数向量,如果参数中带有偏置项,那么总共有 k×(n+1)k×(n+1)k \times (n+1) 个参数。
代价函数
J(Θ)=−1m[∑i=1m∑j=1k1{y(i)=j}logexp(ΘTjX)∑kl=1exp(ΘTlX)]J(Θ)=−1m[∑i=1m∑j=1k1{y(i)=j}logexp(ΘjTX)∑l=1kexp(ΘlTX)] J(\Theta) = - \frac {1} {m} \left[\sum{i=1}^m \sum{j=1}^k 1 \left{ y^{(i)} = j \right} log \frac {exp(\Thetaj^T X)} {\sum{l=1}^k exp(\Theta_l^T X)} \right]
1{y(i)=j}1{y(i)=j}1 \left{ y^{(i)} = j \right} 为示性函数,表示 y(i)=jy(i)=jy^{(i)} = j 为真时,其结果为 1,否则为 0.
参数梯度
P(y(i)=j∣X(i),Θ)=exp(ΘTjX)∑kl=1exp(ΘTlX)▽ΘjJ(Θ)=1m∑i=1m[(1{y(i)=j}−P(y(i)=j∣X(i),Θ))X(i)]P(y(i)=j∣X(i),Θ)=exp(ΘjTX)∑l=1kexp(ΘlTX)▽ΘjJ(Θ)=1m∑i=1m[(1{y(i)=j}−P(y(i)=j∣X(i),Θ))X(i)] \begin{split} & P\left( y^{(i)} = j \mid X^{(i)}, \Theta \right) = \frac {exp(\Thetaj^T X)} {\sum{l=1}^k exp(\Thetal^T X)} \ & \bigtriangledown{\Thetaj} J(\Theta) = \frac {1} {m} \sum{i=1}^m \left[ \left( 1 \left{ y^{(i)} = j \right} - P\left( y^{(i)} = j \mid X^{(i)}, \Theta \right) \right ) X^{(i)} \right] \end{split}
P(y(i)=j∣X(i),Θ)P(y(i)=j∣X(i),Θ)P\left( y^{(i)} = j \mid X^{(i)}, \Theta \right) 表示将 X(i)X(i)X^{(i)} 预测为第 jjj 类的概率,注意 ▽ΘjJ(Θ)▽ΘjJ(Θ)\bigtriangledown_ {\Theta_j} J(\Theta) 是一个向量。
总结
虽然逻辑回归是线性模型,看起来很简单,但是被应用到大量实际业务中,尤其在计算广告领域它一直是一颗闪耀的明珠,总结其优缺点如下:
- 优点:计算代价低,速度快,易于理解和实现。
- 缺点:容易欠拟合,分类的精度可能不高。
转载请注明出处,本文永久链接:http://sharkdtu.com/posts/ml-lr.html