CART(Classification and Regression Trees)是一种经典的决策树算法,广泛应用于分类和回归任务。本文将带你从零实现CART算法的核心逻辑,并附上示例代码与可视化说明。
核心步骤解析
特征选择
使用基尼不纯度(Gini Impurity)或平方误差(Squared Error)选择最优分割特征节点分割
对选定特征的每个可能值进行分割,递归构建子树终止条件
当满足以下条件时停止分割:- 样本纯度达到阈值(如基尼不纯度 < 0.01)
- 树深度超过限制
- 样本数量不足(如 < 10)
- 所有特征已被使用
剪枝优化
通过预剪枝(提前终止)或后剪枝(事后修剪)防止过拟合
代码实现(Python示例)
class Node:
def __init__(self, feature=None, threshold=None, left=None, right=None, value=None):
self.feature = feature # 分割特征
self.threshold = threshold # 分割阈值
self.left = left # 左子树
self.right = right # 右子树
self.value = value # 叶子节点值
def build_tree(X, y, depth=0):
# 实现分割逻辑与递归构建
...
应用场景
- 分类任务:如垃圾邮件检测(/community/resources/tutorials/machine_learning/decision_trees/email_spam_detection)
- 回归任务:如房价预测
- 特征工程:用于可视化数据分布关系