首页 > 代码库 > Logistic Regression分类器
Logistic Regression分类器
Logistic回归是一种非常高效的分类器。它不仅可以预测样本的类别,还可以计算出分类的概率信息。
不妨设有$n$个训练样本$\{x_1, ..., x_n\}$,$x_i$是$d$维向量,其类别标签是$\{y_1, ..., y_n\}$。对于一个$c$类问题,$y_i \in \{1, 2, ..., c\}$。Logistic回归学习这样一个函数
\begin{equation}
f(x) = g(\theta^T x) = \frac{1}{1+e^{-\theta^T x}}
\end{equation}
其中,
\begin{equation}
g(z) = \frac{1}{1+e^{-z}}
\end{equation}
被称为Logistic函数或者Sigmoid函数。
设$x=[x^{(1)}, ..., x^{(d)}]^T$。实际上,$\theta^T x$这儿应该写成$\theta_0 + \theta^T x$($\theta$是$d$维向量),要有个常数项。但是为了方便,我们设$x^{(0)}=1$,所以$\theta_0 + \theta^T x$可以直接写作$\theta^T x$,而此处的$\theta$是$d+1$维向量,即$\theta^T x = \sum_{j=0}^d \theta_j x^{(j)}$
可以看出来,当$z$无穷大时,$g(z)$趋于1;当$z$无穷小时,$g(z)$趋于0;当$z=0$时,$g(z)=0.5$。 $g(z)$的值域是$[0, 1]$,所以$f(x)$的值域也是$[0, 1]$。
首先我们考虑$2$类问题,设
\begin{equation}
P(y=1|x,\theta) = f(x)
\end{equation}
即对于给定的样本$x$,其属于类别$1$的概率是$f(x)$。则属于类别$0$的概率是
\begin{equation}
P(y=0 | x,\theta) = 1-f(x)
\end{equation}
上述概率也可以写作
\begin{equation}
P(y | x,\theta) = f(x)^y (1-f(x))^{1-y}
\end{equation}
学习or训练的过程就是通过训练数据,来求解出最优的参数$\theta$。而预测的方法是计算后验概率$P(y | x,\theta)$,如果大于$0.5$,则预测为类别$1$;否则为类别$0$。
以下使用极大似然估计方法来求解参数。参数$\theta$的似然函数是:
\begin{equation}
\begin{aligned}
L(\theta) & = \prod_{i=1}^{n} P(y_i | x_i, \theta) \\
& = \prod_{i=1}^{n} f(x_i)^{y_i} (1-f(x_i))^{1-y_i}
\end{aligned}
\end{equation}
最大化似然函数往往比较困难,可以通过最大化对数似然函数来求解。$\theta$的对数似然函数是:
\begin{equation}
\begin{aligned}
\ell(\theta) & = \log L(\theta) \\
& = \log \prod_{i=1}^{n} f(x_i)^{y_i} (1-f(x_i))^{1-y_i} \\
& = \sum_{i=1}^{n} \log f(x_i)^{y_i} (1-f(x_i))^{1-y_i} \\
& = \sum_{i=1}^{n} y_i \log f(x_i) + (1-y_i) \log (1-f(x_i))
\end{aligned}
\end{equation}
可以通过梯度下降法来求解$l(\theta)$的极大值。即
\begin{equation}
\theta := \theta + \alpha \nabla_{\theta} \ell(\theta)
\end{equation}
\begin{equation}
\begin{aligned}
\frac{\partial}{\partial \theta_j} \ell(\theta) & = \frac{\partial}{\partial \theta_j} \sum_{i=1}^{n} y_i \log g(\theta^Tx_i) + (1-y_i) \log (1-g(\theta^Tx_i)) \\
& = \sum_{i=1}^n (y_i \frac{1}{g(\theta^T x_i)} - (1-y_i) \frac{1}{1-g(\theta^T x_i)}) \frac{\partial}{\partial \theta_j} g(\theta^T x_i) \\
& = \sum_{i=1}^n (y_i \frac{1}{g(\theta^T x_i)} - (1-y_i) \frac{1}{1-g(\theta^T x_i)}) g(\theta^T x_i) (1- g(\theta^T x_i))\frac{\partial}{\partial \theta_j} \theta^Tx_i \\
& = \sum_{i=1}^n (y_i (1- g(\theta^T x_i)) - (1-y_i)g(\theta^T x_i)) x_i^{(j)} \\
& = \sum_{i=1}^n (y_i - f(x_i)) x_i^{(j)}
\end{aligned}
\end{equation}
$x_i^{(j)}$是第$i$个样本的第$j$个特征。
所以,对于参数$\theta$向量中的任一元素$\theta_j$,迭代方式如下:
\begin{equation}
\theta_j := \theta_j + \alpha \sum_{i=1}^n (y_i - f(x_i)) x_i^{(j)}
\end{equation}
如此,便可将全部参数求解出来。
此外,Logistic回归的求解也可以采用Newton迭代法等。