zoukankan      html  css  js  c++  java
  • 机器学习实战-ch3-决策树

    决策树是一种新算法:

    优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
    缺点:可能会产生过度匹配问题。


    决策树算法可用于数据类型:数值型和标称型。

    image

    决策树的核心在于选择正确的属性对数据进行划分。选择的标准是数据增益。信息增益:讲无序的数据变得更加有序。

    信息增益熵:如果把X分成n个类,每个类的概率为p(i),那么-log(p(i))的期望就是熵。

    如果分成1类,则熵为0,表示没有增益。

    如果分成两类,各占1半,熵为1;

    如果分成4类,各占1/4,则熵为2;

    可以直观的感觉分成类越多,熵就越大。

    ---

    [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]

    按照最后一个属性划分,熵为0.97

    加上一个元素[1,1,’maybe’],熵就变成1.47

    -----

    为了计算数据增益,需要定义一个子函数。按照特定的维度,以及维度上的值,划分dataSet。

    image

    -----

    利用上面的子函数可以选择增益最大的维度。

    对每个维度di进行遍历

    对di上的value进行切分,得到k个集合

    计算一个熵si

    选择最大的si,对应的维度就是用来做决策的维度。

    -----

    每次选择一个维度后,对应的维度就会从数据集消失。然后dataSet分成若干个小集合。如果某个dataSet子集中所有元素label一致,则不需要再次划分。否则继续选择增益最大的属性继续划分。直到构成完整的决策树。

  • 相关阅读:
    酱茄WordPress社区论坛圈子小程序为解决用户活跃变现而生
    太顶了!爆肝3.5W字长文Java 集合!(建议收藏)
    美团二面:内存耗尽后Redis会发生什么?
    UE4_C++自定义log
    python3进制转换
    UE4蓝图Blueprint->组件->TreeView/ListView
    C++,win编程
    2020-11-11
    b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)
    BiLiBiLi爬虫
  • 原文地址:https://www.cnblogs.com/alphablox/p/5335276.html
Copyright © 2011-2022 走看看