机器学习(一)——线性回归dedication

(本文是基于吴恩达老师的机器学习课程整理的)

今天所知道的回归是由达尔文(CharlesDarwin)的表兄弟FrancisGalton发明的。Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸。Galton在大量对象上应用了回归分析,甚至包括人的身高。他注意到,如果双亲的高度比平均高度高,他们的子女也倾向于比平均高度高,但尚不及双亲。孩子的高度向着平均高度回退(回归)。Galton在多项研究上都注意到这个现象,所以尽管这个英文单词跟数值预测没有任何关系,但这种研究方法仍被称为回归。

******************************************************************************************

Regression有“衰退,退步”的意思,Galton在研究父母身高和子女身高时发现,即使父母的身高相对于人群平均身高来说很高,子女的身高比平均值高,但是却比父母低,即有种向平均值(正常身高)靠近(“衰退”)的倾向。

具体地,Galton和他的学生Pearson在研究父母身高(单位:英寸)与其子女身高的遗传问题时,观察了1078对夫妇,以每对夫妇的平均身高作为x,而取他们的一个成年儿子的身高作为y,将结果在平面直角坐标系上绘成散点图,发现趋势近乎一条直线,计算出的回归直线方程为y=33.73+0.516x。这种趋势及回归方程总的表明父母平均身高x每增加一个单位,其成年儿子的身高y也平均增加0.516个单位。这个结果表明,虽然高个子父辈确有生高个子儿子的趋势,但父辈身高增加一个单位,儿子的身高仅增加半个单位左右。反之,矮个子父辈确有生矮个子儿子的趋势,但父辈身高减少一个单位,儿子身高仅减少半个单位左右。即子代的平均高度向中心回归了。

在客观世界中普遍存在着变量之间的关系,变量之间的关系一般来说可以分为两种:

①确定性的:变量之间的关系可以用函数关系来表达;

需要注意的是:回归模型并非意味着变量间存在因果关系。即使两个或更多变量间可能存在牢固的实证关系,也不能认为这就证明了回归变量与响应变量间存在因果联系。确立因果关系,要求回归变量与响应变量必须存在一种基础性的、与样本数据无关的关系,比如理论分析中所暗含的关系。回归分析有助于因果关系的确认,但不能成为判断因果关系是否存在的唯一基础。

一定要记住,回归分析只是众多用于解决问题的数据分析方法的一种,也就是说,回归方程本身可能并非研究的主要目的,就整个数据处理过程而言,洞察力与理解力通常更为重要。

上面已经知道,回归的目的是通过几个已知数据来预测另一个数值型数据的目标值。下面通过例子阐述线性回归的思想及过程。

假设我们有如下表1所示的训练集,其中自变量x为房子的面积(单位feet2),因变量为房子的卖价(单位$1000),共有M个样本。

表1训练集样本(M个样本)

sizeinfeet2(x)

price($)in1000`s(y)

2104

460

1416

232

1534

315

852

178

使用回归分析的一个重要目标是估计模型中的未知参数,这一过程也称为模型拟合数据。

求解参数的原则

代价函数(costfunction)

代价函数J(θ0,θ1)和模型hθ(x)之间的关系

首先模型hθ(x)是给定参数θ下,关于x的函数,而J(θ0,θ1)是关于θ0,θ1的函数。给定参数θ0,θ1,可以计算出一个J(θ0,θ1)。为了方便表示和理解,我们假设参数θ0=0,即模型是过原点的直线,设样本点为(1,1),(2,2),(3,3),接下来,我们取不同的θ1来计算J(θ1)。

如下图1所示,黑色线表示θ1=1,三个样本点刚好全都落在该直线上,其代价函数值为0,所以J(θ1)过点(1,0),蓝色直线斜率为0.5,其代价函数值为0.58,所以J(θ1)过点(0.5,0.58),同样绿色直线斜率为2,其代价值为7/3,所以J(θ1)过点(2,7/3),得到的代价函数如图2所示。若不设θ0=0,则J(θ0,θ1)的等高线如图3所示。

图1不同参数下的模型

图2代价函数J(θ1)

图3J(θ0,θ1)的等高线,横轴为θ1,纵轴为θ0

利用代价函数求解参数

梯度下降法的思路:

为什么要设置初始值为0呢?因为后续都会调整参数来求代价函数的最小值,而且先前我们也不知道要具体设置为多少,所以遵循简单原则,设置为0。接下来调整参数,如下:

重复以下步骤直到收敛{

}

α为下降步长,也叫学习率(learningrate),它决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。偏导数项是用来保证以直线方向下降(最快下降方向)。

图4变换缓慢的J(θ)上的收敛过程

图5比较陡峭的J(θ)上的收敛过程

接下来,我们用一个例子说明梯度下降方法。求y=(x-1)2的最小值点,选步长为0.5:

①设初始值x0=0,则y=1,在x=0处梯度值为-2,

②更新x1=0-0.5*(-2)=1,则y=0,此处梯度值为0,找到最小值点(1,0)

接下来我们如何判断收敛呢?对于一般的数学函数来说,只要导数值为0即可,但是对于1/x这类函数来说,有两种方式来判断其是否收敛,一种是看J(θ)的函数图形,如果基本没有变化,则可认为是收敛;另一种为设置变化阈值ε,如ε<0.001,若两次相邻的J(θ)变化小于ε,则可认为是收敛了,但是如何确定ε的大小则比较困难。

多元线性回归

之前描述的是一元线性回归,那么如何对多元变量进行线性回归呢?如下表2的训练数据:

表2多维特征数据

size(feet2)x1

numberofbedroomsx2

numberoffloorsx3

ageofhome

x4

price($1000)

y

5

1

45

3

2

40

30

36

需要注意的是,因为特征中x1,x2之间的取值范围差异太大,得到的J(θ)性状窄长(因为取值范围一大一小),会导致收敛产生振荡,如下图6所示(手画,比较丑)。

图6特征取值范围较大时会出现振荡

产生振荡会使收敛不到最小点处,因此为了避免这种情况,我们需要对特征进行缩放,也相当于归一化处理,使他们的取值范围都在一个区间,通常我们将特征值除以该特征的最大值与最小值的差。比如若x1取值范围为650--3000,缩放为:x1/(3000-650)。缩放后代价函数变得相对圆些,如图7所示,其收敛过程就相对平滑,也能较快收敛到最小值点。

图7特征缩放后的收敛相对平缓

对于表2中的数据,我们添一列x0,使其全为1,模型写为:hθ(x)=θ0x0+θ1x1+θ2x2+θ3x3+θ4x4。我们记矩阵

(4)梯度下降法与正规方程比较

梯度下降法

正规方程

需要选择学习率(下降步长)α

不需要选择α

需要多次迭代

不需要迭代,一次运算得出

当特征数量N很大时,依然能很好的运用

需要计算(XTX)的逆,若特征数量N很大时,计算代价太大,求矩阵逆复杂度为O(n3)

适用于各种类型的模型

只适用于线性模型,不适合逻辑回归模型等其他模型

(1)收集数据:采用任意方法收集数据;

(2)准备数据:回归需要数值型数据,标称型数据将被转成二值型数据;

(3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比;

(4)训练算法:找到回归系数;

(5)测试算法:使用R2或者预测值和数据的拟合度,来分析模型的效果;

(6)使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。

为了可视化效果,我们只使用一个特征(sizeoffeet2)来说明线性回归的实例应用。

(1)收集数据:我们根据现实生活的情况,设定了20个样本,如下表3所示:

表3训练样本集

Sizeoffeet2

Price($1000)

265

32

568

98

1564

250

100

23

3645

564

879

125

356

86

873

105

1356

254

458

1587

298

2458

521

2478

512

3578

652

87

965

154

546

65

1548

246

(2)准备数据:数据已是数值型数据;

(3)分析数据:将其可视化如下图8.

图8训练集数据的可视化

(4)训练算法:

(5)测试算法:

我们将得到的hθ(x)与样本点画出来,如下图9.可以看出效果不错,毕竟事实就是房子面积越大,卖价越高,当然还有地段等因素影响,所以并不是完全都在直线上。

图9样本点与回归线

(6)使用算法:我们用得到的线性模型对新样本x=2000,来预测该面积的房子卖价y=hθ(x)=-10.13+0.18*2000=349.87,注意单位是千$。

THE END
1.机器学习的回归是什么机器学习的回归是什么 一、什么是回归(Regression)说到回归想到的是终结者那句:I'll be back,在数理统计中,回归是确定多种变量相互依赖的定量关系的方法。通俗理解:越来越接近期望值的过程,回归于事物本来的面目 主要用于预测数值型数据,典型的回归例子:数据拟合曲线 二、什么是线性回归(Linear Regression)http://baijiahao.baidu.com/s?id=1662492763011156376&wfr=spider&for=pc
2.解密人工智能:线性回归线性回归作为人工智能中的一种关键统计学方法,被广泛应用于预测和决策支持系统中。本文将为您详细介绍线性回归在人工智能中的应用原理与方法,帮助您更好地理解这一重要技术。 一、什么是线性回归? 线性回归是一种统计学和机器学习领域中常用的预测和分类方法。它通过建立输入变量(自变量)与输出变量(因变量)之间的线性https://zhuanlan.zhihu.com/p/669035415
3.线性回归(LinearRegression)机器学习线性回归机器学习 专栏收录该内容 9 篇文章 14 订阅 订阅专栏 一、线性回归 1、线性回归的作用 通过许多实验观察到的值回归统计变量的真实值。 2、线性回归的定义 线性回归属于有监督学习算法,描述一个连续型因变量和一系列自变量之间的关系。 二、线性回归四要素 1、数据 线性回归的数据即一系列自变量以及对应的因变量https://blog.csdn.net/weixin_58427214/article/details/133576585
4.线性回归机器学习模型线性回归模型原理详解线性回归机器学习模型 线性回归模型原理详解 基本形式 线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数。 w和b学得之后,模型就得以确定。w直观表达了各属性在预测中的重要性。 2.线性回归 提出假设:给定数据集 ,其中, “线性回归”(linear regression)试图学得一个线性模型以尽可能准确地https://blog.51cto.com/u_16099205/6675218
5.机器学习实践系列1——线性回归摘要:本文结合实际案例,介绍机器学习的线性回归模型,包括一元线性回归和多元线性回归,以及模型的评估。案例展示用Python代码实现。 一元线性回归 在机器学习系列1——机器学习概况中我们讲到,监督学习的主要任务是做预测,其中一种是回归性预测,预测某一个连续型变量的数值。在线性回归模型中,根据输入变量的个数(即特征值https://www.jianshu.com/p/c02291ab4c3b
6.python机器学习之线性回归详解python一、python机器学习–线性回归 线性回归是最简单的机器学习模型,其形式简单,易于实现,同时也是很多机器学习模型的基础。 对于一个给定的训练集数据,线性回归的目的就是找到一个与这些数据最吻合的线性函数。 二、OLS线性回归 2.1 Ordinary Least Squares 最小二乘法 https://www.jb51.net/article/210070.htm
7.科学网—机器学习之线性回归附Python代码科研笔记|机器学习, 回归分析, Regression, Python 线性回归-Linear Regression 一、线性回归 原理:采用最小平方误差估计自变量和因变量之间的关系,通过建模求解回归因子(自变量系数),这种方法叫做回归分析。如果自变量个数的有多个,称为多元回归分析。 下面以统计模型库statsmodels中的解释进行说明: https://blog.sciencenet.cn/blog-1966190-1119186.html
8.机器学习线性回归算法:原理公式推导损失函数似然函数线性回归方程为: 整合后的公式为: 3. 损失函数 损失函数是一个贯穿整个机器学习的一个重要概念,大部分机器学习算法都有误差,我们需要通过显性的公式来描述这个误差,并将这个误差优化到最小值。假设现在真实的值为y,预测的值为h。 损失函数公式为: 也就是所有误差和的平方。损失函数值越小,说明误差越小,这个损失https://cloud.tencent.com/developer/article/2359619
9.一文看懂线性回归(3个优缺点+8种方法评测)线性回归 – linear regression 线性回归是很基础的机器学习算法,本文将通俗易懂的介绍线性回归的基本概念,优缺点,8 种方法的速度评测,还有和逻辑回归的比较。 什么是线性回归? 线性回归的位置如上图所示,它属于机器学习 – 监督学习 – 回归 – 线性回归。https://easyai.tech/ai-definition/linear-regression/
10.AI科普丨通透!机器学习各大模型原理的深度剖析!通俗来说,机器学习模型就是一种数学函数,它能够将输入数据映射到预测输出。更具体地说,机器学习模型就是一种通过学习训练数据,来调整模型参数,以最小化预测输出与真实标签之间的误差的数学函数。 机器学习中的模型有很多种,例如逻辑回归模型、决策树模型https://mp.weixin.qq.com/s?__biz=MjM5ODIwNjEzNQ==&mid=2649897566&idx=3&sn=60e6fd0120c7591a50b1a8c8c0e628c8&chksm=bf54a1345a8724cb96d4e30de522721617daba232078c1c448aa40ee697efa744bf6b891d790&scene=27
11.人工智能十大流行算法现在,机器学习有很多算法。因此,如此多的算法,可能对于初学者来说,是相当不堪重负的。今天,我们将简要介绍10种最流行的机器学习算法,这样你就可以适应这个激动人心的机器学习世界了! 让我们言归正传! 01.线性回归 线性回归(Linear Regression)可能是最流行的机器学习算法。线性回归就是要找一条直线,并且让这条直线https://aidc.shisu.edu.cn/62/7d/c13626a156285/page.htm
12.基于机器学习的增材制造合金材料力学性能预测研究进展与挑战1.1.1 经典机器学习模型 线性回归(linear regression, LR)是ML算法中用于获取输入与输出变量之间显性方程的一种建模方式, 也是较为简单的一种ML算法. LASSO回归(LASSO regression)和岭回归(ridge regression)则是在普通线性回归的基础上分别加入L1和L2正则化项. 线性回归在求解输入与输出变量之间存在较强线性关系的https://lxxb.cstam.org.cn/article/doi/10.6052/0459-1879-23-542?viewType=HTML