机器学习决策树

决策树随笔

2018-11-20  本文已影响1人  风筝flying

最近在学习Pyspark的过程中,了解到了决策树算法(DecisionTree)和随机森林(RandomForest),在学习过程中,为了加深了解以及避免遗忘,做随笔记录如下。

参数 中文名称 备注
max_features 最大特征数 可以使用很多类型的值,默认是'None',意味着划分时考虑所有的特征数;如果是'log2'意味着划分时最多考虑 \log2N 个特征;如果是'sqrt'或者'auto'意味着划分时最多考虑 \sqrt[2]{N} 个特征。如果是整数,代表考虑的特征绝对数。如果是浮点数,代表考虑特征百分比,即考虑(百分比*N)取整后的特征数。其中N为样本的总特征数。一般来说,如果样本的特征数不多,默认用'None'即可,如果特征数非常多,我们可以灵活使用刚才描述的其它取值来控制划分时考虑的最大特征数,以控制决策树的生成时间
max_depth 决策树最大深度 默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间
min_samples_split 内部节点再划分所需最小样本数 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。默认是2,如果样本量不大,不需要更改,如果样本量数量级特别大,推荐增大这个值
min_samples_leaf 叶子节点最少样本数 这个值限制叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值,如果样本量数量级特别大,推荐增大这个值
min_weight_fraction_leaf 叶子节点最小的样本权重 这个值限制了叶子节点所有样本权重和最小值,如果小于这个值,则会和兄弟节点一起被剪枝。默认是0,也就是不考虑权重的问题。一般来说,如果样本有较多的缺失值,或者分类数样本的分布类别差别很大,就会引入样本权重
max_leaf_nodes 最大叶子节点数 通过限制最大叶子节点数,可以防止过拟合,默认是'None',即不限制最大叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到
min_impurity_split 节点划分最小不纯度 这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小于这个阈值,则该节点不再生成子节点,即为叶子节点
class_weight 类别权重 指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多,导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重,或者用“balanced”,如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。当然,如果你的样本类别分布没有明显的偏倚,则可以不管这个参数,选择默认的"None"。这个参数不适用与回归树

除了这些参数要注意以外,其他在调参时的注意点有:

 1. 当样本少数量但是样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型
 2. 如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。
 3. 推荐多用决策树的可视化(下节会讲),同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。
 4. 在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。
 5. 决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。
 6. 如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。

一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。

随机森林分类效果(错误率)与两个因素有关:

减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。

上一篇下一篇

猜你喜欢

热点阅读