你是否曾经在生活中做过“选择题”?比如:
其实,我们的大脑经常会像“决策树”一样,通过一连串问题和判断,逐步缩小选择范围,最终做出决定。
**决策树(Decision Tree)**就是这样一种模拟人类决策过程的机器学习模型。它通过“提问-分支-决策”的方式,把复杂问题拆解成一系列简单的判断,广泛应用于分类(如判断邮件是否为垃圾邮件)、回归(如预测房价)等任务。
假设你去银行申请贷款,银行会怎么判断是否批准?他们可能会像下面这样一步步筛选:
现实中,决策树可以有更多层级和分支,处理更复杂的决策。
决策树的每一步“提问”都不是随意的。它会根据信息增益(Information Gain)或基尼系数(Gini Index)等指标,自动选择最能区分数据的特征。
决策树容易“过拟合”——即把训练数据的偶然性当成规律。常见的防止方法有:
下面用经典的鸢尾花(Iris)数据集,演示如何用Python和sklearn快速训练和可视化一棵决策树。
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
# 加载鸢尾花数据集(4个特征,3种类别)
data = load_iris()
X, y = data.data, data.target
# 训练决策树(限制最大深度=3)
model = DecisionTreeClassifier(max_depth=3, random_state=42)
model.fit(X, y)
# 可视化决策树
plt.figure(figsize=(12, 8))
plot_tree(model, feature_names=data.feature_names, class_names=data.target_names, filled=True)
plt.title('Iris数据集决策树示意图')
plt.show()
输出结果说明:
虽然单棵决策树简单直观,但在实际应用中,往往会用“集成方法”提升效果:
这些方法在金融风控、广告点击率预测、推荐系统等领域表现极为出色。
下次当你看到一长串“如果…就…”的判断规则时——那很可能就是一棵决策树!
延伸阅读:
- sklearn官方文档:决策树
- 机器学习实战:决策树原理与应用
- Kaggle竞赛常用模型:XGBoost/LightGBM