将线性回归应用于分类问题不是一个很好的选择,如果“运气好”会得到好的预测运气不好就是不好的结果或者说很差的预测。
Logistic Regression(一种分类算法)可以将的输出值控制在[0, 1]之间。
4.1 假设表示
我们希望我们分类器的输出值控制在[0, 1]之间,所以我们提供了一个假设来满足该性质。
当我们运用线性回归时,我们用的假设形式是:
对于logistic regression,我们的假设形式是:(logistic函数),而(sigmoid函数),logistic函数和sigmoid函数其实本质上没差别,可以随意选择哪个名词代表g,结合两者我们可以得到:
sigmoid函数图像如下:
解释假设的输出:当假说输出某个数字 ,我们会把这个数字当作对一个输入x和y=1的概率估计。
例子:比如我们使用肿瘤分类的例子,因此我们可能有一个特征向量x,同往常一样、然后我们有一个特征是肿瘤的大小。假设有一个病人来了,他的肿瘤是某个大小,把他的特征向量x作为我们的假设中,并假设我们的假设输出是0.7。这个假设输出告诉我们,对于一个特征为x的患者和y=1的概率是0.7。换句话说,需要告诉患者这个肿瘤有70%或者0.7的可能性是恶性肿瘤。
用公式写的话就是:
而且:
4.2 决策边界
假设我们有一个训练集
假设我们的假设函数是:
在这里,假设我们的拟合值为:
在训练集图上的那条洋红色的线,就被称作决策边界。
再看一个更复杂的训练集
怎么样才能用logisitic函数来拟合呢?
假设我们的假设函数是:
假设我们的拟合值为:
4.3 拟合logistic回归
用来拟合参数的优化目标或者叫代价函数
下图是监督学习问题中的logistic回归模型的拟合问题
在线性回归中我们的代价函数是:
而在这里,我们把后面的平方项换成:
在这里有个问题,它呈现出来的图像是非凸函数,这使得梯度下降很难找到收敛值。
因此我们找到了一个新的代价函数用在logistic回归上:
如果y=1的情况:
,
就相当于,我们的假设函数说y=1的概率等于0,相当于对病人说你患恶性肿瘤的概率为0,但如果病人的肿瘤确实是恶性的,即如果y最终等于1,即使我们告诉病人它发生的概率为0,但结果是这个预测是错的。这样的情况,预测的代价就是无穷的(也就是代价很大,完全预测错了)
如果y=0的情况:
总结:代价函数表示了预测值与实际值的差距,规避取不到全局最优的问题。
4.4 简化代价函数和梯度下降
这一小节会找出一种稍微简单一点的方法来写代价函数来替换我们现在用的方法,同时我们还要弄清楚如何运用梯度下降法来拟合logistic回归的参数。
我们整体的代价函数是:
Note:在我们的训练集中,关于分类问题的y的值总是等于0或1
可以将改写成:
所以,logistic回归的代价函数如下:
根据这个代价函数,为了拟合出参数,我们要做的是:找出让取得最小值的参数,
由于
repeat的部分又可以替换成下图所示
会惊讶的发现和线性回归的梯度下降一样!(但其实在线性回归里面,而这里的)
在前面讲过的特征缩放在这里也适用
4.5 高级优化算法
共轭梯度法(Conjugate Gradient)、BFGS和L-BFGS就是优化之前的梯度算法的一些更高级的算法。
使用上述三种算法中的任意一种,通常不需要手动选择学习率,并且收敛得远远快于梯度下降。
缺点就是笔比梯度下降复杂得多,现阶段能使用就行,理解恐怕要话很久的时间。
使用这些算法的例子:
怎样运用到logistic回归中呢?
4.6 多元分类-一对多
什么是多类别分类问题?
例子:假如说你现在需要一个学习算法,自动的将邮件归类到不同的文件夹里或者说可以自动地加上标签,你有一些不同的文件夹或者不同的标签来区分比如说:工作的、朋友的、家人的或者是有关兴趣爱好的邮件。我们就有了一个包含四个分类的问题,用y=1,y=2,y=3,y=4来代表Work,Friends,Family,Hobby。这就是多类别分类问题
我们如何得到一个学习算法来进行分类呢?
利用一对多的思想,我们同样可以将逻辑分类用在多类别分类问题上。我们将上图中右边的图中的训练集转化为三个独立的二元分类问题。