G
N
I
D
A
O
L

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

源代码文件请点击此处

多样性指标

基尼杂质指数(Gini Impurity Index)

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

\[基尼杂质指数 = 1 - p_1^2 - p_2^2 - ... - p_n^2 \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) \]

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

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

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

\[基尼杂质指数 = 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 \]

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

熵(Entropy)

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

\[熵 = - p_1 \log_2(p_1) - p_2 \log_2(p_2) - ... - p_n \log_2(p_n) \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) \]

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

\[熵 = - \frac{8}{10}\log_2 \bigg(\frac{8}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) = 0.722 \]

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

\[熵 = - \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 \]

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

决策树的应用

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

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']

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

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'])

image

image

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

 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'])

image

image

posted @ 2024-06-10 11:00  漫舞八月(Mount256)  阅读(67)  评论(0)    收藏  举报