决策树算法

人工智能61

目录

一、决策树原理

  1. 认识决策树
    决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法怎么理解这句话?通过一个对话例子
    决策树算法
    决策树,如上图所示,将每个特征分为两类,并想想为什么这个女孩把她的年龄放在首位!

    [En]

    The decision tree, as shown in the picture above, classifies each feature into two categories, and think about why this girl puts her age at the top!

  2. 1决策树分类原理详解
    为了更好理解决策树具体怎么分类的,我们通过一个问题例子
    决策树算法
    问题:如何对这些客户进行分类预测?你是如何去划分?
    有可能你的划分是这样的
    决策树算法
    那么,我们如何知道这些功能中的哪一个在顶部更好呢?那么决策树的划分实际上是这样的。

    [En]

    So how do we know which of these features is better at the top? then the division of the decision tree is really like this.

    决策树算法
    2.2 信息熵
    那来玩个猜测游戏,猜猜这32支球队那个是冠军。并且猜测错误付出代价。每猜错一次给一块钱,告诉我是否猜对了,那么我需要掏多少钱才能知道谁是冠军? (前提是:不知道任意球队的信息、历史比赛记录、实力等)

决策树算法
为了使代价最小,可以使用二分法猜测:
我可以把球编上号,从1到32,然后提问:冠 军在1-16号吗?依次询问,只需要五次,就可以知道结果。
决策树算法
我们来看这个式子:

  • 32支球队,log32=5比特
  • 64支球队,log64=6比特
    决策树算法
    香农指出,它的准确信息量应该是,p为每个球队获胜的概率(假设概率相等,都为1/32),我们不用钱去衡量这个代价了,香浓指出用比特:
    H = -(p1logp1 + p2logp2 + ... + p32log32) = - log32

2.3信息熵的定义
决策树算法

  • H的专业术语称之为信息熵,单位为比特。
  • "谁是世界杯冠军"的信息量应该比5比特少,特点(重要):
  • 当这32支球队夺冠的几率相同时,对应的信息熵等于5比特只要概率发生任意变化,信息熵都比5比特大

2.4 决策树的划分依据之一------信息增益
定义与公式:
特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵
H(D|A)之差,即公式为:
决策树算法

公式的详细解释:
决策树算法

2.5 贷款特征重要计算

决策树算法
我们以A1、A2、A3、A4代表年龄、有工作、有自己的房子和贷款情况。最终计算的结果g(D, A1) =
0.313, g(D, A2) = 0.324, g(D, A3) = 0.420,g(D, A4) = 0.363。所以我们选择A3 作为划分的第一个特征。
这样我们就可以一棵树慢慢建立

2.6 决策树的三种算法实现
当然,决策树的原理不仅仅是信息获取,还有其他方法。但原理是相似的,所以我们不需要举例子。

[En]

Of course, the principle of decision tree is not only information gain, but also other methods. But the principles are similar, so we don't have to give examples.

决策树算法

; 二、决策树API

class sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None,random_state=None)

决策树分类器:
criterion:默认是'gini'系数,也可以选择信息增益的熵'entropy'
max_depth:树的深度大小
random_state:随机数种子
其中会有些超参数: max_depth:树的深度大小

三、案例:泰坦尼克号乘客生存预测

  • 泰坦尼克号数据

在泰坦尼克号和titanic2数据帧描述泰坦尼克号上的个别乘客的生存状态。这里使用的数据集是由各种研究人员开始的。其中包括许多研究人员创建的旅客名单,由Michael A. Findlay编辑。我们提取的数据集中的特征是票的类别,存活,乘坐班,年龄,登陆,home.dest,房间,票,船和性别。
1、 乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。
2、 其中age数据存在缺失。

数据:http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
决策树算法
分析

  • 选择我们认为重要的几个特征 ['pclass', 'age', 'sex']填充缺失值
  • 特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)x.to_dict(orient="records")
    需要将数组特征转换成字典数据数据集划分
  • 决策树分类预测

代码
决策树算法

决策树算法

四、保存树的结构到dot文件
1、sklearn.tree.export_graphviz() 该函数能够导出DOT格式

tree.export_graphviz(estimator,out_file='tree.dot',feature_names=['',''])

2、工具:(能够将dot文件转换为pdf、png)

  • 安装graphviz
  • ubuntu:sudo apt-get install graphviz Mac:brew install graphviz

3、运行命令

  • 然后我们运行这个命令
  • dot -Tpng tree.dot -o tree.png
export_graphviz(dc, out_file="./tree.dot", feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])

四、决策树总结

优点:

  • 简单的理解和解释,树可视化

缺点:

  • 决策树学习者可能会创建过于复杂的树,而不能很好地普及数据,这称为过度匹配。
    [En]

    decision tree learners can create overly complex trees that do not popularize data well, which is called overfitting.*

改进:

  • 减枝cart算法(决策树API当中已经实现,随机森林参数调优有相关介绍)

Original: https://blog.csdn.net/m0_52000372/article/details/123458219
Author: hyk今天写算法了吗
Title: 决策树算法

相关文章
神经辐射场 3D 重建——NeRF 人工智能

神经辐射场 3D 重建——NeRF

😸NeRF(ECCV 2020)主要贡献: 提出一种将具有复杂几何性质和材料的连续场景表示为 5D 神经辐射场的方法,并将其参数化为基本的 MLP 网络 提出一种 基于经典体渲染技术的可微渲染方式,论...
NLP之文本情感分析(word2vec) 人工智能

NLP之文本情感分析(word2vec)

1. NLP任务的基本流程 ; 1.1 文本预处理 文本清理:去除文本中无效的字符,比如网址、图片地址,无效的字符、空白、乱码等。 标准化:主要是将不同的「形式」统一化。比如英文大小写标准化,数字标准...
关于随机森林进行多分类的一个思考 人工智能

关于随机森林进行多分类的一个思考

机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别输出的类别的众树而定,它有着许多的有点,能很好地处理多分类问题。 基本算法 简要描述 随机森林,是用随机的方式建立一个森林,森...
安装Tensorflow的简单方法 人工智能

安装Tensorflow的简单方法

Tensorflow tensorflow是干什么的这里就不多说了,既然你已经准备磨剑了,也许早就知道你需要它是做什么。 之前安装tensorflow试过了种种方法,看了各种帖子,什么安装虚拟环境、直...
Tensorflow手写数字识别 人工智能

Tensorflow手写数字识别

Tensorflow手写数字识别 前言 一、关于mnist数据集 二、搭建过程 * 1.导入数据集 2.数据集预处理 3.构建全连接层模型 4.梯度下降求最小Loss 5.测试集查看模型训练精度 6....
【Day4】语音识别(音频转文字) 人工智能

【Day4】语音识别(音频转文字)

语音识别的三个解决方案: 原本用途:本来是要求从视频中识别语音,然后把文字内容提取出来,结果看了很多项目,中文的注释,识别的却是英文,感到授课的门槛有点低,我能看懂别人开源的代码,距离自己开发还是有距...