MachineLearning(Andrew)Week1

来源:互联网 发布:宁波php招聘 编辑:程序博客网 时间:2024/04/30 21:19

Machine LearningWeek1

1introduction

1)什么是机器学习?

机器学习从AI(人工智能)中衍生

是计算机的一种新能力

例子:

NLPNatural Language Processing )、CV(Computer Vision )

Tom Mitchell 1998年给出了个定义:

A computer program is said to learn from experience E with respect to some task T and some performance ,

measure P, if its performance on T,as measured by P,improves with experience E.

一个程序从经验E中学习了一些能力,现在给它任务T,如果它完成的情况达到P这个标准来衡量,我们就说它从经验中有获得足够的学习效果。

这就好像我们在学校,平时做练习题来让同学们练手,期末的时候考试,如果成绩达到了一些标准,就说我们平时做练习有认真。

(2)监督学习

监督学习(Supervised Learning)是指在在做练习题的时候有给答案。比如第一题选A,第二题选B……同学们做练习有答案对照。

监督学习的类型:

1)回归(Regression):预测连续的输出值是个数值。这就像是给你过去一段时间的天气预报的值让你学习,最后判断你有认真学到东西,就是问你明天天气“多少度”。X度的温度值就是要的结果。

2)分类(Classification):输出的结果是“这个东西是属于XX类”。比如给你一堆的水果,上面贴着“苹果”、“梨”……让你观察。最后给你个水果,问你是什么。你说是“桃子”,就是分类问题。

(3)无监督学习

无监督学习(Unsupervised Learning)就是平常做练习题没给你答案,就只有题目,反正你就是做练习,待到期末的时候考你。

无监督学习的类型:

聚类问题(Clustering):比如给你一堆水果,上面什么标记都没有,让你观察,把他们归类。有可能像橙子、橘子、柑、柠檬你会归成一类或者几类。但是你也不知道对不对。

2、单变量线性回归—Linear regression with one variable

(1)回归模型(Model regression


x表示房屋面积,y表示价格。根据房屋面积预测价格。显然,学习时我们给出了面积和价格的对照,这是监督学习。 

假设上面有m个实例,即有m对(x,y)。我们称这m(x,y)为训练集(training set)。现在把这个训练集给一个算法,让它学出一个yx关系的函数h。之后,当别人给你其他房屋面积时,你就可以用这个h来预测那个房屋的价格。

 

我们知道上面给的训练集就是数据,m(x,y)的值,比如去房屋中介公司就有这样的数据。至于学习的算法,我们暂时放着。先看看我们的目标hh是一个表示将x映射到y上的函数,听上去就很数学,其实就是线性回归,统计中的知识。

我们把h称之为假设(Hypothesis)。就是说,因为我们想做房屋价格预测,我们才提出房屋面积和价格有那样的关系,但是不是真的有,也不太清楚(搞不好,房屋的价格是瞎编的,而房屋价格和面积有h那样的假设,是因为运气)。

h形如:

 

(2)成本函数(代价函数 Cost function

看上面的式子,只有一个变量x所以是单变量回归分析。参数(parameters)有θ0和θ1。这两个参数是怎么得到的呢?我们的目标是求h,求h的关键是求两个未知参数θ0和θ1

我们的思路有可能就是穷举,比如假设θ0=1.5,θ1=0或者θ0=0,θ1=0.5……如:

 

 但是,上面给出了这么多θ0和θ1,构成了那么多h,把他们组成一个假设集合(Hypothesis set),其中哪个h是我们心仪的?

我们需要一个评判哪个h比较好的标准,因此提出了成本函数(cost function)。

成本函数是什么概念,就是我们用来判断哪个h好。如何判断呢?哪个h进行房屋预测时,误差小,哪个就好。怎么求误差?用:

 

就是第i对(x,y)进行误差分析,比如XX花园XXXX单元XX室的房屋面积xi放进去后会出来一个房屋价格,和给的答案yi比较一下差了多少。

这是一个实例,我们需要对总体进行误差分析:

 

我们用J来表示总体的误差,同时归一化(先理解为做个平均吧,后面还会讲到)为:

 

这个就是我们的成本函数。

我们的目标就是求使得J最小的θ0和θ1

总结来就是:


几何上看就是: 

 

 

任意给θ0和θ1,都有一个总体误差的值,在图上就是都有一个点,但是不见得这个误差就够小,点所在的位置够低,所以我们要不停的试不同的θ0和θ1,直到有一个J显示出来说,h犯错不是很严重,可以去做预测了,我们才露出满意的笑容。

(3)梯度下降(Gradient descent

从上面的几何图可以看出,我们的目标就是找出J最小的θ值,看上去好像就是找那个最低点。在左边那幅就是曲线最低的那个点,右边的好像碗底的那个点。如果向上面说的用穷举,那么我们要花上很多很多很多……的时间都有可能找不到那样的θ,因此提出梯度下降(Gradient descent)。

先解释一下:

 

开始的时候,给任意的θ0和θ1,会算出一个J1,接着我们沿某个一定能使J变小的方向,求新的θ0和θ1,再代入,不断迭代。什么意思呢?请看下图

 

我们在上坡上放一个球,球自然就顺着某个方向往谷底滚去。如上图中的路线所示。

如下图,我们开始在蓝色的点处给了任意的θ0和θ1,求出了J(θ1),接着,我们做J(θ1)方向的切线,交x轴的值就是新的θ0和θ1,带入求J(θ2),再做切线……直到J最小。(可以看看牛顿迭代法)

 

上面所说的做切线,其实就是函数求导数,函数在某一点上的导数就是该点的切线的斜率。

就是函数求导,就是求斜率。

斜率就是我们说的梯度(实际上,梯度下降是沿梯度的负方向,沿梯度方向是增大函数值,但是我们都是求最小值,因此我们在这里就说沿梯度方向)。但是在该点的导数,只能描述在该点的变化率,并不是全局的变化,就是说函数在该点下降很快很多不代表就是下降到整个函数最低点。因为我们并没有试过所有的情况:

 

上图所示就是我们找到一个局部的最优θ。导数的本质是通过极限的概念对函数进行局部的线性逼近。

看上面截图,θ减去的并不是梯度,而是α乘以梯度,为什么在这里加乘一个α?α控制一步下降多大。因为做切线,有的时候会跑到最低点另一边去了,如图:

 

乘以一个α,可以使下降的步子迈得没那么大。(下图)使得原本迈到红色θ2的,迈小了,到蓝色的θ2’(这里θ1和上面的θ0、θ1不一样,是举这里的例子另外设的,这里表示给了一个θ1,要朝梯度方向下降,迈多了就错过最低的J,所以乘以一个α,修正到蓝色的θ2

 

把α称为学习率。

学习率α的大小有要求,既不能太大,也不能太小。

太小的话,学习的太慢,要很久才能到最低J

太大的话,会错过最低的J

 

用梯度下降的算法,直到J够小就停,怎么判断够不够小呢?就是收敛到某一个值,变化不在明显了,就停。

总结梯度下降在线性回归中的作用:

 

 

改写梯度下降算法为单变量的:

 

 

 

0 0