第一周-Coursera/Stanford机器学习课程学习笔记-单变量线性回归
2016-04-14 22:09
281 查看
无名之人,希望自己能够踏踏实实地努力,在进步的路上看清自己的每一个脚印。
The field of study that gives computers the ability to learn without being explicitly programmed.
研究不经精确编程而使得计算机具有学习能力的领域。
Tom Mitchell提供了更为现代的定义:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
一个电脑程序,如果它执行任务T的性能(由P来评估)通过经验E得到了提升,则可以说:就某些种类的任务T和性能评估P而言,此程序能够从经验E中学习。
举个栗子:西洋棋游戏。
E = 玩很多西洋棋游戏的经验
T = 下好西洋棋
P = 程序在下局游戏中获胜的可能
在回归问题中,通过将输入变量映射到某种连续函数,获得连续输出以预测结果。
在分类问题中,通过将输入变量映射到离散的类别中,以预测离散的输出。
举个栗子:
回归 - 根据已有房子面积和房子价格的数据集,预测某个房子的价格;
分类 - 同样的数据集,将输出更改为“房子的价格是否比购房子提出的价格高或低”。
hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1 x
其中hθ(x)h_\theta(x)和xx分别为数据集的输出和输入值,求解假设函数就是根据数据集求得最优的θ0\theta_0和θ1\theta_1,这便引出了损失函数。
J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0, \theta_1)=\dfrac {1}{2m} \displaystyle \sum _{i=1}^m \left (h_\theta (x^{(i)}) - y^{(i)} \right)^2
其中,mm表示数据集包含的样本数量,x(i),y(i)x^{(i)}, y^{(i)}表示数据集中第ii个样本。从式子可以很容易看出来,损失函数就是预测值与实际值之差的平方的平均值……的一半。所以又被称为均方差 - mean squared error,不过这里的均方差和统计学中的均方差在形式上略有差别。
很明显,使得损失函数取最小值的θ0,θ1\theta_0, \theta_1就是最优解。
对于单变量线性回归,可以证明其代价函数在直角坐标系中的形状为碗形,如图2.1所示:
因此,可以用梯度下降法进行最优化。
重复下式直至收敛:
θj:=θj−α∂∂θjJ(θ0,θ1)\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)
其中 j= {0, 1}。
一些解释:
这个符号:=:=表示“定义为”,详见维基百科的解释。
α\alpha为学习速率 - Learning rate,它的大小决定了收敛的快慢和效果。
重复下式直至收敛:
temp0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))temp1:=θ1−α1m∑i=1m((hθ(x(i))−y(i))x(i))θ0:=temp0θ1:=temp1\begin{align}
& temp_0 := \theta_0 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)}) \\
& temp_1 := \theta_1 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}\left((h_\theta(x^{(i)}) - y^{(i)}) x^{(i)}\right) \\
& \theta_0 := temp_0 \\
& \theta_1 := temp_1
\end{align}
在进行计算时一定要按照上述步骤进行计算,即同步更新,根据上次迭代得到的(θ0,θ1\theta_0, \theta_1)分别计算temp0,temp1temp_0, temp_1,然后再赋值给(θ0,θ1\theta_0, \theta_1)。
α\alpha过小,一般不会影响能否收敛,但会导致梯度下降法速度过慢,需要更多的迭代步骤才能获得最优解。
合适的α\alpha能保证梯度下降法以较少的迭代步骤收敛。
对于合适的α\alpha而言,即使在每一步迭代中都保持α\alpha固定不变,梯度下降法也能收敛到局部最小值(对于单变量线性回归,只有一个极小值,不存在其他的局部最小值)。
不过,在实际计算中,需要多次尝试才能获得较好的学习速率α\alpha。一般(举个栗子)以(0.01, 0.03, 0.1, 0.3, 1, …)对α\alpha进行尝试。一种直观的方法是,在计算的过程中plot某个α\alpha下J(θ)J(\theta)与迭代次数的图像,以观察收敛好坏,例如图2.2所示:
Matlab替代性软件Octave简介
介绍
Coursera上面的机器学习课程是由Stanford大学的Andrew Ng(中文名:吴恩达)老师教授的。之前并不了解他,也是跟着上了这门课程后才知道这么个牛人。废话不多说,赶紧把第一周机器学习的笔记整理一下。机器学习的定义
课程材料中提到了Arthur Samuel给机器学习的定义,比较通俗却不严谨:The field of study that gives computers the ability to learn without being explicitly programmed.
研究不经精确编程而使得计算机具有学习能力的领域。
Tom Mitchell提供了更为现代的定义:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
一个电脑程序,如果它执行任务T的性能(由P来评估)通过经验E得到了提升,则可以说:就某些种类的任务T和性能评估P而言,此程序能够从经验E中学习。
举个栗子:西洋棋游戏。
E = 玩很多西洋棋游戏的经验
T = 下好西洋棋
P = 程序在下局游戏中获胜的可能
监督式学习
在监督式学习supervised learning中,对于已知的数据集,我们已经知道正确的输入应该是什么样的,并且已知输入和输出之间存在某种关系。主要可分为回归Regression和分类Classification。在回归问题中,通过将输入变量映射到某种连续函数,获得连续输出以预测结果。
在分类问题中,通过将输入变量映射到离散的类别中,以预测离散的输出。
举个栗子:
回归 - 根据已有房子面积和房子价格的数据集,预测某个房子的价格;
分类 - 同样的数据集,将输出更改为“房子的价格是否比购房子提出的价格高或低”。
非监督式学习
在非监督式学习unsupervised learning中,我们对输出结果所知甚少,或者一无所知。在过程中,并没有预测结果以获得反馈。比如,我们可以通过聚类从输入变量之间的关系中获得结构。这里不举栗子了,栗子好沉。单变量线性回归
单变量线性回归 - Univariate linear regression,通过单一输入变量预测单一输出值。因此需要根据数据集求取输出变量和输入变量的函数表达式。假设函数 The Hypothesis Function
单变量线性回归的假设函数的一般形式为:hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1 x
其中hθ(x)h_\theta(x)和xx分别为数据集的输出和输入值,求解假设函数就是根据数据集求得最优的θ0\theta_0和θ1\theta_1,这便引出了损失函数。
损失函数 Cost Function
损失函数能够评价假设函数的准确度,其一般形式为:J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0, \theta_1)=\dfrac {1}{2m} \displaystyle \sum _{i=1}^m \left (h_\theta (x^{(i)}) - y^{(i)} \right)^2
其中,mm表示数据集包含的样本数量,x(i),y(i)x^{(i)}, y^{(i)}表示数据集中第ii个样本。从式子可以很容易看出来,损失函数就是预测值与实际值之差的平方的平均值……的一半。所以又被称为均方差 - mean squared error,不过这里的均方差和统计学中的均方差在形式上略有差别。
很明显,使得损失函数取最小值的θ0,θ1\theta_0, \theta_1就是最优解。
对于单变量线性回归,可以证明其代价函数在直角坐标系中的形状为碗形,如图2.1所示:
图2.1 单变量线性回归的代价函数图像 |
梯度下降法 Gradient Descent
通过对损失函数进行求导,使导数为0的θ0,θ1\theta_0, \theta_1就是最优解。在实际计算时采用梯度下降法,其方程式为:重复下式直至收敛:
θj:=θj−α∂∂θjJ(θ0,θ1)\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)
其中 j= {0, 1}。
一些解释:
这个符号:=:=表示“定义为”,详见维基百科的解释。
α\alpha为学习速率 - Learning rate,它的大小决定了收敛的快慢和效果。
针对单变量线性回归的梯度下降法
将上面这些结合一下,可得到针对单变量线性回归的梯度下降法:重复下式直至收敛:
temp0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))temp1:=θ1−α1m∑i=1m((hθ(x(i))−y(i))x(i))θ0:=temp0θ1:=temp1\begin{align}
& temp_0 := \theta_0 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)}) \\
& temp_1 := \theta_1 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}\left((h_\theta(x^{(i)}) - y^{(i)}) x^{(i)}\right) \\
& \theta_0 := temp_0 \\
& \theta_1 := temp_1
\end{align}
在进行计算时一定要按照上述步骤进行计算,即同步更新,根据上次迭代得到的(θ0,θ1\theta_0, \theta_1)分别计算temp0,temp1temp_0, temp_1,然后再赋值给(θ0,θ1\theta_0, \theta_1)。
学习速率α\alpha对迭代速度和效果的影响
α\alpha过大,很可能会导致梯度下降法无法收敛,也就是说每一步迭代计算出来的代价函数值逐渐增加而不是下降。α\alpha过小,一般不会影响能否收敛,但会导致梯度下降法速度过慢,需要更多的迭代步骤才能获得最优解。
合适的α\alpha能保证梯度下降法以较少的迭代步骤收敛。
对于合适的α\alpha而言,即使在每一步迭代中都保持α\alpha固定不变,梯度下降法也能收敛到局部最小值(对于单变量线性回归,只有一个极小值,不存在其他的局部最小值)。
不过,在实际计算中,需要多次尝试才能获得较好的学习速率α\alpha。一般(举个栗子)以(0.01, 0.03, 0.1, 0.3, 1, …)对α\alpha进行尝试。一种直观的方法是,在计算的过程中plot某个α\alpha下J(θ)J(\theta)与迭代次数的图像,以观察收敛好坏,例如图2.2所示:
图2.2 某个α\alpha下损失函数VS迭代次数 |
What`s next?
多变量线性回归的梯度下降法编程求解 VS Normal EquationsMatlab替代性软件Octave简介
相关文章推荐
- 1.2.6 Linux distributions
- 创建 Image - 每天5分钟玩转 OpenStack(21)
- MVC项目的实战应用举例
- ServiceProvider实现
- 六大设计原则浅析
- Linux下常用的C/C++开源Socket库
- Combining HTML5 Web Applications with OpenCV
- 六大设计原则浅析
- 使Trello成为高效敏捷Scrum项目管理工具的十个小技巧
- APIO2007-2015题解大集合(2007年篇)
- [leetcode 240/74] Search a 2D Matrix II -----在左右有序,上下有序中查找数据
- HDU 3790最短路径问题 dijikstra算法
- jquery之ajaxfileupload异步上传插件
- 基于MVC项目iOS项目重构的思路
- 复利计算
- OneZero第四周第四次站立会议(2016.4.14)
- 稀疏矩阵的加法(用十字链表实现A=A+B)
- [CodeForces 573B] Bear and Blocks (脑洞题)
- Oracle-26-内连接(等值、不等值连接、自然连接)&外连接(左外、右外、全连接)&using子句
- 微软等面试100题系列 - 45(3)