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

1.1 为什么这两类算法如此有用

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

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。

在这两篇论文中,作者选择了各种分类问题,用各种不同的算法来构建预测模型。然后测试这些预测模型在测试数据中的效果,这些测试数据当然不能应用于模型的训练阶段,对这些算法根据性能进行打分。第一篇论文针对11个不同的机器学习问题(二元分类问题)对比了9个基本算法。所选问题来源广泛,包括人口统计学、文本处理、模式识别、物理学和生物学。表1-1列出了此篇论文所用的数据集,所用名字与论文中的一致。此表还展示了针对每个数据集做预测时使用了多少属性(特征)以及正例所占的百分比。

术语“正例”(positive example)在分类问题中是指一个实验(输入数据集中的一行数据)其输出结果是正向的(positive)。例如,如果设计的分类器是判断雷达返回信号是否表明出现了一架飞机,那么正例则是指在雷达视野内确实有一架飞机的那些结果。正例这个词来源于这样的例子:两个输出结果分别代表出现或不出现。其他例子还包括在医学检测中某种疾病出现或不出现,退税中是否存在欺骗。

不是所有的分类问题都处理出现或不出现的问题。例如通过计算机分析一个作家发表的作品或者其手写体的样本来判断此人的性别:男性或女性,在这里性别的出现或不出现是没有什么意义的。在这些情况下,指定哪些为正例、哪些为负例则有些随意,但是一旦选定,在使用中要保持一致。

在第1篇论文的某些数据集中,某一类的数据(例子)要远多于其他类的数据(例子),这叫作非平衡(unbalanced)。例如,2个数据集Letter.p1 和Letter.p2.都是用于解决相似的问题:在多种字体下正确地分出大写字母。Letter.p1的任务是在标准字母的混合集中正确区分出大写字母O,Letter.p2的任务是将字母正确划分成A-M和N-2的两类。表1-1中的“正例百分比”一栏反映了这种数据非平衡的差异性。

表1-1还显示了每个数据集所使用的属性(特征)的数量。特征就是基于此进行预测的变量。例如,预测一架飞机能否按时到达目的地,可能导入下列属性(特征):航空公司的名字、飞机的制造商和制造年份、目的地机场的降水量和航线上的风速与风向等等。基于很多特征做预测很可能是一件很难说清楚是福还是祸的事情。如果导入的特征与预测结果直接相关,那么当然是一件值得祝福的事情。但是如果导入的特征与预测结果无关,就是一件该诅咒的事情了。那么如何区分这两种属性(该祝福的属性、该诅咒的属性)则需要数据来说话。第3章将进行更深入的讨论。

本书涵盖的算法与上述论文中提到的其他算法的比较结果如表1-2所示。针对表1-1列出的问题,表1-2列出了性能打分排前5名的算法。本书涵盖的算法脱颖而出(提升决策树(Boosted Decision Trees)、随机森林(Random Forests)、投票决策树(Bagged Decision Trees)和逻辑回归(Logistic Regression)。前3个属于集成方法。在那篇论文撰写期间惩罚回归还没有获得很好的发展,因此在论文中没有对此进行评价。逻辑回归是属于与之相对比较接近的算法,可以用来评测回归算法的性能。对于论文中的9个算法各有3种数据规约方法,所以一共是27种组合。前5名大概占据性能评分排名的前20%。第1行针对Covt数据集的算法排名可以看到:提升决策树算法占第1名、第2名;随机森林算法占第4名、第5名;投票决策树算法占第3名。出现在前5名但是本书没有涵盖的算法在最后一列列出(“其他”列)。表中列出的算法包括:K最近邻(K Nearest Neighbors, KNNs)、人工神经网络(artificial neural nets, ANNs)、支持向量机(support vector machine, SVMs)。

在表1-2中,逻辑回归只在一个数据集下进入前5。原因是针对表1-2中的数据集规模及其所选的特征,不能体现逻辑回归的优势。相对于数据集的规模(每个数据集有5 000个示例)采用的特征太少了(最多也就200个)。选取的特征有限,因此现有的数据规模足以选出一个合适的预测模型,而且训练数据集规模又足够小,使得训练时间不至太长,因此其他算法也可以获得很好的结果。

注意

正如将在第3章、第5章和第7章中所看到的那样,当数据含有大量的特征,但是没有足够多的数据或时间来训练更复杂的集成方法模型时,惩罚回归方法将优于其他算法。
Caruana等人的最新研究(2008年)关注在特征数量增加的情况下,上述算法的性能。也就是说这些算法面对大数据表现如何。有很多领域的数据拥有的特征已远远超过了第一篇论文中的数据集的规模。例如,基因组问题通常有数以万计的特征(一个基因对应一个特征),文本挖掘问题通常有几百万个特征(每个唯一的词或词对对应一个特征)。线性回归和集成方法随着特征增加的表现如表1-3所示。表1-3列出了第2篇论文中涉及的算法的评分情况,包括算法针对每个问题的性能得分,最右列是此算法针对所有问题的平均得分。算法分成2组,上半部分是本书涵盖的算法,下半部分是其他算法。表1-3中的算法依次为:BSTDT(Boosted Decision Tress)-提升决策树;RF(Random Forests)-随机森林;BAGDT(Bagged Decision Trees)-投票决策树;BSTST(Boosted Stumps)-提升二叉树:LR(Logistic Regression)-逻辑回归;SVM(Support Vector Machines)-支持向量机;ANN(Artificial Neural Nets)-人工神经网络;KNN(Distance Weighted kNN)-距离加权K最近邻;PRC(Voted Perceptrons)-表决感知器;NB(Naive Bayes)-朴素贝叶斯。NB(Naive Bayes)-朴素贝叶斯。

表1-3中的问题是依其特征规模依次排列的,从761个特征到最终的685569个特征。线性(逻辑)回归在11个测试中的5个进入前3。而且这些优异的分数主要集中在更大规模的数据集部分。注意提升决策树(表1-3标为BSTDT)和随机森林(表1-3标为RF)其表现仍然接近最佳。它们针对所有问题的平均得分排名第1、第2。

本书涵盖的算法除了性能外,在其他方面也有优势。惩罚线性回归模型一个重要优势就是它训练所需时间。当面对大规模的数据时,训练所需时间就成为一个需要考量的因素。某些问题的模型训练可能需要几天到几周,这往往是不能忍受的,特别是在开发早期,需要尽早在多次迭代之后找到最佳的方法。惩罚线性回归方法除了训练时间特别快,部署已训练好的模型后进行预测的时间也特别快,可用于高速交易、互联网广告的植入等。研究表明惩罚线性回归在许多情况下可以提供最佳的答案,在即使不是最佳答案的情况下,也可以提供接近最佳的答案。

而且这些算法使用十分简单,可调参数不多,都有定义良好、结构良好的输入数据类型。它们可以解决回归和分类的问题。当面临一个新问题的时候,在1~2小时内完成输入数据的处理、训练模型、输出预测结果是司空见惯的。

这些算法的一个最重要特性就是可以明确地指出哪个输入变量(特征)对预测结果最重要。这已经成为机器学习算法一个无比重要的特性。在预测模型构建过程中,最消耗时间的一步就是特征提取(feature selection)或者叫作特征工程(feature engineering)。就是数据科学家选择哪些变量用于预测结果的过程。根据对预测结果的贡献程度对特征打分,本书涵盖的算法在特征提取过程中可以起到一定的辅助作用,这样可以抛掉一些主观臆测的东西,让预测过程更有一定的确定性。

时间: 2025-01-26 17:04:08

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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