Python机器学习:关于预测的两类核心算法
作者头像
  • Qualcomm中国
  • 2020-06-23 16:30:37 3

处理函数逼近问题时,有两种被广泛使用的高效算法:惩罚线性回归和集成方法。本文将介绍这两种算法,概述它们的特点,并回顾它们在不同情况下的性能表现,以证明它们在预测分析中的可靠性和优越性。

1.1 这两类算法为何如此有效

惩罚线性回归和集成方法之所以广受欢迎,是因为它们在解决大多数预测分析问题时都能表现出色。这些问题包括但不限于大数据集、小数据集、宽数据集(包含大量特征的数据)、高瘦数据集(包含少量特征但大量观测的数据)、复杂问题和简单问题等。Rich Caruana及其同事的研究为此提供了有力的支持。

在他们的研究中,作者选取了多种分类问题,利用不同的算法构建预测模型,并通过测试数据评估这些模型的性能。这些测试数据不会用于模型的训练阶段,而是用于评估各算法的性能。第一篇论文比较了9种基本算法在11个不同机器学习任务中的表现,这些任务涵盖了人口统计学、文本处理、模式识别、物理学和生物学等多个领域。表1-1展示了所用数据集的详细信息,包括数据集名称、特征数量及正例比例。

正例是指在分类任务中,输入数据符合预期结果的样本。例如,在雷达信号分类中,正例指的是雷达视野中确实存在飞机的情况。正例的概念来源于对输入结果为“出现”或“不出现”的分类任务。

并非所有分类问题都是关于“出现”或“不出现”的判断。例如,通过分析作家的作品或手写样本来判断性别,这类问题并不涉及“出现”或“不出现”的概念。在这种情况下,指定正例和负例需要一定的主观性,但一旦选定,就必须保持一致。

在某些数据集中,一类数据显著多于另一类数据,这种情况称为非平衡数据集。例如,Letter.p1和Letter.p2两个数据集用于识别不同字体中的大写字母。Letter.p1的任务是区分标准字母混合中的大写字母O,而Letter.p2的任务是将字母分为A-M和N-Z两类。表1-1中的“正例百分比”一栏反映了数据集的不平衡性。

[表1-1 机器学习算法比较研究中问题的概况]

表1-1还显示了每个数据集所使用的特征数量。特征是用于预测的变量。例如,预测飞机是否准时抵达目的地可能需要考虑航空公司的名称、飞机的制造商和生产年份、目的地机场的降水量以及航线上的风速和风向等因素。虽然使用大量特征可以提高预测的准确性,但也可能导致过度拟合。

需要注意的是,当数据集包含大量特征但缺乏足够的数据或时间来训练复杂的集成方法模型时,惩罚回归方法将显示出优势。

Caruana等人的最新研究探讨了在特征数量增加的情况下,这些算法的表现如何。表1-3展示了不同算法在处理大规模数据时的表现。表1-3中的算法包括Boosted Decision Trees (BSTDT)、Random Forests (RF)、Bagged Decision Trees (BAGDT)、Boosted Stumps (BSTST)、Logistic Regression (LR)、Support Vector Machines (SVM)、Artificial Neural Networks (ANN)、Distance Weighted kNN (KNN)、Voted Perceptrons (PRC) 和 Naive Bayes (NB)。

表1-2按特征数量排序,从761个特征到最终的685569个特征。逻辑回归在11个测试中的5个进入前三名,且这些优秀成绩主要集中在较大规模的数据集上。Boosted Decision Trees (BSTDT) 和 Random Forests (RF) 的表现依然接近最佳,它们在所有任务中的平均得分排名前两位。

[表1-2 本文涵盖的机器学习算法在处理大数据问题时的表现]

除了性能之外,惩罚线性回归模型还有一个显著优势,即训练所需时间较短。对于大规模数据集,训练时间是一个重要因素。某些任务的模型训练可能需要几天甚至几周,这通常是不可接受的,尤其是在开发早期阶段。惩罚线性回归不仅训练速度快,而且部署已训练好的模型后进行预测的速度也非常快,适合用于高速交易、互联网广告投放等领域。

研究表明,惩罚线性回归在许多情况下可以提供最佳答案,即使不是最佳答案,也能提供接近最佳的答案。这些算法易于使用,可调参数较少,并且有明确的输入数据格式。它们可以处理回归和分类任务。在面对新问题时,通常可以在1-2小时内完成数据处理、模型训练和预测输出。

这些算法的一个重要特性是可以明确指出哪些输入变量对预测结果最为关键。这已经成为机器学习算法中的一个重要特性。在构建预测模型的过程中,最耗时的一步通常是特征提取或特征工程,即选择哪些变量用于预测结果。

1.2 惩罚回归方法

惩罚线性回归方法源于普通最小二乘法(Ordinary Least Squares, OLS),后者由高斯和法国数学家阿德里安-马里·勒让德在约200年前提出。惩罚线性回归最初的设计目的是克服最小二乘法的基本缺陷。最小二乘法的一个常见问题是过拟合。例如,图1-1展示了用最小二乘法拟合一条直线的例子。这是一个简单的预测问题:给定一个特征x,预测目标值y。例如,可以根据男性的身高预测其收入。

[图1-1 普通最小二乘法拟合]

图1-1中的点代表(男性的身高,男性的收入),直线代表使用最小二乘法的预测结果。在某种意义上,这条直线代表了在已知男性身高的情况下,对男性收入的最佳预测模型。现在假设数据集只有6个点。如果只有2个点,想象一组点,像图1-1中的点,但你无法获得所有点。原因可能是获取所有点的成本太高,就像前面提到的基因组数据。只要有足够的人手,就可以分离出犯罪分子的基因组,但主要原因在于成本过高,无法获得他们的全部基因序列。

为了模拟这个问题,假设你只能得到最初的6个点中的任意2个点。那么拟合出来的直线会如何变化?这取决于你得到的是哪两个点。可以看到,拟合出来的直线依赖于这两个点是如何选择的。

[图1-2 只有2个点的情况下的拟合直线]

使用两个点来拟合一条直线的主要问题是,直线的自由度没有得到充分的数据支撑。一条直线有两个自由度,意味着需要两个独立的参数来唯一确定一条直线。可以想象在一个平面上抓住一条直线,然后在这个平面上滑动或旋转它来改变其斜率。与x轴的交点和斜率是独立的,可以单独改变,两者结合在一起确定了一条直线。直线的自由度可以通过多种等价的方式来表示,例如与y轴的交点和斜率、直线上的两点等。所有这些确定一条直线的方法都需要两个参数。

当自由度与点数相等时,预测效果并不理想。连接这些点形成直线,但在不同点对之间可以形成大量不同的直线。在自由度与点数相同的情况下进行预测,不应抱有过高的期望。图1-1显示了6个点拟合一条直线(2个自由度)。也就是说,6个点对应2个自由度。从大量的人类基因中找到导致遗传病的基因可以说明类似的现象。例如,从大约20000个人类基因中找到导致遗传病的基因,可选择的基因越多,需要的数据也越多。20000个不同基因相当于20000个自由度,即使有20000个人的数据也不足以得出可靠的结果。在很多情况下,一个相对预算合理的研究项目只能负担得起大约500个人的样本数据。在这种情况下,惩罚线性回归是最好的选择。

惩罚线性回归可以减少自由度,使其与数据规模和问题复杂度相匹配。对于具有大量自由度的问题,惩罚线性回归方法被广泛使用。在基因问题和文本分类问题中,这种方法尤其受到青睐。基因问题的自由度(基因数量)通常高达数万,文本分类问题的自由度可能超过百万。第四章将详细介绍这些方法的工作原理、通过示例代码解释算法机制以及使用Python工具包实现机器学习系统的过程。

1.3 集成方法

集成方法的基本思想是构建多个不同的预测模型,然后将它们的输入结果通过某种方式组合起来,如取平均值或采用多数人的意见(投票)。单个预测模型被称为基学习器(base learner)。计算学习理论的研究表明,只要基学习器比随机猜测稍微好一些(如果有足够多的独立预测模型),那么集成方法就可以达到较好的效果。

研究人员注意到某些机器学习算法的预测结果不稳定,这导致了集成方法的提出。例如,在现有数据集的基础上添加新数据会导致最终的预测模型或性能发生变化。二元决策树和传统神经网络就有这种不稳定性。这种不稳定性会导致预测模型的高方差,通过取多个模型的平均值可以看作是一种降低方差的方法。关键在于如何产生大量独立的预测模型,特别是在它们都使用相同的基学习器时。第六章将深入讨论这一点。方法很巧妙,了解其运作的基本原理相对容易。以下是其概述。

集成方法通常使用二元决策树作为基学习器。二元决策树通常如图1-3所示。图1-3中的二元决策树以一个实数x作为最后的输入,然后通过一系列二元(二值)决策来决定针对x的最终输出值。第一次决策是判断x是否小于5。如果回答“否”,则二元决策树输出4,在由决策的方框下面标为“否”的分支引出的圆圈内。每个可能的x值通过决策树都会产生输出y。图1-4展示了输入y作为输入x的函数。

[图1-3 二元决策树示例]

[图1-4 二元决策树示例输入-输出图]

由此产生的问题是,这些比较值是如何产生的(例如例子中的x<5?),输入值是如何确定的(图1-3决策树底部圆圈中的值)。这些值都是基于输入数据通过二元决策树训练得出的。训练算法并不难理解,第六章将详细描述。重要的一点是,给定输入数据,训练得到的二元决策树的这些值是确定的。一种获得不同模型的方法是对训练数据进行随机抽样,然后基于这些随机数据子集进行训练。这种技术称为投票(bagging,即自助聚合算法的简化说法)。此方法可以产生大量具有微小差异的二元决策树。这些决策树的输出通过平均或投票产生最终结果。第六章将详细描述这项技术的细节及其他更强大的工具。

1.4 算法的选择

这两种算法的概要比较如表1-4所示。惩罚线性回归的优势在于训练速度非常快。大规模数据集的训练时间可以是几小时、几天,甚至是几周。要获得一个可部署的解决方案往往需要多次训练。过长的训练时间会影响大数据问题的处理进度及其部署。训练所需时间越短越好,因此惩罚线性回归因其训练时间短而被广泛应用。在某些情况下,这类算法可能比集成方法具有更高的性能。第三章将深入分析哪些问题适合惩罚回归,哪些问题适合集成方法。即使在某些情况下,惩罚线性回归的性能不如集成方法,它也可以作为构建机器学习系统的有意义的第一步尝试。

[表1-4 惩罚线性回归与集成方法的权衡比较]

在系统开发的早期阶段,为了特征选择、进一步明确问题的形式化描述,训练过程往往需要多次迭代。选择哪些特征作为预测模型的输入是一个需要考虑的问题。有时这个过程是显而易见的,但通常需要多次迭代后才会逐渐显现。将所有能找到的特征都输入进来通常不是一个好的解决方案。

试错法是确定模型最佳输入的典型方法。例如,如果想预测网站用户是否会点击某个广告链接,首先使用用户的人口统计学信息。但结果可能达不到预期的精度,因此尝试导入用户在此网站过去的行为信息:用户在过去访问网站时点击过哪些广告或购买过哪些产品。添加用户访问此网站之前在其他网站的相关信息也可能有所帮助。这些尝试导致了一系列实验:导入新的数据,然后看看新的数据对结果是否有帮助。这种迭代过程在两个方面都很耗时:数据处理和预测模型训练。惩罚线性回归通常比集成方法更快,这种时间上的差异是机器学习系统开发阶段需要考虑的重要因素。

例如,如果训练集在GB级别,惩罚线性回归算法的训练时间在30分钟左右,而集成方法可能需要5-6小时。如果特征工程阶段需要10次迭代来选择最佳特征集,那么单单这个阶段就会产生1天到一周的时间差异。一个有用的技巧是在开发的早期阶段,如特征工程阶段,使用惩罚线性模型进行训练。这给数据科学家提供了一个初步判断:哪些变量(特征)是有用的、重要的,同时也提供了一个与其他算法性能比较的基础。

除了可以获得训练时间上的好处,惩罚线性方法生成预测结果也比集成方法快得多。生成预测结果需要使用一个训练好的模型。对于惩罚线性回归,训练好的模型是一系列实数,每个实数对应一个用于预测的特征。所需的浮点运算次数等于用于预测的变量数量。对于对时间敏感的预测,如高速交易、互联网广告植入,计算时间上的差异往往意味着盈利还是亏损。

对于某些问题,线性方法相比集成方法可以获得同等或更好的性能。一些问题不需要复杂的模型。第三章将详细讨论问题的复杂度,数据科学家的任务是如何平衡问题的复杂度、预测模型的复杂度和数据集规模,以获得一个最佳的可部署模型。基本思想是,如果问题不是很复杂,并且无法获得足够多的数据,则线性方法可能会比更复杂的集成方法获得更好的整体性能。基因组数据就是一个典型例子。

一般来说,基因数据规模巨大。当然,以比特为单位,基因数据集确实很大,但如果要产生准确的预测,数据规模还需要进一步增加。为了理解这种差异,考虑一个假想实验。假设有两个人,一个人有遗传条件的基因,另一个人没有。如果有这两个人的基因序列,那么能否确定哪个基因是遗传条件的基因?显然,这是不可能的,因为这两个人之间有很多基因是不同的。那么需要多少人来完成这个任务呢?至少需要与基因数量相等的人,考虑到噪声,可能需要更多的人。人类大约有20000个基因,由于计算方法的不同,这个数字可能会有所不同。获取每条数据大约需要1000美元,要完美地解决这个问题,至少需要2000万美元。

正如本文后面讨论的那样,这种情况与用两个点来拟合一条直线非常相似。模型的自由度比数据点少。数据集的规模通常是固定的,因此需要调整模型的自由度。惩罚线性回归的相关章节将介绍惩罚线性回归如何支持这种调整以及如何达到最优性能。

参考文献:

  1. “An Empirical Comparison of Supervised Learning Algorithms,” Rich Caruana,Alexandru Niculescu-Mizi。
  2. “An Empirical Evaluation of Supervised Learning in High Dimensions,” Rich Caruana, Nikos Karampatziakis和Ainur Yessenalina。

本文节选自《Python机器学习——预测分析核心算法》

[表1-1 机器学习算法比较研究中问题的概况]

[表1-2 本文涵盖的机器学习算法在处理大数据问题时的表现]

[表1-3 不同算法在处理大规模数据时的表现]

[表1-4 惩罚线性回归与集成方法的权衡比较]

[图1-1 普通最小二乘法拟合]

[图1-2 只有2个点的情况下的拟合直线]

[图1-3 二元决策树示例]

[图1-4 二元决策树示例输入-输出图]

本文仅用于学习和交流目的,不代表异步社区观点。非商业用途请注明作者、出处及原文链接。

    本文来源:图灵汇
责任编辑: : Qualcomm中国
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
算法机器核心预测Python学习关于
    下一篇