Machine Learning - Andrew Ng on Coursera (Week 3)
2016-03-28 10:15
197 查看
本篇文章将分享Coursera上Andrew Ng的Machine Learning第三周的课程,主要内容有如下,详细内容可以参考文末附件:
分类问题及模型表示
逻辑回归模型
多类别的分类问题
解决过拟合问题
首先Andrew给出了几个例子来解释什么是分类问题,包括垃圾邮件的识别、在线交易的欺诈判别以及肿瘤是良性还恶性。从线性回归对连续值的预测转为了对离散值的预测。在只有两类的分类问题中,用0和1来表示否与是。在此情况下,便不宜用线性回归函数来分类,而需要选择另外的[Math
Processing Error]来解决此类问题,并且满足[Math
Processing Error],于是选择了Sigmod函数,又称为Logistic函数。Sigmoid函数是一个在生物学中常见的S型的函数,在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作阈值函数,将变量映射到0,1之间,还被广泛应用于神经网络的激活函数中。因此,逻辑回归模型假设如下:
[Math
Processing Error]
[Math
Processing Error]
[Math
Processing Error]
而[Math
Processing Error]的输出结果,则表示在给定[Math
Processing Error]和[Math
Processing Error]条件下,[Math
Processing Error]的概率,即:
[Math
Processing Error]
在使用时我们可以认为:
如果[Math
Processing Error],则[Math
Processing Error]。
如果[Math
Processing Error],则[Math
Processing Error]。
接下来引入了决策边界(Decision Boundary)的概念,如下图中紫色的斜线所示,这条线的表示实际上就是[Math
Processing Error]的表达式,因此它是假设公式[Math
Processing Error]的属性,而非数据集的属性。
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560460989750.jpg)
对于不同的假设公式,当变量的数量、阶次不一样时(如双变量二次方程可以表示椭圆,更高阶的方程则可以表示更多非线性的决策边界),可以表示出不同的决策边界,以更好地将数据集分类并预测新数据的分类结果。
在定义了逻辑回归模型的[Math
Processing Error]之后,要求[Math
Processing Error]还需要定义代价函数。回顾线性回归的代价函数,并将其变形写成更一般的形式,对于不同的问题只需要替换其中的[Math
Processing Error]即可,如下所示:
[Math
Processing Error]
[Math
Processing Error]
线性回归中,代价函数是凸函数,否则无法使用梯度下降的方式进行求解。好在逻辑回归的代价函数有着良好的性质,在无论[Math
Processing Error]等于1还是0,都是单调的凸函数(函数图像可参见文末附件中相应部分),其代价函数[Math
Processing Error]如下所示:
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560539320463.jpg)
在将此代价函数代入[Math
Processing Error]的时候有个小技巧,可以将两个条件表达式转化成一个表达式:
[Math
Processing Error]
对上式就可采用梯度下降法拟合参数[Math
Processing Error]了,迭代更新参数的方法同线性回归一样,不过需要注意的是在线性回归中[Math
Processing Error],而逻辑回归中[Math
Processing Error]。
此外,还提到了几种梯度下降的优化算法,分别补充了一篇相关的文章,如果感兴趣可以做一个简单了解:
Conjugate
Descent
BFGS
L-BFGS
本课程中不要求理解优化算法的原理,也无需自己编写这些算法的代码,除非是数值计算方面的专家或者爱好者。一般直接调用现有的库就可以了,高效且方便。这些算法不需要选择具体的[Math
Processing Error]值,可以让算法更快收敛。接下来用Octave的
当对象类别多于两个时,如邮件标识、医学诊断、天气等等,原有的双类分类问题就变成多类别的分类问题,如下图所示:
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560559315977.jpg)
此时可以采用一对多(one-vs-all)的分类方法,即对每一类训练一个分类器,将该类与其他所有类别分开。然后再用这些分类器判定新到数据属于各类的概率,取其最大者,如下图所示:
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560560350754.jpg)
首先以三个线性回归的例子、三个逻辑回归的例子分别说明了什么是欠拟合(High bias)、过拟合(High variance)和刚刚好(Just right fitting...恕我也不知道怎么翻译贴切了)。以及解决过拟合的两种方法:
减少特征值的数量,采用人工或者算法自动选择;
正则化,矩阵特征值大小,看特征对结果的贡献赋予权重。
然后引入了正则化(Regularization)的概念,即通过引入惩罚权重降低高次项对拟合结果的影响,简化假设公式,从而避免过拟合的现象。正则化代价函数如下所示:
[Math
Processing Error]
分别是线性回归和逻辑回归为例,讲解了权重[Math
Processing Error]在更新参数时的策略。
对于线性回归,在使用Normalization方法求解时,如果样本的数量小于特征的数量时,[Math
Processing Error]是不可逆的(奇异矩阵)或者退化的(Degenerated);如果[Math
Processing Error],[Math
Processing Error]则该矩阵是可逆的(非奇异矩阵),可以用该方法求解。
[Math
Processing Error]
附本次分享演示文档:ML-Coursera-Week3
到本课程的最后,Andrew说如果你掌握了到目前为止所学的课程,那么恭喜你,已经比硅谷中大部分的工程师牛逼了,可以用机器学习做产品赚大钱了。不管你们信不信,反正我是信了~
分类问题及模型表示
逻辑回归模型
多类别的分类问题
解决过拟合问题
分类问题及模型表示
首先Andrew给出了几个例子来解释什么是分类问题,包括垃圾邮件的识别、在线交易的欺诈判别以及肿瘤是良性还恶性。从线性回归对连续值的预测转为了对离散值的预测。在只有两类的分类问题中,用0和1来表示否与是。在此情况下,便不宜用线性回归函数来分类,而需要选择另外的[MathProcessing Error]来解决此类问题,并且满足[Math
Processing Error],于是选择了Sigmod函数,又称为Logistic函数。Sigmoid函数是一个在生物学中常见的S型的函数,在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作阈值函数,将变量映射到0,1之间,还被广泛应用于神经网络的激活函数中。因此,逻辑回归模型假设如下:
[Math
Processing Error]
[Math
Processing Error]
[Math
Processing Error]
而[Math
Processing Error]的输出结果,则表示在给定[Math
Processing Error]和[Math
Processing Error]条件下,[Math
Processing Error]的概率,即:
[Math
Processing Error]
在使用时我们可以认为:
如果[Math
Processing Error],则[Math
Processing Error]。
如果[Math
Processing Error],则[Math
Processing Error]。
接下来引入了决策边界(Decision Boundary)的概念,如下图中紫色的斜线所示,这条线的表示实际上就是[Math
Processing Error]的表达式,因此它是假设公式[Math
Processing Error]的属性,而非数据集的属性。
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560460989750.jpg)
对于不同的假设公式,当变量的数量、阶次不一样时(如双变量二次方程可以表示椭圆,更高阶的方程则可以表示更多非线性的决策边界),可以表示出不同的决策边界,以更好地将数据集分类并预测新数据的分类结果。
逻辑回归模型
在定义了逻辑回归模型的[MathProcessing Error]之后,要求[Math
Processing Error]还需要定义代价函数。回顾线性回归的代价函数,并将其变形写成更一般的形式,对于不同的问题只需要替换其中的[Math
Processing Error]即可,如下所示:
[Math
Processing Error]
[Math
Processing Error]
线性回归中,代价函数是凸函数,否则无法使用梯度下降的方式进行求解。好在逻辑回归的代价函数有着良好的性质,在无论[Math
Processing Error]等于1还是0,都是单调的凸函数(函数图像可参见文末附件中相应部分),其代价函数[Math
Processing Error]如下所示:
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560539320463.jpg)
在将此代价函数代入[Math
Processing Error]的时候有个小技巧,可以将两个条件表达式转化成一个表达式:
[Math
Processing Error]
对上式就可采用梯度下降法拟合参数[Math
Processing Error]了,迭代更新参数的方法同线性回归一样,不过需要注意的是在线性回归中[Math
Processing Error],而逻辑回归中[Math
Processing Error]。
此外,还提到了几种梯度下降的优化算法,分别补充了一篇相关的文章,如果感兴趣可以做一个简单了解:
Conjugate
Descent
BFGS
L-BFGS
本课程中不要求理解优化算法的原理,也无需自己编写这些算法的代码,除非是数值计算方面的专家或者爱好者。一般直接调用现有的库就可以了,高效且方便。这些算法不需要选择具体的[Math
Processing Error]值,可以让算法更快收敛。接下来用Octave的
fminunc命令实现了代价函数的优化求解过程。
多类别的分类问题
当对象类别多于两个时,如邮件标识、医学诊断、天气等等,原有的双类分类问题就变成多类别的分类问题,如下图所示:![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560559315977.jpg)
此时可以采用一对多(one-vs-all)的分类方法,即对每一类训练一个分类器,将该类与其他所有类别分开。然后再用这些分类器判定新到数据属于各类的概率,取其最大者,如下图所示:
![](http://kaopuer-wordpress.stor.sinaapp.com/uploads/2016/02/wpid-14560560350754.jpg)
解决过拟合问题
首先以三个线性回归的例子、三个逻辑回归的例子分别说明了什么是欠拟合(High bias)、过拟合(High variance)和刚刚好(Just right fitting...恕我也不知道怎么翻译贴切了)。以及解决过拟合的两种方法:减少特征值的数量,采用人工或者算法自动选择;
正则化,矩阵特征值大小,看特征对结果的贡献赋予权重。
然后引入了正则化(Regularization)的概念,即通过引入惩罚权重降低高次项对拟合结果的影响,简化假设公式,从而避免过拟合的现象。正则化代价函数如下所示:
[Math
Processing Error]
分别是线性回归和逻辑回归为例,讲解了权重[Math
Processing Error]在更新参数时的策略。
对于线性回归,在使用Normalization方法求解时,如果样本的数量小于特征的数量时,[Math
Processing Error]是不可逆的(奇异矩阵)或者退化的(Degenerated);如果[Math
Processing Error],[Math
Processing Error]则该矩阵是可逆的(非奇异矩阵),可以用该方法求解。
[Math
Processing Error]
附本次分享演示文档:ML-Coursera-Week3
到本课程的最后,Andrew说如果你掌握了到目前为止所学的课程,那么恭喜你,已经比硅谷中大部分的工程师牛逼了,可以用机器学习做产品赚大钱了。不管你们信不信,反正我是信了~
相关文章推荐
- leetcode Add Digits 之C++实现
- Machine Learning - Andrew Ng on Coursera (Week 2)
- 小番茄破解
- Android自定义View的实现方法,带你一步步深入了解View(四)
- STM8/32使用外部有源晶振的问题
- android application解析
- 有趣的前端题目,看了不懊悔
- 第三周笔记
- js 基础概念
- 自定义View 实现简单的动态壁纸
- 封装RecyclerView.ViewHolder
- NSData 与 NSString转换
- iPad启动图片配置
- linux上安装memcached步骤
- SpringMVC整合Shiro(原文:http://my.oschina.net/miger/blog/283526)
- android studio新建activity后R未自动导入
- 设计模式--命令模式C++实现
- 可调试Windows服务框架
- linux下编译出错 collect2: ld terminated with signal 7 [Bus error], core dumped
- 自定义View 实现字母选择