决策树算法及应用

本文深入探讨了决策树的划分选择,包括信息增益、增益率和基尼指数。接着介绍了sklearn.tree.DecisionTreeClassifier的关键参数,如criterion、splitter、max_depth等,并讨论了如何防止过拟合。最后,通过Titanic乘客生存预测的案例展示了决策树的实际应用。
摘要由CSDN通过智能技术生成

1、划分选择

1.1信息增益

样本集合D中第k类样本所占的比例为pk(k=1,2,……|y|),则D的信息熵定义为:
在这里插入图片描述
Enter(D)越小,D的纯度越高。
离散属性a有V个可能取值:
在这里插入图片描述
v个分支节点包含D中所有在a上取值为a^V 的样本,记为D ^V,则信息增益定义为:
在这里插入图片描述
信息增益越大,利用属性a进行划分的纯度提升就越大,ID3算法就是根据信息增益为准则来选择划分属性。

1.2增益率

信息增益准则对可能取值数目较多的属性有所偏好,为减少这种偏好带来的不利影响,提出信息增益率的概念,概念如下:
在这里插入图片描述
增益率准则对可取数值数目较少的属性有所偏好,故C4.5算法不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

1.3基尼指数

Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。所以基尼指数越小,数据集D的纯度越高。(CART)
在这里插入图片描述
属性a的基尼指数定义为:
在这里插入图片描述
注:预防过拟合的方法——剪纸处理

2、sklearn.tree.DecisionTreeClassifier参数介绍

相关参数:
criterion:默认是‘gini’系数,也可以选择信息增益的熵‘entropy’;
splitter :分离器,每个节点选择拆分的方法,默认设置为‘best’;
max_depth:树的最大深度:根节点到子节点层数,常用取值10-100之间。
random_state:随机数种子
class_weight:指定样本各类别权重,防止训练集某些类别样本量过多,导致训练集偏向这些类别。可以指定各个样本的权重,或者用"balanced"算法自动计算权重,类别少相应权重高。分布相对均匀,可以忽略该参数。
min_samples_split:限制子树继续划分条件,如果样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。样本量不大的情况下,可以不用管这个值。样本量大,适当增大这个值,防止过拟合。
min_samples_leaf:限制叶子节点最小样本数,如果某叶子节点小于样本数,则会和兄弟节点一起被剪枝。默认是1,可以输入最少样本整数,或者样本总数的百分比。

注:
(1)参数解释参考博文链接:https://blog.csdn.net/me_to_007/article/details/90007319;
(2)sklearn决策树官网解释链接:https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier

3、决策树实例

Titanic 乘客生存预测
数据集:https://github.com/cystanford/Titanic_Data,其中数据集格式为 csv,一共有两个文件:
train.csv 是训练数据集,包含特征信息和存活与否的标签;
test.csv: 测试数据集,只包含特征信息。
现在我们需要用决策树分类对训练集进行训练,针对测试集中的乘客进行生存预测,并告知分类器的准确率。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值