机器学习(三)树模型

本文介绍了树模型中的划分选择标准,包括信息增益、信息增益率及基尼系数等概念,并探讨了如何利用这些标准进行特征选择。此外,还讨论了剪枝技术以避免过拟合,并详细阐述了连续值与缺失值处理方法。最后,文章深入介绍了CART二叉树的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习(三)树模型

3.1 划分选择
3.1.1 信息增益
熵的定义如下,熵越小,纯度越高

Entropy(D)=k=1|y|pklogpk(3.1.1)(3.1.1)Entropy(D)=−∑k=1|y|pklogpk

信息增益定义如下,属性a有v个取值
Gain(D,a)==Entropy(D)H(D|a)Entropy(D)v=1V|Dv||D|Entropy(Dv)(3.1.2)Gain(D,a)=Entropy(D)−H(D|a)(3.1.2)=Entropy(D)−∑v=1V|Dv||D|Entropy(Dv)

信息增益越大,意味着使用属性a进行划分所获得纯度越大,ID3使用信息增益来划分属性
信息增益越容易偏向选择特征值较多的特征

3.1.2 信息增益率

Gain_ratio(D,a)=Gain(D,a)IV(a)(3.1.3)(3.1.3)Gain_ratio(D,a)=Gain(D,a)IV(a)

IV(a)=v=1V|Dv||D|log|Dv||D|(3.1.4)(3.1.4)IV(a)=−∑v=1V|Dv||D|log|Dv||D|

信息增益率对取值较少的特征有偏好 信息增益率 C4.5 启发式 先找信息增益高于平均的属性,再选择增益率最高的

3.1.3 基尼系数

Gini==k=1|y|kkpkpk1v=1|y|p2k(3.1.5)Gini=∑k=1|y|∑k′≠kpkpk′(3.1.5)=1−∑v=1|y|pk2

基尼系数直观来说,反映的是从数据集D中抽取两个样本,其类标记不一样的概率,Gini越高数据集纯度越高
Gini_index(D,a)=v=1V|Dv||D|Gini(Dv)(3.1.6)(3.1.6)Gini_index(D,a)=∑v=1V|Dv||D|Gini(Dv)

选择Gini指数较小的作为划分的标准

3.2 剪枝
预剪枝:
  每个结点划分时估计,若不能提升泛化性能 则停止分裂 将其作为叶节点
  降低了过拟合的风险 很多特征没有展开,但 有些特征在当前的划分不能带来提升泛化性能 在之后可能会提升,带来了欠拟合的风险

后剪枝:
  自底向上,对非叶结点考察,若将子树替换为叶节点能够带来泛化性能提升 则 将子树替换为叶节点
  相对于预剪枝 后剪枝保留了更多的分支,欠拟合风险小 泛化性能优于预剪枝
  时间花销太大 它是树训练完成之后的从低向上的

3.3 连续值与缺失值处理
连续值处理 二分法 大小排序后 划分点 取两边的中点
缺失值处理 计算属性信息增益率时 只考虑无缺失值的样本,然后乘以一定的权重

3.3 CART二叉树
3.3.1 分类问题 Gini index
生成过程:
  对个特征 A,对它的所有可能取值 a,将数据集分为 A=a,和 A!=a 两个子集,计算集合 D 的基尼指数

Gini_index(D,A)=|DA=a||D|Gini(DA=a)+|DAa||D|Gini(DAa)(3.3.1)(3.3.1)Gini_index(D,A)=|DA=a||D|Gini(DA=a)+|DA≠a||D|Gini(DA≠a)

  遍历所有特征,计算所有可能的分割点,选择D的基尼指数最小值对应的特征作为特征值与切分点
  重复以上过程直至满足停止条件

停止条件:
  结点的样本个数小于给定阈值
  样本集的基尼系数小于给定阈值
  没有更多的特征

3.3.1 回归问题

f(x)=i=1McmI(xRm)(3.3.2)(3.3.2)f(x)=∑i=1McmI(x∈Rm)

  数据空间被划分成了 R1~Rm 单元,每个单元上有一个固定的输出值 cm,每个单元上的 cm,可以使得这个平方误差最小化,易知当 cm 为相应单元上的所有实际值的均值时,可以达到最优

生成过程:
  假设,我们选择变量 xjxj 为切分变量,它的取值 s 为切分点,那么就会得到两个区域
  当 j 和 s 固定时,我们要找到两个区域的代表值 c1,c2 使各自区间上的平方差最小

minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2](3.3.3)(3.3.3)minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]

  cm=ave(y1|xiRm)cm=ave(y1|xi∈Rm)对应输出的均值
  对固定的 j 只需要找到最优的 s,然后通过遍历所有的变量,我们可以找到最优的 j,并得到两个区间

总结:
  考虑数据集 D 上的所有特征 j,遍历每一个特征下所有可能的取值或者切分点 s,将数据集 D 划分成两部分 D1 和 D2
  分别计算上述两个子集的平方误差和,选择最小的平方误差对应的特征与分割点,生成两个子节点。
  对上述两个子节点递归调用步骤(1)(2),直到满足停止条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值