在分类问题中,我们尝试预测的是:结果是否属于某一个类(例如正确或错误)。分类问题的例子有:
判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈等等。从二元的分类问题开始讨论: 将因变量(dependant variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量:
其中 0 表示负向类,1 表示正向类。
回顾在一开始提到的乳腺癌分类问题,我们可以用线性回归的方法求出适合数据的一条直线:
对于上图所示的数据,这样的一个线性模型似乎能很好地完成分类任务。假使我们又观测到一个非常大尺寸的恶性肿瘤,将其作为实例加入到我们的训练集中来,这将使得我们获得一条新的直线。
这时,再使用 0.5 作为阀值来预测肿瘤是良性还是恶性便不合适了。可以看出,线性回归模型,因为其预测的值可以超越[0,1]的范围,并不适合解决这样的问题。 我们引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间。 逻辑回归模型的假设是: hθ(x)=g(θTx) 其中:
x代表特征向量g 代表逻辑函数(logistic function)是一个常用的逻辑函数为 S 形函数(Sigmoid function),公式为:该函数的图像为:
合起来,我们得到逻辑回归模型的假设:
对模型的理解: hθ(x) 的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1 的可能性 (estimated probablity)即:
例如,如果对于给定的 x,通过已经确定的参数计算得出 hθ(x) =0.7,则表示有百分之 70 的几率 y 为正向类,相应地 y 为负向类的几率为 1-0.7=0.3。
在逻辑回归中,我们预测:
hθ 大于等于 0.5 时,预测 y=1当 hθ 小于 0.5 时,预测 y=0根据上面绘制出的 S 形函数图像,我们知道当:
z=0 时 g(z)=0.5z>0 时 g(z)>0.5z<0 时 g(z)<0.5又 θTx ,即:
θTx 大于等于 0 时,预测 y=1 θTx 小于 0 时,预测 y=0对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将:
带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function)。
这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。 因此,我们重新定义逻辑回归的代价函数为:
其中:
hθ(x) 与 Cost(hθ(x),y) 之间的关系如下图所示:
这样构建的 Cost(hθ(x),y) 函数的特点是:
当实际的 y=1 且 hθ 也为 1时,误差为 0当 y=1 但 hθ 不为1 时,误差随着 h θ 的变小而变大当实际的 y=0 且 hθ 也为 0 时,代价为 0当 y=0 但 hθ 不为 0 时,误差随着 h θ 的变大而变大最后得到:
注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 hθ(x)=g(θTx) 与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。 一些梯度下降算法之外的选择: 除了梯度下降算法以外还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS)
多类分类问题中,我们的训练集中有多个类(>2),我们无法仅仅用一个二元变量(0 或 1)来做判断依据。例如我们要预测天气情况分四种类型:晴天、多云、下雨或下雪。 下面是一个多类分类问题可能的情况:
一种解决这类问题的途径是采用一对多(One-vs-All)方法。在一对多方法中,我们将多类分类问题转化成二元分类问题。为了能实现这样的转变,我们将多个类中的一个类标记为正向类(y=1),然后将其他所有类都标记为负向类,这个模型记作 h(1)θ(x) 。接着,类似地第我们选择另一个类标记为正向类(y=2),再将其它类都标记为负向类,将这个模型记作 h(2)θ(x) ,依此类推。最后我们得到一系列的模型简记为:
最后,在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量。