Week1.2_监督学习_线性回归算法_矩阵运算

感谢博临天下,笔记太好,我就直接搬过来再添加了。http://www.cnblogs.com/fanyabo/p/4060498.html

 

一、引言

  本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu,以及斯坦福无监督学习UFLDL tutorial http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

  机器学习中的回归问题属于有监督学习的范畴。回归问题的目标是给定D维输入变量x,并且每一个输入矢量x都有对应的值y,要求对于新来的数据预测它对应的连续的目标值t。比如下面这个例子:假设我们有一个包含47个房子的面积和价格的数据集如下:

  

training set 训练集,所有“确定的答案”,即是data set 

m:训练集的数目=47

x:输入变量(特征向量)

y:输出变量(目标变量)

 (x,y):一个训练样本;(x(i),y(i)):第i个特征样本;  训练集→函数(hypothesis)

我们可以在Matlab中画出来这组数据集,如下:

  我么就可以将拟合的曲线上返回对应的点从而达到预测的目的。如果要预测的值是连续的比如上述的房价,那么就属于回归问题;如果要预测的值是离散的即一个个标签,0/1问题,那么就属于分类问题。这个学习处理过程如下图所示:

 

二、线性回归模型

  线性回归模型假设输入特征和对应的结果满足线性关系。在上述的数据集中加上一维--房间数量,于是数据集变为:

  于是,输入特征x是二维的矢量,比如x1(i)表示数据集中第i个房子的面积,x2(i)表示数据集中第i个房子的房间数量。于是可以假设输入特征x与房价y满足线性函数,比如:

 在所有问题中,最终要的是找到θi

这里θi称为假设模型即映射输入特征x与结果y的线性函数h的参数parameters,为了简化表示,我们在输入特征中加入x0 = 1,于是得到:

  现在,给定一个训练集,我们应该怎么学习参数θ,怎么样能够看出线性函数拟合的好不好呢?一个直观的想法是使得预测值h(x)尽可能接近y,为了达到这个目的,我们对于每一个参数θ,定义一个代价函数cost function用来描述h(x(i))'与对应的y(i)'的接近程度:

代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合。
 
其中:
表示向量x中的第i个元素;
表示向量y中的第i个元素;
表示已知的假设函数;
m为训练集的数量;

又叫做平方误差函数

前面乘上的1/2是为了求导的时候,使常数系数消失。于是我们的目标就变为了调整θ使得代价函数J(θ)取得最小值,方法有梯度下降法,最小二乘法等。

 

 

  2.1 梯度下降法(→取到极小值)

梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;
 
当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;
 
方法
(1)先确定向下一步的步伐大小,我们称为Learning rate;
(2)任意给定一个初始值:
(3)确定一个向下的方向,并向下走预先规定的步伐,并更新
(4)当下降的高度小于某个定义的值,则停止下降;
 
Batch 梯度下降法:用到所有的数据,每次都朝着最优解前进,因此特征函数h在不断变化(不断变换),直到J=0,说明已经达到局部最优解
特点
(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
(2)越接近最小值时,下降速度越慢;∵斜率越来越小→a*导数越来越小→baby steps
 
下图就是overshoot minimum现象:
 
 常常用contour plot 等值线画出代价函数,中心点事局部最优解
 
问题:如果初始值就在local minimum的位置,则会如何变化?
答:因为已经在local minimum位置,所以derivative 肯定是0,因此不会变化;
 
问题:怎么取值?
答:随时观察值,如果cost function变小了,则ok,反之,则再取一个更小的值;
 
下图就是overshoot minimum现象:过冲
 
 
 
【补充内容】:matlab实现矩阵运算
 
 
 
 
 
 
 
 
 
 
posted @ 2016-04-10 20:32  nice_day  阅读(800)  评论(0)    收藏  举报