代码实现部分链接
logistic回归……引入原因
用于解决分类问题,虽然叫作回归但是其实是分类算法。
以简单的单特征值双答案值(0或1)为例,下面的案例说明这种问题使用线性回归的不足:

对于这样的情况,上面的预测函数才是我们真正要找的,满足以下要求:
- 预测值属于[0,1];
- 当预测值∈[0.5,1]我们认为答案为1,预测值∈[0,0.5)我们认为答案为0;
- 当特征值趋向于∞时预测值无限接近1,特征值趋向于0时预测值无限接近0。
很显然线性时,只要有一项系数θ>0,则这个系数对应的特征值在趋向于∞时答案不可能趋向于1。
上面的图形让我们想到了对数和指数函数。
logistic回归
定义logistic函数:g(z)=1+e−z1
实际函数图形如下:

我们令hθ(x)=g(θTX)(这里的θ为(n+1)∗1向量)
即得到:hθ(x)=1+e−θTX1
预测函数意义:
当预测的θTX大于等于0时,我们预测答案值为1,否则答案值为0。
我们称θTX=0为决策边界。
logistic回归……代价函数J
原来的J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2中,hθ(x(i))与θ线性变换,所以随着θ的变化描绘出来的J(θ)为凸函数,即局部最小值只有一个,也就是全局最小值。
但是现在,很显然如果使用原来的J(θ),描绘出来的就不是凸函数了,也就不能使用梯度下降法得到全局最小值了。
我们根据当前hθ(x)改变代价函数:

自己画一下就知道,Cost(hθ(x),y)随着hθ(x)的变化描绘出来的是凸函数:

上面的类分段函数可以通过乘0结合在一起:

我们用J(θ)对θJ求偏导结果如下:

你会发现除了hθ(x(i))所指代的内容不一样,其它的部分都是一样的。
当然,为了保证梯度下降算法的时间复杂度,特征缩放在这里还是必要的。
logistic回归……多答案值
假设我们有四种答案值:0,1,2,3,我们需要做的很简单,就是分别做4次,得到四个分类器,每次只选择一种答案看成原来的1,其它三种看成0。
在处理新的数据时,我们带入这四种分类器,得到相应的hθ(x),取四个中较大的,也就是较为接近1的那个。