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

简介:

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

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中的“正例百分比”一栏反映了这种数据非平衡的差异性。

119836f1565984f51cccdd66ab5c9ce7ef0fbc84

表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)。

34ef6401bb470aa0a369fd40a8e6f0ee980562a1

在表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。

e0b6350524a387cda9164486e6ac2db8f133ba21

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

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

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

相关文章
|
3天前
|
机器学习/深度学习 数据挖掘 网络架构
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
15 0
|
3天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
27 1
|
1天前
|
算法 数据可视化 Python
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
12 6
|
2天前
|
机器学习/深度学习 算法 搜索推荐
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
30 12
|
2天前
|
API vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列(上)
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
30 5
|
7天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
8天前
|
机器学习/深度学习 Python
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
19 0
|
8天前
|
算法 数据可视化 Python
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
12 0
|
8天前
|
数据可视化 算法 数据挖掘
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
|
8天前
|
机器学习/深度学习 Python 数据处理
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
34 0
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据

热门文章

最新文章