决策树算法梳理

  • 信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)
    熵:用来度量随机变量的不确定性,是信息的期望值。当熵越大,概率说X=xi的不确定性越大,反之越小。熵越大即这个类别的不确定性更大,反之越小
    熵
    联合熵:X,Y同时发生的信息熵
    联合熵述
    信息增益:信息增益是用来选择特征,信息增益越大,则这个特征的选择性越好
    信息增益基尼不纯度:将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率
    基尼不纯度
  • **决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景 **
    ID3算法原理:
    (1)树根代表训练样本的单个节点的开始;
    (2)如果样本都在同一个类中,则这个节点称为树叶节点并标记为该类别。
    (3)否则算法使用信息熵(信息增益)作为启发知识来帮助选择合适的将样本分类的属性,以便将样本集划分为若干子集,该属性就是相应节点的“测试”或“判定”属性,同时所有属性应当是离散值。
    (4)对测试属性的每个已知的离散值创建一个分支,并据此划分样本。
    (5)算法使用类似的方法,递归的形成每个划分上的样本决策树,一个属性一旦出现在某个节点上,那么它就不能再出现在该节点之后所产生的子树节点中;
    (6)整个递归过程在下列条件之一成立时停止。
    a)给定节点的所有样本属于同一类
    b)没有剩余属性可以用来进一步划分样本这时候该节点作为树叶,并用剩余样本中出现最多的类型作为叶子节点的类型。
    c)某一分枝没有样本,在这种情况下以训练样本集中占多数的类创建一个树叶。
    应用场景:基础理论清晰,算法比较简单,学习能力较强,适于处理大规模的学习问题。
    C4.5算法原理:
    是ID3算法的延伸和优化,
    (1)通过信息增益率选择分裂属性,克服了ID3算法中通过信息增益倾向于选择拥有多个属性值的属性作为分裂属性的不足;
    (2)能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理;
    (3)构造决策树之后进行剪枝操作;
    (4)能够处理具有缺失属性值的训练数据。
    应用场景:临床决策、生产制造、文档分析、生物信息学、空间数据建模等
    CART分类树原理:
    二分递归分割的技术,将当前样本分成两个子样本集,使得生成的非叶子节点都有两个分支
    应用场景:信息失真识别,电信业潜在客户识别,预测贷款风险等等
  • 回归树原理
    回归树原理
  • 决策树防止过拟合手段
    1.合理、有效地抽样,用相对能够反映业务逻辑的训练集去产生决策树;
    2.剪枝:提前停止树的增长或者对已经生成的树按照一定的规则进行后剪枝。剪枝是一个简化过拟合决策树的过程。有两种常用的剪枝方法:
    (1)先剪枝(prepruning):通过提前停止树的构建而对树“剪枝”,一旦停止,节点就成为树叶。该树叶可以持有子集元组中最频繁的类;
    (2)后剪枝(postpruning):它首先构造完整的决策树,允许树过度拟合训练数据,然后对那些置信度不够的结点子树用叶子结点来代替,该叶子的类标号用该结点子树中最频繁的类标记。后剪枝的剪枝过程是删除一些子树,然后用其叶子节点代替,这个叶子节点所标识的类别通过大多数原则(majority class criterion)确定。
  • 模型评估
    1、保持方法
    在保持(Holdout)方法中,将被标记的原始数据划分成两个不想交的集合,分别称为训练集合检验集。在训练数据集上归纳分类模型,在检验集上评估模型的性能。训练集和检验集的划分比例通常根据分析家的判断(例如,50-50,或者2/3作为训练集、1/3作为检验集)。分类器的准确率根据模型在检验集上的准确率估计。
    2、随机二次抽样
    可以多次重复保持方法来改进对分类器性能的估计,这种方法称作随机二次抽样(random subsampling)。设acci是第i次迭代的模型准确率,总准确率是accsub=∑ki=1acci/k。随机二次抽样也会遇到一些与保持方法同样的问题,因为在训练阶段也没有利用尽可能多的数据。并且,由于它没有控制每个记录用于训练和检验的次数,因此,有些用于训练的记录使用的频率可能比其他记录高很多。
    3、交叉验证
    替代随机二次抽样的一种方法是交叉验证(cross-validation)。在该方法中,每个记录用于训练的次数相同,并且恰好检验一次。为了解释该方法,假设把数据分为相同大小的两个子集,首先,我们选择一个子集作训练集,而另一个作检验集,然后交换两个集合的角色,原先作训练集的现在做检验集,反之亦然,这种方法叫做二折交叉验证。总误差通过对两次运行的误差求和得到。在这个例子中,每个样本各作一次训练样本和检验样本。k折交叉验证是对该方法的推广,把数据分为大小相同的k份,在每次运行,选择其中一份作检验集,而其余的全作为训练集,该过程重复k次,使得每份数据都用于检验恰好一次。同样,总误差是所有k次运行的误差之和。
    4、自助法
    以上方法都是假定训练记录采用不放回抽样,因此,训练集合检验集都不包含重复记录。在自助(bootstrap)方法中,训练记录采用有放回抽样,即已经选作训练的记录将放回原来的记录集中,使得它等机率地被重新抽取。如果原始数据有N个记录,可以证明,平均来说,大小为N的自助样本大约包含原始数据中63.2%的记录。这是因为一个记录被自助抽样抽取的概率是1−(1−1/N)N,当N充分大时,该概率逐渐逼近1−e−1=0.632。没有抽中的记录就成为检验集的一部分,将训练集建立的模型应用到检验集上,得到自助样本准确率的一个估计εi。抽样过程重复b次,产生b个自助样本。
  • sklearn参数详解,Python绘制决策树
    sklearn.tree.DecisionTreeClassifier
    (criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2,
    min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None,
    random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0,
    min_impurity_split=None, class_weight=None, presort=False)
    criterion:特征选择的标准,有信息增益和基尼系数两种,使用信息增益的是ID3和C4.5算法(使用信息增益比),使用基尼系数的CART算法,默认是gini系数。
    splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
    max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
    min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
    min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
    min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
    max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
    random_state:随机种子的设置,与LR中参数一致。
    max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
    min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
    min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
    class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
    presort:是否进行预排序,默认是False,所谓预排序就是提前对特征进行排序,我们知道,决策树分割数据集的依据是,优先按照信息增益/基尼系数大的特征来进行分割的,涉及的大小就需要比较,如果不进行预排序,则会在每次分割的时候需要重新把所有特征进行计算比较一次,如果进行了预排序以后,则每次分割的时候,只需要拿排名靠前的特征就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值