加载中…
个人资料
phoenixbai
phoenixbai
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,047
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

机器学习笔记 - 线性回归

(2013-10-05 09:15:37)
分类: 机器学习
这几天开始学习coursera上的andrew ng老师的machine learning课程。
由于我对此课程的学习没有能做到很连续,即看完视频,过几天后才在开始做作业,所以总出现公式忘掉或记忆模糊的情况,导致做作业时,总感觉自己对课程理解不深刻而惶恐不安。

为了改变此局面,决定找个地儿,写学习笔记,以便忘了,或概念模糊时,可以帮助自己重温一下!

线性回归(Linear Regression)

"回归"的由来

Francis Galton,英国生物学家,他研究了父母身高与子女身高之间关系后得出,若父母身高高于平均大众身高,则其子女身高倾向于倒退生长,即会比其父母身高矮一些而更接近于大众平均身高。若父母身高小于平均身高,则其子女身高倾向于向上生长,以更接近于大众平均身高。此现象,被Galton称之为回归现象,即regression.

什么是线性回归?

回归函数的具体解释和定义,可查看任何一本“概率论与数理统计”的书。我看的是“陈希孺”的。
这里我讲几点:
1)统计回归分析的任务,就在于根据机器学习笔记 <wbr>- <wbr>线性回归和Y的观察值,去估计函数f,寻求变量之间近似的函数关系。
2)我们常用的是,假定f函数的数学形式已知,其中若干个参数未知,要通过自变量和因变量的观察值去估计未知的参数值。这叫“参数回归”。其中应用最广泛的是f为线性函数的假设:
机器学习笔记 <wbr>- <wbr>线性回归
这种情况叫做“线性回归”。这个线性模型就是我们今后主要讨论的对象。

3)
自变量只有一个时,叫做一元线性回归。f = b0+b1x
自变量有多个时,叫做多元线性回归。  机器学习笔记 <wbr>- <wbr>线性回归

4)分类(Classification)与回归(Regression)都属于监督学习,他们的区别在于:
分类:用于预测有限的离散值,如是否得了癌症(0,1),或手写数字的判断,是0,1,2,3,4,5,6,7,8还是9等。分类中,预测的可能的结果是有限的,且提前给定的。
回归:用于预测实数值,如给定了房子的面积,地段,和房间数,预测房子的价格。


一元线性回归

举个例子!
我们要预测房价。当前自变量(输入特征)是房子面积x,因变量是房价y.给定了一批训练集数据。
我们要做的是利用手上的训练集数据,得出x与y之间的函数f关系,并用f函数来预测任意面积x对应的房价。

假设x与y是线性关系,则我们可以接着假设一元线性回归函数如下来代表y的预测值:
机器学习笔记 <wbr>- <wbr>线性回归

我们有训练集了,那么问题就成了如何利用现有的训练集来判定未知参数机器学习笔记 <wbr>- <wbr>线性回归的值,使其让机器学习笔记 <wbr>- <wbr>线性回归的值更接近实际值y? 训练集指的是已知x,y值的数据集合!

一种方法是计算它的成本函数(Cost function),即预测出来的机器学习笔记 <wbr>- <wbr>线性回归的值与实际值y之间的方差的大小来决定当前的机器学习笔记 <wbr>- <wbr>线性回归值是否是最优的!

常用的成本函数是最小二乘法:
机器学习笔记 <wbr>- <wbr>线性回归

机器学习笔记 <wbr>- <wbr>线性回归是变量机器学习笔记 <wbr>- <wbr>线性回归的函数,故我们的目标就成了获取使机器学习笔记 <wbr>- <wbr>线性回归值最小时的机器学习笔记 <wbr>- <wbr>线性回归的值!!!
下面的图表示,当机器学习笔记 <wbr>- <wbr>线性回归取各个值时对应的机器学习笔记 <wbr>- <wbr>线性回归的值,从图中可看出,当机器学习笔记 <wbr>- <wbr>线性回归分别取特定的某一值时,机器学习笔记 <wbr>- <wbr>线性回归可达到全局最小值,而对应的机器学习笔记 <wbr>- <wbr>线性回归的值,就是我们要定位到的最终理想的值!
机器学习笔记 <wbr>- <wbr>线性回归


那么如何找到理想的机器学习笔记 <wbr>- <wbr>线性回归的值?
其中一个办法是,利用微积分里的梯度下降!

梯度下降的概念可查看高等数学下册!

梯度下降算法:(alpha是自定义的,叫learning rate,设得值太大,可能永远无法收敛,设得太小,则收敛会很慢很慢)
循环直到收敛{
机器学习笔记 <wbr>- <wbr>线性回归
}
对于线性回归模型,成本函数的导数如下: (theta 0 对应的x为常量1)
机器学习笔记 <wbr>- <wbr>线性回归

一般程序里会写明最多循环次数以及收敛条件(如cost function值小于power(10,-3)时认为成功收敛).若能自动收敛,甚好,若不能,则循环指定次数后,强行退出。此时,你需要调参数alpha或者重新慎视假设模型!

另一种方法是Normal Equation!

直接用矩阵的运算求出最佳的theta值。套现成公式,就能求得theta,此公式的原理,以后再补!

机器学习笔记 <wbr>- <wbr>线性回归
X是矩阵,代表训练集,每一行是一个样本的各特征值。y是个向量,对应每个样本的结果值。

梯度下降与Normal Equation的对批:
 Gradient Descent  Normal Equation
 自定义alpha 不需要定义alpha
 盾环N次才能得到最佳theta值 不需要任何循环操作
 特征个数非常大时,也适用 X的转阵与逆矩阵的计算量很大,
导致特征个数多时,会很慢,适用于
特征个数小于100000时使用
 需要feature scaling  不需要feature scaling

多元线性回归(Linear Regression with Multiple Variables)

跟一元线性回归的参数回归方式如出一辙,唯一区别在回归函数的假设上:
机器学习笔记 <wbr>- <wbr>线性回归

多元,故名思义,就是说有多个特征做为输入。那问题就来了,若多个特征的表达值的范围不一样,会有什么影响和后果?比如,继续拿预测房价作为例子。现在它的特征增加了,特征1是面积,特征2是房间数,特征3是房子的年龄。很明显,这三个特征的值的范围是有很大差异的。
特征1:100到300之间
特征2: 2到5之间
特征3:20到60年之间
若不做任何处理,则特征1和3对结果的影响远大于特征2,而可能扭曲了真实情况下,各特征在最终结果中所应占的权重比例。

所以,一般情况下,特征与特征之间的值变化范围差异过大时,我们用feature scaling的手段来规范化特征值,使每个特征的特征值都处于-1至1之间。

Feature Scaling

feature scaling的方法可自定义,常用的有:
1) mean normalization (or standardization)
  (X - mean(X))/std(X)
2) rescaling
   (X - min) / (max - min)

先下这儿。接下来写逻辑回归!

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有