概述
Logistic Regression/Logit Regression的中文翻译有的叫作逻辑回归,周志华老师西瓜书中成为对数几率回归,李航老师统计学习方法中翻译为逻辑斯谛回归。这里不讨论翻译的优劣,仅需要知道是一个东西即可。Logistic Regression是分类问题中一个较为经典的模型,属于对数线性模型。
对于二类分类问题,我们需要输出的标记为\(y\in\{0, 1\}\),但是常规线性回归模型产生的预测值\(z=\theta^\mathrm{T}x\),这时需要将实值\(z\)再转换为0/1值。logistic function是一个常用的替代函数。它的定义为为\(g(z)=\frac{1}{1+e^{-z}}\),也被称为Sigmoid函数,可以将实值\(z\)转换为接近0/1的值。下图展示了logistic function的图形。
![]()
这里易得logistic function的导数为
\[\begin{align}g'(z)&=\frac{\mathrm d}{\mathrm dz}\frac{1}{1+e^{-z}}\\&=\frac{1}{\left(1+e^{-z}\right)^2}\left(e^{-z}\right)\\&=\frac{1}{1+e^{-z}}\cdot\left(1-\frac{1}{1+e^{-z}}\right)\\&=g(z)(1-g(z))\end{align}
\]
这在接下去的求解中会用到这里推出来导数。
我们将常规线性回归模型的公式与logistic function整合,便得到了
\[h_\theta(x)=g(\theta^\mathrm{T}x)=\frac{1}{1+e^{-\theta^\mathrm{T}x}}
\]
求解
设$$P(y=1\mid x;\theta)=h_\theta(x)\P(y=0\mid x;\theta)=1-h_\theta(x)$$
有$$P(y=0\mid x;\theta)=h_\theta(x_i)^y \left(1-h_\theta(x_i)\right)^{1-y}$$
其似然估计函数为
\[\begin{align}
L(\theta)&=P(\vec y \mid X;\theta)
\\&=\prod_{i=1}^nP(y_i \mid x_i;\theta)
\\&=\prod_{i=1}^n h_\theta(x_i)^{y_i} (1-h_\theta(x_i))^{1-y_i}
\end{align}\]
取自然对数后得
\[\begin{align}
\mathscr{l}(\theta)&=\ln L(\theta)
\\&=\sum_{i=1}^n y_i \ln h_\theta (x_i)+(1-y_i) \ln(1-h_\theta (x_i))
\end{align}\]
我们的目标就是最大化\(\mathscr{l}(\theta)\),这里采用梯度上升法来求解。
对其进行求偏导得
\[\begin{align}
\frac{\partial}{\partial \theta_j}\mathscr{l}(\theta)&=\sum_{i=1}^n \left(y_i\frac{1}{g(\theta^\mathrm{T}x_i)} - (1-y_i)\frac{1}{1-g(\theta^\mathrm{T}x_i)} \right) \frac{\partial}{\partial\theta_j}g(\theta^\mathrm{T}x_i)
\\&=\sum_{i=1}^n \left(y_i\frac{1}{g(\theta^\mathrm{T}x_i)} - (1-y_i)\frac{1}{1-g(\theta^\mathrm{T}x_i)} \right) g(\theta^\mathrm{T}x)(1-g(\theta^\mathrm{T}x))\frac{\partial}{\partial\theta_j}\theta^\mathrm{T}x_i
\\&=\sum_{i=1}^n \left(y_i(1-g(\theta^\mathrm{T}x_i))-(1-y_i)g(\theta^\mathrm{T}x_i)\right) x_{ij}
\\&=\sum_{i=1}^n \left(y_i-g(\theta^\mathrm{T}x_i\right)x_{ij}
\\&=\sum_{i=1}^n \left(y_i-h_\theta(x_i)\right)x_{ij}
\end{align}\]
得出批量梯度上升的更新式为:
\[\theta_j:=\theta_j+\alpha\sum_{i=1}^n \left(y_i-h_\theta(x_i)\right)x_{ij}\quad (j=0,\cdots,m)
\]
很容易发现,这与线性回归中的批量梯度上升更新式其实是一样的。
对于随机梯度上升,类似地,我们得出更新式为:
\[\theta_j:=\theta_j+\alpha \left(y_i-h_\theta(x_i)\right)x_{ij}\quad (j=0,\cdots,m)
\]
评价
对于二类分类问题而言,比较常见的评价指标有精确率(precision)和召回率(recall)。一般会把分类中一类叫做正类,另一类叫做负类。定义四种预测的结果类型如下:
- True Positive(TP) --将正类预测为正类数
- False Negative(FN) --将正类预测为负类数
- False Positive(FP) --将负类预测为正类数
- True Negative(TN) --将负类预测为负类数
则精确率的定义为: \(P=\frac{TP}{TP+FP}\),召回率定义为\(R=\frac{TP}{TP+FN}\)。
通过计算精确率和召回率的调和平均值得到\(F1=\frac{2}{\frac{1}{P}+\frac{1}{R}}=2\cdot\frac{P\cdot R}{P+R}\)
参考