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

1.4 算法的选择

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

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

试错法是确定模型最佳输入的典型方法。例如,如果想预测网站的用户是否会点击某个广告链接,首先用到用户的人口统计学信息。但是结果可能并不能达到想要的精度,因此尝试导入用户在此网站过去行为的信息:在过去的网站访问过程中,此用户点击过哪些广告或购买过哪些产品。增加用户访问此网站之前的其他网站的相关信息也会有些帮助。这些尝试都导致了一系列的实验:导入新的数据,然后看看新的数据对结果是否有帮助。这种迭代过程在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章将更详细地讨论为什么一个算法或者另一个算法是一个问题的更好选择。这与问题的复杂度、算法内在固有的自由度有关。线性模型倾向于训练速度快,并且经常能够提供与非线性集成方法相当的性能,特别是当能获取的数据受限时。因为它们训练时间短,在早期特征选取阶段训练线性模型是很方便的,然后可以据此大致估计针对特定问题可以达到的性能。线性模型可以提供关于特征对预测的相关信息,可以辅助特征选取阶段的工作。在有充足数据的情况下,集成方法通常能提供更好的性能,也可以提供相对间接的关于结果的贡献的评估。

时间: 2024-09-17 11:38:08

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

《Python机器学习——预测分析核心算法》——导读

前言 Python机器学习--预测分析核心算法 从数据中提取有助于决策的信息正在改变着现代商业的组织,同时也对软件开发人员产生了直接的影响.一方面是对新的软件开发技能的需求,市场分析师预计到2018年对具有高级统计和机器学习技术的人才需求缺口将达140000-190000人.这对具有上述技能的人员来说意味着丰厚的薪水和可供选择的多种有趣的项目.另一方面对开发人员的影响就是逐步出现了统计和机器学习相关的核心工具,这减轻了开发人员的负担.当他们尝试新的算法时,不需要重复发明"轮子".在所有

《Python机器学习——预测分析核心算法》——第1章 关于预测的两类核心算法

第1章 关于预测的两类核心算法 Python机器学习--预测分析核心算法 本书集中于机器学习领域,只关注那些最有效和获得广泛使用的算法.不会提供关于机器学习技术领域的全面综述.这种全面性的综述往往会提供太多的算法,但是这些算法并没有在从业者中获得积极的应用. 本书涉及的机器学习问题通常是指"函数逼近(function approximation)"问题.函数逼近问题是有监督学习(supervised learning)问题的一个子集.线性回归和逻辑回归是解决此类函数逼近问题最常见的算法

《Python机器学习——预测分析核心算法》——第2章 通过理解数据来了解问题

第2章 通过理解数据来了解问题 Python机器学习--预测分析核心算法新数据集(问题)就像一个包装好的礼物,它充满了承诺和希望.一旦你能解决它,你就收获了喜悦.但是直到你打开它,它都一直保持着神秘.本章就是告诉你怎么"打开"新的数据集,看清楚里面都有什么,知道如何处置这些数据,并且开始思考如何利用这些数据构建相应的模型. 本章有两个目的:一是熟悉这些数据集,这些数据集被用来作为解决各种类型问题的例子,主要是利用第4章和第6章介绍的算法:另一个目的就是展示Python中分析数据的工具包

《Python机器学习——预测分析核心算法》——1.6 各章内容及其依赖关系

1.6 各章内容及其依赖关系 依赖于读者的背景和是否有时间来了解基本原理,读者可以采用不同的方式来阅读本书.图1-7为本书各章之间的依赖关系. 第2章仔细审视各种数据集.这些数据集用于本书中的问题实例,用以说明算法的使用,以及各种算法之间基于性能和其他特征的比较.面对一个新的机器学习问题的起点就是深入专研数据集,深入理解数据集,了解它们的问题和特质.第2章的部分内容就是展示Python中可以用于数据集探索的一些工具集.可以浏览第2章中的部分例子,不需要阅读全部例子就可以了解整个流程,当在后续章节

《Python机器学习——预测分析核心算法》——1.1 为什么这两类算法如此有用

1.1 为什么这两类算法如此有用 有几个因素造就了惩罚线性回归和集成方法成为有用的算法集.简单地说,面对实践中遇到的绝大多数预测分析(函数逼近)问题,这两类算法都具有最优或接近最优的性能.这些问题包含:大数据集.小数据集.宽数据集(wide data sets)[1].高瘦数据集(tall skinny data sets)[2].复杂问题.简单问题,等等.Rich Caruana及其同事的两篇论文为上述论断提供了证据. 1."An Empirical Comparison of Supervi

《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄

2.4 基于因素变量的实数值预测:鲍鱼的年龄 探测未爆炸的水雷数据集的工具同样可以用于回归问题.在给定物理测量值的情况下,预测鲍鱼的年龄就是此类问题的一个实例.鲍鱼的属性中包括因素属性,下面将说明属性中含有因素属性后与上例有什么不同. 鲍鱼数据集的问题是根据某些测量值预测鲍鱼年龄.当然可以对鲍鱼进行切片,然后数年轮获得鲍鱼年龄的精确值,就像通过数树的年轮得到树的年龄一样.但是问题是这种方法代价比较大,耗时(需要在显微镜下数年轮).因此更方便经济的方法是做些简单的测量,如鲍鱼的长度.宽度.重量等指

《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程

1.5 构建预测模型的流程 使用机器学习需要几项不同的技能.一项就是编程技能,本书不会把重点放在这.其他的技能用于获得合适的模型进行训练和部署.这些其他技能将是本书重点关注的.那么这些其他技能包括哪些内容? 最初,问题是用多少有些模糊的日常语言来描述的,如"给网站访问者展示他们很可能点击的链接".将其转换为一个实用的系统需要用具体的数学语言对问题进行重述,找到预测所需的数据集,然后训练预测模型,预测网站访问者对出现的链接点击的可能性.对问题用数学语言进行重叙,其中就包含了对可获得的数据

《Python机器学习——预测分析核心算法》——小结

小结 本章介绍了本书要解决的问题以及构建预测模型的处理流程.本书关注两类算法族.限定介绍的算法的数量,可以让我们更透彻地解释这些算法的背景知识以及这些算法的运行机理.本章通过性能对比说明了为什么选择这两类算法.讨论了这两类算法族的特性和各自的优势,并且详细描述了各自适合解决的问题. 本章还介绍了构建一个预测模型的步骤,每个步骤的各种选择的权衡,对输出结果的考虑.非模型训练时使用的数据可以用来评估预测模型. 本书的目的是使机器学习知之甚少的程序员通过本书的学习,能够胜任将机器学习技术引入项目的工作

《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷

2.2 分类问题:用声纳发现未爆炸的水雷 此小节将介绍在分类问题上首先需要做的工作.首先是简单的测量:数据的规模.数据类型.缺失的数据等.接着是数据的统计特性.属性之间的关系.属性与标签之间的关系.本节的数据集来自UC Irvine 数据仓库(见参考文献1).数据来源于实验:测试声纳是否可以用于检测在港口军事行动后遗留下来的未爆炸的水雷.声纳信号又叫作啁啾信号(chirped signal),即信号在一个脉冲期间频率会增加或降低.此数据集的测量值代表声纳接收器在不同地点接收到的返回信号,其中在大

《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示

2.3 对"岩石vs.水雷"数据集属性的可视化展示 可视化可以提供对数据的直观感受,这个有时是很难通过表格的形式把握到的.此节将介绍很有用的可视化方法.分类问题和回归问题的可视化会有所不同.在有鲍鱼和红酒数据集的章节中看到回归问题的可视化方法. 2.3.1 利用平行坐标图进行可视化展示 对于具有多个属性问题的一种可视化方法叫作平行坐标图(parallel coordinates plot).图2-2为平行坐标图的基本样式.图右边的向量([1 3 2 4])代表数据集中某一行属性的值.这