决策树


1. 决策树的超参数

建立决策树模型训练之前,须设定超参数:

  • maxBins: 决策树每一个节点最大分支数目
  • maxDepth: 决策树最大深度
  • Impurity: 决策树分裂节点时方法(基尼不纯度, 熵)

2. 设计决策树模型面临的问题

设计决策树模型面临的问题:

  • 如何评估模型的准确率: 二元分类中, 使用AUC作为评估标准
  • 模型的训练参数(超参数)会影响准确率, 训练时间: 调整参数使得准确率以及时间最优
  • 如何确定是否过度拟合: 训练评估阶段AUC很高, 而测试阶段AUC很低, 代表可能有过渡拟合问题. 若差异不大, 则无过度拟合问题.

3. 决策树的优缺点

决策树的优缺点

  • 优点:计算复杂度不高,输出结果容易理解,对中间值的缺失不敏感,可以处理不相关特征数据,常用算法,仅次于贝叶斯
  • 缺点:可能会产生过度匹配
  • 适用数据类型:数值型,标称型

4. 决策树算法的核心问题

决策树算法的核心问题

  • 按什么样的次序选择变量(属性)
    ID3算法,C4.5算法
  • 最佳分离点在哪里(对于连续型变量)
    举个栗子:
    年龄age有11,13,17,19,21,25,28,30,35,40,48,60.假设要将年龄分成两段,young和old.可以令大于x的年龄归到old,小于x的归到young.但是如何确定x?
    - 先取11和13的平均值12,13和17的平均值15,以此类推.
    - 假设选12为分裂点,算一下信息增益,以此类推,算出所有的信息增益, 哪个信息增益最大选哪个作为x

5. 决策树的构造过程

决策树的构造

  • 构造决策树要解决的第一个问题就是,当前哪个属性起决定性作用.所以必须评估每个属性,找到决定性的那个属性
  • 创建分支的伪代码createBranch():
检测数据集中的每个子项是否属于同一分类:
If 是,return 类标签
Else:
    寻找划分数据集的最好特征
    划分数据集
    创建分支节点
        For 每个分支节点:
            调用createBranch函数并增加返回结果到分支节点中
    Return 分支节点

6. 决策树的各种算法

ID3

C4.5

CART

输入:训练集, 属性集

过程:函数TreeGenerate(D, A)

生成节点`node`
if D中样本全属于同一类别C:
    将node标记为C类叶节点
    return
if A is 空集 or D中所有样本在A上取值相同:
    将node节点标记为叶节点,其类别标记为D中样本数最多的类
    return
从A中选择最优划分属性a*
for a*v in a*:
    为node生成一个分支;令Dv表示D中在a*上取值为a*v的样本子集
    if Dv is 空:
        将分支节点标记为叶节点,其类别标记为D中样本最多的类
        return
    else:
        以TreeGenerate(Dv, A\{a*})为分支节点

输出:以node为根节点的一颗决策树

决策树是一个递归过程,有三种情况会导致递归返回:

  • 当前节点包含的样本属于同一类别,无需划分
  • 当前属性集为空或所有样本在所有属性上取值相同,无法划分
  • 当前节点包含的样本集合为空,无法划分

由上述算法的伪代码可以看出,决策树构造最重要的环节就是如何选择划分的属性

  • 信息增益(ID3)
  • 信息增益率(C4.5)
  • 基尼系数(CART)

ID3

信息熵:样本集合D中第k类样本所占比率为,则该样本的信息熵

属性a对样本D进行划分后的信息熵:

假设属性a有V个可选值,则a将D切成V个子样本D1,D2,...,DV。则划分后的信息熵
其中表示子样本的个数

对样本D划分属性a的信息增益:

每次划分我们都选择信息增益最大的那个属性

C4.5

实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,C4.5算法使用增益率来进行属性划分

属性a的固有值:

属性a的可能取值数目越多,则固有值越大。

增益率:

需要注意的是,增益率准则对可取值数目较少的属性有所偏好,所以C4.5算法不是直接取增益率最大的候选划分属性,而是:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的

CART算法

数据集D的基尼系数:

直观来说,基尼系数反映了从数据集中抽取两个样本,其类别不一致的概率。因此,基尼系数越小,则数据集纯度越高

我们在选属性时,选择那个使得划分后基尼指数最小的属性作为最优属性划分
数据集D的基尼系数:

直观来说,基尼系数反映了从数据集中抽取两个样本,其类别不一致的概率。因此,基尼系数越小,则数据集纯度越高

我们在选属性时,选择那个使得划分后基尼指数最小的属性作为最优属性划分

剪枝处理

剪枝是决策树学习算法对付过拟合的主要手段。

剪枝可分为预剪枝和后剪枝两种基本策略。

  • 预剪枝:预剪枝是指在决策树的生成过程中,对每个节点在划分前后进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶节点。
  • 后剪枝:先从训练集生成一颗完整的决策树,然后自底而上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树的泛化性能提升,则将该子树替换为叶节点。

连续值与缺失值

连续值处理

对于连续的属性,可取值不可数,因此不能直接用连续属性的取值来对节点进行划分。此时就需要将连续属性离散化。最简单的策略就是二分法(C4.5采取的就是这种机制):

  • 将连续属性a的所有n个取值升序排列
  • 相邻两个取值的均值可作为候选划分点,则有n-1个候选划分点
  • 从这n-1个候选划分点选一个最好的:计算这n-1个候选划分点划分后的信息增益,选择信息增益最大的那个候选划分点作为属性a的划分点

缺失值处理

现实任务中,经常会遇到数据不完整的情况,尤其是属性较多的时候,会有大量样本出现缺失值。

我们需要解决两个问题:

  • 如何在属性缺失的情况下进行划分属性选择
  • 给定划分属性,如何对带缺失属性的样本进行划分

对问题一:

给定训练集D和属性a,计算D中属性a不缺失的子集D'所占比例p

则把D'当成D,按之前的标准来计算即可

对问题二:
若样本x在属性a上的取值未知,则将x同时划入所有子结点,且样本权值调整为r*w, 其中r为D'中各个属性个数的比例,w为样本在当前子结点的权值(初始权值均为1)

多变量决策树

OC1等 TODO

增量学习 TODO

  • ID4
  • ID5R
  • ITI
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV 决策树是一个常用的机器学习算法,用于分类和回归任务。它是一种监督学习方法,通过构建决策树模型来对数据进行分类或预测。 决策树的构建过程主要包括以下几个步骤: 1. 特征选择:根据给定的训练数据集,选择合适的特征来构建决策树。选择合适的特征是决策树算法的关键,可以通过信息增益、基尼指数等准则来选择最优特征。 2. 决策树的生成:根据选择的特征,将训练数据集分割为不同的子集,并利用这些子集构建决策树的节点。决策树的生成过程中采用递归的方式,直到满足终止条件。 3. 决策树的剪枝:为了减少决策树的过拟合现象,需要对生成的决策树进行剪枝操作。通过对决策树进行剪枝,可以提高决策树的泛化能力。 在OpenCV中,可以使用cv::ml::DTrees类来构建决策树模型。该类提供了一系列的方法用于构建和训练决策树模型,包括设置特征的类型、选择特征、设置树的参数等。 通过对训练数据的学习,决策树可以对新的数据进行分类或回归预测。在分类任务中,决策树将根据样本的特征进行分割,并根据样本的类别进行分类。在回归任务中,决策树将根据样本的特征进行分割,并根据样本的值进行预测。 总之,OpenCV 决策树是一个强大的机器学习算法,可以用于分类和回归任务。它通过构建决策树模型来对数据进行分类或预测,具有较好的泛化能力和易解释性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值