• 树的算法总结


    树的算法总结

    1.决策树

    下面简述一下生成决策树的步骤:
    (1) 根据给定的训练数据,根据熵最大原则根据每一个维度来划分数据集,找到最关键的维度。
    (2) 当某个分支下所有的数据都数据同一分类则终止划分并返回类标签,否则在此分支上重复实施(1)过程。
    (3) 依次计算就将类标签构建成了一棵抉择树。
    (4) 依靠训练数据构造了决策树之后,我们就可以将它用于实际数据的分类。
    ps:当然生成决策树的算法不止这一个,还有其他一些生成决策树的方法,比如:C4.5和CART

    2.随机森林

    因此,随机森林的训练过程可以总结如下:

    (1)给定训练集S,测试集T,特征维数F。确定参数:使用到的CART的数量t,每棵树的深度d,每个节点使用到的特征数量f,终止条件:节点上最少样本数s,节点上最少的信息增益m

    对于第1-t棵树,i=1-t:

    (2)从S中有放回的抽取大小和S一样的训练集S(i),作为根节点的样本,从根节点开始训练

    (3)如果当前节点上达到终止条件,则设置当前节点为叶子节点,如果是分类问题,该叶子节点的预测输出为当前节点样本集合中数量最多的那一类c(j),概率p为c(j)占当前样本集的比例;如果是回归问题,预测输出为当前节点样本集各个样本值的平均值。然后继续训练其他节点。如果当前节点没有达到终止条件,则从F维特征中无放回的随机选取f维特征。利用这f维特征,寻找分类效果最好的一维特征k及其阈值th,当前节点上样本第k维特征小于th的样本被划分到左节点,其余的被划分到右节点。继续训练其他节点。有关分类效果的评判标准在后面会讲。

    (4)重复(2)(3)直到所有节点都训练过了或者被标记为叶子节点。

    (5)重复(2),(3),(4)直到所有CART都被训练过。

    利用随机森林的预测过程如下:

    对于第1-t棵树,i=1-t:

    (1)从当前树的根节点开始,根据当前节点的阈值th,判断是进入左节点(<th)还是进入右节点(>=th),直到到达,某个叶子节点,并输出预测值。

    (2)重复执行(1)直到所有t棵树都输出了预测值。如果是分类问题,则输出为所有树中预测概率总和最大的那一个类,即对每个c(j)的p进行累计;如果是回归问题,则输出为所有树的输出的平均值。

    3.Adaboost

    AdaBoost算法的步骤为:更新训练数据权值->在此权值上训练弱分类器(策略为最小化分类误差率)->计算分类误差率(误分类样本的权值之和)->计算分类器系数(要用到上一步的分类误差率)->更新训练权值->构建基本分类器的线性组合,一直循环,直到基本分类器的线性组合没有误分类点。

    4.GBDT

    1. 表示建立M棵决策树(迭代M次)

    2. 表示对函数估计值F(x)进行Logistic变换

    3. 表示对于K个分类进行下面的操作(其实这个for循环也可以理解为向量的操作,每一个样本点xi都对应了K种可能的分类yi,所以yi, F(xi), p(xi)都是一个K维的向量,这样或许容易理解一点)

    4. 表示求得残差减少的梯度方向

    5. 表示根据每一个样本点x,与其残差减少的梯度方向,得到一棵由J个叶子节点组成的决策树

    6. 为当决策树建立完成后,通过这个公式,可以得到每一个叶子节点的增益(这个增益在预测的时候用的)

      每个增益的组成其实也是一个K维的向量,表示如果在决策树预测的过程中,如果某一个样本点掉入了这个叶子节点,则其对应的K个分类的值是多少。

    7. 的意思为,将当前得到的决策树与之前的那些决策树合并起来,作为新的一个模型

    boost是“”提升“的意思,一般Boosting算法都是一个迭代过程,每一次新的训练都是为了改进前一次结果。

  • 相关阅读:
    Ocelot网关
    .Net Configuration配置优先级问题
    FilterContext/HttpContext 获取请求参数
    关于.Net的文件上传问题
    Notion+Zetero文献同步配置
    PyTorch训练模版
    marked ASP.NET 页面对象模型
    转:jQuery设计思想
    tryParse, try/catch(Parse), Convert比较
    CSS3 :nthchild()伪类选择器
  • 原文地址:https://www.cnblogs.com/think90/p/6135698.html
Copyright © 2020-2023  润新知