从零开始-Machine Learning学习笔记(4)-Logistic Regression(逻辑回归模型/对数几率回归模型)
1.逻辑回归简介
在之前,我们使用线性回归(Linear Regression)来进行回归学习,使用的数据主要是有标签的数据,而且这个标签与我们的feature(特征)具有一定的线性关系。但是如果我们遇到一种二分类问题,标签一般为y=0/1,这个时候就需要使用Logistic Regression。所以逻辑回归通常用在分类问题上,这与聚类又不一样,这还是一种监督学习,而聚类则是一种非监督学习。
2.逻辑回归模型
由于分类任务通常的结果是{0,1},而线性回归模型f(x) = wx + b通常产生的预测值是一个实值,于是我们需要把线性回归模型的实值f(x)转化为0/1,于是我们想到使用一个阈值Threshold来将这个实值进行转化,
当f(x) >= Threshold时,y = 1
当f(x) < Threshold时, y = 0
但是这种方式不适合进行计算迭代,如果能出现一个函数g,使得我们上述的转化方式成立的话。这个时候我们发现,最理想的情况就是单位阶跃函数:
以大于0和小于0来区分,但是单位阶跃函数不是一个连续的函数,也不适合进行迭代运算,于是哦我们取一个跟单位阶跃函数类似的一个函数,Sigmoid函数(S函数):
这个函数当z > 0时趋近于1,当z < 0时趋近于0。
有了上面的思考,我们就可以得到逻辑回归的模型如下:
对于上式进行变形可得到:
我们通常称 h(x)1−h(x) h ( x ) 1 − h ( x ) 为“几率”,对这个几率取了对数,所以这个模型也称作 对数几率模型。
3.模型求解
定义代价函数为:
定义 Cost(h(x),y) C o s t ( h ( x ) , y ) 为:
可以简化为:
所以最终的代价函数可以表示为:
我们需要通过梯度下降的方式,使得J最小,所以在此之前需要求得J关于w的偏导数:
进而使用典型的梯度下降算法进行求解:
Repeat{
wj:=wj−αm∑mi=1(h(x(i)−y(i)))x(i)j w j := w j − α m ∑ i = 1 m ( h ( x ( i ) − y ( i ) ) ) x j ( i )
}
w的结果需要同时更新,这一点与线性回归算法一致。
关于代价函数的求导结果,大家咋一看感觉怎么那么合适和美好,是不是故意写成这个样子的,事实上,他就是代价函数关于w的偏导数,具体求解过程比较复杂,我就附上手写的过程如下: