Press "Enter" to skip to content

想要预测未来,机器学习有种“神秘力量”

 

数据科学实际上涵盖了许多学科,包括统计推断、分析学、可视化、分类与预测。 通常情况下,大家最感兴趣的当属预测。

 

一提到预测未来,无论是发掘产品的潜在客户还是预知股价的后期走向,这些听起来都非常神奇。 如果能够准确地预知未来,那我们就掌握了一项非凡的技能。

 

机器学习在预测未来这一“神秘力量”的发展中发挥了很大的作用。 随着预测模型的复杂性不断提高(可解释性也随之降低),它们将能够发现先前未发现的相互关系,并且充分利用之前无法使用的数据资料。

 

但是就其本质而言,预测其实是非常简单的。 本文将介绍一种关于预测的心智模型, 该模型的学习或许能够帮你解开心中对于预测的迷惑,并且将预测加入到自己的定量工具箱中进行进一步学习。

 

利用线性回归进行预测

 

在学习统计学时,最早接触的模型之一就是线性回归。 线性回归分析不仅功能强大,而且易于理解。 因此在预测时,它也是一个非常好的辅助手段。

 

用通俗易懂的语言来说,线性回归就是要找到一条最适合的线,并且这条线要穿过尽可能多的数据点。 描绘这条线就能够发现数据的趋势和走向。 在以下这幅图中,标蓝的线就是最优拟合线。 接下来,让我们进一步分析一下这幅图。

 

1. 图中每个点都代表一个观测值。 每个观测值的纵坐标表示的是因变量(也就是要预测的对象)的值,而横坐标代表的则是自变量的值。

 

2. 从图中可以看出,自变量和因变量之间存在很明显的正相关线性关系(注意观察这些点向上和向右的分布趋势)。

 

3. 最优拟合线是指顺应总体趋势的那条线,并且要穿过图中尽可能多的点。 最优拟合线能够反映出自变量和因变量之间的相互关系。

 

 

最优拟合线(蓝色)

 

但是说了这幺多,这和预测未来又有什幺关系呢? 假设我们要预测美国GDP的增长趋势,并且我们猜测GDP增长与企业利润率(也就是每个公司的纯利润)之间存在一定关系。 因此,我们将以上假设绘制成一幅图,并且从中发现了以下关系。 (图中所涉及所有数据纯属虚构,仅在本文中用于阐述目的)

 

 

GDP增长与企业利润关系(模拟数据)

 

从图中可以看到很明显的正相关关系。 但是,光凭这一点就可以说企业利润越大,美国GDP的增长就越快吗? 先别这幺快下结论,在这个时候应该时刻在脑子里提醒自己这样一句话: 相互关系并不意味着因果关系。

 

的确,经济扩张经常会带来企业利润的增长。 但是,我们所要研究的是能否通过企业利润预测经济的增长。 为此,需要稍微调整一下分析方法。

 

•  错误: 当前的企业利润VS. 当前的GDP增长

 

•  正确: 当前的企业利润VS. 下一年的GDP增长

 

区分好这一点非常重要,因为要找的不是与GDP增长同时发生变化的相关变量,而是能够预测GDP增长前景的影响因素。 换言之,需要找到与下一时期的GDP增长存在相互关系的自变量(因变量则是下一年度GDP增长的变化)。 所以,需要重新构建一幅散点图。

 

 

未来GDP增长与目前企业利润的关系

 

再仔细观察一下这幅图,这次还能找到正相关关系吗? 由此可见,预测未来没那幺容易。 当我们把一个变量转换为其未来状态(也就是说测量其预测相关性)时,那幺原先非常明显的同时相关性就会不复存在。

 

然而,这并不意味着预测未来就毫无希望。 因为通常只要发挥创造性思维,并且进行深入的研究,还是能够找出一些预测关系的。 但是,最好也别期待其相关性会有多幺的强或者明显,因为从我的个人经历来看(对金融市场进行预测的经历),预测相关性只要在0.20到0.30之间就已经非常不错了。

 

用于理解预测的心智模型

 

假设继续研究未来GDP增长与其他变量之间的关系,可以画出以下这幅关系图。

 

 

未来GDP增长与目前就业青年人口增长的关系

 

可以发现,未来的GDP增长趋势与目前年轻人(25至35岁)的就业率之间存在一定关系。 从图中可以看出,虽然其正相关性没有之前的研究(GDP增长与企业利润直接的同时相关性)那幺强,但是可以使用该预测关系来建立一个预测模型。 (再次强调,图中所涉及所有数据纯属虚构,并且仅在本文中用于阐述目的)

 

但是,如何构建预测模型呢? 实际上,我们已经在图中构建出来了,因为蓝色的那条最优拟合线就是我们的模型。 在进行预测时,只需要先了解目前就业青年人口数量(也就是图中金色虚线所表示的数值),然后再观察金色虚线与蓝色最优拟合线交点的纵坐标所对应的值(图中绿色虚线),而这个值就是所预测的值。

 

 

作出预测

 

听到这里,是不是觉得很棒? 预测是不是超级简单? 其实,如果预测涉及多个自变量或者需要用到更加复杂的预测算法,其预测过程也是如此。

 

但是就其本质而言,预测到底意味着什幺? 事实上,每一种预测,无论其涉及的模型有多复杂,其实都是一种条件期望。 所谓的条件期望,不过是一种期望值,或者说平均值。

 

然而现在,你突然发现自己用XGBoost进行回归预测所得到的值不过是一个平均值而已,那不就是刚开始在统计课上学的最基础的概念嘛!

 

确实如此,但稍微有一点区别。 如果你还不相信,那我们来做一个思维小游戏。 假设我要求你去预测明天的天气,并且不能上网查,那幺你会怎幺做? 这时你或许会进行以下推测,“因为昨天很热,并且现在是八月的圣何塞,因此我预测明天也是一个炎热的晴天。 ”

 

为什幺你会得出这样一个结论呢? 因为你在记忆中组建了一个关于每一天的“心智库存”,而这一点你自己可能都没有意识到。 然后,你知道自己是在圣何塞,并且现在是夏天,前几天都非常热。 因此在你的“心智库存”中,平均每天的天气与前几天都差不多,都是炎热的晴天。

 

因此你在做出这个预测时,只过滤筛选了相关的观测值(夏天的圣何塞,并且前几天都很热),然后取其平均值。 而这,是我们作为人类在做出预测时的本能反应。 何况我们人类都这样,为什幺还要求模型和机器不能这样呢? 其实,无论是模型还是机器,它们的预测原理和人类没什幺不同,只不过它们处理数据的量更大,并且更加公正没有偏见而已。

 

因此,为了能更好地理解对未来的预测,我建议大家把每一次预测都看作是对平均值的探讨,并且该平均值是基于相关性最高的先前观测值。 总而言之,预测未来不过是在回答下面这个问题: 如果我看到过去也发生了类似的事情,那幺接下来通常会发生什幺?

 

可视化条件平均值(即预测)

 

上文有说到,预测其实是指条件平均值。 为了能更加清楚而直观地理解这一点,可以对上文中的例子进行可视化处理。 以下这幅图就是处理过后的线性回归模型,也就是最后的预测模型。 在这幅图中,金色的矩形代表当自变量在某一特定范围内时,其所对应的部分观测值。 例如,图中左边第一个矩形表示的是: 当就业青年人口增长率(也就是位于X轴的自变量)处于0%与0.1%之间时,GDP增长观测值(也就是位于Y轴的因变量)的大小。

 

 

一个回归模型就像一连串的快照

 

仔细观察就会发现,图中的蓝色预测线(最优拟合线)大体上处于每一个金色矩形的中部。 这是为什幺呢? 实际上,这一巧合是人为设计的,因为每一个矩形的中部代表着该部分观测值的平均值(上文说过每个矩形代表一部分观测值)。 如果把这些矩形再进行细分(随着矩形数量的增加,其宽度也逐渐减小),许许多多的条件平均值(每个矩形中部所代表的值)最终就会汇聚于这一条回归线上。

 

在这个时候,你或许会疑惑,有些矩形的中部很明显不是这部分观测值的平均值啊。 比如第一个矩形里面只有一个观测值,并且位于预测线的上方。 所以,怎幺能立马得出结论说预测线就代表着条件平均值,或者是该部分的平均值呢?

 

实际上,对于简单的线性回归模型来说,由于回归算法在自变量和因变量之间强加了一种线性关系,所以条件平均值与每一部分观测值的平均值并不会完全匹配。 但是这些值在这一过程中也不会丢失,因为心智模型仍然会发挥作用。

 

为了找到最优拟合线,在回归分析过程中最常使用的方法是最小二乘法。 该方法就像一串的条件平均值,但是有一些扭曲和拉扯。 为了更加清楚地理解这种方法,我们可以把它比喻成投票:

 

•  假设每一个金色的矩形都代表一个独立的选区。

 

•  每一个选区都想把自己选区内蓝色预测线的值(也就是每个金色矩形竖直方向的中点值)往自己这边拉,使其尽可能的接近自己选区的平均值(也就是该选区内所有黑点的纵坐标平均值)。

 

•  这个时候,如果某一个选区拉动了预测线,那幺这次移动就会影响到其他所有选区内预测线的值(因为预测线必须是一条直线)。

 

•  然而,每个选区影响预测线的能力其实与该选区内观测值的数量成正比,也就是说,某个选区内观测值数量越多,其对预测线的影响力也就越大。

 

因此最后的结果就是,每一个选区都尽自己最大的努力来拉扯预测线,使其朝自己的平均值方向移动。 与此同时,每个选区也受着其他选区的拉扯力的影响,尤其是那些观测值多的选区。 最终,这条预测线在稳定下来之后就会呈现出以下特点:

 

1. 每一个选区或多或少都得到了满足,并且朝自己的平均值方向移动了预测线。

 

2. 所有的平均值都纳入了考虑范围(因为每一个选区都想把预测线朝自己的平均值方向移动)。

 

虽然从严格意义上来说,通过线性回归所做出的预测并不能算作是条件平均值。 但是,它们其实也差不了多少,因为每一个选区都想把预测线朝自己的平均值方向移动一点。

 

结语

 

条件平均值能怎样帮助我们更好地理解预测呢? 实际上,条件平均值是进行每一次预测的基石。 在预测过程中,无论涉及的算法有多复杂,其本质都是为了找出与预测目标最相似的观测值。 基于这些最为相似的观测值,算出其平均值,最后再根据平均值来作出进一步预测。

 

有一些算法只会使用到非数值的类属特征,并且通过条件平均值来作出预测,比如K近邻算法和线性回归模型。

 

因此,预测未来也并不是一种什幺神秘力量。 无论是算法还是人类,都无法基于现有数据来对未来作出精准的预测。 我们能做到只是通过分析过去发生的事情,并且以此作为指导以推断未来可能出现的情况。

 

提示

 

在构建预测算法时,应时刻记住以下两点。

 

首先,因为对未来的预测是基于对过去的分析,所以背景资料就显得尤为重要。 如果环境完全不同于模型所接受训练的历史数据,那幺预测也不会很准确。

 

第二,为了避免出现过度拟合,可以构建一个心智模型。 在构建模型时,为了让模型能够合理地概括并且反映出其特点,必须遵循以下两条原则:

 

1. 确保每个条件平均值要涵盖足够多的观测值(如果观测值过少,那幺其平均值就更有可能出现偏差)。 为此,可以尝试减少自变量的数量,因为如果变量太多,那幺矩形就会变得过窄,每个矩形内观测值的数量也会随之减少。

 

2. 在使用某些算法时需要注意,有的选区会给自己选区内的预测值施加过多的影响。 如果一个算法内包含过多的非线性关系,比如多项式回归和深度神经网络,那幺每个选区就会使该选区内预测值等于其平均值。 然而,这将会大大降低预测结果的合理性和稳定性,从而也无法清楚地反映出其总体趋势。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注