决策树 Decision Tree

决策树 Decision Tree是一个重要Supervise Learning算法。

0 相关基础知识

0.1 Machine Learning对于分类和预测算法的评估:

准确率Accuracy:顾名思义,监督学习说明已有标签

速度Velocity:一定程度上体现了复杂率

鲁棒性Robustness:如果缺失部分数值,是否还能效果好

规模性Scale:数据集大小规模

可解释性Interpretability:特征值的解释和归类

        eg. 属性(特征)的描述可以是离散的,比如颜色可以是红黄蓝,或者用数字理解可以为0与1;但标签也可能是连续的,譬如数值,这时需要连续变量离散化,即设置阈值。

0.2 熵 Entropy

Wiki:熵被用于计算一个系统中的失序现象,也就是计算该系统混乱的程度。

变量不确定性越大,熵越大。

单个属性值的熵的计算:P(x)*log2(P(x))   - (P(x)为相应概率)

1 几种决策树算法

决策树顾名思义就是把原始的sample转变为一棵树。

原始的信息是一张表格,每个样本对于不同的属性有不同的描述,问题是,如何知道把哪一种属性当作每一层树叶,即,如何选择树的节点?

不同的属性选择度量方法也就形成了不同的决策树算法。

停止条件:

针对一个属性,classification一致。

属性全部用完,最后一个用多数表决(majority)的方法确定classification

1.1 决策树归纳算法(ID3)

ID3引入了Information Gain的概念: 信息获取量/增益

 Gain(A) = Infor(D) - Infor_A(D)

        Infor(D):针对最终的classification,计算一个信息数值。

                      Infor(D)=-sum(P*log2(P))

        Infor_A(D):针对属性A,计算一个信息数值。

最终选择当前最大的Gain(A)作为当前节点,并且在下一个分类中就不再考虑这个节点啦。

1.2 C4.5

引入概念gain ratio

1.3 CART(Classification and regression trees) 

引入概念gini index

2 决策树算法overfitting问题

overfitting问题体现在属性分类太细,在训练集上表现地好,但是测试机上效果不完美。

解决方法:

先剪枝(准确率/纯度达到一定的数值,就不再分了) - 这里有点疑问,我会再研究一下,晚点来解释。

剪枝(画完整张图,再整体剪去一部分)

3 决策树算法优缺点

直观,便于理解,小规模数据集有效

连续变量不太好(对阈值选择敏感度大),类别较多时效果不好,大规模数据集不太好

==============

后面会进行对应的python实操,至于会不会更新在这里,我也不知道,就看我觉得有没有必要吧hhhh。

欢迎讨论(虽然我知道这玩意儿这么简单也没啥讨论的)。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值