首页 > 技术知识 > 正文

【机器学习】通俗的决策树算法讲解和应用

【机器学习】通俗的决策树算法讲解和应用

文章目录 1 概述 2 决策树场景 3 决策树开发流程 4 决策树的实际运用 5 机器学习决策树算法解决图像识别-ENVI决策树分类 6 总结 1 概述

决策树(Decision Tree)算法是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一。我们这章节只讨论用于分类的决策树。

决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

决策树学习通常包括 3 个步骤: 特征选择、决策树的生成和决策树的修剪。

2 决策树场景

一个叫做 “二十个问题” 的游戏,游戏的规则很简单: 参与游戏的一方在脑海中想某个事物,其他参与者向他提问,只允许提 20 个问题,问题的答案也只能用对或错回答。问问题的人通过推断分解,逐步缩小待猜测事物的范围,最后得到游戏的答案。

一个邮件分类系统,大致工作流程如下: 【机器学习】通俗的决策树算法讲解和应用1 首先检测发送邮件域名地址。如果地址为 myEmployer.com, 则将其放在分类 “无聊时需要阅读的邮件”中。 如果邮件不是来自这个域名,则检测邮件内容里是否包含单词 “曲棍球” , 如果包含则将邮件归类到 “需要及时处理的朋友邮件”, 如果不包含则将邮件归类到 “无需阅读的垃圾邮件” 。 决策树的定义:

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性(features),叶结点表示一个类(labels)。

用决策树对需要测试的实例进行分类: 从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分配到叶结点的类中。

3 决策树开发流程 收集数据: 可以使用任何方法。 准备数据: 树构造算法 (这里使用的是ID3算法,只适用于标称型数据,这就是为什么数值型数据必须离散化。 还有其他的树构造算法,比如CART) 分析数据: 可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预期。 训练算法: 构造树的数据结构。 测试算法: 使用训练好的树计算错误率。 使用算法: 此步骤可以适用于任何监督学习任务,而使用决策树可以更好地理解数据的内在含义。

优点: 计算复杂度不高,输出结果易于理解,数据有缺失也能跑,可以处理不相关特征。 缺点: 容易过拟合。 适用数据类型: 数值型和标称型。

4 决策树的实际运用

【机器学习】通俗的决策树算法讲解和应用2 代码:

import pandas as pd #数据处理 file=”E:/text.csv” data=pd.read_csv(file,encoding=”gbk”) x=data.iloc[:,0:3].as_matrix() y=data.iloc[:,3].as_matrix() for i in range(len(x)): for j in range(len(x[0])): if x[i][j]==是 or x[i][j]==多: x[i][j]=1 else: x[i][j]=0 for i in range(len(y)): if y[i]==高: y[i]=1 else: y[i]=0 #格式转换 xf=pd.DataFrame(x)#框架化 yf=pd.DataFrame(y) x2=xf.as_matrix().astype(int) y2=yf.as_matrix().astype(int) #决策树 from sklearn.tree import DecisionTreeClassifier as DTC dtc=DTC(criterion=”entropy”) dtc.fit(x2,y2) #可视化 from sklearn.tree import export_graphviz from sklearn.externals.six import StringIO with open(“E:/dtc.dot”,w) as file: export_graphviz(dtc,feature_names=[“shixi”,”time”,”chuxiao”],out_file=file)
<

运行结果: 【机器学习】通俗的决策树算法讲解和应用3 结果中的value是最终结果的类别 entropy是权值 samples是其夫节点判断结果的样本数 每一个框的第一个值是我们对数据处理后的一个判断。(就像判断一个人的年龄<30,如果是就根据指示跳到下一层,依次类推) 逐层判断,最终得到预测值

5 机器学习决策树算法解决图像识别-ENVI决策树分类

初次做NDWI需要将一个波段上大于0的值显示成一种颜色进行影像分类,搜索了很久也没找到颜色显示的方法。最终在同门的帮助下终于学会了,秉着不让其他人再次受这样的磨难我将其步足先给大家。 1.在Toolbox栏索搜tree,选择New Decision Tree.如下图所示。 【机器学习】通俗的决策树算法讲解和应用4

2.进入New Decision Tree,点击file新建New Tree 【机器学习】通俗的决策树算法讲解和应用5

6 总结

决策树是一种自上而下,对样本数据进行树形分类的算法,既可以用于分类,又可以用于回归。决策树的构建过程也对应着对特征空间的划分:从根结点开始,计算该结点所有可能特征的信息增益(比)或基尼系数,选择信息增益(比)最大或基尼系数最小的特征作为结点的特征,由该特征的不同取值对训练数据进行分割,建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益(比)很大或基尼系数很小或没有特征可以选择为止。最后每个子集都被分到叶结点上,即都有了明确的类,这就得到一个决策树。(每个内部结点表示一个特征,叶结点表示一个类。) 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的剪枝。决策树相当于用极大似然法进行概率模型的选择,其损失函数为正则化的极大似然函数 。

猜你喜欢