机器学习——逻辑回归

  线性回归用于处理因变量是连续量的预测问题,而逻辑回归是解决二分类的问题(逻辑回归名字叫“回归”其实解决的是分类问题)。逻辑回归的结果只有两种情况(0或1),那么为什么冠以“回归”的名称呢?

“逻辑回归”为什么叫“回归”?

  假设有一个“买车”问题,买车与否与一个人的收入有关系,收入多则买车,收入低就不会买车。假设一个人的收入与工龄、每周工作时间、支出等因素有关,这样收入的多少与工龄、工作时间、支出等可以看做一个线性回归问题Z=W^{^{T}}X。很显然是否买车与与工龄、每周工作时间、支出等因素有关却不能用一个线性的模型去模拟。买车与否在数学建模上来说本质上是一个(0, 1)问题。我们希望能有一个模型能帮我们实现从Z值到0, 1的转换。

图1、 sigmod函数.png
\phi(x)=\frac{1}{1+e^{x}}

  数学家们发现一个函数具有如图1所示的性质。则是sigmod函数,其能将实数转换在[0,-1]范围内。这样我们便可以将上面线性回归的结果
Z
作为sigmod函数的输入,sigmod函数的输出便是我们要的分类结果(“1”代表“买车”,“0”代表“不买车”)。便有下面的公式:
\phi(Z)=\frac{1}{1+e^{Z}} =\frac{1}{1+e^{W^{T}X}}

  这样便能实现对一个二分类问题进行建模与预测,因为其sigmod函数的输入运用的便是之前的线性回归的东西,所以这里叫“逻辑回归”。

寻找代价函数

为什么不能用误差函数作为代价函数

  建造逻辑回归的模型公式后,我们需要找一个惩罚函数或者说代价函数,以便来训练模型。这个我们可以试着用以前处理线性回归一样方法来找逻辑回归的代价函数,如下式:J(w)=\sum_{i}^{m}\frac{1}{2}(\phi (z^{(i)})-y^{i})^{2}  其中,z^{(i)}=w^{T}x^{i}+bi表示第i个样本点,y^{i}表示第i个样本点的真实值,\phi (z^{(i)})表示第i个样本的预测值。直接对上式求导求其最小值,最后会发现代价函数是一个关于w的非凸函数,如图2。这意味着其会有很多局部极小值,这不利于求解。

2.jpg

可行的代价函数

  换个思路,前面运用sigmod函数将问题最终转化为一个(0, 1)问题,其也可以看做是一个后验概率的估计p(y=1|x),即在y=1的情况下,x的分布。所以就有如下公式:p(y=1|x;w)=\phi (Z)=\phi (W^{T}X)
p(y=0|x;w)=1-\phi (Z)  其中,p(y=1|x;w)表示具有参数w的情况下,在x点,y=1的概率。上面的式子也可以写作如下的一般形式:p(y|x;w)=\phi (z)^{y}(1-\phi (z))^{(1-y)}   这个式子相当于是将上面两个式子合二为一,当y=1时,1-y=0则上式变为p(y|x;w)=\phi (Z),当y=0时,上式变为p(y=0|x;w)=1-\phi (Z)
  对于上面带有参数w的一般形式可以运用极大似然的思想进行理解,即:求一个W使X经过上面的运算最接近y。则上面式可以写为似然函数如下式:L(w)=\prod_{i}^{n}p(y^{i}|x^{i};w)=\prod_{i}^{n}(\phi z^{(i)})^{y^{i}}(1-\phi (z^{i}))^{()1-y^{i})}  为了简化可以两边取对数l(w)=log(L(w))=\sum_{i}^{m}y^{i}ln(\phi(z^{(i)}))+(1-y^{(i)}log(1-\phi (z^{(i)}))  上式是求W使\phi (z^{(i)})最接近y^{(i)},将上式取负(加负号)则是求最小值,这便是我们需要的目标函数,如下:J(w)=-l(w)=-\sum_{i}^{m}y^{i}ln(\phi(z^{(i)}))+(1-y^{(i)}log(1-\phi (z^{(i)}))  为了更好的理解代价函数,拿一个例子(其中的一项)来看一下:J(y,\phi (z);w)=\left\{\begin{matrix} -ln(\phi (z)) \qquad if \quad y=1\\ -ln(1-\phi (z)) \quad if \quad y=0 \end{matrix}\right.

3.jpg_副本.png

  从图中可以看出若样本的值是1,估计值越接近1,付出的代价越小,反之越大。同理,如果样本的值是0,估计值越接近0,付出的代价越少,反之越大。

利用梯度下降法求解

   sigmoid函数有一个很好的性质那就是:\phi{}' (z)=\phi (z)(1-\phi (z))
  梯度下降法的使用:w_{j}:=w_{j}-\alpha\frac{\partial J(w)}{\partial w_{j}}   其中,w_{j}表示第j个特征的权重,\alpha为学习率,用来控制步长,式中的梯度如下:\begin{align*} \frac{\partial J(w)}{\partial w_{j}} &=-\frac{\partial }{\partial x}\sum_{i}^{n}[y^{(i)}ln(\phi z^{(i)})+(1-y^{(i)})ln(1-\phi (z^{(i)}))]\\ &=-\sum_{i}^{n}[(y^{(i)}\frac{1}{\phi (z^{(i))}))}-(1-y^{(i)})\frac{1}{1-\phi (z^{(i)})})\phi{}' (z^{(i)})]\\ &=-\sum_{i}^{n}[(y^{(i)}\frac{1}{\phi (z^{(i))}))}-(1-y^{(i)})\frac{1}{1-\phi (z^{(i)})})\phi (z^{(i)})(1-\phi (z^{(i)}))]\\ &=-\sum_{i}^{n}[(y^{(i)}(1-\phi (z^{(i)}))-(1-y^{(i)})\phi (z^{(i)}))x_{j}]\\ &=-\sum_{i}^{n}[(y^{(i)}-\phi (z^{(i)}))x_{j}] \end{align*}
   在使用梯度下降算法更新权重时,可进行批量更新权重:w_{j}:=w_{j}+\alpha \sum_{i}^{n}[(y^{(i)}-\phi (z^{(i)}))x_{j}]  在数据样本较大的时候每次更新权重非常的消耗时间,这时可以采用随机梯度下降和小批量梯度下降法.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容