Linear Regression(线性回归)(一)—LMS algorithm
(整理自AndrewNG的课件,转载请注明。整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/)
1.问题的引出
先从一个简单的例子说起吧,房地产公司有一些关于Portland,Oregon的房子信息,下表是房子的面积和价格的对照表:
Living area(feet^2) | Price(1000﹩s) |
2104 | 400 |
1600 | 330 |
2400 | 369 |
1416 | 232 |
3000 | 540 |
…… | …… |
将点画在二维坐标下表示:
那么问题就来了,面积为2000的房子,价格是多少呢?表中没有直接给出答案,考虑能否根据表中给定的数据,得出价格和面积之间的一个函数,对于重新给定的面积来对其价格进行预测,这就是我们要解决的问题。有人说这不是数据拟合吗?没错这就是数据拟合!若为线性拟合,则表达式为:,拟合结果如些图:
如果给matlab这组数据,再用一个线性拟合的指令,很快便能得到和
得值。问题是在计算机内部是如何实现这种线性的数据拟合的,没错这就是线性回归的方法。
为了便于更一般描述线性回归的问题,也为了更加严谨,先对本课程中出现的一些基本符号与概念作出定义:
:输入变量(例如本例中的Living area),也称为输入特征;
:输出变量(例如本例中的Price),也成为目标变量;
一对数据,称为一个训练样本;我们用来学习的训练样本的集合
称为训练集。这里的上标
指的是样本在训练集中的序号。
称为输入变量空间,
称为输出空间变量。
把我们的问题描述的更加正式:给定训练集,去学习一个函数:
,这样就可以根据给定的
来预测
了。我们也把这个函数称为假设。过程用图表示如下:
当我们要预测的目标变量是连续时,例如本例中的房屋价格,我们把这种学习问题称为回归问题(regression problem);当目标变量只能取一些离散的值时,我们称这种问题为分类问题(classification problem)。
更一般地,为了使我们的问题更加一般化,假设输入特征可以多于一个,像在本例中除了Living area,还有#bedrooms、whether each house has a fireplace、#bathrooms,and so on。如果对于一个线性回归问题,有个输入输入变量,则假设
可以写成:
,
就是我们需要确定的参数。为了使表述更加简洁,我们令
,所以假设可以写成:
,等号右侧
和
都是向量,
是输入向量的个数(不含
)。那么给定一个训练集,我们应该如何选择或者学习
?有种想法很显然,就是使
更加接近
,至少对于训练样本来说是这样的。为了使这个条件公式化,我们需要提出一个衡量标准的函数,我们定义了一个成本函数(cost function):
。
至此,线性回归问题就是学习,使
最小。
2 .LMS算法
既然已经定义了线性回归问题,那么用什么算法求解呢?在数值分析中,遇到过类似的问题,先给一组初始估计值,通过不断地改变
,使
不断变小,直到
收敛。这里我们应用梯度下降法,它的更新规则是:
(对
同时更新)。其中
称为学习率,通过调整此参数,可以改变迭代速度。在等式右侧,需要计算
的偏导数:
所以更新规则变为:。
这个规则就是LMS(最小均方规则)。可以看出每次更新的值是和成比例的,当
的值较大时,每次改变的值就较大,反之较小。当
已经很小时,说明已经达到拟合要求,
的值就不变了。当只有一个训练样本时,我们得到LMS算法,将LMS算法应用到线性回归有两种方式:批处理梯度下降法和随机梯度下降法。
2.1 批处理梯度下降法
算法:
{
}
可以看出,的值每更新一次都要遍历样本集中所有的样本,得到新的
,看是否满足阈值要求,若满足,则迭代结束,根据此值就可得到
;否则继续迭代。注意到,虽然梯度下降法易受目标函数的局部极小值的影响,但是一般的线性规划问题只有一个极小值,所以梯度下降法一般可以收敛到全局的最小值。例如,
是二次凸函数,则梯度下降法的示意图:
图中,一圈上表示代价函数的函数值相同类似于地理上的等高线哈,从外圈开始逐渐迭代,最终收敛全局最小值。
2.2 随机梯度下降法
算法:
{
{
}
}
在这个算法中,我们每次更新只用到一个训练样本。若根据当前样本进行迭代得到一个
,此时会得到一个
,有新样本进来之后,在此基础上继续迭代,有得到一组新的
和
,以此类推。
总结一下这两个梯度算法:批处理梯度下降法,每更新一次,需要用到样本集中的所有样本;随机梯度下降法,
每更新一次,只用到训练集中的一个训练样本,所以一般来说,随机梯度下降法能更快的使目标函数达到最小值(新样本的加入,随机梯度下降法有可能会使目标函数
突然变大,迭代过程中在变小。所以
实在全局最小值附近徘徊,但对于实际应用来说,误差完全能满足要求。)。另外,对于批处理梯度下降法,如果样本集中增加了些许训练样本,就要重新开始迭代。由于以上原因,当训练样本集较大时,一般应用随机梯度下降法。
Linear Regression(线性回归)(一)—LMS algorithm的更多相关文章
- Spark2 Linear Regression线性回归
回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好. 数学上,ElasticNet被定义为L1和L2正则化项的凸组合: 通过适当设置α,Ela ...
- Linear Regression 线性回归
Motivation 问题描述 收集到某一地区的房子面积和房价的数据(x, y)42组,对于一套已知面积的房子预测其房价?   由房价数据可视化图可以看出,可以使用一条直线拟合房价.通过这种假设得 ...
- Linear Regression(线性回归)(二)—正规方程(normal equations)
(整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 在上篇博客中,我们提出了线性回归的概念,给出了一种使代价函数最小的 ...
- 线性回归 Linear regression(3) 线性回归的概率解释
这篇博客从一种方式推导了Linear regression 线性回归的概率解释,内容来自Standford公开课machine learning中Andrew老师的讲解. 线性回归的概率解释 在Lin ...
- Kernel Methods (3) Kernel Linear Regression
Linear Regression 线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为: 给定训练数据集\(D\), 由\(m\)个二元组\(x_i, y_i\)组成, 其中: \(x ...
- 机器学习笔记-1 Linear Regression(week 1)
1.Linear Regression with One variable Linear Regression is supervised learning algorithm, Because th ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 线性回归、梯度下降(Linear Regression、Gradient Descent)
转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
随机推荐
- JVM--Garbage First
Garbage First Garbage First 简称 G1,它的目标是要做到尽量减少 GC 所导致的应用暂停的时间,让应用达到准实时的效果,同时保持 JVM 堆空间的利用率,其最大的特色在于允 ...
- Codeforces 482 - Diverse Permutation 构造题
这是一道蛮基础的构造题. - k +(k - 1) -(k - 2) 1 + k , 1 , k , 2, ....... ...
- Unix/Linux环境C编程新手教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装
远观历史, MySQL的主要目的是为了可以在单处理器核心的商业服务器上执行.现在MySQL的一个变化用户可能不会注意到,那就是甲骨文已经開始又一次架构MySQL的代码,使它大量的模块化.如软件解析器, ...
- 130825组队赛-Regionals 2012, North America - East Central NA
A.Babs' Box Boutique 一道简单的dfs搜索题,需要两两比较,然后搜到底,得到最大值就行了.比赛时队友写的,我只负责debug..赛后自己写的.. #include<iostr ...
- C++学习笔记(十二):重载函数
1. 什么是重载函数 假设同一作用域内的几个函数名字同样但形參列表不同.那么这些函数就称之为--重载函数. 比如: void print( const char *cp); void print(co ...
- android如何用adb shell启动应用程序
昨天研究了很久,可能由于基础比较菜吧,所以,没有搜到一个可以直接解决问题的,需要综合几个之后,问题得以解决,记下方法,为了方便自己之后遇到同样问题,也为了方便搜索同样问题的朋友. 主要用到了aapt和 ...
- MySql连接问题
今天想通过命令连接到另外一台主机的Mysql 命令: mysql -h ip -u username -p EnterPassWord: password 连接成功
- 终于懂了:TWinControl主要是Delphi官方用来封装Windows的官方控件,开发者还是应该是有TCustomControl来开发三方控件
再具体一点,就是TWinControl一般情况下不需要Canvas和Paint(TForm是个例外),而TCustomControl自带这2个. 同时开发者应该使用TGraphicControl,而不 ...
- Android 程式开发:(廿二)服务 —— 22.1 自定义服务
服务,就是跑在后台的“程序”,不需要和用户进行交互.举个例子,当使用一款应用的时候,可能同时想在后台播放一些音乐.在这种情况下,后来播放音乐的代码不需要和用户进行交互,所以,它就可能被当成一个服务.当 ...
- 基于visual Studio2013解决C语言竞赛题之1029二元数组平均值
题目 解决代码及点评 /* 功能:求二维数组中每行元素的平均值,不许引入其它的数组 时间:16:21 2013/10/24 */ #include<stdio ...