本节书摘来自华章计算机《大数据架构和算法实现之路:电商系统的技术实战》一书中的第3章,第3.1节,作者 黄 申,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第3章
方案设计和技术选型:
因变量连续的回归分析
利用分类和聚类技术解决了前面两个问题之后,本章最终要关注小丽提出的第三大需求:在合理的范围内预测商品的销售转化率。“这项任务看上去不可能完成啊!”大宝不禁感叹道。“大宝,你说的有道理。销售和证券市场类似,影响其变化的因素实在是太多了。不过,我们可以大胆假设一点:历史总是惊人的相似。遵循一定的科学方法,在某些场景下根据先前的数据进行尝试,也许能发现未来的一些规律。今天,我们就来讲述另一个重要的机器学习方法:因变量连续的回归分析。”
3.1 线性回归的基本概念
本章之前阐述的分类问题会根据某个样本中的一系列特征输入,最后判定其应该属于哪个分类,然后预测出一个离散的分类标签。现实中,除了分类还面临着一种问题,如何根据一系列的特征输入,给出连续的预测值?例如这里所说的,电子商务网站根据销售的历史数据,预估新商品在未来的销售情况,就是一种典型的应用场景。如果只是预估卖得“好”还是“不好”,粒度明显太粗,不利于商品的排序,如果预估值是其转化率或绝对销量,那就相对比较合理了。再次回到水果的案例,重新假想一个场景,我们邀请的果农都是久经沙场的老将,对于水果稍加评估就能预测有百分之多少的概率能卖出去。再将1000颗水果放入一个黑箱中,每次随机摸出一颗,这次我们不再让果农判断它是属于苹果、甜橙还是西瓜,而是让他们根据水果的外观、分量等因素预估其卖出去的可能性是多少,可能性是0%到100%之间的任何一个实数值。这就是最基本的因变量连续回归分析。
因变量连续回归的训练和测试流程及分类大体相当,不过采用的具体技术会有所不同,它采用的是研究一个或多个随机变量y1, y2, ..., yi与另一些变量x1, x2, ..., xk之间关系的统计方法,又称多重回归分析。我们将y1, y2, ..., yi称为因变量,x1, x2, ..., xk称为自变量。通常情况下,因变量的值可以分解为两部分:一部分是来自于自变量的影响,即表示为自变量相关的函数,其中函数的形式是已知的,可能是线性函数也可能是非线性函数,但含有一些未知参数;另一部分是来自于其他未被考虑的因素和随机性的影响,即随机误差。
- 回归按照不同的维度可以分如下为几种。
- 按照自变量数量:当自变量x的个数大于1时称为多元回归。
- 按照因变量数量:当因变量y的个数大于1时称为多重回归。
- 按照模型:如果因变量和自变量为线性关系,就称为线性回归模型;如果因变量和自变量为非线性关系,则称为非线性回归分析模型。举个例子,最简单的情形是一个自变量和一个因变量,且它们大体上有线性关系,这叫一元线性回归,即模型为Y = a + bX + ε,这里X是自变量,Y是因变量,ε是随机误差,通常假定随机误差的均值为0。
假设此处的水果案例中,每个水果都有6个特征维度,包括形状、颜色、重量等。这六维就是自变量,最终卖出的概率是一重因变量。通过六元自变量预测最终卖出概率的这个因变量,称为六元一重回归分析。至于是否线性回归,则需要看训练过程中,线性回归模型是否能很好地拟合学习样本,使得随机误差足够小。如果不能,那就需要尝试非线性的回归模型。图3-1展示了二维空间里的拟合程度,图中离散的点是训练数据实例,直线是回归学习后确定的拟合线。从左侧可以看出,实例点和学习的直线非常接近,误差比较小。而右侧却相反,实例点和学习得出的直线距离都比较远。这种情况下我们认为左侧的拟合度要好于右侧,而且左侧学习得出的函数参数更可信。而右侧可能需要考虑换成其他非线性的回归函数。
假设在水果的案例中我们足够幸运,最基本的线形回归效果很好,获得了如下的预测函数:
那么,在预测的时候,我们将新的数据对象的各个维度特征值带入上述公式,那么就可以得到预估的转化率。不过在现实的数据中,情况往往比较复杂。对此,我们还可以进行相关性分析,用于确定如下关系。
- 每个自变量和因变量之间的关系,初步估计对于最终预测而言,是比较重要的因素。
- 不同自变量之间的关系,发现可能冗余的因素。
常见的相关系数是皮尔森(Pearson)系数,它是用来反映两个变量线性相关程度的统计量。取值范围在[-1, 1],绝对值越大,说明相关性越高,负数表示负相关。图3-2表示了正相关和负相关的含义。左侧X曲线和Y曲线有非常近似的变化趋势,当X上升Y往往也是上升的,X下降Y往往也下降,这就表示两者有较强的正相关性。右侧X和Y两者的变化趋势正好相反,当X上升的时候,Y往往是下降的,X下降的时候,Y往往是上升的,这就表示两者有较强的负相关性。
皮尔森系数没有考虑重叠数对结果的影响。计算公式如下:
其中n表示向量维度,xi和yi分别为两个向量在第i维的数值。和分别表示两个向量维度值序列的均值,sX和sY分别表示两个向量维度值序列的标准差。
由于这些回归分析的理论不容易理解,我们将直接使用R中的工具开展深入的分析,同时进行相关的讲解。