第五章 决策树1

什么是决策树

模型:学习条件概率分布(从训练数据归纳出一组分类规则)
策略:损失函数最小化(正则化的极大似然函数)
算法: 最优决策树NP完全问题,启发式算法(基于直观或经验构造的算法)
递归的选择最优的**(有区分能力的)特征**,数据根据该特征进行分割。
递归终止条件:遇到以下三种情况中的任意一种

  • 数据用完
  • 特征用完
  • 节点包含的样本属于同一类

怎么量化特征的区分能力

根据特征选择方式的不同决策树可以分为:
信息增益-ID3
信息增益比-C4.5
基尼指数-CART

  1. 信息增益
    熵:用于度量随机变量不确定性
    离散随机变量X的概率分布为P(X=xi)=pi,i=1,2,...,nP(X=x_i)=p_i , i= 1,2,...,nP(X=xi)=pii=1,2,...,n
    X的熵记为H(p)H(p)H(p), 熵依赖于X的分布,而与X的取值无关
    H(X)=H(p)=−∑i=1npilogpiH(X) = H(p)=- \sum_{i=1}^np_ilogp_iH(X)=H(p)=i=1npilogpi
    熵满足
    0≤H(p)≤logn0\le H(p) \le logn0H(p)logn
    当X服从均匀分布时熵最大,右边等号成立。
    离散随机变量的取值越多(n越大),最大熵越大。

    条件熵:已知随机变量X的条件下随机变Y的不确定性
    H(Y∣X)=∑i=1npiH(Y∣X=xi)H(Y|X)= \sum_{i=1}^np_iH(Y|X=x_i)H(YX)=i=1npiH(YX=xi)

信息增益定义为:
g(D,A)=H(D)−H(D∣A)g(D,A) = H(D)-H(D|A)g(D,A)=H(D)H(DA)
$ H(D)$:数据集D的熵(离散随机变量为类别)
H(D∣A)H(D|A)H(DA): 根据特征A对数据集D划分得到的熵
(把数据集D根据特征A的取值,分为D1,D2...D_1,D_2...D1,D2...,计算数据集DiD_iDi的熵,然后加权)
信息增益大的特征具有更强大的分类能力。
2. 信息增益比
信息增益,偏向于选择取值较多的特征
假设给数据集增加一列特征,特征为行号(即 1~N),如果按这一列行号进行划分,得到的条件熵为0,信息增益最大。
而这一列特征对于分类没有意义。
信息增益比对这一问题校正。
信息增益比定义为:
gR(D,A)=g(D,A)HA(D)g_R(D,A)=\frac{g(D, A)}{H_A(D)}gR(D,A)=HA(D)g(D,A)

HA(D)H_A(D)HA(D):数据集关于特征A的值的熵(离散随机变量是特征值A)
根据前面熵取值范围公式知,特征值多的最大熵越大。

3.基尼指数
Gini(p)=1−∑i=1npi2Gini(p) = 1-\sum_{i=1}^np_i^2Gini(p)=1i=1npi2
H(p)=−∑i=1npilogpiH(p)=- \sum_{i=1}^np_ilogp_iH(p)=i=1npilogpi
与熵的含义公式类似
基尼指数:用以衡量一个国家或地区居民收入差距的常用指标。
基尼系数介于0-1之间,基尼系数越大,表示不平等程度越高。
熵 越大数据集越混乱(越不纯),随机变量的不确定性越大。

剪枝

递归的划分,有时会造成分支过多。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确。(即过拟合现象)
决策树通过剪枝的方法来降低过拟合风险。
剪枝分为预剪枝(prepruning)和后剪枝(postpruning)

剪枝方法通过最小化损失函数实现
设树T的叶子节点为∣T∣|T|T个,t是树T的叶子节点,该叶子节点有NtN_tNt个样本,Ht(T)H_t(T)Ht(T)为叶节点t上的熵。
决策树的损失函数可以表示为
Cα(T)=∑t=1TNtHt(T)+α∣T∣C_\alpha(T)=\sum_{t=1}^ TN_tH_t(T)+\alpha|T|Cα(T)=t=1TNtHt(T)+αT
分到同一个叶子节点的样本是根据多数投票表决得到的类别,目标是将相同的类的尽可能分到一起,数据集中越相同越纯,熵越小。
为什么要乘以NtN_tNt
第一项表示模型对训练数据的预测误差。
第二项表示模型的复杂度。
预剪枝
在决策树生成的过程中, 对每个节点在划分前进行估计,若当前节点的划分不能带来决策树性能的提升,则停止划分并将当前的节点标记为叶节点

后剪枝方法

  • 先生成一棵完整的决策树
  • 从叶子节点自底向上回缩到父节点,比较回缩前后两棵树的损失函数值。变小了说明应该剪。
  • 递归直到不能继续

判断决策树泛化性能是否提升: 验证集 评估准确率,带正则的loss

本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值