【机器学习算法】线性回归算法

一、线性回归

  • 回归问题
  • 线性方程
  • 偏差度量
  • 权值更新

1. 回归问题

两百年前,与达尔文同时代的统计学家高尔顿在研究父代与子代的身高关系时,发现一种“趋中效应”:如果父代身高高于平均值,则子代具有更高概率比他父亲要矮,简单来说就是身高回归平均值。“回归”一词也由此而来。在回归的世界里,万物的发展轨迹都不是一条单调向上走或向下走的直线,而是循着均值来回波动,一时会坠入低谷,但也会迎来春暖花开,而一时春风得意,也早晚会遇到坎坷挫折,峰回路转,否极泰来,从这个角度看,回归与其说是一个统计学问题,不如说更像是一个哲学问题。

回归问题的具体例子很多,**简单来说各个数据点都沿着一条主轴来回波动的问题都算是回归问题。**回归问题中有许多非常接地气的问题,譬如根据历史气象记录预测明天的温度、根据历史行情预测明天股票的走势、根据历史记录预测某篇文章的点击率等都是回归问题。

在上面描述什么是回归问题时,刻意反复使用“历史”和“预测”这两个词,原因正是记录历史值预测未来值是回归问题的两个代表性特征。
在机器学习中,回归问题分类问题都同属有监督学习,在数据形式上也都十分相似,那么怎么区分一个问题究竟是回归问题还是分类问题呢?

- 回归和分类

回归问题和分类问题最大的区别在于预测结果:

  • 连续——回归
  • 离散——分类

根据预测值类型的不同,预测结果可以分为两种,一种是连续的,另一种是离散的,结果是连续的就是预测问题。
这里的“连续”不是一个简单的形容词,而是有着严格的数学定义。最直接的例子就是时间,时间当然是连续的,连续型数值在编程时通常用int和float类型来表示,包括线性连续和非线性连续两种。
相比之下,离散型数值的最大特征是缺乏中间过渡值,所以总会出现“阶跃”的现象,譬如“是”和“否”,通常用bool类型来表示。

2. 预测未来

许多人对“预测”的第一印象也许是传说中的一个故事,有两位高人结伴出行,晚上歇于一处破庙,甲对乙说,“睡觉别靠墙,我刚掐指一算,寅时墙会倒。”乙不屑一顾地摆摆手,“我刚才也掐指一算,墙是倒向右边,我靠左睡可保无忧。”

回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回归模型。
机器学习的回归模型预测未来的条件:需要有充足的历史数据。只要找到相关联的线索,就能够推理出最终的结果。预测难在待预测对象与什么相关是未知的,但其中的关联关系藏在历史数据之中,需要通过机器学习算法把它挖掘出来。
从数学角度来看,就是对输入数据点的拟合。

- 机器学习实现预测的流程

机器学习算法究竟有什么魔力,竟然能够预测未来?不妨就以前面两个高人的故事为例,用科学观点来研究墙体坍塌的问题。墙体坍塌可能由许多偶然因素导致,我们都不是土木专家,不妨凭感觉随手列出几条可能导致墙坍塌的因素:譬如可能与砌墙的材质有关,土坯墙总比水泥墙容易垮塌;可能与使用时间的长短有关;可能与承建商有关,喜欢偷工减料的工程队容易出“豆腐渣工程”;还有一些外部环境因素,譬如整天风吹雨淋的墙容易垮塌;最后就是墙体坍塌之前总会有一些早期迹象,譬如已经出现很多裂缝等。

上面所列因素有三种情况:与坍塌密切相关,与坍塌有点关系,以及与坍塌毫无瓜葛。如果人工完成预测任务,当然最重要的工作就是找出哪些是密切相关的,放在第一位;哪些是有点关系的,放在参考位置;哪些毫无瓜葛,统统删掉。可是我们又怎么知道哪些因素有哪些关系呢?这时我们就可以制作一张调查表,把砌墙用的什么材料、已经用了多久、出现了多少条裂缝等情况一一填进去,这就是前面所说的数据集中每一条样本数据的维度。就像商家很喜欢通过网上问卷来了解用户偏好一样,我们也利用调查表来了解墙体坍塌有什么“偏好”。

在这里插入图片描述最后一栏是“坍塌概率”,这是我们最关心的,也是有监督学习所必需的。这些已知的坍塌概率以及相关的维度数据将为未知概率的预测提供重要帮助。

最后也是最关键的一步,是找出各个维度和坍塌之间的概率,而这个步骤将由模型自行完成。我们要做的只是将长长的历史数据输入回归模型,回归模型就会通过统计方法寻找墙体坍塌的关联关系,看看使用时间的长短和承建商的选择谁更重要,相关术语叫作训练模型,从数学的角度看,这个过程就是通过调节模型参数从而拟合数据。怎样调节参数来拟合数据是每一款机器学习模型都需要思考的重要问题,我们后面再说。

模型训练完毕后,再把当前要预测的墙体情况按数据维度依次填好,回归模型就能告诉我们当前墙体坍塌概率的预测结果了。流程如图3-3所示。
在这里插入图片描述
可以看出,回归模型就是预测的关键,我们通过给模型“喂”数据来训练它,最终让它具备了预测的能力。也许你对“模型”这个词感到陌生又好奇,不知道该在脑海里给它分配一个什么样的形象。而图3-3的“模型”是一个大大的四方盒子,塞进数据就能吐出预测结果,像是奇幻故事中巫师手中具有神奇魔力的水晶球。不用着急,“模型”这个词将贯穿我们对机器学习的整个巡礼,就像庆典游行里的花车正等着我们逐一观赏呢。接下来迎面走来的就是第一款模型——线性模型。

总结:

  • 收集数据
  • 找出数据各个维度与结果之间的概率
  • 将历史数据输入回归模型——训练模型——调节模型参数从而拟合数据
  • 模型训练完毕后,把当前要预测的情况按数据维度一次填好,回归模型进行预测

3. 线性方程

线性——“像直线那样”
在这里插入图片描述
在这里插入图片描述
直线方程通常写成: y = k x + b y=kx+b y=kx+b,k为斜率,b为截距。
这两个参数控制直线进行“旋转”和“平移”的动作。

  • 调整斜率,可以“旋转”直线:
    在这里插入图片描述
  • 调整截距,实现直线的上下平移:
    在这里插入图片描述

线性方程与直线方程存在差别:直线是二维平面图像,线性所在的空间是多维的

机器学习中,斜率k使用权值w表示,通过调整w和b的值就能控制直线在多维空间中进行旋转和平移。
这个通过调整权值来达到目的的过程叫作权值调整或者权值更新,对于线性模型而言,学习过程的主要工作就是权值调整,只要旋动旋钮,合理搭配旋转和平移这两套简单的动作,就能完成对输入数据的拟合工作,从而解决回归问题。

- 权值调整

在机器学习中,通过调整权值来完成学习,并最终进行预测的算法很多,这也是一种非常常见的学习手段。对于为什么调整权值能够进行预测,实际上也有多种解释,上面从几何角度给出了解释,此外还有代数角度的解释。

以三个输入维度A、B、C来预测P为例,我们的线性方程可以写为:
F = W 1 ∗ A + W 2 ∗ B + W 3 ∗ C (3-1) F = W_1*A+W_2*B+W_3*C\tag{3-1} F=W1A+W2B+W3C(3-1)

假设我们知道P的值其实就是与A的值有关,与B、C毫无关系,那么,怎样调整线性方程才可以根据输入准确预测出P的值呢?

我们知道,线性方程的计算结果F是三个维度的加权和,想要使F与P最接近,只需要让线性方程中B、C这两个加项对结果影响最小即可。这个好办,只要使这两项的权值最小,也就是W2和W3的值为0就可以了。

这就是从代数角度来解释为什么调整权值能够提高预测结果的准确性。这里实际上体现了一种假设,就是待预测的结果与输入的某个或某几个维度相关,而调整权值的目的就是使得与预测结果相关度高的权值越高,确保相关维度的值对最终加权和的贡献越大,反之权值越低,贡献越小。

4. 最简单的回归问题——线性回归问题

- 利用线性回归进行预测的极速入门

已知:小明前年3岁,去年4岁,今年5岁,请问小明明年几岁?
首先这无疑是个预测连续值的问题,明明白白是一个回归问题。回归关注的是几个变量之间的相互变化关系,如果这种关系是线性的,那么这就是一个线性回归问题,适合用线性模型解决。我们按照机器学习的习惯,把已知条件整理成数据集,这是一个三行两列的矩阵:

[[2017, 3],
 [2018, 4],
 [2019, 5]]

这是一个二维矩阵,如果画出图像,两个维度之间的线性关系就一目了然。这里以年份为X轴、年龄为Y轴将记录的数据画出来,得到3个呈线性排列的数据点(见图3-8a)。把这些点用线段连接起来,就能更清楚地看到这3个点排成了一条直线(见图3-8b)。
在这里插入图片描述
这条直线写成线性方程就是 y = x − 2014 y = x-2014 y=x2014,即所谓的“假设函数”。线性回归的预测就依赖于这条方程,现在是2019年,我们当然只能知道2019年之前的真实数据,但对于未来也就是小明在2019年之后的年龄,通过这条线性方程即可以预测得到。譬如把“2020”作为x输入,就能计算出对应的y值是“6”,也就得到了2020年小明将是6岁的预测结果。这个例子很简单,但已经完整地展示了线性回归“预测魔力”背后的原理,线性回归的预测魔力还经常被运用在经济和金融等场景,听起来更高端,不过就原理来说,也只是这个简单例子的延伸和拓展。

二、线性回归的算法原理

我们的任务就是设计一套运行机制,让手头上的这些构件组合成一架精密的学习机器,然后严丝合缝地运转起来,源源不断地“吃”进我们准备的数据,“吐”出对未来的预测结果。

- 拟合

对于一个线性回归问题,也就是说,这里的“神秘方程”就是一个线性方程,相应的数据集点也一定是根据线性排布的,那么,我们要做的就是不断调整线性方程的两个旋钮,作出一条能够一一通过这些点的直线,也就是拟合。这个能够拟合数据集点的线性方程,就是我们要找的“神秘方程”。
我们知道调整的目的是使得线性方程尽可能拟合数据集点,而调整的方法是通过旋动旋钮来调整权值,但仔细一想就会发现还缺失中间一环:怎样调整权值才能最终达到拟合数据的目标?

这里触及机器学习最核心的概念:在错误中学习。

这中间一环需要分两个步骤:首先知道偏离了多少,然后向减少偏差的方向调整权值。

这个不断修正的过程就是机器学习中的“学习”,过程有一点像“愤怒的小鸟”里的修正弹道,不仅线性回归是这样“学习”的,后面要介绍的很多机器学习算法,甚至包括现在正大热的深度学习也都是这样学习的。

“在错误中学习”也不只是简单一句话,具体来说需要经过以下两个步骤:

  • 偏差度量:想要修正弹道,我们不仅要知道偏了,还要知道偏了多少,找到目标和实际的偏差距离。日常中我们会选择用尺子一类的工具来度量距离,而在机器学习中我们使用“损失函数”,数学家已经为我们准备好了“尺子”,多款数学工具都可用于度量偏差的距离。
  • 权值调整:调整权值要解决两个细节问题,即权值是要增加还是减少、增加多少或者减少多少?
  • 再一次感谢数学家,这两个问题都可以直接使用现成的数学工具进行解决,机器学习中将这些数学工具称为“优化方法”。

1. 线性回归算法的数学解析

(1) 假设函数的数学表达式解析

线性函数数学表达式:
y ^ = w T x i + b (3-2) \hat y = w^T x_i+b \tag{3-2} y^=wT<

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhShy23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值