决策树的构建

一.决策树概述

决策树是一种树形结构,其中每个内部节点(Internal Node)表示一个特征(Feature),每个分支(Branch)表示一个特征取值的判断条件,而每个叶子节点(Leaf Node)表示一个类别(Classification)或者一个数值(Regression)。通过对特征的逐层划分,决策树可以对数据进行分类或者预测。

二.决策树构建流程

1.决策树是一个由根到叶的递归过程,在每一个中间结点寻找划分属性,递归重要的是设置停止条件:

(1)当前结点包含的样本属于同一类别,无需划分;

(2)当前属性集为空,或是所有样本在所有属性上取值相同无法划分,简单理解就是当分到这一节点时,所有的属性特征都用完了,没有特征可用了,就根据label数量多的给这一节点打标签使其变成叶节点(其实是在用样本出现的后验概率做先验概率);

(3)当前结点包含的样本集合为空,不能划分。这种情况出现是因为该样本数据缺少这个属性取值,根据父结点的label情况为该结点打标记(其实是在用父结点出现的后验概率做该结点的先验概率)

2.因此决策树的关键——如何找合适的“划分属性”

三.最优划分属性

1.信息熵(information entropy)

这里的信息是从信息论的信息,信息论里有一个非常重要的概念——信息熵,其中这个“熵”(entropy)是指对复杂系统的刻画,可以理解为系统由不稳定态到稳定态所需要丢失的部分,信息熵可以理解为信息由不干净到干净所需要丢失的部分。因此得出,在该属性划分下的出信息熵越小,纯度越高。信息熵满足公式:

H(D) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)

注:随机变量的取值个数越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大

2.条件熵 (Conditional entropy)

条件熵是在给定某个特征的情况下,对于分类结果的不确定性的度量。

  • 条件熵越大,说明在给定该特征的情况下,样本的分类结果越不确定,即样本的混乱程度越高
  • 条件熵较小,说明在给定该特征的情况下,样本的分类结果越趋向于一致,即样本的混乱程度越低

3.ID3-信息增益(information gain)

1.信息增益指的是在划分数据集前后,类别标签的混乱程度发生的减少的程度

  • 信息增益越大,说明使用该属性进行划分可以获得更多的信息,可以更好地区分不同的类别。
  • 信息增益越大,表示使用特征 A 来划分所获得的“纯度提升越大”
  • 信息增益  =  信息熵 - 条件熵

2.信息增益越大表示使用特征 A 来划分所获得的“纯度提升越大”。

3.不足

  • ID3 没有剪枝策略,容易过拟合;

  • 信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;

  • 只能用于处理离散分布的特征;

  • 没有考虑缺失值

4.C4.5

C4.5算法与ID3相似,在ID3的基础上进行了改进,采用信息增益比来选择属性。ID3选择属性用的是子树的信息增益,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率

5.CART

1.CART(Classification And Regression Trees 分类回归树)算法是一种树构建算法,既可以用于分类任务,又可以用于回归。相比于 ID3 和 C4.5 只能用于离散型数据且只能用于分类任务,CART 算法的适用面要广得多,既可用于离散型数据,又可以处理连续型数据,并且分类和回归任务都能处理。

2.在分类问题中,假设有K各类别,第k个类别概率为$p_k$,则基尼系数的表达式为:

3.若给定样本D,如果根据特征A的某个值a,把D分为D1和D2两个部分,则在特征条件A下,D的基尼系数表达式为:

Gini(D) = \frac{D1}{D} * Gini(D1) + \frac{D2}{D} * Gini(D2)

同理分为n类

四.算法实现以及结果比较

1.信息熵,信息增益,信息增益率

# 计算信息熵
def entropy(p):
    if p == 0 or p == 1:
        return 0
    return -p * math.log(p, 2) - (1 - p) * math.log(1 - p, 2)

def id3_split(data, attributes, target):
    # 检查是否所有数据的目标变量都相同,或者没有更多特征可以分割
    if not attributes or all(val[target] == data[0][target] for val in data):
        return None, data[0][target]
    info_gain = {}
    for attr in attributes:
        values = set(val[attr] for val in data)
        for value in values:
            subset = [val for val in data if val[attr] == value]
            info_gain[attr, value] = id3_info_gain(subset, target)
    best_attr, best_val = max(info_gain, key=info_gain.get)
    return best_attr, best_val, [id3_split(subset, attributes - {best_attr}, target) for subset in data if subset[best_attr] == best_val]
 
def id3_info_gain(subset, target):
    info_gain = 0
    base_entropy = entropy(Counter([val[target] for val in subset])[1] / len(subset))
    for value, subset_data in Counter([val[target] for val in subset]).items():
        prob = subset_data / len(subset)
        info_gain += prob * entropy(prob)
    info_gain -= base_entropy
    return info_gain

还没做完呜呜

2.C4.5

3.CART

五.结果分析

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于决策树构建AdaBoost的过程如下: 1. 初始化样本权重:将每个样本的权重初始化为相等值,通常为1/n,其中n是样本数量。 2. 对于每个迭代轮次: a. 构建一个树桩(只有一个根节点和两个叶子节点)来拟合当前样本权重。 b. 计算该树桩的误差,即被错误分类的样本的权重之和。 c. 根据误差计算该树桩的权重,权重越大表示该树桩在最终预测中的重要性越高。 d. 更新样本权重,增加被错误分类的样本的权重,减少被正确分类的样本的权重。 e. 重复步骤a-d,直到达到预设的迭代次数或误差达到一定阈值。 3. 预测过程:对于一个新的样本,将其输入每个树桩,根据树桩的权重和预测结果进行加权投票,最终得到最终的预测结果。 需要注意的是,AdaBoost的每个树桩的权重是不同的,而且后面的树桩会根据前面树桩的错误来进行修正,以提高整体的预测准确性。与随机森林不同,AdaBoost的每棵树都是弱分类器,但通过集成多个弱分类器,可以得到一个强分类器。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [决策树算法之 AdaBoost](https://blog.csdn.net/weixin_43650429/article/details/103902600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值