逻辑回归提出的原因:
对于分类问题,为什么不能用我们之前学习的线性回归算法来解决呢?有以下两点:
1:不能很好地说明实际情况的真正意义
2:函数值可能大于1或者小于0(对于二类分类0,1)
假设函数:
为了使函数值在0~1之间,假设函数h(x)从h(x) = θ’x换为 h(x) = g(θ’x) ,其中g(z)=1/(1+e^-z)
由h(x)的含义可知,我们可以得到:
P(y=1|x;θ) = h(x): 即,当P=0.7时,发生y=1的概率为70%
P(y=0|x;θ) = 1-h(x):即,当P=0.7时,发生y=0的概率为70%
通常,我们假设h(x)>=0.5时(即θ’x>=0)为偏向y=1事件发生,h(x)<0.5时(即θ’x<0)为y=0事件发生。
代价函数:
对于线性回归问题,代价函数如下所示:
但是若对于逻辑回归问题(分类)同样使用上面的代价函数的话,将会发现J并不是一个凸函数(这里不进行说明),函数中间会存在很多的局部最优解,这对我们使用梯度下降算法来说不是很好。所以要改变逻辑回归问题的代价函数,如下:
上图所示的代价函数是通过统计学的最大似然估计得出的,我先不进行解释,也许是上面的e^-z和下面的log(z)函数相对应了。这里我们先对上面的代价函数进行验证,看它是否能够满足我们问题的实际要求,即预测的好代价小,预测的差代价大。
当y=1时, h(x)的值越接近1,代表结果为1的可能性越大,预测值和实际值相符,代价函数值也越趋于0。当h(x)越接近0时,代表预测的结果越差,所以代价函数值越大,满足要求。
同理,也满足实际要求。
所以逻辑回归算法的整体代价函数整合后如下图:
梯度上升算法:
经过计算偏导数项,逻辑回归梯度下降具体计算过程如下:
你会惊讶的发现,现在逻辑回归的迭代计算过程和线性回归的一模一样!(可能是数学家的总结),不过它们的h(x)的表达式改变了。
多元分类算法:
对于上图问题,我们先将三角形看为1类,其他的看为0类,这就变成了我们熟悉的二类问题了,通过拟合样本训练得到h1(x),可以计算出新的样本为三角形这一类的概率。对于矩形和叉同理,训练出的h2(x),h3(x)分别表示新的样本为矩形或叉这一类的概率。最后比较三个函数值的大小,将新样本归为最大值的那一类。
如上图所示,现在有多分类问题(三角形,矩形,叉)。我们知道一个逻辑回归函数只能将样本分为不同的两类0和1,并且h(x)的值表示样本为1的概率。现在对于多类问题,我们的处理是用不同的预测函数hi(x)计算出新的样本属于每一类的概率,最后选定概率最大的类。