您的位置:首页 > 其它

【机器学习入门】Andrew NG《Machine Learning》课程笔记之四:分类、逻辑回归和过拟合

2017-08-18 17:47 579 查看

分类和逻辑回归

在实际的生活中,会遇到很多二元分类问题(Binary Classification Problem),比如判断一封邮件是否是垃圾邮件,摄像头判断用户是男是女和一张图片里包含的是猫还是狗等等。

在有监督的分类问题中,通常使用带标记(Label)的训练集(x(i),y(i))进行训练,其中x(i)是样本的特征空间,y(i)则是相应样本的标记,对于二元分类问题y(i)∈{0,1}

对于分类问题,要引入一个概念,判定边界(Decision Boundary)。在前面对于线性回归的问题,得到了预测模型hθ(x)=θTX,如果把它使用在分类问题中,我们就要加入一个判定条件,什么时候属于哪一类,比如y=1 if hθ(x)≥c ; y=0 if hθ(x)<c,c为某一固定常数,这样就得到了一条为直线的判定边界。

当然,很多情况下得到的判定边界会更复杂一些,不是一条直线而是一条曲线



或者是封闭的曲线



某些情况下,线性回归预测的模型加上一个合适的判定边界能够很好的解决分类问题, 但是也会遇到一些问题。像Andrew NG老师课程中讲的根据肿瘤的大小判断肿瘤是良性还是恶性的例子一样



图中,蓝色的实线实线性回归得到的拟合的直线,蓝色的虚线是判定边界,大于0.5为恶性肿瘤,小于0.5为良性肿瘤,我们可以明显的看出绿色圈中的两个点是分类错误的,它们的值小于0.5,被归为良性肿瘤但实际上是恶性肿瘤。

为了克服线性回归模型的缺陷,这里引入一个新的模型,逻辑回归(Logistic Regression)。PS:参考周志华老师的《机器学习》一书,称为对数几率归模型更为合适,因为‘Logistic’一词和中文的逻辑的含义还是相差比较远的。

逻辑回归,实质上是在线性回归模型的基础上引入了一个Sigmoid函数,具体公式如下

g(z)=11+e−z

如果把它画出来,就可以得到一个形似S的曲线



他可以把(−∞,+∞)的范围映射到(0,1),它不仅可以用来预测类别,还可以近似地表示预测的概率

hθ(x)=P(y=1|x;θ)=1−P(y=0|x;θ)P(y=0|x;θ)+P(y=1|x;θ)=1

P(y=1|x;θ)表示在给定参数x和θ的情况下,y=1的概率导数

另外,Sigmoid函数有一个非常重要的性质

g′(z)=zdz11+e−z=1(1+e−z)2(e−z)=1(1+e−z)(1−1(1+e−z))=g(z)(1−g(z))

对于使用逻辑回归模型,只是在线性回归模型的基础上加了一个Sigmoid函数

hθ(x)=g(θTx)z=θTxg(z)=11+e−z

实质上,逻辑回归模型是使用单调可微的Sigmoid函数将分类任务的真实标记y和线性回归模型的预测值联系起来。

逻辑回归模型的代价函数和梯度下降

前面学习过线性回归模型的代价函数

J(θ)=12m∑mi=1(hθ(x(i))−y(i))2

但是,这个代价函数对于逻辑回归函数是不适用的,因为按照这个函数计算J(θ)是非凸函数



不容易收敛在最低点,所以我们对逻辑回归模型引入一个新的代价函数的形式(交叉熵)保证是凸函数,它的来源是通过似然(likelyhood)计算得来的,证明过程比较繁琐,挖个坑在这里。

J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=−log(hθ(x))Cost(hθ(x),y)=−log(1−hθ(x))if y = 1if y = 0

具体的可以看Andrew NG老师的两张图



当y=1时即样本的标记为1时,hθ(x)越接近于1代价函数的值越小趋近于0,越接近于0代价函数的值越大越趋近于∞



当y=0时即样本的标记为1时,hθ(x)越接近于0代价函数的值越小趋近于0,越接近于1代价函数的值越大越趋近于∞

两种情况下,都很好的契合了实际的需要,符合要求。

理清楚了逻辑回归模型的代价函数,就可以推导它的梯度下降中的参数更新公式,在推导公式之前我们可以把代价函数写成这种形式

J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]

其实,就是在两个对数项前加了一项,来选定对数项,y=0或者(1−y)=0后面的对数项无效。

然后,推导它的参数更新公式

θj:=θj−α∂∂θjJ(θ)=θj+α∂∂θj1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]=θj+αm∂∂θj∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]=θj+αm∑i=1m[y(i)1hθ(x(i))∂∂θjhθ(x(i))−(1−y(i))11−hθ(x(i))∂∂θjhθ(x(i))]=θj+αm∑i=1m[y(i)1hθ(x(i))−(1−y(i))11−hθ(x(i))]∂∂θjhθ(x(i))=θj+αm∑i=1m[y(i)1g(θTx(i))−(1−y(i))11−g(θTx(i))]∂∂θjg(θTx(i))=θj+αm∑i=1m[y(i)1g(θTx(i))−(1−y(i))11−g(θTx(i))]g(θTx(i))(1−g(θTx(i)))∂∂θjθTx(i)=θj+αm∑i=1m[y(i)1g(θTx(i))−(1−y(i))11−g(θTx(i))]g(θTx(i))(1−g(θTx(i)))x(i)j=θj+αm∑i=1m[y(i)(1−g(θTx(i)))−(1−y(i))g(θTx(i))]x(i)j=θj−αm∑i=1m(hθ(x(i))−y(i))x(i)j

在求导的过程中,使用到了上面提到的g(z)函数的性质g′(z)=g(z)(1−g(z))

其实,最后得到的形式和线性回归模型的是一样的,但是模型的假设hθ(x)不一样。有了更新公式,就可以完成梯度下降算法的参数更新了。

多元分类

在实际生活中遇到的分类问题可能不是只有两个类别,而是包含n+1多个类别,标记y∈{0,1,...,n},对于多元分类问题应该怎么进行操作呢



在图中,有三角形、正方形和叉号三个不同的类别,在划分种类的时候,先固定一个种类,其他剩余的所有种类都视为另一种种类,像右边三幅小图中的圆形所代表的一样,这样就转换到了二元分类问题。对于上面的例子,就可以得到h(1)θ(x),h(2)θ(x),h(3)θ(x)三个判定边界。

下面要做的工作就是 根据假设得到的概率来判断所属的类别

y∈{0,1...n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)⋯h(n)θ(x)=P(y=n|x;θ)prediction=maxi(h(i)θ(x))

哪个概率最高,就判定为哪一个类

过拟合、正则化的线性回归和逻辑回归模型

在进行预测模型的训练的时候,经常会遇见两个问题

欠拟合(Underfitting)

过拟合(Overfitting)



假设根据面积对房价进行预测,图中蓝色的点是数据集,使用线性回归模型hθ(x)=θ0+θ1x,可以得到左边图中的这条直线,可以看出和某些样本相差比较大,可能预测效果比较不太好,这种情况称为欠拟合;如果引入一个二次项,使用假设h、theta(x)=θ0+θ1x+θ2x2,可以得到中间图中的二次曲线,比线性模型更加拟合数据点,可能预测效果比较好;如果把假设的最高项改为五次项h、theta(x)=∑5j=0θjxj,可以得到右边图中的曲线,能够完美地拟合所有的数据点,但是明显地可以看出预测的趋势是错误的,这种情况称为过拟合。

解决过拟合的办法有

舍弃一部分不需要的特征

人工选择

算法选择(PCA等)

正则化(Regularized)

下面具体介绍下正则化的方法



左图中的模型hθ(x)=θ0+θ1x+θ2x2存在欠拟合的问题,为了解决这个问题使用模型hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4,但是又引入了过拟合的问题。

为了减小两个高次项的影响,可以将代价函数稍微改动一下

J(θ)=minθ 12m∑mi=1(hθ(x(i))−y(i))2+1000⋅θ23+1000⋅θ24

人为地在高次项添加两个较大的系数,这样θ0,θ1就趋近于0,得到上图右侧粉色的曲线,θ3x3和θ4x4对函数整体影响就会变小,对样本的拟合程度比原来的曲线要好也没有过拟合的问题。

把上面的方法推广一下,就得到正则化的代价函数

J(θ)=12m ∑mi=1(hθ(x(i))−y(i))2+λ ∑nj=1θ2j

其中,λ是正则化系数,决定后面的正则化项对寒暑的影响程度。

然后对代价函数求偏导,我们就可以得到线性回归模型的参数更新公式

{ θ0:=θ0−α 1m ∑i=1m(hθ(x(i))−y(i))x(i)0 θj:=θj−α [(1m ∑i=1m(hθ(x(i))−y(i))x(i)j)+λmθj]} j∈{1,2...n}

值得注意的是,θ0这个常数项并不需要进行正则化。为了进一步看清楚,可以改写成这种形式

θj:=θj(1−αλm)−α1m∑mi=1(hθ(x(i))−y(i))x(i)j

其中,αλm为正则化项,通过它来减小θ的值,其余部分和原来的更新公式是一样的。

类似地,可以得到逻辑回归模型的代价函数

J(θ)=−1m∑mi=1[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑nj=1θ2j

参数更新公式

{ θ0:=θ0−α 1m ∑i=1m(hθ(x(i))−y(i))x(i)0 θj:=θj−α [(1m ∑i=1m(hθ(x(i))−y(i))x(i)j)+λmθj]} j∈{1,2...n}

和线性回归模型不一样的只是假设函数hθ(x)

由于本人水平有限,难免出现错漏之处,欢迎批评指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习
相关文章推荐