决策树
认识决策树
- 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
- 信息的单位:比特bite
信息熵和香农定理
- https://blog.csdn.net/dyx810601/article/details/82226456
- 信息熵在信息传递和压缩中常见
- 当得到一些信息时信息熵就减小了
- 信息和消除不确定性是相联系的:信息熵越大,不确定性越大
- 决策树中把能减少更多的不确定性(信息熵)放在根上
决策树的划分依据之一:信息增益
- 信息增益:当得知一个特征条件之后,减少的信息熵的大小
- 特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为:g(D,A)=H(D)-H(D|A)
常见决策树使用的算法
- ID3
- 信息增益 - 最大的准则
- C4.5
- 信息增益比 - 最大的准则
- CART
- 回归树:平方误差最小
- 分类树:基尼系数 最小的准则 在sklearn中可以选择划分的默认原则 划分更加仔细
- 基尼系数
sklearn决策树API
sklearn.tree.DecisionTreeClassifier(criterion='gini',max_depth=None,random_state=None)
- 决策树分类器
criterion
:默认是’gini’系数,也可以选择信息增益的熵‘entropy’max_depth
:树的深度大小random_state
:随机数种子method
:decision_path
:返回决策树的路径
决策树的结构、本地保存
sklearn.tree.export_graphviz()
该函数能够导出DOT格式tree,export_graphviz(estimator,out_flie='tree.dot',feature_names=[","])
- 查看dot文件的工具:graphviz
信息论基础–银行贷款分析
- 特征
- 年龄;是否有工作;是否有房子;信贷情况;类别
决策树的优缺点以及改进
-
优点:
- 简单的理解和解释,树木可视化。
- 需要很少的数据准备,技术通常需要数据归一化
- 在企业重要决策中,由于决策树很好的分析能力,在决策过程中应用较多,可以找到主要决策因素
-
缺点
- 决策树学习者可以创建不能很好地推广数据地过于复杂的树,这被称为过拟合
-
改进
- 减枝cart算法(决策树API当中已经实现,随机森林参数调优):小于参数的sample分支不要
- 随机森林
集成学习方法之一:‘’‘’‘’‘’‘’‘’‘’‘’‘’随机森林
- 集成学习方法:通过建立几个模型组合来解决单一预测问题。它的工作原理是生成多个分类/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类地做出预测
- 定义:在机器学习中,随机森林是一个包含多个决策树地分类器,并且其输出地类别是由个别输出的类别的众数而定。
- 例如:如果你训练了5个树,其中有4个数的结果是True,1个是False,那么最终结果会是True
随机森林建立多个决策树的过程
- 单个树的建立过程
- 1.随机在N个样本中选择一个样本,重复N次(样本有可能重复,有放回)
- 2.随机在M个特征中选择m个特征,m<<M
- 建立多颗决策树,样本特征大多不一样
- bootstrap:随机有放回抽样
- 为什么要随机抽样训练集
- 如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出来的决策树的分类结果也完全一样
- 为什么要有放回地抽样
- 如果不是有放回地抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是“有偏的",都是绝对”片面的“,也就是说每棵树训练出来都是有很大差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决。
随机森林API
sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion='gini',max_depth=None,bootstrap=True,random_state=None)
n_estimators
:森林里的树木的数量,default=10,有120,200,300,500,800,1200criteria
:分割特征的测量方法,default=“gini”max_depth
:树的最大深度,default为无max_features="auto"
,每个决策树的最大特征数量,有"sqrt",“log2”,“None”boostrap
:是否在构建树时放回抽样,default=True
随机森林的优点
- 在当前所有算法中,具有极好的准确率
- 能够有效地运行在大数据集上:样本多,特征多
- 能够处理具有高维特征的输入样本,而且不需要降维
- 能够评估各个特征在分类问题上的重要性