读书笔记 - 机器学习实战 - 3 决策树

3 决策树(Splitting datasets one feature at a time: decision trees)

3.1 构建决策树(Tree construction)

决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

决策树是对数据进行分类,以此达到预测的目的。该决策树方法先根据训练集数据形成决策树,如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到训练集数据中,重复该过程一直到形成正确的决策集。决策树代表着决策集的树形结构。

优点:计算量小,预测结果易于理解,属性值可以缺失,可以处理无关特征。

缺点:容易过拟合。

适用范围:数值和标称值。

利用信息论分割数据集,createBranch()伪代码:

检查数据集样本是否同类

  • 如果结果为真,返回标签
  • 否则
    • 查找数据最佳分割
    • 分割数据
    • 创建分支节点
      • 对于每个分割

        调用createBranch()并将结果加入分支节点
    • 返回分支节点

决策树步骤:

  1. 收集数据
  2. 准备:决策树构建算法仅适用于离散值,对于连续值需要对其量化处理
  3. 分析:任意方法
  4. 训练:构建树的数据结构
  5. 测试:计算错误率
  6. 使用:可用于任意监督学习任务。
  • ID3算法

    ID3算法是一种贪心算法,用来构造决策树。

    以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。

3.1.1 信息增益

p ( x i ) p(x_i) p(xi)为选择符号 x i x_i xi的概率,符号 x i x_i xi的信息定义为:

l ( x i ) = log ⁡ 2 ( x i ) l(x_i)=\log_2(x_i) l(xi)=log2(xi)

信息熵(information entropy)定义为所有符号的信息期望:
H = − ∑ i = 1 n p ( x i ) log ⁡ 2 p ( x i ) H=-\sum^n_{i=1}p(x_i)\log_2p(x_i) H=i=1np(xi)log2p(xi)

# Listing 3.1 Function to calculate the Shannon entropy of a dataset

import math

def calcShannonEnt(dataSet):
    
    numEntries = len(dataSet)
    labelCounts = {
   }
    
    # create dictionary of all possible classes
    for featVec in dataSet:
        currentLabel = featVec[-1]
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1
        
    shannonEnt = 0.0
    for key in labelCounts:
        prob = float(labelCounts[key]) / numEntries
        # logarithm base 2
        shannonEnt -= prob * math.log
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值