Classification
在分类问题中,你要预测的变量y的离散的值,我们将学习一种叫做逻辑回归的算法。
在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。
分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们也谈到了肿瘤分类问题的例子,区别一个肿瘤是恶性的还是良性的。
我们从二元的分类问题中开始讨论,因变量有正向类和负向类,因此 y = {0, 1} 0表示负向类 ,1表示正向类。
我们也可以用线性回归算法来解决一个问题,将hθ(x) >= 0.5 归为1 hθ(x) < 0.5归为0。
Hypothesis Representation
但是有些情况下就不适合了,hθ(x)的值取到[0,1],可以令hθ(x) = g(θTx),
对模型的理解可以为
X 代表特征向量
g 代表逻辑函数(logistic function)是一个常用的逻辑函数为 S 形函数
对于这个模型,我们可以得到:
当 hθ大于等于 0.5 时,预测 y=1
当 hθ小于 0.5 时,预测 y=0
z=0 时 g(z)=0.5
z>0 时 g(z)>0.5
z<0 时 g(z)<0.5
θTX 大于等于 0 时,预测 y=1
θTX 小于 0 时,预测 y=0
例如下面这个模型:
参数θ的值为[-3 1 1] 当-3x+x1+x2 >= 0 时才预测为1
而上面这个模型的参数θ的值为[-1 0 0 1 1]
Cost funcion
线性回归的代价函数是
那么重新定义的逻辑回归的代价函数是:
其中
hθ(x)与 Cost(hθ(x),y)之间的关系如下图所示:
将其简化得到的Cost(hθ(x),y)是:
而代价函数就变成了:
得到这个一个代价函数后,就可以用梯度下降算法来求使的代价函数最小的参数了。
求导后就变成了:
虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 hθ(x)=g(θTX)与线性回归中不同,所以实际上是不一样的。
另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。
Optimization algorithm
求最优解的代价函数就是重复的运行下面的:
然而梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂如果我们能用这些方法来计算代价函数 J(θ)和偏导数项两个项的话,那么这些算
法就是为我们优化代价函数的不同方法,共轭梯度法 BFGS (变尺度法) 和 L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算 J(θ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。
使用方法如下
Multiclass Classification: One-vs-all
对于之前的一个,二元分类问题,我们的数据看起来可能是像这样:
对于一个多类分类问题,我们的数据集或许看起来像这样:
在多类问题上,我们可以将其中一个类归为正向类,其它类归为负向类,这个模型记作hθ(1)(x),类似的还可以得到模型hθ(2)(x)......
现在要做的就是训练这个逻辑回归分类器:hθ(i)(x)其中 i 对应每一个可能的 y=i,为了做出预测,我们给出输入一个新的 x 值,用这个做预测。我们要做的就是在我们三个分类器里面输入 x,然后我们选择一个让 hθ(i)(x)最大的i,即maxhθ(i)(x)。
The Problem of Overfitting
到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过度拟合(over-fitting)的问题,可能会导致它们效果很差。
如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据。
第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。
我们可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。
分类问题中也存在同样的问题:
第一个欠拟合,第二个正好,第三四过拟合。
存在过拟合问题应该如何处理呢?
1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA)
2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。
如果我们的模型是,正是那些高次项导致了过拟合,如果我们能让高次项的系数接近0,我们就能更好的拟合了。
那么代价函数为:
其中 λ 又称为正则化参数(Regularization Parameter)。一般不定θ0进行改变。
如果λ的值过大,会使得θ约等于0,即hθ(x) = θ0, hθ(x)就变成一条直线了,由过拟合变成欠拟合,得不偿失。
所以对于正则化,我们要取一个合理的λ的值,这样才能更好的应用正则化。
Regularized Linear Regression
正则化线性回归的代价函数为:
由于不对θ0进行正则化,所以梯度下降分两个情况:
所以当j>0时有:
也可以有正规方程来求解正则化线性回归模型
Regularized Logistic Regression
对于逻辑回归,也可以给代价函数加一个正则化的表达式:
梯度下降为:
优化如下: