对于二分类问题,一般不采用逻辑回归模型,因为使用线性回归处理分类有如下问题,设标记值只有两个值0和1:

当进行预测时,模型得到的结果大于0.5时,将结果归为1,当结果小于0.5时将结果归为0.看似使用线性回归可以解决分类问题,不过当遇到下面这种情况时,使用线性回归处理分类会出现偏差:

此时中间部分的结果会出错.逻辑回归(logistic regression)可以有效解决这个问题.

逻辑回归(logistic regression)

逻辑回归由英文logistic regression直译而来,在周志华<机器学习>中译为对数几率回归.

其中

被称作sigmoid函数.图像为:

当z趋近负无穷,g(z)趋近0,当z趋近正无穷时,g(z)趋近1.模型的输出大多数都非常接近0或1,而在0.5附近的区域非常小,这就让我们容易确定输出结果该归为1或是0.

此时的直线相当于如下形式,而点到直线的距离相当于sigmoid函数的输入z,所以点离直线越远概率越大,在直线附近时概率为0.5

代价函数

因为是非线性的,所以

不是一个凸函数,我们无法找到最低点.

所以我们需要找到一个新的方式定义:

当y=1时,越接近1,Cost越小,越接近0,Cost越大
image.png
当y=0时,越接近1,Cost越大,越接近0,Cost越小
image.png

有个技巧可以把Cost函数写成一个函数,就像这样:

所以我们最终的 cost function为:

使用向量的形式表示为:

梯度下降

我们新构造的代价函数为凸函数,所以我们使用梯度下降找到最优的模型:

我们计算后,得到:

我们发现逻辑回归的迭代公式与线性回归看起来是一样的,不过注意这里可是不一样的哦!

这里我们可以使用矩阵相乘一次性计算出所有的

从概率的角度理解逻辑回归

设:

我们可以将上面两个公式合并成一个公式:

根据最大似然法的思想,如果模型足够好,则要使已知的数据的概率足够高,所以:

为了方便计算对取对数,这并不影响结果

最大化,其实相当于最小化,你会发现与上面的正好对应起来.

求导:

根据最终的到随机梯度下降规则:

逻辑回归的多分类问题

现在来考虑一个逻辑回归的多分类问题,我们要对三角形、正方形、叉叉分类

实际上多分类问题可以转化成多个二分类问题.

第一个二分类区分是否为三角形:

第二个二分类区分是否为正方形:

第三个二分类区分是否为叉叉:

通过这三个二分类分别得到是三角形的概率,是正方形的概率,是叉叉的概率.我们取概率最大的最为最终的结果.


编程实现:
https://www.kaggle.com/swimmingwhale/logistic-regression


参考:
http://cs229.stanford.edu/
https://www.coursera.org/learn/machine-learning

posted @ 2018-07-11 15:28:43
评论加载中...

发表评论