• 决策树参数


    1、criterion: 特征选取标准。
    默认:gini。
    可选gini(基尼系数)或者entropy(信息增益)。

    1.1  选择entropy,则是ID3或C4.5算法。
    ID3算法原理:
    a 计算训练集所有样本的信息熵。
    b 计算每一特征分类后的信息增益。
    c 选择信息增益最大的特征进行分类,得到子节点。
    d 在还未被选择的特征中迭代b和c,直到无特征可分或信息增益已经无法达到要求的标准时,算法终止。

    C4.5算法原理:
    C4.5是在ID3的算法基础上,采用信息增益率来做为特征选择,通过增加类别的惩罚因子,规避了ID3中类别越多信息增益越大的问题,同时也可以对连续变量通过均值离散化的方式,解决了ID3算法无法处理连续变量的问题。过程和ID3一样。

    1.2通常选择gini,则是CART算法。
    我简单描述一下CART算法原理:
    CART不再通过信息熵的方式选取最优划分特征,而是采用基尼系数,也叫基尼不纯度,两者衡量信息量的作用相当,但是基尼系数由于没有对数运算,可大大减少计算开销。
    当然CART相对于ID3,C4.5最大的优势就是可以处理回归问题。CART算法处理分类问题时,以叶子节点上样本投票预测类别,处理回归问题时,以叶子节点的样本均值作为预测值。
    CART算法的过程如下:
    a 计算训练集所有样本的基尼系数。
    b 计算某一特征下每一属性划分后左右两边的基尼系数,找到基尼系数和最小的划分属性
    c 将每一个特征均按b中的方法计算,得到每一个特征最佳的划分属性。
    d 对比c中每一个特征的最优划分属性下的基尼系数和,最小的就是最优的划分特征。
    e 按最优的特征及最优属性划分,得到子节点。
    f 在还未被选择的特征中迭代b-e,直到无特征可分或信息增益率已经无法达到要求的标准时,算法终止。

    1.3 两种算法差异不大对准确率无影响,信息墒的运行效率低一点,因为它有对数运算.一般说使用默认的基尼系数”gini”就可以了,即CART算法。

    2. splitter: 特征划分标准
    可选best或random,默认为best。
    best是在特征的全部划分点中找到最优的划分点,比如基于信息增益分类时,则选择信息增益最大的特征点。
    random是在随机选择的部分划分点找到局部最优的划分点,具体是如何随机选择的部分划分点的,我也不清楚,这个需要查看源码才知道。如果你看到了这篇文章,恰好又知道其中原理,不妨留言交流下。
    一般在样本量不大的时候,选择best,样本量过大,用random。

    3.max_depth:决策树最大深度
    默认为None。
    一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。常用来解决过拟合

    4. min_samples_split:内部节点再划分所需最小样本数
    默认为2。
    意义:如果节点上的样本已经低于这个值,则不会再寻找最优的划分点进行划分,且以该结点作为叶子节点。样本过多的情况下,可以设定一个阈值,具体可根据业务需求和数据量来定。可以输入一个具体的值(int),或小于1的数(float类型,会根据样本量计算百分比)。

    5.min_samples_leaf:叶子节点所需最少样本数
    默认为1。
    意义:如果达不到这个阈值,则同一父节点的所有叶子节点均被剪枝,这是一个防止过拟合的参数。可以输入一个具体的值(int),或小于1的数(float类型,会根据样本量计算百分比)。

    6.min_weight_fraction_leaf:叶子节点所有样本权重和
    默认为0。
    意义:如果低于阈值,则会和兄弟节点一起被剪枝,默认是0,就是不考虑权重问题。这个一般在样本的分布类别偏差很大,或有较多缺失值的情况下会考虑,这时我们就要注意这个值了。

    7.max_features:划分考虑最大特征数
    默认为None。
    意义:不输入则默认全部特征,可以选 log2N,sqrt(N),auto或者是小于1的浮点数(百分比)或整数(具体数量的特征)。如果特征特别多时,比如大于50,可以考虑选择auto来控制决策树的生成时间。

    8.random_state:随机数生成种子
    默认为:None。
    意义:设置随机数生成种子是为了保证每次随机生成的数是一致的(即使是随机的);如果不设置,那么每次生成的随机数都是不同的。

    9.max_leaf_nodes:最大叶子节点数
    默认为:None。
    意义:防止过拟合,默认不限制,如果设定了阈值,那么会在阈值范围内得到最优的决策树。
    如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。

    10.min_impurity_decrease:节点划分最小不纯度
    默认为:0。
    意义:这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益)小于这个阈值,则该节点不再生成子节点。
    sklearn 0.19.1版本之前叫 min_impurity_split。

    11.class_weight:类别权重
    默认为:None。
    意义:在样本有较大缺失值,或类别偏差较大时可选,防止决策树向类别过大的样本倾斜。可设定None或者balanced,后者会自动根据样本的数量分布计算权重,样本数少则权重高,与min_weight_fraction_leaf对应。
    不适用于回归树 sklearn.tree.DecisionTreeRegressor

    12.Presort:是否排序
    默认为:False。

    模型参数选择的几项建议:
    1.样本少数量但是样本特征非常多的时候,决策树很容易过拟合,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。
    在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。

  • 相关阅读:
    SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
    算法大神之路----排序(插入排序法)
    Redis的基本使用(基于maven和spring)
    算法大神之路----排序(选择排序法)
    exe4j 安装
    png转ico网站
    artTemplate/template.js模板将时间格式化为正常的日期
    artTemplate js模板引擎动态给html赋值
    IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求
    Windows Server2012 R2 安装.NET Framework 3.5失败解决方法
  • 原文地址:https://www.cnblogs.com/celine227/p/14225044.html
Copyright © 2020-2023  润新知