机器学习-有监督-逻辑回归

逻辑回归属于有监督学习,就是说每个样本点都是有标签的。逻辑回归用来做二分类,也就是说输出只有2个类别。

一、逻辑回归的模型

当前有m个样本点,其中第 i 个样本点记作 \((x^{(i)}, y^{(i)})\)。特征维度为n,即 $x^{(i)} $是n维列向量, \(x^{(i)} = [x_1^{(i)}, x_2^{(i)},\cdots, x_n^{(i)}]^T\)\(y^{(i)}\)等于0或1。
逻辑回归的参数为系数向量 \(\theta = [\theta_1, \theta_2, \cdots, \theta_n]^T\)
在线性回归中,使用x和\(\theta\)的内积,作为\(y^{(i)}\)的预测值,用矩阵形式这么写:

\[\theta^T x^{(i)} = \left[ \begin{matrix} \theta_1 & \theta_2 & \cdots & \theta_n \end{matrix} \right] \left[ \begin{matrix} x_1^{(i)} \\ x_2^{(i)} \\ \vdots \\ x_n^{(i)} \end{matrix} \right] = \theta_1 x_1^{(i)} + \theta_2 x_2^{(i)} + \cdots + \theta_n x_n^{(i)} \]

利用 $\theta^T x^{(i)} $将输入变量映射到了 \(-\infty\)\(+\infty\),但是我们要做的是二分类问题,输出应该为离散值。 刚好在数学中有sigmoid函数:

\[g(z) = \frac{1}{1+e^{-z}} \]

sigmoid函数图像如下,比较像阶跃函数的的一个平滑,可以把取值为R的自变量映射到(0, 1)。利用sigmoid函数可以大概做分类:如果自变量大于0,就认为类别为1;如果自变量小于0,就认为类别为0。

于是,我们令 \(z=\theta^T x\) 就可以得到逻辑回归的模型

\[h_{\theta}(x)=\frac{1}{1+e^{-\theta^T x}} \]

假设:

\[\begin{aligned} P(y=1|x;\theta) & = h_{\theta}(x) \\ P(y=0|x;\theta) & = 1- h_{\theta}(x) \end{aligned} \]

上面两个关于概率的公式如果用一个式子表示出来就是:

\[P(y|x;\theta)=(h_{\theta}(x))^{y}(1- h_{\theta}(x))^{1-y} \]

2. 模型参数估计

逻辑回归中,模型参数为\(\theta\)。从似然函数或者损失函数的角度+梯度下降法,都可以推导,本文以极大似然估计法为例:
似然函数为:

\[\prod_{i=1}^{m}(h_{\theta}(x^{(i)}))^{y^{(i)}}(1- h_{\theta}(x^{(i)}))^{1-y^{(i)}} \]

取对数得到对数似然函数为:

\[\begin{aligned} L(\theta) &= \sum_{i=1}^{m}[ y^{(i)}ln(h_{\theta}(x^{(i)})) + (1-y^{(i)})ln(1-h_{\theta}(x^{(i)})) ] \\ & = \sum_{i=1}^{m}[ y^{(i)}ln \frac{h_{\theta}(x^{(i)})}{1-h_{\theta}(x^{(i)})} - ln(1-h_{\theta}(x^{(i)}))] \\ & = \sum_{i=1}^{m} [ y^{(i)} \theta^T x - ln(1-h_{\theta}(x))] \end{aligned} \]

\(\theta_j\)求导,梯度等于:

\[\begin{aligned} \frac{\partial L(\theta)}{\partial \theta_j} &= \sum_{i=1}^{m}(y^{(i)}x_j^{(i)} - h_{\theta}(x^{(i)})x_j^{(i)})\\ &= \sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} \end{aligned} \]

梯度下降法:(这里要求极大值,所以其实是梯度“上升”)
对参数进行更新:

\[\theta_j = \theta_j + \alpha*\sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} \]

上面的梯度需要用到所有样本值,是“批量”梯度下降,有时为了加快计算,用随机梯度下降:

\[\theta_j = \theta_j + \alpha*(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} \]

posted @ 2017-12-24 23:32  米小粥  阅读(707)  评论(0编辑  收藏  举报