1、线性回归为什么不适用于分类问题
线性回归是作用于回归问题的,而逻辑回归是作用于分类问题的。
线性回归问题在应用于分类问题时,会存在很多问题。例如在吴恩达老师的机器学习课程中引用到的肿瘤判定的二分类例子中:
得到的数据的线性回归拟合直线,从这个图中看着效果还是不错的。比如设定阈值为0.5,当拟合直线对于Tumor Size得到的值大于0.5的时候,则判定为Yes,否则预测为No。
但如果再添加一个点,如下面这个图:
在原有数据中添加一个点后,得到的拟合曲线对于数据的分类效果就变得很差。有一部分Yes的数据会被划分到NO部分,这样得到的模型效果会非常差。
另外,线性回归算法应用于分类问题还有其它一些比较奇怪的事情。
在分类问题中,我们使用的label假设是0或者1,但是分类问题得到的预测结果经常会大于1或者小于0,这感觉会有点奇怪。我们用于训练数据的label都是0或者1,得到拟合曲线对数据进行预测得到的结果却往往会大于1或者小于0。
基于线性回归算法在分类问题中存在的一些问题,这时候就引入了逻辑回归算法。记住,逻辑回归算法不是回归算法,它是用于分类问题的分类算法,而线性回归是用于回归算法的。逻辑回归算法的一个特点是其拟合曲线的输出值或者说预测值是在0和1之间的,这和线性回归又是一个区别。
2、逻辑回归分类算法
前面说过,我们希望在分类模型的输出值或者预测值是在0和1之间的,因此提出一个假设来满足这个性质,让估计值在0和1之间。这个假设就是sigmoid函数,逻辑回归算法通过将线性回归的输入值放进sigmoid函数中,得到的输出值就在0和1之间。sigmoid函数具体如下表示:
其图像形状如下图所示:
逻辑回归的预测值或者输出值是一个概率值,可以用p(y=1|x,a)来表示,意思是在x,a的条件下y=1的概率值是多少,当预测值大于0.5,则预测为1,否则预测为0。
我们知道,在线性回归中,计算代价函数使用的是平方误差。这种代价函数也可以用于逻辑回归算法中,但是在逻辑回归中得到的代价函数就不再是凸函数了。因为相比于线性回归,因为在逻辑回归中使用了sigmoid函数,整体上函数变得复杂了很多,是一个非线性函数。基于该方法得到的代价函数会存在很多局部最优解,这是一个非凸函数。在这样的函数中使用梯度下降,很难达到全局最优解。
基于以上情况,在逻辑回归中需要寻找新的代价函数方法,通过最大似然估计,我们可以得到基于逻辑回归的代价函数公式:
但是这个代价函数需要分别分析y=1和y=0的两种情况,这样会显得比较麻烦。我们需要用一种方法将两个公式结合起来,具体得到的代价函数公式如下图所示:
这个公式是从统计学中的极大似然估计法中得到的,它是统计学中为不同的模型快速寻找参数的方法,同时它还有一个很好的性质,这个函数是凸函数,当使用梯度下降求解最优参数的时候,可以得到全局最优解。
通过梯度下降,求解参数的全局最优解,可以得到以下的结论:
如果你熟知线性回归的参数更新公式,会发现逻辑回归的参数更新方法和线性回归的更新方法是一样的。但是虽然表面上公式是一样的,但公式中的实际意义是不一样的,逻辑回归中的h(x)函数使用到sigmoid函数,这是一个复杂的非线性函数,这就意味着虽然逻辑回归和线性回归的参数更新公式是一样的,但实际意义是不一样的。
3、逻辑回归分类算法应用于多类别分类问题
所谓多类别问题,就如吴恩达老师机器学习视频中介绍的,将邮件归类到不同的文件夹中,这个不再是二分类,可能是四分类或者五分类,会有多个label。
就如上图所示,左边是一个二分类,右边是一个多分类。我们会用逻辑回归解决二分类问题,那如何将逻辑回归解决多分类问题呢?对于多分类分体,可以将它分解为多个二分类问题,具体原理如下图所示:
这是一个三分类问题,通过转换,可以变换为三个二分类问题,这样通过训练可以得到三个分类器,我们假设为h1(x),h2(x),h3(x)。给出一个新的数据x,怎么判断这个数据x属于哪一类呢?通过将数据x分别输入到三个分类器中,选择输出结果最大的分类器对应的label,这个就是数据x对应的预测label。这个就是多分类问题的简单解法。