监督学习——线性回归(一)
来源:互联网 发布:小学生作文辅导书 知乎 编辑:程序博客网 时间:2024/06/05 07:41
监督学习问题根据预测的输出值是连续的还是离散的,我们将其划分为回归(Regression)问题和分类(Classification)问题。即输出值是连续的则为回归问题,而输出值是在有限的离散值中取值,则为分类问题。接下来,我们先来了解回归问题。 上篇博客中,我们列举了居住地和房子价格的例子,为了让这个例子更加丰富有趣点,我们在数据集中加入另一个元素,即每个房子中有几个房间。如下图所示: 输入特征有两个,所以x为一个二维的向量。x1(i)表示第i个训练集实例的居住地,而x2(i)表示房子的房间个数。一般来说,当设计某个学习问题的算法时,输入特性的选择随设计者的需要,它可以是多维的。 为了利用监督学习,我们需要决定函数h的形式。作为一个初始选择,我们可以假定输出y为x的线性函数。即: 这里,θi为参数,也称为权值(weights)。为了简化上述表示,我们假定x0 = 1。因此上述可以表示为矩阵形式: 上式中n表示输入变量的个数,θ和x都为列向量(为与普通变量区分开,我们将其格式设为斜体)。 通过上面的数学表述,也就说说,给定某个训练集后,我们的工作就是如何选择或者说学习参数θ了。为了定义预测输出与相应真实输出值之间的差异,接下来我们引入代价函数(cost function),其定义如下: 1)LMS算法 我们的目标是,通过选择参数θ的取值,尽可能的使得上述代价函数的值最小。为了达到这个目标,我们可以首先通过初始猜测(initial guess)来初始化参数θ,然后不断改变参数θ的值,使得的值参数J(θ)尽可能小,直到最终得到最小化的J(θ)。特别的,让我们考虑一下梯度下降(gradient descent)算法。它初始化θ后,然后重复执行如下公式来更新θ的值。 这里,α表示学习速率(learning rate)。值得一提的是,α取值太小会使得最终汇聚很缓慢,即梯度下降很慢,而取值太大,会使得最终汇聚很快,即梯度下降很快;而且不同的初始值α,有可能导致最终使的J(θ)最小的参数θ的值不相同。接下来我们需要关心的是最右边的那个偏导数的求解,对于上述我们的例子,我们可以得到: 所以前面的更新等式可以简化为: 上式就是我们所熟知的最小均方(Least mean squares, LMS)更新规则,或者也称作Widrow-Hoff学习规则。通过上式我们可以看到更新的幅度正比于误差项(括号中的那一项,它表示真实值和预测值之间的差异)的值。 上面我们得到的只是对于一个训练集实例的关系式,对于多个训练集实例的情况下,我们还需要对上式做出一点修改,有两种方法:(1)批梯度下降(batch gradient descent);(2)统计梯度下降(stochastic gradient descent)。这里先给出二者的算法步骤。 对于批梯度下降,其算法为:
对于统计梯度下降,其算法为:
也许乍一看下,没有觉得二者有什么区别,而实质则不然。对于批梯度下降算法,它在每一次更新上都要搜索真个训练数据集;而对于统计梯度下降算法,针对每一个训练集的单一实例,它都做出更新,即可以立刻做出反应。所以通常我们都会选择统计梯度下降算法。 通过运行上述算法,我们可以得到找到参数θ的值来满足给定的训练集。对于上一个博客中的例子,运用批梯度下降算法,可以得到θ0 = 71.27,θ1 = 0.1345。可以得到如下图结果: 得到该函数h后,对于新加入的实例,我们就可以对其输出值做一个预测。有一个地方值得注意的是,参数θ的值有可能不能汇聚,而只是在使J(θ)最小化的附近震荡,但实际上,靠近该值θ的已经可以满足要求了。所以在程序实现的时候应该对这种情况加以考虑。
0 0
- 监督学习——线性回归(一)
- 监督学习——线性回归(二)
- 监督学习之线性回归(续)
- 监督学习之线性回归
- 监督学习之线性回归
- 非监督特征学习与深度学习(一)----线性回归
- 机器学习->监督学习->线性回归(LASSO,Ridge,SGD)
- ML—线性回归系列(一)—线性回归
- 机器学习-监督学习-线性回归
- 机器学习笔记(一)——线性回归算法
- 机器学习练习(一)——简单线性回归
- 监督学习之多变量线性回归
- MachineLearning-监督学习之线性回归
- 机器学习(一)——线性回归、分类与逻辑回归
- 机器学习(一)--- 监督学习之回归
- 线性回归、logistic回归、广义线性模型——斯坦福CS229机器学习个人总结(一)
- 理解线性回归(一)——回归的思想
- 《机器学习》学习笔记(一):线性回归、逻辑回归
- 【一天一道LeetCode】#42. Trapping Rain Water
- VS2015快捷键
- Mysql导入大容量SQL文件数据问题
- CException Application runtime path "/var/www/*******/protected/runtime" is not valid. Please make
- 别人用Myeclipse没问题,到我的eclipse中跑不起来
- 监督学习——线性回归(一)
- Android 完美实现图片圆角和圆形(对实现进行分析)
- Android与Js的简单交互例子
- RxJava入门[转载一篇很棒的文]
- python 条件和循环模块实例
- windows下libtorrent编译
- java html生成图片后保存
- ImageView
- OpenCV开发小问题汇总