决策树(Decision Tree)理解及参数介绍
1.算法过程
- 决策树的生成是一个递归过程。
1.1递归返回
- 叶节点生成过程
- 当前节点样本全属于同一类,无需划分
- 当前属性集为空或者所有样本在所有属性上取值相同,无法划分,并设置为所含样本最多的类别
- 当前节点样本为空,不能划分,并设置为++父节点++所含样本最多类别
1.2伪代码
定义函数TreeGenerate,输入为样本集D和属性集A;
节点node;
if D中样本全为同一类别C,then node=C,return; # 无需划分
if A is null or D在A上取值相同,then node=D中样本最多的类;# 无法划分
找到最优划分属性a;
遍历(for)属性a中每一个值,av为其中一个值;
从node上生成新分支node1,Dv表示样本D在属性a上取值为av的子集;
if Dv is null, then node1设置为叶节点,标记为D中样本最多的类,return;# 不能划分
else 执行函数TreeGenerate,输入为Dv和去掉a后的A* # 递归过程
遍历(for)结束
1.3划分选择
- 所含样本尽可能属于同一类别,节点++纯度++越来越高。
- 信息熵、信息增益、增益率、基尼指数的公式均需牢记并理解。
1.3.1信息熵
- 度量样本集合纯度最常用的一种指标。越小,纯度越高。最小值为0,即全属于同一类。
1.3.2信息增益
1.3.3增益率
- 增益率对取值数目较少的属性有所偏好。
- C4.5不直接选择增益率最大属性。++先++找出信息增益高于平均水平的属性,++再++从中选择增益率最高的。
- 这样就避免选择了增益率高,但增益反而低的属性。
1.3.4基尼指数
- 反映从数据集随机抽取两个样本,类别标记不一致的概率。
- 选择划分后基尼指数最小的属性。
2.参数介绍
2.1 tree.DecisionTreeClassfier
- criterion:衡量划分质量的方法。‘gini’(默认)基尼指数,'entropy’信息增益
- splitter:节点划分策略。‘best’(默认)最优划分,'random’随机局部最优划分。"best"在特征的所有划分点中找出最优的划分点,"random"随机的在部分划分点中找局部最优的划分点。“best"适合样本量不大的时候,而如果样本数据量非常大,推荐"random”。
- max_depth:++如果max_leaf_nodes参数指定,则忽略++。默认None,nodes are expanded until all leaves are pure or until all leaves contain less than min_samples_split samples.
- min_samples_split:++内部节点++再划分所需最小样本数。default=2,If float, is a percentage and
ceil(min_samples_split * n_samples)
are the minimum number of samples for each split.向上取整 - min_samples_leaf:++叶子节点++最少样本数。++如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。++
- min_weight_fraction_leaf:叶子节点最小的样本权重和。float,默认为0。如果小于这个值,则会和兄弟节点一起被剪枝。默认不考虑权重问题,所有样本的权重相同。一般来说如果我们有较多样本有缺失值或者分类树样本的分布类别偏差很大,就会引入样本权重。++不与min_samples_leaf同时设置。++
- max_features:划分时考虑的最大特征数。default=None,即考虑所有特征。int,float… 特征数很多时使用,减少树的生成时间。
- max_leaf_nodes:int,None(default).最大叶子节点数。++不与max_depth同时设置++。如果设置,算法会建立在max_leaf_nodes内最优的决策树。如果特征不多,可以不考虑这个值。可以防止过拟合。
- min_impurity_decrease:节点划分最小不纯度。float,默认值为0。限制决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小与这个阈值,则该节点不再生成子节点。
- min_impurity_split:和上一个参数类似,不再使用。
- class_weight:类别权重。默认为None,(dict, list of dicts, balanced)为了防止训练集某些类别的样本过多,导致训练的决策树过于偏向这些类别。balanced,算法自己计算权重,样本量少的类别权重会更高。如果样本类别分布没有明显的偏倚,则可以不管这个参数。不适用于回归树。
2.2 tree.DecisionTreeRegressor
- criterion:衡量划分质量的方法。‘mse’(default)均方误差;'friedman_mse’均方误差近似,最小化L2 loss;'mae’平均绝对误差,最小化L1 loss。
- splitter、max_depth、min_samples_split、min_samples_leaf、min_weight_fraction_leaf、max_features、max_leaf_nodes、min_impurity_decrease:同分类树。
2.3 tree.ExtraTreeClassifier & tree.ExtraTreeRegressor
- Extremely randomized trees 极端随机树
与传统树的区别
- 随机选择max_features个特征,最佳随机划分。
Warning: ++Extra-trees should only be used within ensemble methods++
ensemble.ExtraTreeClassifier/ensemble.ExtraTreeRegressor
参数
- splitter:默认’random’ VS 传统树’best’
- max_features:默认’auto’ VS 传统树None
决策树(Decision Tree)理解及参数介绍相关推荐
- 算法杂货铺——分类算法之决策树(Decision tree)
算法杂货铺--分类算法之决策树(Decision tree) 2010-09-19 16:30 by T2噬菌体, 88978 阅读, 29 评论, 收藏, 编辑 3.1.摘要 在前面两篇文章中,分别 ...
- 数据分类:决策树Decision Tree
背景 决策树(decision tree)是一种基本的分类和回归(后面补充一个回归的例子?)方法,它呈现的是一种树形结构,可以认为是if-then规则的集合.其其主要优点是模型具有很好的可读性,且分类 ...
- 决策树Decision Tree 和随机森林RandomForest基本概念(一)
文章目录 一.决策树介绍 1.1 什么是决策树 1.2 决策树种类 1.3 决策树学习过程 1.4 Entropy(熵) 1.5 information gain(信息增益) 1.6 信息论 1.8 ...
- 决策树(Decision Tree)简介
决策树(Decision Tree)及其变种是另一类将输入空间分成不同的区域,每个区域有独立参数的算法.决策树分类算法是一种基于实例的归纳学习方法,它能从给定的无序的训练样本中,提炼出树型的分类模型. ...
- 决策树 Decision Tree 简介
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 决策树 ...
- Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- 决策树分类python代码_分类算法-决策树 Decision Tree
决策树(Decision Tree)是一个非参数的监督式学习方法,决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类 ...
- 决策树Decision Tree+ID3+C4.5算法实战
决策树Decision Tree 决策树的三种算法: 举个栗子: 熵entropy的概念: 信息熵越大,不确定性越大.信息熵越小,不确定性越小. 其实就是排列组合之中的概率,概率相乘得到其中一个组合, ...
- 机器学习算法实践:决策树 (Decision Tree)(转载)
前言 最近打算系统学习下机器学习的基础算法,避免眼高手低,决定把常用的机器学习基础算法都实现一遍以便加深印象.本文为这系列博客的第一篇,关于决策树(Decision Tree)的算法实现,文中我将对决 ...
最新文章
- Redis第一集:Windows下安装Redis和测试
- 快速排序及优化(Java实现)
- C#+SQL Server图片存取
- Linker command failed with exit code 1(use -v to see invocation)
- android supportv4最新版本19.1,Android Studio:无法找到:’com.android.support:support-v4:19.1.0′...
- 浅谈Proxmark3 Easy Gui 4.0 5.0 5.1加强版
- outlook 2010邮件传输接口错误解决一例
- ubuntu 无法识别Usb
- php返回代码翻译,php 在线翻译函数代码
- 使用sqlplus显示中文为乱码的解决办法
- mysql数据库更新数据库语句_MySQL数据库之UPDATE更新语句精解
- html5 打字机效果,逼真的js打字机效果插件
- [WebView] - WebView leaked
- 【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)
- 单片机反相器_TTL反相器的基本电路
- 贝叶斯学派:先验分布、后验分布、共轭分布、共轭先验分布
- (ch1 ch2)c语言,设有如下程序char ch1=A',ch2=’a’;printf(%c”,(ch1, ch2));则以下叙述中正确的是()。...
- 简历模板和PPT素材
- 推特如何解除敏感内容限制
- puzzy(puZZySex)