机器学习--监督学习之梯度下降法
最近在看stanford 吴恩达老师的机器学习课程,附上网易公开课的地址http://open.163.com/special/opencourse/machinelearning.html
突然心血来潮想要把每节课的内容整理到博客上面,因为觉得给别人看到的东西我才会真正好好的思考保证尽量没有错误的概念,对自己是一种很好的提高!第一课的内容是一些介绍性的东西就不写了,从第二课监督学习之梯度下降法开始!
一、什么是监督学习?
首先,机器学习的思路是编写算法让机器从人类已有的经历中获取经验,从而具备独立解决问题的能力。是否有监督(supervised),要看给的数据是否有标记。以分类算法为例,已知一组特征量,我们知道这些特征量分别对应什么类别,通过学习这些特征量和其类别之间的关系,可以在下次给定一个特征量时做出对其类别的准确判断,即为监督学习。而无监督的分类算法,即输入的特征量没有标记,就好比你在刷题的时候没有准确答案,考试时给你一道相似的题还是不会,无监督的分类算法又称为聚类算法,效果显然是没有监督学习好的。监督学习重要的两个代表是分类问题(classification problem)和回归问题(regression problem),这节课吴恩达老师以回归问题为例,介绍了梯度下降法作为学习算法的应用。
二、梯度下降法
1.梯度概念
在高中学习一元二次函数的时候,我们学过一个很重要的知识点就是二次函数的极小点,我们也知道,极小点的必要条件是该点导数为0,导数方向时一个函数上升最快的方向。类似的,拓展到多元函数例如
它的导数是一个二维向量
实际应用中,我们要求的f(x)形式非常复杂,通过求解g(x)=0无法求解出极小点,我们就需要从简单的初始点开始入手,沿着函数下降的方向,也就是负梯度的方向一步步迭代,那么只要这个函数有极小点存在,初始点选择合理,我们就能在有限步之内得到极小点。
2.问题介绍
这节课程中,吴恩达老师介绍了一个房价预测问题。他们团队收集了一组房价和房子面积大小以及有几间房间的数据,给出五组数据如下:
Feets |
Rooms |
Price |
2104 |
3 |
400 |
1416 |
2 |
232 |
1534 |
3 |
315 |
852 |
2 |
118 |
1940 |
4 |
240 |
以上数据成为训练集(trainingset),回归问题的步骤是将训练集输入学习算法,得出一个假设模型,这个假设模型能接收新的房屋面积和房间数的输入,并给出一个最准确的估计值(相对于所使用的算法而言)。
下面我们来定义几个变量:
n:输入特征(feature)的数目,这里是2,房屋的面积和房间数;
m:训练集的大小,这里是5,一共5组训练数据;
x:是一个n维向量,表示输入特征量;
y:输出变量,也称为目标变量。
(x,y)为一个样本,例如表中的(2104,3,400)。
最后,不给源码的算法都是在耍流氓= =。这里贴上我做课程作业时用的一个简单的代码(梯度下降法本身也比较简单啦),一个二次函数使用梯度下降法求取最小值在matlab中的实现。
http://pan.baidu.com/disk/home#list/path=%2F&vmode=list
好了,也不知道我讲清楚没有,可能看起来不是那么清楚,但是我已经尽量在吴恩达老师的讲解上加上我自己的理解啦,希望我能坚持写下去!