42

机器学习预测2018年世界杯冠军队

 5 years ago
source link: http://www.10tiao.com/html/573/201806/2652797570/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

点击关注 异步图书,置顶公众号

每天与你分享 IT好书 技术干货 职场知识


参与文末话题讨论,每日赠送异步图书

——异步小编

麻省理工学院报道,他们开发了一种新型人工智能,用以预测世界杯走势而应用了一种名为random-forest的计算方法,通过结合机器自我学习和常规统计,其准确率可能远胜于传统的统计方法。

在众多资深评论员的预测中,巴西拥有16.6%的最高夺冠几率,德国和西班牙紧随其后,夺冠概率分别有12.8%和12.5%。但random-forest认为,西班牙拥有更高的夺冠几率,其捧杯概率为17.8%,高于德国。这其中主要是因德国在16强中失利的可能性相对较大。在麻省理工的相关报告中,他们表示:

“西班牙比德国稍受AI青睐,这主要是因为德国在16强被爆冷的可能更高。”

近年来random-forest已经成为一种分析大型数据集的可靠方法,其在运行分析的同时规避了其他数据挖掘系统的一些缺陷。Random-forest的主要运算逻辑基于未来事件可以由决策树来决定这一原则,而决策树通过分析每一组数据集来得出其相应分支的结果。

在麻省理工的报告中称,影响西班牙和德国未来走向的重要因素是赛事本身的结构。他们指出,如果德国在小组阶段出线,其在16强淘汰赛面临的挑战将远大于西班牙,“翻车”的可能性不小。基于此点,random-forest通过计算,认为德国进入1/4决赛的概率只有58%;相比之下,西班牙则有73%的机率进入八强。

当然,假如西班牙和德国都成功进入1/4决赛,那么他们将有平等的机会最终捧杯。

random-forest中文翻译为随机森林,随机森林离不开决策树,下面我们就聊聊决策树和random-forest是如何计算的。

决策树模型虽然简单明了,但单独使用时效果并不理想。决策树和逻辑回归配合使用,将两种模型联结成为一个整体后,模型的效果得到了明显的提升。但由于其中涉及两种完全不同的模型,在数学上很难给这种联结方式一个比较理想的抽象,因此在工程实现上,很难做到自动寻找最优的模型组合。

为了使模型间的组合更加自动化,最常规或者最成熟的做法就是只使用一种模型,比如决策树。通过某种方式将多个决策树组合起来,使用它们的“集体智慧”来解决问题,学术上被称为集成方法(ensemble method)。

针对决策树的集成方法通常可以被分为两类:平均方法(averaging methods)和提升方法(boosting methods)。它们的代表模型分别是随机森林和GBTs。

    1.1随机森林


随机森林(random forests)由n个决策树组成,模型的预测结果等于各决策树结果的某种“加权平均”,如图1所示。

图1


•  对于分类问题,最终结果等于在决策树预测结果中出现次数最多的类别。直观上,可以将每个决策树想象成一个人,而随机森林想象成一场投票,通过少数服从多数的原则得到最终的结果。

•  对于回归问题,最终结果等于决策树预测结果的平均值。

随机森林的建模依据是:一棵树犯错的概率比较大,但很多树同时犯错的概率就很小了。通过一个简单的例子,从数学上来证明一下这种做法的正确性。假设针对某个分类问题,有3棵相互独立的决策树,它们各自预测错误的概率为20%。如果将它们按少数服从多数的原则组合起来,形成一个随机森林,那么预测犯错的情况可分为如下两种:3棵决策树都错误或者只有一棵树预测正确。计算可得这个随机森林的犯错概率下降到10.4%。

〖0.2〗^3  + 3 × 〖0.2〗^2  × 0.8 = 10.4% (8-34)

由上面的例子可以看到,随机森林预测效果最重要的保证是森林中的决策树是相互独立的(极端地,假设森林中的每棵树都是一样的,则随机森林模型等同于决策树模型)。那么针对同一份训练数据,应该如何产生随机的决策树呢?

首先回顾一下决策树划分节点的具体步骤。使用训练集中的所有数据(假设数据被分为训练集和测试集)训练模型。对于需要划分的节点,选择最优的一个自变量以及相应的阈值,将其划分为左右两个子节点,使得子节点的不纯度之和达到最小。因此,可以从如下的3个层面引入决策树的随机性。

•  对于每个决策树,从原始训练集中随机选取训练该决策树的数据。

•  在划分节点时,并不遍历全部自变量,而是随机挑选其中的一部分作为候选自变量。

•  在选择自变量的划分阈值时,并不求得最优的解,而是随机构成一个候选阈值集合,并从中选取效果最优的(子节点的不纯度之和最低)。

针对随机森林,第三方库scikit-learn提供了两种实现:random forests和extremely randomized trees。这两者的差异在于random forests实现了随机性中的前两点,即训练数据随机以及候选自变量随机,而extremely randomized trees实现了随机性中的全部3点。在代码层面,这两类模型被封装成4个类(模型的参数和调用代码与决策树类似,在此不再赘述,有兴趣的读者请参考scikit-learn官方网站)。

•  random forests 包括两个类:用于分类问题的RandomForestClassifier和用于回归问题的RandomForestRegressor。

•  extremely randomized trees也包含两个类:ExtraTreesClassifier和ExtraTreesRegressor。它们分别解决分类问题和回归问题。

    1.2Random forest embedding


随机森林虽然是监督式学习,但它其实同样能处理没有标签变量的数据(或者故意不使用数据中的标签变量)。也就是说随机森林能被当作非监督式学习的模型使用[ ],先来看看这种方法的具体步骤。

假设训练数据一共有n个且数据由m维向量表示,记为{X_i  = (x_(i,1),x_(i,2),...,x_(i,m)),1 "≤" i "≤" n}。将这n个原始数据都归为一类,也就是说凭空生成标签变量{y_i  = 0,1 "≤" i "≤" n}。然后按如下的方法生成合成数据{X_i,n + 1 "≤" i "≤" 2n}:对于数据X_(n + 1),从原始数据第1个变量的取值里(即{x_(i,1)})随机抽取一个作为它的第1个变量;从原始数据第2个变量的取值里(即{x_(i,2)})随机抽取一个作为它的第2个变量,并以此类推,生成合成数据X_(n + 1)。不断重复上面的这个过程,直到生成n个新的合成数据。数据生成完成之后,将合成数据归为另一类,即{y_i  = 1,n + 1 "≤" i "≤" 2n},整个过程如图2所示。

图2


原始数据、合成数据以及生成的标签变量放在一起,就构成了有标签的训练数据,不妨记为{(X_i,y_i),1 "≤" i "≤" 2n}。对于这样的数据,可以对其使用随机森林进行分类,这样操作的目的有两个[ ]。

•  分析各个变量之间是否存在比较强烈的相关关系。同原始数据相比,合成数据里每个变量的分布情况是没有变化的(因为随机抽取)。唯一不同的是,合成数据破坏了原始数据中各个变量间可能存在相关关系。因此当分类结果的误差较大时,说明原始数据的各个变量几乎是相互独立,反之则说明各变量间的相关关系比较强烈。

•  将原本较低维度的原始数据映射到高维空间,同支持向量学习机中的核函数类似。这在学术上被称为random forest embedding,也是如此使用随机森林的主要目的。下面将讨论它的具体细节。

在上节中,我们讨论了如何利用决策树来做特征提取,而随机森林是由n棵决策树组成,因此相应的处理方法与之很相似。举个例子,假设训练好的随机森林(训练数据为{(X_i,y_i),1 "≤" i "≤" 2n})里有两棵决策树,它们的叶子节点数分别为2和4。第i个数据X_i落在了第一棵决策树的第1个叶子,第二棵决策树的第2个叶子。那么这个数据相应的新特征为(1, 0, 0, 1, 0, 0),如图3所示,这样就完成了低维数据到高维数据(随机森林里决策树的个数可以很大)的映射。random forest embedding方法常配合其他监督式学习模型一起使用.

图3


为了提升模型效果,需要借鉴支持向量学习机(SVM)中核函数(kernel method)的做法,将低维数据映射到高维空间,而且需要保证在高维空间里,各变量的取值只能是0或者1。random forests embedding正好满足这样的要求,因此在实际中,常使用它将数据升到高维,再在此基础上使用伯努利模型对数据进行分类。 

举个简单的例子,假设原始数据只有两个变量x_1,x_2,将数据表现在平面上,可以得到如图3所示的图形,图中的三角形表示类别0,而圆点表示类别1,两个类别均呈半月型。如程序清单9-4所示,先使用RandomTreesEmbedding将原始的二维数据映射到高维空间,再使用BernoulliNB对变换后的数据做分类。分类的结果还不错,图4中灰色部分的预测结果是类别0的区域,而白色区域的预测结果是类别1。

图4

来看下代码清单

程序清单 朴素贝叶斯之random forest embedding + 伯努利
 1    |  from sklearn.ensemble import RandomTreesEmbedding
 2    |  from sklearn.naive_bayes import BernoulliNB
 3    |  from sklearn.pipeline import Pipeline
 4    |  
 5    |  def trainModel(data):
 6    |      """
 7    |      使用random forest embedding+伯努利模型对数据建模
 8    |      """

 9    |      pipe = Pipeline([("embedding", RandomTreesEmbedding(random_state=1024)),
10    |          ("model", BernoulliNB())])
11    |      pipe.fit(data[["x1""x2"]], data["y"])
12    |      return pipe


本文摘自《精通数据科学:从线性回归到深度学习》 

《精通数据科学:从线性回归到深度学习》

唐亘  


京东购书          当当购书

数据科学入门到实战,介绍数据科学常用的工具——Python、数学基础及模型,讨论数据科学的前沿领域——大数据和人工智能,包括机器学习领域经典的模型、分布式机器学习、神经网络和深度学习等。 

  • 在数据学科的角度,融合了数学、计算机科学、计量经济学的精髓

  • 为读者阐释了数据科学所要解决的核心问题—数据模型、算法模型的理论内涵和适用范围 

  • 以常用的IT工具—Python为基础,教会读者如何建模以及通过算法实现数据模型,具有很强的实操性。 

  • 本书还为读者详解了分布式机器学习、神经网络、深度学习等大数据和人工智能的前沿技术。

今日互动

你觉得2018年冠军球队是哪个?为什么?截止时间6月22日17时,留言+转发本活动到朋友圈,小编将抽奖选出3读者赠送纸书1本和2张e读版20元异步社区代金券,(留言点赞最多的自动获得一张)。



推荐阅读

2018年5月新书书单(文末福利)

2018年4月新书书单

异步图书最全Python书单

一份程序员必备的算法书单

第一本Python神经网络编程图书



长按二维码,可以关注我们哟

每天与你分享IT好文。


异步图书”后台回复“关注”,即可免费获得2000门在线视频课程

点击阅读原文,购买《精通数据科学 从线性回归到深度学习》


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK