决策树

决策树可以用于分类和回归任务,其中DecisionTreeClassifier适用于分类,而DecisionTreeRegressor适用于回归。两者参数相似,但意义不同。共同点包括防止过拟合,通过维度规约增强模型健壮性,可视化决策树,处理类别不平衡问题,以及注意数据类型和稀疏矩阵的处理。在训练前,应观察样本类别分布并考虑使用class_weight参数,同时限制树的深度以防止过拟合。

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

决策树

它就可以做分类,也可以做回归。分类决策树的类对应的是DecisionTreeClassifier,而回归决策树的类对应的是DecisionTreeRegressor。两者的参数定义几乎完全相同,但是意义不全相同。下面是两者区别

参数DecisionTreeClassifierDecisionTreeRegressor
特征选择标准criterion可以使用基尼系数"gini"或者信息增益"entropy"。一般默认的基尼系数"gini",即CART算法。"entropy"主要用在iD3, C4.5算法均方差mse"或者均值之差的绝对值之和"mae"。默认"mse"。一般来说"mse"比"mae"更加精确
类别权重class_weight指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多,导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重,或者用“balanced”,如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。当然,如果你的样本类别分布没有明显的偏倚,则可以不管这个参数,选择默认的"None"不适用

共同点

参数DecisionTreeClassifier &&DecisionTreeRegressor
特征划分点选择标准splitter使用"best"或者"random"。前者在特征的所有划分点中找出最优的划分点。后者是随机的在部分划分点中找局部最优的划分点。默认的"best"适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐"random"
划分时考虑的最大特征数max_features默认是"None",即考虑所有的特征数;"log2"最多考虑log2N个特征;"sqrt"或者"auto"最多考虑N−−√个特征。如果是整数,考虑特征绝对数。如果是浮点数,考虑特征百分比,即考虑(百分比xN)取整后的特征数。其中N为样本总特征数。一般来说,如果样本特征数不多,默认的"None"就可以了,如果特征数非常多,使用其他取值来控制划分时最大特征数,以控制决策树的生成时间。
决策树最大深max_depth默认不输入,即建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以选择默认值。如果模型样本量多,特征也多时要限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。
内部节点再划分所需最小样本数min_samples_split这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,可以选择默认值。如果样本量数量级非常大,则需要增大这个值。例如10万样本,建立决策树时,可以选择min_samples_split=10
叶子节点最小的样本权重和min_weight_fraction_leaf这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和其他兄弟节点一起被剪枝。 默认是0,即不考虑权重问题。一般来说,如果有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重
最大叶子节点数max_leaf_nodes通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征多的话,可以加以限制,具体的值可以通过交叉验证得到。
节点划分最小不纯度min_impurity_split这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小于这个阈值,则该节点不再生成子节点。即为叶子节点 。
数据是否预排序presort这个值是布尔值,默认是False不排序。一般来说,如果样本量少或者限制了一个深度很小的决策树,设置为true可以让划分点选择更加快,加快决策树的建立。

在这里插入图片描述

  • 注意

1)当样本数量少但样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型

2)如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。

3)推荐决策树的可视化,同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。

4)在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。

5)决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。

6)如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值