广义线性模型:使用单调可微的联系函数g(.),令hΘ(x) = g(ΘTx)
logistic regression用来干什么?
完成分类任务。
为什么要用logistic regression?
如果使用线性回归处理分类任务会存在以下两个问题:
(1)预测值y取值为0或者1,但是hΘ(x)的值可能远大于1或者远小于0。因此根据hΘ(x)的值判断类别的话存在困难(阈值不好取,增删数据之后参数改变阈值也必须改变)。
(2)实际中很多问题,预测值与特征值并不是直线关系。
为了更好地进行分类,我们需要把输出值控制在0-1之间。在这里我们引入logistic/sigmoid function
令g(z) = 1 / (1 + e-z); g' = g *(1 - g); 0 < g < 1;
hΘ(x) =1 / (1 + e-ΘTx); 0 < h < 1
有了h,我们就能根据h的值判断x的类别。比如我们可以预测:
相当于:
从上面的转化中我们可以看出,把目标函数的输出值从一个很大的范围缩到了(0,1)
得到的ΘTx即为边界:
使用这个算法,我们可以用非常复杂的模型来适应非常复杂形状的判定边界。
例如有这样的分布:
假设目标函数:
参数是[-1 0 0 1 1],则我们得到的判定边界恰好是圆点在原点且半径为1 的圆形。
怎么用logistic regression?
选择合适的cost function:
采用此代价函数,hΘ(x)与y就同步了。而且是凸函数。
下面采用梯度下降法来更新参数Θ:
注:经过推导可以发现逻辑回归的参数更新公式和线性回归的参数更新公式一致。但是注意,hΘ(x)不一样。
另外,这里在运行梯度下降算法之前进行特征缩放仍然是非常必要的。