一、算法原理

(1)基本算法

决策树(Decision Tree),基于“树”结构进行决策:
        每个内部结点对应一个属性测试;
        每个分支对应属性测试的一种可能取值;
        每个叶结点对应一个决策结果。

决策树结构

学习过程:通过对训练样本的分析来确定“划分属性”(即内部结点所对应的属性)。

预测过程:将测试示例从根结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶结点。

策略:分而治之(Divide-and-Conquer)
        自根至叶递归;
        在每个内部结点寻找一个划分(或测试)属性。

递归停止条件:
        当前结点包含的样本全属于同一类别,无需划分;
        当前属性集为空, 或是所有样本在所有属性上取值相同,无法划分;
        当前结点包含的样本集合为空,不能划分。

决策树基本算法

(2)划分

①信息增益

信息熵(Entropy):度量样本集合“纯度”最常用的一种指标。

假定当前样本集合D中第k类样本(k=1, 2, …, |y|)所占的比例为,则D的信息熵定义为:

Ent(D)的值越小,则D的纯度越高:
        Ent(D)的最小值:0,此时D中只有一类;
        最大值,此时D中每个样本都是一类。

信息增益(Information Gain):划分带来纯度的提升,信息熵的下降。

离散属性a的取值:

:D中在a上取值等于的样本集合
以属性a对数据集D进行划分所获得的信息增益为:

信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。

ID3决策树算法:在候选属性集合中选取信息增益最高的属性。

举例:西瓜数据集(后面以该数据集为例)

西瓜数据集

计算根结点的信息熵Ent(D):

当前属性集合A={色泽,根蒂,敲声,纹理,脐部,触感}
以属性“色泽”为例,其对应的3个数据子集为:
                                        (色泽=青绿),(色泽=乌黑),(色泽=浅白)

以子集为例,其包含6个样例,{1,4,6,10,13,17},占总样例数的6/17,其中正例占样例数p1=3/6,反例占D1样例数p2=3/6  ,因此

同理,

属性“色泽”的信息增益为:

全部属性的信息增益为:

属性“纹理”的信息增益最大,被选为划分属性

对每个分支结点根据信息增益准则做进一步划分,得到决策树:

信息增益准则对可取值数目较多的属性有所偏好。

②增益率

增益率(Gain Ratio):

属性a的固有值(Intrinsic Value):

属性a的可能取值数目越多,即 V 越大,则IV(a)的值通常就越大。

增益率准则对可取值数目较少的属性有所偏好。

C4.5决策树算法:从候选属性集合中找出信息增益高于平均水平的,再从中选取增益率最高的。

③基尼指数

基尼值(Gini):度量数据集D的纯度

反映了从D中随机抽取两个样例,其类别标记不一致的概率。

Gini(D)越小,数据集D的纯度越高。

属性a的基尼指数(Gini Index):

CART决策树算法:在候选属性集合中选取使划分后基尼指数最小的属性。

总结

(3)剪枝

为了尽可能正确分类训练样本,有可能造成分支过多,从而导致过拟合。

剪枝(Pruning):是决策树预防过拟合的主要手段,可通过主动去掉一些分支来降低过拟合的风险。

划分:划分选择对决策树的尺寸有较大影响,但对泛化性能的影响很有限。

剪枝:剪枝方法和程度对决策树泛化性能的影响更为显著。

剪枝的两种策略:
        预剪枝(Pre-pruning):提前终止某些分支的生长(自上而下)。
        后剪枝(Post-pruning):生成一棵完全树,再回头剪枝(自下而上)。

举例:

根据信息增益准则将训练集生成未剪枝决策树:

①预剪枝

预剪枝决策判断:
                                划分前验证集精度:3/7 > 划分后验证集精度:5/7

划分后精度提高,保留划分;
精度降低或不变,禁止划分。

最终预剪枝决策树

②后剪枝

后剪枝决策判断:
                                剪枝前验证集精度:3/7 < 剪枝后验证集精度:4/7

剪枝后精度提高,进行剪枝;
精度降低或不变,不剪枝。
(奥卡姆剃刀准则(Occam’s Razor):如无必要,勿增实体。Entities should not be multiplied unnecessarily.)

最终后剪枝决策树

总结

二、算法实验

(1)任务

泰坦尼克乘客生存预测。

(2)步骤

①问题描述

泰坦尼克海难是著名的十大灾难之一,究竟多少人遇难,各方统计的结果不一。

数据集:
                train.csv:训练数据集,包含特征信息和存活与否的标签。
                test.csv:测试数据集,只包含特征信息。

训练集字段:

②准备过程

  • 数据探索:

1、了解数据表的基本情况:行数、列数、每列的数据类型、数据完整度。

2、了解数据表的统计情况:总数、平均值、标准差、最小值、最大值等。

3、查看字符串类型(非数字)的整体情况。

  • 数据清洗:

1、Age、Embarked和 Cabin 这三个字段的数据有所缺失。
2、Age 为年龄字段,是数值型,通过平均值进行补齐。
3、Cabin 为船舱,有大量的缺失值,无法补齐。
4、Embarked 为登陆港口,有少量的缺失值。将其余缺失的 Embarked 数值均设置为 S(一共3个登陆港口,S港人数最多)。

  • 特征选择

1、PassengerId、Name对分类没有作用,放弃。
2、Cabin 字段缺失值太多,放弃。
3、Ticket 字段为船票号码,杂乱无章且无规律,放弃。
4、其余的字段包括:Pclass、Sex、Age、SibSp、Parch 和 Fare,可能会与乘客的生存预测分类有关系。
5、将特征值中为字符串的转成数值类型。如:sex用0,1表示。

  • 生成决策树

1、使用sklearn生成决策树模型并训练。
2、criterion=‘entropy’意为基于信息熵标准建立决策树。

③模型预测及评估

  • 决策树模型

1、由于没有测试集的实际结果,因此无法用测试集的预测结果与实际结果相对比。
2、使用K折交叉验证的方式,用大部分样本进行训练,少量的用于分类器的验证。
3、运行结果:

  • 总结

1、特征选择是分类模型好坏的关键。选择什么样的特征,以及对应的特征值矩阵,决定了分类模型的好坏。通常情况下,特征值不都是数值类型,可以使用 DictVectorizer 类进行转化。
2、模型准确率需要考虑是否有测试集的实际结果可以做对比,当测试集没有真实结果可以对比时,需要使用 K 折交叉验证。

  • 代码地址

数据挖掘十八般武艺(一):决策树相关推荐

  1. 金融风控实战——风控数据挖掘方法(决策树规则挖掘)

    风控数据挖掘方法(决策树规则挖掘) import pandas as pd import numpy as np data = pd.read_excel("/Users/zhucan/De ...

  2. [机器学习数据挖掘]机器学习实战决策树plotTree函数完全解析

    [机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析 http://www.cnblogs.com/fantasy01/p/4595902.html点击打开链接 import ...

  3. 数据挖掘学习笔记--决策树C4.5

    在网上和教材上也看了有很多数据挖掘方面的很多知识,自己也学习很多,就准备把自己学习和别人分享的结合去总结下,以备以后自己回头看,看别人总还是比不上自己写点,及时有些不懂或者是没有必要. 定义:分类树( ...

  4. 数据挖掘实验报告-决策树程序实验

    [摘要] 众所周知,数据库技术从20世纪80年代开始,已经得到广泛的普及和应用.随着数据库容量的膨胀,特别是数据仓库以及web等新型数据源的日益普及,人们面临的主要问题不再是缺乏足够的信息可以使用,而 ...

  5. 数据挖掘算法之决策树详解

    在计算机科学领域,尤其是在数据结构,很多种复杂的数据结构都是跟树有关,都是一个XX树命名.比如典型的霍夫曼树.KD树等.霍夫曼树是用来做编码的,KD树是用来对空间做划分. 本文目录: 风控决策树模型 ...

  6. 数据挖掘-经典算法-决策树ID3算法实现

    from math import log import operatordef calcShannonent(dataSet): #计算数据的熵(entropy)numEntries = len(da ...

  7. 一小时了解数据挖掘⑤数据挖掘步骤&常用的聚类、决策树和CRISP-DM概念

    一小时了解数据挖掘⑤数据挖掘步骤&常用的聚类.决策树和CRISP-DM概念 接前面系列4篇: 一小时了解数据挖掘①:解析常见的大数据应用案例 一小时了解数据挖掘②:分类算法的应用和成熟案例解析 ...

  8. 决策树之 C4.5 算法

    前言 由于 C4.5 算法是建立在 ID3 算法基础之上的,所以在讲解 C4.5 的时候,会有很多与 ID3 重合的内容,这里就不过多冗余地说明了.本文旨在阐明 ID3 存在的问题,以及 C4.5 的 ...

  9. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. flashcom中远程共享对象SharedObject的用法
  2. java一般会写javadoc吗_怎么写javadoc
  3. php处理不确定笛卡尔积,PHP笛卡尔积实现算法示例
  4. 网络安全性——IPSEC(续思科设备实现)
  5. 快速入门系列--MVC--03控制器和IOC应用
  6. echarts x和数据对应_echarts 折线图动态x轴及数据
  7. 重写Object类的equals方法
  8. JavaFX之TableView的SelectionMode
  9. Android WifiDisplay分析一:相关Service的启动
  10. 记一次node+react项目发布过程(一)--webpack生产环境打包优化
  11. 大数据平台设计哲学的重构
  12. 今天我们开通知识星球了~
  13. 生命在此定格 路透记者遇难前拍下的最后画面
  14. hyperledger fabric 节点数限制 最大
  15. samba配置问题一则及配置详解
  16. win10永久禁用驱动数字签名强制的方法
  17. POJ 2387 Dijkstra
  18. python写入txt不覆盖_python不能覆盖文件内容如何解决
  19. 嵌入式字符设备驱动——ULN2003步进电机驱动程序实现
  20. 降低PNG图片存储大小方法、图片压缩方法

热门文章

  1. Google ads Editor链接谷歌一直无响应,怎么破?
  2. argsort( )函数
  3. 四象限到九宫格:佛系区
  4. 怎样用MyEclipse编写调试JSP网页
  5. 彩虹岛大魔王、、超级回文数
  6. 学生如何使用正版Altium Designer软件;正版AD安装;AD如何使用正版license(适用于老师、学生、校友等等)
  7. 别去冼牙了!惊人发現牙齿「再生朮」,韩國变态黑科技,烂牙变新牙!
  8. 雷军10周年演讲全文:没有任何成功是不冒风险的
  9. 2021美赛D题艺术家思路整理
  10. 永清一中2021高考成绩查询,河北高中成绩排名2021,河北中考分数线排行榜