Stanford机器学习课程-week1-Introduction & Linear Regression

来源:互联网 发布:淘宝发货平台 编辑:程序博客网 时间:2024/04/24 17:29

机器学习的文章很多,自认为自己的理解也不是很深刻,懂的也很少,并不想在这里班门弄斧,只想记录一下自己的学习过程,做一下笔记,督促自己跟着这期的coursera上的Ng的课程好好学完,加油^_^~~

Definition

Arthur Samuel (1959). Machine Learning: Field of  study that gives computers the ability to learn  without being explicitly programmed.Arthur Samuel 是computer gaming和AI的先驱。他写出了第一个机器学习的程序。给出了人工智能的基础性定义。

Tom Mitchell (1998) Well-posed Learning Problem: 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. Tom Mitchell更加具体地给出了机器学习的定义。机器学习的问题可以定义为一个计算机程序,由E、T、P组成。

experience E:一些经验数据;→(学习算法的输入数据)

task T:学习的目标;→(学习算法的期待输出)

performance measure P:对这个程序的一个性能评价;→(cost function)

v 练习题1:

 

所以垃圾邮件识别的机器学习算法学习的目标就是对邮件进行分类,找出哪些是垃圾邮件哪些不是。

大体上机器学习可以分为两类:supervised learningunsupervised learning

supervised learning:在监督式学习方法中,每一个示例都由一个输入对象和预期的输出组成。学习算法对训练数据进行分析,找出一种映射关系来预测新的输入对象的输出。这种学习算法典型的任务就是进行分类和回归。

unsupervised learning:非监督式机器学习是另一种机器学习的方式,不用人力对训练数据进行标记。常见的非监督式机器学习是数据聚类。

这两种学习最主要的不同在于监督式学习方法的输入数据需要实现人工标记正确的输出。学习出的函数要尽可能多的拟合输入数据,以此来预测新的输入数据。

v 练习题2:

 

问题1要预测接下来3个月会卖出多少这种产品?这是一个回归问题,因为产品的数量是连续的,可能的取值也是无穷的。

问题2要预测用户的账户以前是否受到过危害,答案只有两种,要么有过要么没有过。所以是一个分类问题。

v 练习题3:

 

选项1给了一些标记了是否是垃圾邮件的邮件,要学习一个邮件过滤器,很显然是一个监督式学习(有标记的数据输入)。选项2给出一些网上的文章要把关于同一个故事的文章分为同一类,这是一个非监督式学习方式,输入数据没有事先标记。选项3给了一些用户数据要求自动分割市场找出不同市场的用户组,这是一个找出数据聚类的问题,术语非监督式学习。选项4给出一些患了糖尿病和没患糖尿病的病人信息,要求预测新的病人是否患有糖尿病,属于监督式学习中的分类问题。所以答案是选项2和3.

Linear Regression with one variable

给出一个机器学习的实例问题:要求根据房子的大小预测房子的价格。已经给出一些数据,绘制在下图中的红色的叉叉。根据这些数据,来根据给定的房子的大小来预测房子的价格。这是一个回归问题,是用来预测一个有具体值的输出。另外一个监督性学习的类型是分类问题,它的输出是离散的两个或者多个值。

 

我们把标记有正确答案的数据成为训练集。首先我们来建立问题的模型:

 

把输入的值标记为x,输出值记为y,训练数据的个数记为m。所以我们的目标是利用这m个x与y的数据组来预测新的x对应的y。所以问题的模型如下图所示:

 

在线性回归问题中,h这样的映射关系可以用一条直线来表示。我们把这样的直线的方程记为:h(x) = theta0+theta1*x。根据theta0和theta1的不同取值,这样的直线h(x)可以有无数条,那怎样的h才是最好的呢?这里就要引入一个概念:cost function

 

Cost Function

在一开始机器学习的概念中讲到experience E,task T,performance P,在线性回归这个模型中,所有的训练数据的集合对应E,找出h(x)对应T,而cost function则对应P。它用来评判这个学习算法的好坏,让我们能够选择一个比较好的算法。

 

一个想法就是选择使h(x)最接近训练数据(x,y)中的y的theta0和theta1.h(x)与y之间的距离为|h(x)-y|,所有训练数据的h(x)和y的距离的平均值是,为了后面的计算方便我们选择作为我们的cost function,在这里也称之为squared error function。所以我们接下来的目标就是找出theta0和theta1使cost function最小。如下图所示:

 

先考虑一个简化的特殊情况:theta0=0.如下:

 

在这种情况下的h(x)与J(theta1)如下图所示:

 

在theta0=0的时候的cost function的函数是一个抛物线形状,如上图右边部分所示。所以最小的J(theta1)出现在theta1=1的时候。这是在theta0=0的特殊情况下,继续看theta0不为0的时候,回顾一下我们的目标:

 

在theta0不为0的情况下,cost function J(theta0,theta1)的图像是一个碗状图,如下所示:

 

为了更好的理解h(x)和J(theta0,theta1)的关系,来看一下下面几幅图:(图中的右边部分是J在theta0和theta1平面的投影图)

 

theta0=800,theta1=-0.15时

 


theta0=500,theta1=-0.02时

 

theta0=250,theta1=0.13时

由上面几幅图可以看出,h(x)越是拟合训练数据时,J(theta0,theta1)越是接近投影的中心点,而投影的中心点对用碗状图的碗底,即J(theta0,theta1)的最小的点。所以我们的目标就是找出对应J(theta0,theta1)的最小的点时的h(x)。

那怎样才能求出这样的theta0,theta1呢?有一个方法解决这个问题的算法称之为梯度下降Gradient descent算法。

Gradient Descent

要一直记得我们的目标是找出使cost function最小的theta0和theta1,这样的h(x)=theta0+theta1*x就是我们想要求的目标函数。

 

梯度下降算法的目标是找出使J(theta0,theta1)最小的theta0,theta1。类似于下图中的线:由图中某一点走向最小的点。

 

或者是从另一个方向向下走:

 

这里只是随便绘制了一个J(theta0,theta1)的图来看一下梯度下降的流程。

 

上图就是梯度下降的计算过程,theta的每一步的变化过程,还要注意的是上图的下半部分,要同时更新theta0和theta1.

 

在梯度下降算法中,α称为学习率,后面的部分是J的偏导数。

 

所以不管初始点在哪边,梯度下降算法都会向J最小的方向走。

但是如果,学习率α选择不合适就会比较麻烦,如果α太小,梯度下降算法会收敛得很慢,算法就要运行很长时间;如果α太大,走的步子太大,可能会跳过最低点而出现无法收敛的情况。如下图所示:

 

梯度下降算法也可能会停留在一个局部最小点。因为这个时候的偏导数为0,theta会停止更新。

另外,学习率固定的情况下,因为每更新一次J会取比较小的值,所以梯度下降的步子会越来越小,因此没必要随之减小α。

 

上面是对普遍的梯度下降算法的介绍,下面回到线性回归模型

 

所以相应的计算如下:

 


而在线性回归模型中,cost function J是一个碗状图,如下所示:

 

这种情况下不存在局部最低点,所以在线性回归模型中,梯度下降算法不会停留在局部最优点,而一定会走到最低点。梯度下降的算法步骤:

 

更新theta0,theta1到最低点后,梯度下降算法停止,这时的theta0和theta1就是我们要求的值。我们也就达到我们的目标,找出了一条拟合训练数据很好的h(x)=theta0+theta1*x。这就是只有一个变量x的线性回归模型。

 

0 0