数据结构与算法之决策树 叶子节点 纯度判断 / 类别投票 策略

数据结构与算法阿木 发布于 8 天前 3 次阅读


摘要:

决策树是一种常用的机器学习算法,它通过一系列的决策规则将数据集分割成不同的子集,最终在每个叶子节点处对数据进行分类或回归。叶子节点的策略是决策树算法中的一个关键部分,它决定了如何根据分割规则对数据进行分类。本文将围绕叶子节点的策略,探讨纯度判断和类别投票两种常见的方法,并通过代码实现来展示其应用。

一、

决策树是一种基于树形结构的数据挖掘方法,它通过一系列的决策规则将数据集分割成不同的子集,每个节点代表一个决策规则,每个叶子节点代表一个类别或回归值。在决策树的构建过程中,叶子节点的策略至关重要,它决定了如何根据分割规则对数据进行分类。本文将重点介绍两种常见的叶子节点策略:纯度判断和类别投票。

二、纯度判断

纯度判断是一种基于信息增益或基尼指数等指标来选择最优分割策略的方法。在决策树中,纯度通常用来衡量一个节点下所有样本的类别一致性。以下是一个基于信息增益的纯度判断策略的代码实现:

python

import numpy as np

def entropy(y):


"""计算熵"""


_, counts = np.unique(y, return_counts=True)


probabilities = counts / counts.sum()


entropy = -np.sum(probabilities np.log2(probabilities))


return entropy

def information_gain(X, y, split_index, split_value):


"""计算信息增益"""


left_indices = X[:, split_index] < split_value


right_indices = ~left_indices


left_entropy = entropy(y[left_indices])


right_entropy = entropy(y[right_indices])


n = len(y)


left_n = len(y[left_indices])


right_n = n - left_n


info_gain = entropy(y) - (left_n / n) left_entropy - (right_n / n) right_entropy


return info_gain

def best_split(X, y):


"""找到最优分割"""


best_info_gain = 0


best_split_index = 0


best_split_value = 0


for i in range(X.shape[1]):


unique_values = np.unique(X[:, i])


for value in unique_values:


info_gain = information_gain(X, y, i, value)


if info_gain > best_info_gain:


best_info_gain = info_gain


best_split_index = i


best_split_value = value


return best_split_index, best_split_value

示例数据


X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])


y = np.array([0, 0, 1, 1, 1])

找到最优分割


split_index, split_value = best_split(X, y)


print(f"Best split index: {split_index}, split value: {split_value}")


三、类别投票

类别投票是一种简单的叶子节点策略,它通过在每个叶子节点处对样本的类别进行投票,然后选择得票数最多的类别作为该节点的类别。以下是一个类别投票策略的代码实现:

python

def majority_vote(y):


"""类别投票"""


unique, counts = np.unique(y, return_counts=True)


return unique[np.argmax(counts)]

示例数据


y = np.array([0, 0, 1, 1, 1])

进行类别投票


predicted_class = majority_vote(y)


print(f"Predicted class: {predicted_class}")


四、总结

本文介绍了决策树中的叶子节点策略,包括纯度判断和类别投票两种方法。纯度判断通过信息增益等指标来选择最优分割策略,而类别投票则通过投票机制来决定叶子节点的类别。通过代码实现,我们可以看到这两种策略在决策树构建中的应用。在实际应用中,选择合适的叶子节点策略对于决策树模型的性能至关重要。

五、扩展

除了纯度判断和类别投票,还有其他一些叶子节点策略,如使用最大似然估计、基于概率的决策等。这些策略可以根据具体问题和数据集的特点进行选择和调整,以达到最佳的分类或回归效果。在实际应用中,可以通过实验和比较不同策略的性能来选择最合适的叶子节点策略。