《Python机器学习——预测分析核心算法》——1.4 算法的选择

  1. 云栖社区>
  2. 博客>
  3. 正文

《Python机器学习——预测分析核心算法》——1.4 算法的选择

异步社区 2017-05-02 16:01:00 浏览2346
展开阅读全文

本节书摘来异步社区《Python机器学习——预测分析核心算法》一书中的第1章,第1.4节,作者:【美】Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 算法的选择

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

5f9c82884c1d49fa22ea5a786b8043b13ab40fc2

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

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

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

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

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

一般的直观感受是基因数据规模巨大。当然以比特为单位,基因数据集确实是非常庞大的,但是如果为了产生准确的预测,则其规模还需要进一步增加。为了理解两者之间的差别,考虑下面一个假想的实验。假设有2个人,一个人有可遗传条件基因,另外一个人没有。如果有这2个人的基因序列,那么能确定哪个基因是可遗传条件基因?显然,这是不可能的,因为这2个人之间有很多基因是不同的。那么需要多少人才能完成这个任务呢?至少人数要与基因数相等,如果考虑到噪声,就需要更多的人了。人类大约有20000个基因,因计算方法不同而略有差异。获得每条数据大约需要1000美元,要获得足够多的数据以完美地解决此问题至少需要2000万美元。

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

注意

本书涵盖的两大类算法的分类与作者和Jeremy Howard在2012年O’Reilly Strata 国际会议中提出的完全吻合。Jeremy负责介绍集成方法,作者负责介绍接受惩罚线性回归,并就两者的优缺点进行了有趣的讨论。事实上,这两类算法占当前构建的预测模型的80%,这不是没有原因的。
第3章将更详细地讨论为什么一个算法或者另一个算法是一个问题的更好选择。这与问题的复杂度、算法内在固有的自由度有关。线性模型倾向于训练速度快,并且经常能够提供与非线性集成方法相当的性能,特别是当能获取的数据受限时。因为它们训练时间短,在早期特征选取阶段训练线性模型是很方便的,然后可以据此大致估计针对特定问题可以达到的性能。线性模型可以提供关于特征对预测的相关信息,可以辅助特征选取阶段的工作。在有充足数据的情况下,集成方法通常能提供更好的性能,也可以提供相对间接的关于结果的贡献的评估。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注