【Coursera Machine Learning】 Week3 学习笔记
2017-03-26 22:33
260 查看
五、逻辑回归(Logistic Regression)
在分类问题中,我们要预测变量的y是离散的值,所有我们将使用一种叫逻辑回归(Logistic Regression)算法。5.1 分类和表示(Classification and Representation)
1、在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有(1)判断一封电子邮件是否是垃圾邮件
(2)判断一次金融交易是否是欺诈
(3)区别一个肿瘤是恶性还是良性
2、我们从二元分类问题开始考虑,将因变量可能属于的两个类分别称为负向类(negative class)和正向类(postiive class),则因变量y∈{0,1},其中0表示负向类,1表示正向类。
3、如果我们用线性回归算法来解决分类问题,对于分类,y取值为0或者1,但如果你使用的是线性回归,那么假设函数的输出值可能远大于1,或者远小于0,即使所有训练样本的标签y都等于0或1。
4、逻辑回归算法的性质:输出值永远在0到1之间。
5.2 假设函数
1、逻辑回归模型的假设函数hθ(x)=g(θTx)g(z)=11+e−z
其中g函数是sigmoid函数,函数图形如下:
![](http://oltfslql1.bkt.clouddn.com/sigmoid.jpg)
将上面两个合在一起,就得到了逻辑回归模型的假设函数:
hθ(x)=11+e−θTx
2、hθ(x)的作用是对于给定的输入变量,根据选择的参数计算输出变量y=1的概率。
5.3 判定边界(Decision Boundary)
1、在逻辑回归中,我们预测:(1)当hθ(x)≥0.5,预测y=1
(2)当hθ(x)<0.5,预测y=0
2、模型实例
![](http://oltfslql1.bkt.clouddn.com/decision1.jpg)
设置参数θ是向量[-3 1 1],判断边界是直线y=−3+x1+x2,则当−3+x1+x2≥0时,模型预测y=1
![](http://oltfslql1.bkt.clouddn.com/decision2.jpg)
设置参数θ是向量[-1 0 0 1 1],判断边界是一个圆点在原点且半径为1的圆形。
5.4 代价函数
1、如果我们用线性回归函数的代价函数,我们得到的代价函数将是一个非凸函数(non-convex function)![](http://oltfslql1.bkt.clouddn.com/non-convex.jpg)
导致我们的代价函数有多个局部最小值,将影响我们使用梯度下降算法寻找全局最小值。
2、我们重新定义逻辑回归的代价函数
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))if y = 1if y = 0
3、hθ(x)跟Cost(hθ(x),y)的关系
(1)当y=1时,Cost(hθ(x),y)=−log(hθ(x))
![](http://oltfslql1.bkt.clouddn.com/log%28x%29.jpg)
(2)当y=0时,Cost(hθ(x),y)=−log(hθ(1−x))
![](http://oltfslql1.bkt.clouddn.com/log%281-x%29.jpg)
4、构建Cost(hθ(x),y)的特点
(1)当实际的y=1且hθ也为1时代价为0,当y=1但hθ不为1时代价随着hθ的变小而变大
(2)当实际的y=0且hθ也为0时代价为0,当y=1但hθ不为1时代价随着hθ的变大而变大
5、简化后的代价函数
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
5.5 梯度下降
(1)Hypothesis:hθ(x)=11+e−θTx
(2)CostFunction:
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
(3)Goal:
minimizeθJ(θ)
(4)梯度下降算法
repeat} until convergence: {θj:=θj−α∂∂θjJ(θ)(simultaneously update all)
将J(θ)的偏导数带入可得
repeat} until convergence: {θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))⋅x(i)j(simultaneously update all)
5.6 多类别分类(Multiclass Classification)
1、一对多(one-vs-all)方法:逻辑回归可以将数据一分为二(正类和负类),则我们分别将每一种类别都作为一次正类区分所有的类别,从而实现多类别分类。2、原理
现在我们有一个训练集,用三角形表示y=1,方框表示y=2,叉叉表示y=3,下面我们要做的就是使用一个训练集,将其分成三个二元分类问题。
![](http://oltfslql1.bkt.clouddn.com/one-vs-all1.jpg)
首先,我们从用三角形代表的类别1开始,类别1设定为正类,类别2和类别3定为负类,我们创建一个新的训练集,拟合出一个合适的分类器h(1)θ(x)。
![](http://oltfslql1.bkt.clouddn.com/class1.jpg)
然后,我们设定类别2为正类,类别1和类别3为负类,创建一个新的训练集,拟合出一个新的分类器h(2)θ(x),
![](http://oltfslql1.bkt.clouddn.com/class2.jpg)
最后,我们设定类别3为正类,类别1和类别2为负类,创建第三个训练集,拟合出分类器h(3)θ(x)。
![](http://oltfslql1.bkt.clouddn.com/class3.jpg)
我们最终得到一个模型h(i)θ(x)(i=1,2,3)
在我们需要做预测时,我们将所有分类器都运行一遍,然后对每一个输入变量,选择最高可能性的输出变量。
也就是说,对于逻辑回归分类器h(i)θ(x),我们在三个分类器里面输入一个新的x值,然后我们选择一个让h(i)θ(x)最大的i,作为y=i的预测结果。
六、正则化(Regularization)
6.1 过拟合(overfitting)
![](http://oltfslql1.bkt.clouddn.com/logistcis.jpg)
第一个模型没有很好拟合训练数据,我们把这个称为欠拟合(underfitting),或者另一个术语高偏差(high bias);
第二个模型很好拟合了训练数据,我们称为恰好拟合(Just right)。
第三个模型非常好的拟合训练数据,但过于强调拟合原始数据,我们称为过拟合(overfitting),或者高方差(high variance);
1、过拟合:如果我们有太多的变量,使得假设函数很好的拟合率训练数据集,但是无法泛化到新的数据样本中,以至于无法预测正确的数据样本结果(泛化是指一个假设模型能够应用到新样本的能力)。
2、解决过拟合的方法:
(1)减少特征变量的数量,手工选择保留哪些特征,或者使用一些模型选择算法来处理。
(2)正则化,保留所有特征,但是减少参数的大小。
6.2 正规化代价函数
为了防止过拟合,我们对代价函数进行正规化:J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθ2j]
λ称为正则化参数(Regularization Parameter),如果选择的正则化参数λ过大,则会把所有的参数都最小化了,导致模型变成hθ(x)=θ0。
为什么要增加一项λ∑j=1nθ2j?
因为一个模型中真正重要的参数可能并不多,而我们的假设函数里面包含很多参数,为了使某些不重要的参数不起作用,我们可以将其尽可能近似于0,于是我们通过控制λ的大小来达到这个目的。
所以对于正则化,我们取一个合理的λ的值,就能很好的应用正则化。
6.3 正则化线性回归(Regularized Linear Regression)
1、正则化线性回归的代价函数J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθ2j]
2、梯度下降算法
由于θ0不参与正则化,所以我们将梯度下降算法分成两种情形
repeat} until convergence: {θ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](simultaneously update all)
对第二个式子进行调整可得
θj:=θj(1−λmα)−α1m∑i=1m(hθ(x(i))−y(i))⋅x(i)j
可以看出正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令θ值减少了一个额外的值。
3、正规化正规方程
θ=(XTX+λ⎡⎣⎢⎢⎢⎢00⋮001⋮0⋯⋯⋯00⋮1⎤⎦⎥⎥⎥⎥)−1XTy
其中矩阵的大小是(n+1)∗(n+1)。
6.4 正则化逻辑回归(Regularized logistics regression)
1、我们同样也给代价函数增加一个正则化的表达式,代价函数为J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθ2j
2、梯度下降算法
repeat} until convergence: {θ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](simultaneously update all)
相关文章推荐
- coursera NLP学习笔记之week2 语言模型
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 4——神经网络(一)
- 【coursera 学习笔记】An Introduction to Interactive Programming in Python--week1
- 【Coursera Machine Learning】 Week4 学习笔记
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 8(一)——无监督学习
- 【coursera 学习笔记】An Introduction to Interactive Programming in Python--week0
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 3——逻辑回归、过拟合与正则化
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 7——支持向量机
- coursera Machine Learning Week3-2 学习笔记
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 5——神经网络(二)
- coursera NLP学习笔记之week1课程介绍&基础的文本处理
- coursera NLP学习笔记之week1最小编辑距离计算
- 【Coursera Machine Learning】 Week1 学习笔记
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 6(一)—— 机器学习诊断、偏差与方差
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 9(二)——推荐系统作业
- coursera Machine Learning Week3-1 学习笔记
- coursera Machine Learning Week 1学习笔记
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 1——简单的线性回归模型和梯度下降
- coursera NLP学习笔记之week3 文本分类和朴素贝叶斯
- Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 8(二)——降维