这就是随机森林模型的基本原理。它通过生成很多不同的决策树,并用投票的方式来融合它们的结果,从而提高了预测的准确性和稳定性。
这样,你就得到了很多不同的结果,你可以用投票的方式来确定最终的结果。也就是说,你看看哪个结果出现的次数最多,就认为那个结果是最准确的。比如,在这个例子中,单人动作古代游戏出现了两次,多人动作古代游戏出现了一次,其他类型的游戏都没有出现,所以你就认为小明最喜欢玩单人动作古代游戏。
同样地,你可以让他在其他的决策树上也回答相应的问题flash编写网页游戏吗,然后看看其他的决策树给出的结果。比如,决策树2给出结果:小明喜欢玩多人动作古代游戏,决策树3给出结果:小明喜欢玩单人动作古代游戏。
决策树3:喜欢玩单人动作古代游戏的有2个,喜欢玩多人策略现代游戏的有5个,喜欢玩单人策略现代游戏的有2个,喜欢玩多人动作古代游戏的有1个。 当你想知道某个朋友最喜欢玩什么类型的游戏时,你可以让他在每个决策树上回答相应的问题,然后看看每个决策树给出的结果。比如,你想知道小明最喜欢玩什么类型的游戏,你可以让他在决策树1上回答:
随机森林模型网页游戏大全
决策树2:喜欢玩单人动作古代游戏的有3个,喜欢玩多人策略现代游戏的有4个,喜欢玩单人策略现代游戏的有1个,喜欢玩多人动作古代游戏的有2个。
决策树1:喜欢玩单人动作古代游戏的有4个,喜欢玩多人策略现代游戏的有3个,喜欢玩单人策略现代游戏的有2个,喜欢玩多人动作古代游戏的有1个。
随机森林模型就是用很多不同的决策树来表示你的朋友对游戏类型的喜好。每个决策树都是随机生成的,也就是说,每次你只问一部分朋友(比如10个),而且每次只问一部分问题(比如3个)。这样,每个决策树都会有不同的结果,比如:
这样,你就用一个决策树来表示了你的朋友对游戏类型的喜好。但是,这个决策树可能不太准确,因为你只问了几个问题,而且每个问题只有两个选项。也许有些朋友喜欢玩多种类型的游戏,或者有些问题对他们来说不太重要。
森林中的树木以及更重要的是,它们的预测需要不相关(或者至少彼此之间的相关性较低)。虽然算法本身通过特征随机性试图为我们设计这些低相关性,但是我们选择的特征和我们选择的超参数也会影响最终的相关性。
随机森林是一种由许多决策树组成的分类算法。在构建每棵单独的树时,它使用bagging和特征随机性,试图创建一个不相关的树的森林,委员会的预测比任何单独的树都准确。
随机森林是我个人的最爱。因为来自金融和投资领域的圣杯,总是建立一堆不相关的模型,每个模型都有正的预期回报,然后把它们放在一个投资组合中,获得巨大的alpha(alpha =市场跳动回报)。说起来容易做起来难!
因此,在我们的随机森林中,我们得到的树不仅针对不同的数据集进行训练(多亏了bagging),而且还使用不同的特性来做出决策。
现在我们来看看随机森林。在本例中,我们将只研究森林中的两棵树。当我们检验随机森林树1时,我们发现它只能考虑feature 2和feature 3(随机选择)来进行节点分割决策。我们从传统的决策树(蓝色)中知道,Feature 1是用于分割的最佳特性,但是树 1不能看到Feature 1,因此它只能选择Feature 2(黑色,下划线)。另一方面,树2只能看到特性1和特性3,因此它能够选择Feature 1。
让我们来看一个可视化的例子,在上面的图中,传统的决策树(蓝色)在决定如何分割节点时可以从所有四个特性中进行选择。它决定使用Feature 1(黑色和下划线),因为它将数据分割成尽可能分离的组。
特征随机性——在一个普通的决策树中,当需要分割一个节点时,我们考虑每一个可能的特征,并选择一个在左节点和右节点的观察结果之间产生最大分离的特征。相反,随机森林中的每棵树只能从特征的随机子集中选取。这使得模型中的树之间的差异更大,最终导致树之间的相关性更低,多样性更强。
注意,使用bagging时,我们没有将训练数据细分为更小的块,而是在不同的块上训练每棵树。相反,如果我们有一个大小为N的样本,我们仍然向每棵树提供一个大小为N的训练集(除非另有说明)。但是我们没有使用原始的训练数据,而是随机抽取一个N大小的样本进行替换。例如,如果我们的训练数据是[1、2、3、4、5、6],那么我们可以给我们的树中的一个列表[1、2、2、3、6、6]。注意,这两个列表的长度都是6,并且"2"和"6"都在随机选择的训练数据中重复出现,我们将这些数据提供给我们的树(因为我们使用替换抽样)。
Bagging (Bootstrap Aggregation)——决策树对它们所训练的数据非常敏感,且对训练集的微小更改可以导致明显不同的树结构。随机森林利用了这一点,允许每棵单独的树从数据集中随机抽取样本,并进行替换,从而生成不同的树。这个过程被称为bagging。
因此,即使游戏具有相同的期望值,它们的结果分布也完全不同。我们把100美元的赌注分成不同的部分越多,我们就越有信心赚到钱。如前所述,这是因为每个剧本都是独立于其他剧本的。
那分布呢?让我们用蒙特卡洛模拟可视化结果(我们将对每种游戏类型运行10,000个模拟;例如,我们将模拟10000次游戏1)的100个玩法。尽管期望值是相同的,但结果分布从正的和窄的(蓝色)到二进制(粉红色)大不相同。
如果我生成的数大于或等于40,你赢了(所以你就有60%的机会赢),我付给你一些钱。如果低于40,我赢,你付给我同样的金额。
拥有许多不相关的模型的奇妙效果是一个非常重要的概念,因此我想向你展示一个示例来帮助你真正的理解它。想象一下,我们正在玩以下游戏:
模型之间的低相关性是关键。就像低相关性的投资(如股票和债券)如何组合在一起形成一个大于各部分之和的投资组合一样,不相关模型也可以产生比任何单个预测更准确的总体预测。产生这种奇妙效果的原因是,树木可以互相保护,避免各自的错误(只要它们不总是在同一个方向出错)。虽然有些树可能是错的,但是很多其他的树是对的,所以作为一个群体,这些树能够朝着正确的方向移动。因此,随机森林要想表现良好,其先决条件是:
随机森林,顾名思义,由大量独立的决策树组成,它们作为一个整体运行。随机森林中的每棵树都有一个类预测,投票最多的类将成为我们模型的预测(见下图)。
带下划线的两个1向下到Yes子分支上,而没有下划线的0向下到右边的子分支上,这些我们都做完了。我们的决策树能够使用这两个特性来完美地分割数据。
No分支(蓝色)现在都是0,所以我们已经完成了,但是Yes分支仍然可以被进一步分隔。现在我们可以使用第二个特性并询问:"它是否带下划线?"可第二次分隔。
颜色似乎是一个非常明显的特征,因为除了一个0以外,所有的0都是蓝色的。所以我们可以用"是不是红色"来分隔第一个节点。你可以将树中的节点视为路径分成两个部分的点,从而使满足条件的观察值沿着Yes分支向下,而不沿着No分支向下。
假设我们的数据集由左上方的数字组成。我们有两个1和5个0(1和0是我们的类),并且希望使用它们的特性来分隔类。主要的特征是颜色(红色和蓝色)以及观察是否加下划线。那么我们怎么做呢?
让我们快速回顾一下决策树,因为它们是随机森林模型的构建块。幸运的是,它们非常直观。我敢打赌,大多数人在生活的某个时刻,都有意无意地使用过这个决策树。
在这篇文章中,我们将研究基本决策树是如何工作的,如何将个体决策树组合成一个随机森林,并最终发现为什么随机森林在它自己的领域十分如鱼得水。
当前随机森林模型支持分类任务,需要确保标签项(因变量Y)为定类数据,如果为定量连续数据,也或者样本量较少(或者非会员仅分析前100个样本)时可能出现无法计算因而提示数据质量异常。
保存预测值时,SPSSAU会新生成一个标题用于存储模型预测的类别信息,其数字的意义与模型中标签项(因变量Y)的数字保持一致意义。
如果数据量很大,比如1万,那么训练集比例可以较高比如0.9,如果数据量较小,此时训练集比例选择较小预留出较多数据进行测试即可。
上述参数信息仅为再次输出汇总,并无其它目的,最后SPSSAU输出使用python中slearn包构建本次随机森林模型的核心代码如下:
‘混淆矩阵’时,右下三角对角线的值越大越好,其表示预测值和真实值完全一致。上图中仅B类中2个样本被判断成C类,其余全部正确,意味着本次随机森林模型在测试数据上表现良好。最后SPSSAU输出模型参数信息值,如下表格:
针对特征权重重要性对比上,X3和X4对于随机森林模型构建决策帮助较大,而X1的帮助相对最低(特别提示:此处与决策树模型结论差别较大,这在特征项较少且数据量较少时出现较为正常)。
上述表格中,基本信息汇总仅展示出因变量Y(标签项)的分类分布情况,特征模型图和特征权重图可用于查看特征的相对重要性对比情况;模型评估结果(包括训练集或测试集),其用于对模型的拟合效果判断,尤其是测试集的拟合效果,非常重要,因而SPSSAU单独提供测试集结果混淆矩阵,用于进一步查看测试集数据的效果情况;模型汇总表格将各类参数值进行汇总,并且在最后附录随机森林模型构建的核心代码。
SPSSAU共输出6项结果,依次为基本信息汇总,决策树结构图,特征模型图和特征权重图,训练集或测试集模型评估结果,测试集结果混淆矩阵,模型汇总表和模型代码,如下说明:
节点分裂标准默认为gini系数即可,不需要设置,最大特征数目限制默认自动进行即可,决策树数量SPSSAU默认为100,通常不需要设置,选中有放回采样和袋外数据测试。如果要进行参数设置,通过是对决策树模型已有的参数,包括“节点分列最小样本量”、“叶节点最小样本量”、“树最大深度”共3个参数进行设置,然后对比不同参数情况下模型的好坏,选择最优模型。本案例暂以默认值进行即可。
训练集比例默认选择为:0.8即80%(150*0.8=120个样本)进行训练随机森林模型,余下20%即30个样本(测试数据)用于模型的验证。需要注意的是,多数情况下,会首先对数据进行标准化处理,处理方式一般使用为正态标准化,此处理目的是让数据保持一致性量纲。当然也可使用其它的量纲方式,比如区间化,归一化等。
随机森林时,通常可以对“节点分列最小样本量”、“叶节点最小样本量”、“树最大深度”进行参数设置,该3个参数值与决策树模型完全一致,可参考决策树模型手册(点击后跳到决策树模型的帮助手册页面)。
袋外数据测试:比如100个样本随机抽100个,某些样本重复被抽到,可能余下一些编号无论如何也没有抽到,该类数据称为‘袋外数据’,此部分数据可在测试数据中进行使用。该参数不被选中时,即测试模型不使用袋外数据进行测试。
是否有放回抽样:随机抽样原理上,比如100个样本中抽100个,第1次抽到编号5,第2次是否还可能继续抽到编号5,如果是放回抽样则可能,如果是不放回抽样则不可能再抽到编号5,正常情况下应该使用放回抽样闪电盒子里面的游戏怎么登陆,尤其是在样本数据集较少时。
决策树数量:默认值为100,即构建100模决策树,该参数值可自行设置,通常不需要设置,决策树数量越多,模型构建越稳定,但模型运行时间越长。
最大特征数目限制:随机森林构建多棵决策树,每棵决策树不一定使用全部的特征(即自变量X),其可只使用部分特征,此参数值设置使用特征数量限制,通常情况下不需要对该参数设置,系统自动判断即可。
上述参数中,节点分裂标准、节点分列最小样本、叶节点最小样本量和树最大深度共四个参数值,其与决策树模型完全一致,具体可参考决策树模型手册(点击后跳到决策树模型的帮助手册页面)。
比如本案例有150个样本,使用80%即120个样本用于训练模型,并且训练3个决策树(此处3为决策树数量参数值,可自行设置),该3个决策树的数据是随机抽样得到,构建得到3个决策树后,使用投票策略进行最终决策,该述整个模型即为随机森林模型全貌。具体涉及相关参数信息,如下:
随机森林时依旧使用经典的‘鸢尾花分类数据集’进行案例演示,共为150个样本,包括4个特征属性(4个自变量X),分别是花萼长度,花萼宽度,花瓣长度,花瓣宽度,标签为鸢尾花卉类别,共包括3个类别分别是刚毛鸢尾花、变色鸢尾花和弗吉尼亚鸢尾花(下称A、B、C三类)。
上述中提及随机森林模型是多个决策树模型的综合,但是数据本身就只有一份,其是如何做到多个决策树模型呢?此处涉及到随机抽样原理,比如有100个数据,第1次随机从其中随机抽取100个数据,就得到一份新数据,即可使用该新数据进行一次决策树模型构建,接着第2次重复随机抽取100个数据,又得到一份新数据,再次使用新数据进行一次决策树模型构建。不停地重复循环上述步骤,即得到多个决策树模型;至于应该是多少个决策树,这可由参数设置决定。在得到多个决策树后,利用投票方式(比如多份数据均指向应该为A类别,那么就为A类别)或者求解均值概率方式来统计最终的分类结果。
阅读随机森林模型前,建议首先阅读决策树模型手册(点击后跳到决策树模型的帮助手册页面),因为随机森林模型实质上是多个决策树模型的综合,决策树模型只构建一棵分类树,但是随机森林模型构建非常多棵决策树,相当于在重复决策树模型。随机森林模型基于随机样本进行构建,并且在每个树节点时,考虑到分裂随机特征性,因而一般意义上,随机森林模型优于决策树模型(但并不一定,实际研究中应该以数据为准)。
专题: 三国记单机游戏 三国演游戏单机 三国单机游戏神上一篇手机卫士老是跳出网页游戏
下一篇黑白插图网页游戏版本更新