斯坦福机器学习视频笔记 Week2 多元线性回归 Linear Regression with Multiple Variables
相比于week1中讨论的单变量的线性回归,多元线性回归更具有一般性,应用范围也更大,更贴近实际。
Multiple Features
上面就是接上次的例子,将房价预测问题进行扩充,添加多个特征(features),使问题变成多元线性回归问题。
多元线性回归将通过更多的输入特征,来预测输出。上面有新的Notation(标记)需要掌握。
相比于之前的假设:
我们将多元线性回归的假设修改为:
每一个xi代表一个特征;为了表达方便,令x0=1,可以得到假设的矩阵形式:
其中,x和theta分别表示:
所有的训练样本按行存贮在矩阵X中,看一个例子:
这样,我们可以通过向量的计算,直接得到一个m×1的假设结果向量:
Gradient Descent For Multiple Variables
梯度下降的通用形式依然不会变化:
只是,和单变量线性回归不同的是,多元线性回归需要同时迭代n+1个theta;
Gradient Descent in Practice I - Feature Scaling
特征归一化,总的说来是为了让特征之间的数值差距缩小,使数据分散在同一个数量级范围。
关于这样做的好处,可以减小数量级偏大的特征对数量级偏小特征的影响,比如上面所说的房屋面积size,和卧室数量;
如果将这两个特征画在上面的二维图中,就会变成一个瘦长的椭圆。
总之,如果想要使梯度下降算法收敛的更快,就需要使用特征归一化Feature Scaling,使特征分布在相近的范围中。
使新的特征最好分布在[-1,1]中,如上面使用xi/(数据范围:max-min)。
通常情况下,数据分布在[-1/3,1/3] or [-3,3]都是可以接受的。
正规化均值,使数据集的均值为0.(不要对x0使用)
可以一步同时完成数据归一和正规化:
其中μi为对应特征的均值;Si是特征数据已知的分布范围,通常是(max - min)来计算,或者为数据的标准差。
Gradient Descent in Practice II - Learning Rate
学习率a对于梯度下降是关键,下面就来讨论如何选取使算法高效运行的a值。
我们可以作关于损失函数 J(theta)和 迭代次数的函数,在指定的学习率a下的图象,
如果函数 J 不是单调减小的,那么需要减小a。
多次选择a,需要得到一个足够小的a,使得 J 在每一步迭代中都 不断减小;
但是如果a太小,梯度下降会收敛的很慢,这时也需要略微增大a。
选择a的原则:最好先找到最大的使 J 单调减小的a,最终选择比最大的a略小的值。
每次选择可以增大或减小3倍,然后再增大或减小数量级。
Features and Polynomial Regression
实际应用中,我们只使用简单的‘直线’回归显然是不够的,我们大多数情况下需要使用多项式拟合。
单看这些数据点的分布,直观上感觉使用曲线比直线拟合的效果要好一些。
根据实际的例子,关于房价的预测,size越大,房价不会下跌,选用三次函数拟合数据更好。
同时,平方根函数也是不错的选择:。
(注:如使用多项式回归,一定要使用特征归一化)
Normal Equation
Normal Equation是另外一种求参数theta的方法。
我们知道,梯度下降反复迭代的目的,就是求得那个最优解,而Normal Equation的思想就是直接通过求导,得到theta。
其对所有的θj分别求偏导数,然后使它们为0,解这些方程组,求得theta。
这样就不需要通过反复迭代而直接求得结果,效率颇高。下面是一个例子:
这是方法的矩阵表示:
相较于梯度下降,Normal Equation有以下优势:
不需要选择a,不需要进行迭代,只需计算一个n×n的转置矩阵,算法效率高,
而且在Normal Equation中不需要进行特征归一化操作。
注意:当n>10,000时,Normal Equation的计算代价过大,建议使用梯度下降。
Normal Equation Noninvertibility
如果XTX不可逆,根据上面的Normal Equation求theta的公式,原则上是不能使用的,那应该怎么处理这种情况?
XTX不可逆的情况:
1)冗余的特征(呈线性关系):删除多余的特征;
2)特征过多,训练数据过少(m<=n):删除某些特征,或 使用“regularization ”。
斯坦福机器学习视频笔记 Week2 多元线性回归 Linear Regression with Multiple Variables的更多相关文章
- 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)
机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题 如果有多个特征值 那么这种情况下 假设h表示 ...
- 吴恩达机器学习笔记8-多变量线性回归(Linear Regression with Multiple Variables)--多维特征
我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(
- 斯坦福第四课:多变量线性回归(Linear Regression with Multiple Variables)
4.1 多维特征 4.2 多变量梯度下降 4.3 梯度下降法实践 1-特征缩放 4.4 梯度下降法实践 2-学习率 4.5 特征和多项式回归 4.6 正规方程 4.7 正规方程及不可逆性 ...
- 多元线性回归(Linear Regression with multiple variables)与最小二乘(least squat)
1.线性回归介绍 X指训练数据的feature,beta指待估计得参数. 详细见http://zh.wikipedia.org/wiki/%E4%B8%80%E8%88%AC%E7%BA%BF%E6% ...
- 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 机器学习第4课:多变量线性回归(Linear Regression with Multiple Variables)
4.1 多维特征 目前为止,我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征, 例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x1,x2,...,xn).
- python实现多变量线性回归(Linear Regression with Multiple Variables)
本文介绍如何使用python实现多变量线性回归,文章参考NG的视频和黄海广博士的笔记 现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为( x1,x2,..., ...
- Ng第四课:多变量线性回归(Linear Regression with Multiple Variables)
4.1 多维特征 4.2 多变量梯度下降 4.3 梯度下降法实践 1-特征缩放 4.4 梯度下降法实践 2-学习率 4.5 特征和多项式回归 4.6 正规方程 4.7 正规方程及不可逆性 ...
随机推荐
- IQueryable和IEnumerable以及AsEnumerable()和ToList()的区别
注意:本文背景为 Linq to sql .文中ie指代IEnumerable,iq指代IQueryable. IQueryable 和 IEnumerable 的区别 IQueryable 延时执行 ...
- select * from A.B.C.D sqlserver 中 select * from .Literary_PuDong.dbo.Users
服务器名.数据库名.表拥有者(架构名).表名 服务器名(服务器IP).数据库名.表拥有者.表名 [192.168.99.66].TEST.dbo.table1[Testdb].TEST.dbo.tab ...
- 看完这篇还不会 GestureDetector 手势检测,我跪搓衣板!
引言 在 android 开发过程中,我们经常需要对一些手势,如:单击.双击.长按.滑动.缩放等,进行监测.这时也就引出了手势监测的概念,所谓的手势监测,说白了就是对于 GestureDetector ...
- k8s集群部署
环境: 两台虚拟机, 10.10.20.203 部署docker.etcd.flannel.kube-apiserver.kube-controller-manager.kube-scheduler ...
- 从sql走向linq的我撞死在起点上
[本文纯个人理解,错误轻喷,非常希望能有大神指点] A left (outer) join B on A.bid=B.id 上面这句话叫做左连接,原因是left(左)join(加入,连入)被译为左连接 ...
- Xcode 5、Xcode 6 免证书真机调试
我们都知道,在iOS开发中,假设要进行真机调试的话是须要苹果开发人员账号的.否则Xcode就不可以进行真机调试.仅仅可以在模拟器上执行:这就带来了非常多问题,比方iCloud编程的话你不可以用模拟器. ...
- 第4章 URL管理器和实现方法
URL管理器:管理待抓取URL集合和已抓取URL集合 -- 防止重复抓取.防止循环抓取 URL需要支持哪些功能: 添加新URL到待爬取集合中.判断待添加URL是否在容器中,判断是否还有待爬取URL,获 ...
- PHP自动加载功能原理解析
前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过 ...
- 使用CSDN CODE来存放OPENSTACK位于GITHUB上的源代码
use CSDN CODE to pull openstack codes 2014-11-20 Author:Hyphen 问题 直接从GITHUB上获代替码,常常是没保障,特别是用DEVSTACK ...
- Cocos2d-x中使用第三方so库
项目中假设使用到第三方的SDK,大多数是以.so动态共享库的文件打包给我们使用.怎样使用他们,见以下分析. 1.获得库文件 假如我们得到的库文件是libxxx.so(注:关于.so文件的命名方式,可百 ...