决策树的原理以及使用

1.什么是决策树

决策树是一种解决分类问题的算法。

决策树采用树形结构,使用层层推理来实现最终的分类。

决策树由下边几种元素组成:

  • 根节点:包含样本的全集
  • 内部节点:对应特征属性测试
  • 叶节点:代表决策的结果

预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。

这是一种有监督的学习算法,决策树的这些规则通过训练得到,而不是人工制定的.

决策树是最简单的机器学习算法,易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用.

2.决策树的原理

构造决策树:

构造决策树的关键步骤是分裂属性,所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。

构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,它决定了拓扑结构及分裂点split_point的选择。
属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略。

3.决策树实战讲解鸢尾花分类问题

 1 import numpy as np
 2
 3 from sklearn.tree import DecisionTreeClassifier
 4
 5 from sklearn import datasets
 6
 7 import matplotlib.pyplot as plt
 8 %matplotlib inline
 9
10 from sklearn import tree
11 from sklearn.model_selection import train_test_split
# 加载鸢尾花数据
iris=datasets.load_iris()
X=iris[‘data‘]
y=iris[‘target‘]
# 查看鸢尾花类别的名字
feature_names=iris.feature_names
# 将数据分为训练数据和测试数据,比例是4:1
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=1024)
# 训练数据,预测鸢尾花的种类
# entropy 熵  采用的分类标准是熵,也可以使用gini系数 max_depth 参数表示的是树的深度,默认是最大深度,当然,树的深度越大,精度越高,
clf=DecisionTreeClassifier(criterion=‘entropy‘)
clf.fit(X_train,y_train)
y_=clf.predict(X_test)
from sklearn.metrics import accuracy_score
# 计算准确率
accuracy_score(y_test,y_)
# 查看树的结构
plt.figure(figsize=(18,12))
# filled填充颜色
_=tree.plot_tree(clf,filled=True,feature_names=feature_names)
plt.savefig(‘./tree.jpg‘)

接下来分析一下这个棵树:

(1)其实是按照熵来划分的,那么什么是熵(entropy)呢,计算公式是什么?

熵其实是信息论与概率统计学中的概念,但是在机器学习中用到的也很多.信息熵公式:代表随机变量不确定度的度量

不确定性的变化跟什么有关呢?

一,跟事情的可能结果的数量有关;二,跟概率有关

所以熵的公式:  或者

信息论之父克劳德·香农,总结出了信息熵的三条性质:

  • 单调性,即发生概率越高的事件,其所携带的信息熵越低。极端案例就是“太阳从东方升起”,因为为确定事件,所以不携带任何信息量。从信息论的角度,认为这句话没有消除任何不确定性。
  • 非负性,即信息熵不能为负。这个很好理解,因为负的信息,即你得知了某个信息后,却增加了不确定性是不合逻辑的。
  • 累加性,即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和。

信息增益:信息熵-条件熵

上例中根节点的熵的计算:samples为样本的数量,values为每种花的数量,entropy为熵的值

39/120*np.log2(120/39)*2+42/120*np.log2(120/42)=1.584

之后每个节点的熵都是该计算公式,通过第一个节点的分类,直接将第一类花分出来

(2)对于第一个分类条件,他是根据属性进行划分

鸢尾花有四种属性,第一次分可以根据训练样本的方差,方差越大,说明越离散,越容易分开,之后再使用各种方法判断四种属性就可以了,简言之,这个分类挺麻烦的,不过不是没有依据的,就是根据花的四种属性(花萼的长宽,花瓣的长宽)分类.最终得到三种纯的鸢尾花.

(3)上述的熵也可以改为gini系数,其实是一样的,公式如下

原文地址:https://www.cnblogs.com/xiuercui/p/11962539.html

时间: 2024-11-13 10:05:55

决策树的原理以及使用的相关文章

决策树--从原理到实现

一.引入 决策树基本上是每一本机器学习入门书籍必讲的东西,其决策过程和平时我们的思维很相似,所以非常好理解,同时有一堆信息论的东西在里面,也算是一个入门应用,决策树也有回归和分类,但一般来说我们主要讲的是分类 其实,个人感觉,决策树是从一些数据量中提取特征,按照特征的显著由强到弱来排列.常见应用为:回答一些问题,猜出你心里想的是什么? 为什么第一个问题,永远都是男还是女?为什么?看完这个就知道了 二.代码 1 from math import log 2 import operator 3 4

(数据科学学习手札23)决策树分类原理详解&Python与R实现

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画成图形很像一棵树的枝干,故称决策树.在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系. 一.初识决策树 决策树是一种树形结构,一般的,一棵决策树包含一个根结点,若干个内部结点和若干个叶结点: 叶结点:树的一个方向的最末端,表示结果的输出: 根结点:初始样

决策树原理图表详解

决策树的原理,一个图表就很清楚了,首先,还是要牢记,条件熵是一种最优路径,是概率图模型中,两个随机变量之间的最优条件路径.也就是所有路径熵的期望. H(Y|X) = -sigmaP(X,Y)logP(Y|X) = -sigmaP(X=xi)P(Y|X=xi)logP(Y|X=xi)=-sigmaP(X=xi)H(Y|X=xi) 好了,废话少说,下图是决策树原理 特征A D1 D2 D3 Di A1 D11 D21 D23   A2 D12 D22 D32   A3 D13 D23 D33   A

机器学习实战读书笔记(三)决策树

3.1 决策树的构造 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法 5.测试算法 6.使用算法 3.1.1 信息增益 创建数据集 def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, '

决策树算法原理及实现

(一)认识决策树 1.决策树分类原理 决策树是通过一系列规则对数据进行分类的过程.它提供一种在什么条件下会得到什么值的类似规则的方法.决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树. 近来的调查表明决策树也是最经常使用的数据挖掘算法,它的概念非常简单.决策树算法之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的.直观看上去,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子).判断模块表示

机器学习经典算法详解及Python实现--决策树(Decision Tree)

(一)认识决策树 1,决策树分类原理 近来的调查表明决策树也是最经常使用的数据挖掘算法,它的概念非常简单.决策树算法之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它是如何工作的.直观看上去,决策树分类器就像判断模块和终止块组成的流程图,终止块表示分类结果(也就是树的叶子).判断模块表示对一个特征取值的判断(该特征有几个值,判断模块就有几个分支). 如果不考虑效率等,那么样本所有特征的判断级联起来终会将某一个样本分到一个类终止块上.实际上,样本所有特征中有一些特征

机器学习实战-决策树(ID3)

//==================================================== 决策树的构造: 构造决策树时,需要解决的第一个问题是,当前数据集上那个特征在划分数据是起决定性作用.为了找到决定性特征,我们必须使用某种度量来评估每个特征.完成评估之后,找到决定性特征,使用该特征划分数据,原始的数据集就被划分为几个数据子集.这个子集会发布在第一个决策点的所有分支.如果某个分支下的数据属于同一类型,则当前已经准确划分数据分类.如果数据子集内的数据不属于同一类型,则需要重复

机器学习实战之第三章 决策树(Decision Tree)

第3章 决策树 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script> 决策树 概述 决策树(Decision Tree)算法主要用来处理分类问题,是最经常使用的数据挖掘算法之一. 决策树 场景 一个叫做 "二十个问题" 的游戏,游戏的规则很简单:参与游戏的一

机器学习实战--决策树

决策树概述 决策树利用分层的概念将一个复杂的决策问题分解为多个简单的判断问题,最后逐级得到最大支持度的决策结果. 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据 缺点:可能产生过度匹配问题 适用数据类型:数值型和标称型 决策树算法原理 决策树概念比较简单,用一个男女相亲的例子来描述决策树原理如下: 示例:使用决策树实现分类器 1. 决策树的构造 在构造决策树时,我们需要解决的第一个问题就是,当前数据集上哪个特征在划分数据分类时起决定性作用. (1)信