【机器学习入门】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)
由于本人水平有限,难免出现错漏之处,欢迎批评指正
相关文章推荐
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 3——逻辑回归、过拟合与正则化
- 机器学习概念总结笔记(二)——逻辑回归、贝叶斯分类、支持向量分类SVM、分类决策树ID3、
- Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)
- 斯坦福CS229机器学习课程笔记 part2:分类和逻辑回归 Classificatiion and logistic regression
- (斯坦福机器学习课程笔记)用广义线性模型推导逻辑回归模型
- 【机器学习入门】Andrew NG《Machine Learning》课程笔记之二 :基本概念、代价函数、梯度下降和线性回归
- 斯坦福大学机器学习课程笔记: 逻辑回归以及梯度下降
- Andrew Ng机器学习笔记ex5 正则化的逻辑回归、偏差和方差
- 斯坦福大学Andrew Ng - 机器学习笔记(2) -- 逻辑回归 & 正则化
- Coursera机器学习(Andrew Ng)笔记:回归与分类问题
- Andrew NG 机器学习 笔记-week3-逻辑回归
- 【机器学习笔记四】分类算法 - 逻辑回归
- 斯坦福大学机器学习笔记——逻辑回归、高级优化以及多分类问题
- 干货|机器学习零基础?不要怕,吴恩达课程笔记第三周!逻辑回归与正则
- 机器学习笔记04:逻辑回归(Logistic regression)、分类(Classification)
- 斯坦福机器学习课程笔记week2&3 线性/逻辑斯蒂回归
- [机器学习入门] 李宏毅机器学习笔记-6 (Classification: Logistic Regression;逻辑回归)
- 机器学习入门笔记(四)----逻辑回归
- 【机器学习入门】Andrew NG《Machine Learning》课程笔记之五:神经网络简介
- 【机器学习入门】Andrew NG《Machine Learning》课程笔记之一 :课程简介