机器学习入门(12)--线性回归之正规方程
2016-12-15 20:13
330 查看
申明:此文章内容来自于 Doctor AndrewNG的视频,经过编辑而成
到目前为止 我们一直在使用的线性回归的算法 是梯度下降法。 就是说为了最小化代价函数 J(θ) ,我们使用的迭代算法需要通过多次迭代来计算梯度下降来收敛到全局最小值。
相反地 正规方程法提供了一种求 θ 的解析解法。与其使用迭代算法,我们可以直接一次性求解θ的最优值。
这么牛的算法,让我们先对这个算法有一个直观的理解。举一个例子来解释这个问题, 假设有一个非常简单的代价函数 J(θ),它就是一个实数 θ 的函数。
所以现在 假设 θ 只是一个标量 或者说 θ 只有一行 它是一个数字 不是向量 假设我们的代价函数 J 是这个实参数 θ 的二次函数,
![](http://upload-images.jianshu.io/upload_images/2884841-c0538e1d06e4d52c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二次代价函数
所以 J(θ) 如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-e2e4c34c7694ba4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二次代价函数曲线
那么如何最小化一个二次函数呢? 最小化的一个函数的方法是 对它求导并且将导数置零,所以对 J 求关于 θ 的导数使得 J(θ) 最小的 θ 值。当 θ不是一个实数的情况,它是一个n+1维的参数向量并且 代价函数 J 是这个向量的函数也就是 θ0 到 θm 的函数,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-655d9690e3e5e331.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
多变量代价函数
那么我们如何最小化这个代价函数J? 实际上 微积分告诉我们一种方法,对每个参数 θ 求 J 的偏导数,然后把它们全部置零。如果你这样做并且求出θ0 θ1 一直到θn的值,就能得到能够最小化代价函数 J 的 θ 值,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-a258ae17fb354dea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
偏导数置为0
那么,到底算法是什么呢,我们先给出答案再来推到。正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:假设我们的训练集特征矩阵为 X(包含了 x0=1)并且我们的训练集结果为向量y,则利用正规方程解出向量。上标T代表矩阵转置,上标-1代表矩阵的逆。
![](http://upload-images.jianshu.io/upload_images/2884841-aa36ce89a841a50c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
正规方程
举个例子说明推导过程,假如说我有 m=4 个训练样本,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-d71405d7c304af52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
示例训练集
接下来我要做的是构建一个矩阵 X 这个矩阵基本包含了训练样本的所有特征变量,所以具体地说所有的特征变量全部放到矩阵中 X 中,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-627d41136476147d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
X矩阵
对于Y类似,
![](http://upload-images.jianshu.io/upload_images/2884841-f3bab44068267807.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Y矩阵
利用正规方程的算法为:
![](http://upload-images.jianshu.io/upload_images/2884841-ce4f8c6aa3f34bad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
正规方程算法
注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。
针对梯度下降与正规方程的比较,结果如下:
![](http://upload-images.jianshu.io/upload_images/2884841-6fd582c97ca0053f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
梯度下降与正规方程比较
总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数θ的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。
申明:此文章内容来自于 Doctor AndrewNG的视频,经过编辑而成
到目前为止 我们一直在使用的线性回归的算法 是梯度下降法。 就是说为了最小化代价函数 J(θ) ,我们使用的迭代算法需要通过多次迭代来计算梯度下降来收敛到全局最小值。
相反地 正规方程法提供了一种求 θ 的解析解法。与其使用迭代算法,我们可以直接一次性求解θ的最优值。
这么牛的算法,让我们先对这个算法有一个直观的理解。举一个例子来解释这个问题, 假设有一个非常简单的代价函数 J(θ),它就是一个实数 θ 的函数。
所以现在 假设 θ 只是一个标量 或者说 θ 只有一行 它是一个数字 不是向量 假设我们的代价函数 J 是这个实参数 θ 的二次函数,
![](http://upload-images.jianshu.io/upload_images/2884841-c0538e1d06e4d52c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二次代价函数
所以 J(θ) 如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-e2e4c34c7694ba4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二次代价函数曲线
那么如何最小化一个二次函数呢? 最小化的一个函数的方法是 对它求导并且将导数置零,所以对 J 求关于 θ 的导数使得 J(θ) 最小的 θ 值。当 θ不是一个实数的情况,它是一个n+1维的参数向量并且 代价函数 J 是这个向量的函数也就是 θ0 到 θm 的函数,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-655d9690e3e5e331.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
多变量代价函数
那么我们如何最小化这个代价函数J? 实际上 微积分告诉我们一种方法,对每个参数 θ 求 J 的偏导数,然后把它们全部置零。如果你这样做并且求出θ0 θ1 一直到θn的值,就能得到能够最小化代价函数 J 的 θ 值,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-a258ae17fb354dea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
偏导数置为0
那么,到底算法是什么呢,我们先给出答案再来推到。正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:假设我们的训练集特征矩阵为 X(包含了 x0=1)并且我们的训练集结果为向量y,则利用正规方程解出向量。上标T代表矩阵转置,上标-1代表矩阵的逆。
![](http://upload-images.jianshu.io/upload_images/2884841-aa36ce89a841a50c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
正规方程
举个例子说明推导过程,假如说我有 m=4 个训练样本,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-d71405d7c304af52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
示例训练集
接下来我要做的是构建一个矩阵 X 这个矩阵基本包含了训练样本的所有特征变量,所以具体地说所有的特征变量全部放到矩阵中 X 中,如下图:
![](http://upload-images.jianshu.io/upload_images/2884841-627d41136476147d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
X矩阵
对于Y类似,
![](http://upload-images.jianshu.io/upload_images/2884841-f3bab44068267807.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Y矩阵
利用正规方程的算法为:
![](http://upload-images.jianshu.io/upload_images/2884841-ce4f8c6aa3f34bad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
正规方程算法
注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。
针对梯度下降与正规方程的比较,结果如下:
![](http://upload-images.jianshu.io/upload_images/2884841-6fd582c97ca0053f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
梯度下降与正规方程比较
总结一下,只要特征变量的数目并不大,正规方程是一个很好的计算参数θ的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。
相关文章推荐
- 机器学习,线性回归关于梯度下降法和正规方程的流程
- 机器学习(七)线性回归、正规方程、逻辑回归的正规化
- 机器学习入门:线性回归及梯度下降(附matlab代码)
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程)
- 机器学习入门:线性回归及梯度下降
- 机器学习入门:线性回归及梯度下降
- 斯坦福大学机器学习笔记——特征和多项式回归以及正规方程
- 线性回归的正规方程解法与梯度下降解法的代码
- [机器学习]机器学习笔记整理12-线性回归概念理解
- 机器学习笔记(二)----线性方程拟合的正规方程法*(推荐网址)
- 机器学习入门学习笔记:(2.1)线性回归理论推导
- 机器学习入门:线性回归及梯度下降
- 机器学习入门:线性回归及梯度下降
- 机器学习之——多项式回归和正规方程
- 从零单排入门机器学习:线性回归(linear regression)实践篇
- 机器学习入门:线性回归及梯度下降
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程
- 【机器学习入门】线性回归的概率解释
- 机器学习入门:线性回归及梯度下降
- 机器学习笔记一二 - 线性规划 梯度下降 正规方程