决策树调参
记录一下决策树调参,在所有模型进行调参前,都应该熟悉算法的思路流程,这样才能进行更好的调参。
决策树分为回归树和分类树,回归树与分类树在Python的sklearn中分别对应着两个不同的函数,其中回归树为:DecisionTreeRegressor 分类树为:DecisionTreeClassifier。
虽然说函数名字不同,但是这两个函数的参数其实大差不大。
参数名 | 含义 | criterion在分类和回归问题中均有,分类问题中可以设置为"gini"与"entropy",分别对应着基尼指数和信息增益;回归问题中可以设置为“mse”和"mae",分别对应于均方误差和平均绝对误差splitter用于在每个点上选择拆分的策略。支持的策略是“best”选择最佳拆分,“random”选择最佳随机拆分max_depth树的最大深度。如果为None,则将结点展开,直到所有的叶子都是纯净的,或者直到所有的叶子都包含少于min_samples_split个样本min_samples_split拆分内部节点所需的最少样本数,一般调参在5-10min_samples_leaf在叶子结点处需要的最小样本数。任何深度的分割点只有在左、右分支中至少留下min_samples_leaf训练样本时才会被考虑,调参可以选择5+min_weight_fraction_leaf在所有的叶子节点处的权重总和中的最小加权分数max_features寻找最佳分割时所需要考虑的特征数量,一般来说max_features的值就是特征总数random_state控制随机性max_leaf_nodes设置树模型的叶子结点的数量,如果默认,也就是无min_impurity_decrease叶子结点不纯度的减少量阈值class_weight类权重参数,用来解决类不平衡情况下的问题cpp_alphanon-negative剪枝参数,默认情况下,不执行剪枝
上面放的只是参数速查表,其中有很多参数的含义都还没有详细讲清楚,例如splitter参数,这个参数初次理解真的是一头雾水,我找到一个写的好的博客,方便以后查找:
决策树调参——详细篇
如果只限于应用,这个参数就直接默认就行,没必要修改,有的时候修改完结果可能会更坏。
参数min_samples_split和参数min_samples_leaf有点相似,它们都是为了防止过拟合而设置的。前者是当待分节点的样本数少于min_samples_split所设置的值时,此节点停止生长。后者指的是此节点如果进行拆分,拆分的叶子节点中如果有样本数小于min_samples_leaf时,就停止生长。
要防止决策树的过拟合情况出现,主要条件的参数有:max_depth、min_samples_leaf、min_samples_split