决策树和随机森林实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机森林算法简介
2001年Breiman把分类树组合成随机森林(Breiman 2001a),即在变量(列) 的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类 树的结果。随机森林在运算量没有显著提高的前提下提高了预测精度。随 机森林对多元公线性不敏感,结果对缺失数据和非平衡的数据比较稳健, 可以很好地预测多达几千个解释变量的作用(Breiman 2001b),被誉为当 前最好的算法之一(Iverson et al. 2008)。 随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决 策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后, 当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行 一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪 一类被选择最多,就预测这个样本为那一类。
提纲
决策树算法和随机森林算法简介 决策树和随机森林实践
Python 进行决策树和随机森林实践
• 系统准备:centos6.8、Spark 2.3.1、Pyrhon3.X • 数据准备:采用UCI机器学习库中的wine数据集作为算法数据,包括了三种酒中13
种不同成分的数量。成分分别为:Alcohol,Malicacid,Ash,lcalinity of ash, Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins, Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文 件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为 类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的 对应属性的样本值。第1类有59个样本,第2类有71个样本,第3类有48个样本。 • 建模目的:训练决策树模型,使得知道13个特征后,把样本划归到相应类别。
随机森林算法的优点
1. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合 2. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入, 使得随机森林具有很好的抗噪声能力 3. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据 集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规 范化 4. 在训练过程中,能够检测到feature间的互相影响
决策树和随机森林简介 与python实践
演讲人:
时间:
提纲
决策树算法和随机森林算法简介 决策树和随机森林实践
决策树算法 简介
决策树是一种用于对实例进行分类的树形结构。决策树由节点(node)和 有向边(directed edge)组成。节点的类型有两种:内部节点和叶子节点。 其中,内部节点表示一个特征或属性的测试条件(用于分开具有不同特性 的记录),叶子节点表示一个分类。 一旦我们构造了一个决策树模型,以它为基础来进行分类将是非常容易的。 具体做法是,从根节点开始,地实例的某一特征进行测试,根据测试结构 将实例分配到其子节点(也就是选择适当的分支);沿着该分支可能达到 叶子节点或者到达另一个内部节点时,那么就使用新的测试条件递归执行 下去,直到抵达一个叶子节点。当到达叶子节点时,我们便得到了最终的 分类结果。
实例: 初始化spark,数据处理划分
# -*-coding:utf-8-*from pyspark import SparkConf, SparkContext from pyspark.mllib.evaluation import MulticlassMetrics from pyspark.mllib.tree import DecisionTree, RandomForest from pyspark.mllib.regression import LabeledPoint # 初始化sparkContext conf = SparkConf().setMaster("local").setAppName("My Demo") sc = SparkContext(conf=conf) # 读取数据 wine_rdd = sc.textFile(u"file:/root/Documents/liangdong/work/laboratory/wine数据集.txt").map(
决策树案例
Βιβλιοθήκη Baidu
左图 是一棵结构简单的决策树,用于预测贷款用户
是否具有偿还贷款的能力。贷款用户主要具备三个
属性:是否拥有房产,是否结婚,平均月收入。每
一个内部节点都表示一个属性条件判断,叶子节点
表示贷款用户是否具有偿还能力。例如:用户甲没 有房产,没有结婚,月收入 5K。通过决策树的根节 点判断,用户甲符合右边分支 (拥有房产为“否”); 再判断是否结婚,用户甲符合左边分支 (是否结婚 为否);然后判断月收入是否大于 4k,用户甲符合 左边分支 (月收入大于 4K),该用户落在“可以偿还” 的叶子节点上。所以预测用户甲具备偿还贷款能力。
决策树的主要优点
1.简单直观,生成的决策树很直观。 2.基本不需要预处理,不需要提前归一化,处理缺失值。 3.使用决策树预测的代价是O(log2m)O(log2m)。 m为样本数。 4.既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者 连续值。 5.可以处理多维度输出的分类问题。 6.相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的 解释 7.可以交叉验证的剪枝来选择模型,从而提高泛化能力。 8.对于异常点的容错能力好,健壮性高。
决策树的主要缺点
1.决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少 样本数量和限制决策树深度来改进。 2.决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。这个 可以通过集成学习之类的方法解决。 3.寻找最优的决策树是一个NP难的问题,我们一般是通过启发式方法,容 易陷入局部最优。可以通过集成学习之类的方法来改善。 4.有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了, 一般这种关系可以换神经网络分类方法来解决。 5.如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可 以通过调节样本权重来改善。