欢迎光临
我们一直在努力

一棵树的自我修养:从“杠精”到“专家”的决策指南


📘 :一棵树的自我修养:从“杠精”到“专家”的决策指南


在这里插入图片描述

1. 决策树核心思想 —— 就是一台“是非题问答机”

  • 本质:通过一连串 是/否 的二元判断,把数据层层划分,最终在叶子节点给出结论(类别或数值)。
  • 生活类比:相亲决策树(年龄→长相→收入→是否公务员 → 见/不见)。
  • 核心三步走:
  • 特征选择:选当前最“有用”的特征。
  • 树的生成:递归分裂,直到停止条件。
  • 剪枝:防止模型“死记硬背”(过拟合)。

2. CART树 —— 所有主流树模型的“老祖宗”

对比项CART前辈(ID3/C4.5)
任务类型 分类 + 回归 仅分类
分裂方式 强制二分(只问是非题) 二分/多分混用
过拟合处理 内置剪枝机制 较弱
江湖地位 随机森林、XGBoost、LightGBM 的基石 已淡出工业界

CART 的核心原则(4条铁律):

  • 每次只二分:无论特征类型,分裂时只切一刀(如“色泽=青绿” vs “≠青绿”)。
  • 追求纯度最大化:分裂后子集内部尽量“纯粹”(分类看基尼系数,回归看方差)。
  • 递归分裂:对子集重复步骤2,直到子集纯净或样本太少。
  • 回归时取均值:叶子节点输出该组样本目标值的平均值。

  • 3. 分类案例 · 泰坦尼克号生存预测(代码骨架)

    import pandas as pd
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.model_selection import train_test_split

    # 1. 读数据
    df = pd.read_csv("titanic_train.csv")

    # 2. 特征工程(核心:处理缺失 + 编码)
    x = df[['Pclass', 'Age', 'Sex']]
    y = df['Survived']
    x['Age'].fillna(x['Age'].mean(), inplace=True)
    x = pd.get_dummies(x) # Sex 转为 one-hot

    # 3. 切分 & 训练
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
    clf = DecisionTreeClassifier(criterion='gini', max_depth=5) # 关键参数
    clf.fit(x_train, y_train)

    # 4. 评估
    print(clf.score(x_test, y_test))

    关键 API 参数:

    • criterion='gini'(CART标准)或 'entropy'(ID3标准)
    • max_depth:树的最大深度(预剪枝常用)
    • min_samples_split / min_samples_leaf:控制分裂门槛

    4. 回归案例 · 波士顿房价预测(代码骨架)

    from sklearn.tree import DecisionTreeRegressor
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import mean_squared_error

    # 数据加载(略)
    x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)

    # 特征标准化(树模型对尺度不敏感,但做无害)
    scaler = StandardScaler()
    x_train = scaler.fit_transform(x_train)
    x_test = scaler.transform(x_test)

    # 训练回归树
    reg = DecisionTreeRegressor(max_depth=4)
    reg.fit(x_train, y_train)

    # 评估(MSE越小越好)
    y_pred = reg.predict(x_test)
    print("MSE:", mean_squared_error(y_test, y_pred))

    注意:回归树叶子节点输出的是该叶子的平均房价,非分类标签。


    5. 剪枝 —— 防止“背题式学习”的正则化手段

    剪枝类型时机做法优缺点
    预剪枝 树生成过程中 若当前分裂不能提升验证集精度,立即停止 省时,但容易欠拟合(贪心短视)
    后剪枝 树完全生成后 自底向上尝试删除子树,若精度提升则替换为叶子 泛化更强,但训练开销大

    通俗理解:

    • 预剪枝 = 边写作业边检查,不对就停笔 → 快但可能想不深。
    • 后剪枝 = 先写完一整篇,再回头删废话 → 全面但耗时间。

    6. 优缺点一句话总结

    优点缺点
    解释性强,画图即说人话 单棵树容易过拟合(需剪枝)
    分类回归通吃 对数据扰动敏感(换个样本树结构大变)
    工业界集成算法的基石 贪心分裂,不保证全局最优

    7. 终极记忆口诀(考试/面试用)

    二分问,选最纯,递归分,均值归;预剪快,后剪稳,集成树下它称神。


    赞(0)
    未经允许不得转载:171主机测评 » 一棵树的自我修养:从“杠精”到“专家”的决策指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址