当前位置:   article > 正文

【机器学习】决策树模型(个人笔记)

【机器学习】决策树模型(个人笔记)

源代码文件请点击此处

多样性指标

基尼杂质指数(Gini Impurity Index)

若集合中包含 m m m 个元素和 n n n 个类别,其中 a i a_i ai 个元素属于第 i i i 个类别,则:

基尼杂质指数 = 1 − p 1 2 − p 2 2 − . . . − p n 2 其中, p i = a i m (表示选择该元素的概率) 基尼杂质指数 = 1 - p_1^2 - p_2^2 - ... - p_n^2 \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) 基尼杂质指数=1p12p22...pn2其中,pi=mai(表示选择该元素的概率)

【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)

基尼杂质指数 = 1 − ( 8 10 ) 2 − ( 2 10 ) 2 = 0.32 基尼杂质指数 = 1 - \bigg(\frac{8}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 = 0.32 基尼杂质指数=1(108)2(102)2=0.32

【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)

基尼杂质指数 = 1 − ( 4 10 ) 2 − ( 3 10 ) 2 − ( 2 10 ) 2 − ( 1 10 ) 2 = 0.70 基尼杂质指数 = 1 - \bigg(\frac{4}{10}\bigg)^2 - \bigg(\frac{3}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 - \bigg(\frac{1}{10}\bigg)^2 = 0.70 基尼杂质指数=1(104)2(103)2(102)2(101)2=0.70

基尼指数越低,集合中的元素就越相似(数据集多样性越低)。

熵(Entropy)

若集合中包含 m m m 个元素和 n n n 个类别,其中 a i a_i ai 个元素属于第 i i i 个类别,则:

熵 = − p 1 log ⁡ 2 ( p 1 ) − p 2 log ⁡ 2 ( p 2 ) − . . . − p n log ⁡ 2 ( p n ) 其中, p i = a i m (表示选择该元素的概率) 熵 = - p_1 \log_2(p_1) - p_2 \log_2(p_2) - ... - p_n \log_2(p_n) \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) =p1log2(p1)p2log2(p2)...pnlog2(pn)其中,pi=mai(表示选择该元素的概率)

【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)

熵 = − 8 10 log ⁡ 2 ( 8 10 ) − 2 10 log ⁡ 2 ( 2 10 ) = 0.722 熵 = - \frac{8}{10}\log_2 \bigg(\frac{8}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) = 0.722 =108log2(108)102log2(102)=0.722

【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)

熵 = − 4 10 log ⁡ 2 ( 4 10 ) − 3 10 log ⁡ 2 ( 3 10 ) − 2 10 log ⁡ 2 ( 2 10 ) − 1 10 log ⁡ 2 ( 1 10 ) = 1.846 熵 = - \frac{4}{10}\log_2 \bigg(\frac{4}{10}\bigg) - \frac{3}{10}\log_2 \bigg(\frac{3}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) - \frac{1}{10}\log_2 \bigg(\frac{1}{10}\bigg) = 1.846 =104log2(104)103log2(103)102log2(102)101log2(101)=1.846

熵越低,集合中的元素就越相似(数据集多样性越低)。

决策树的应用

我们所使用的数据集如下:

dataset = pd.DataFrame({
        'x_0': [7, 3, 2, 1, 2, 4, 1, 8, 6, 7, 8, 9],
        'x_1': [1, 2, 3, 5, 6, 7, 9, 10, 5, 8, 4, 6],
        'y': [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]})
features = dataset[['x_0', 'x_1']]
labels = dataset['y']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用基尼指数作为划分标准的决策树如下:

decision_tree = DecisionTreeClassifier(criterion='gini')
decision_tree.fit(features, labels)
decision_tree.score(features, labels)
tree.plot_tree(decision_tree, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
在这里插入图片描述

使用基尼指数作为划分标准的决策树(划分深度只到第一层)如下:

 decision_tree_depth_1 = DecisionTreeClassifier(criterion='gini', max_depth=1)
decision_tree_depth_1.fit(features, labels)
decision_tree_depth_1.score(features, labels)
tree.plot_tree(decision_tree_depth_1, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/703915
推荐阅读
相关标签
  

闽ICP备14008679号