三支接力队:后一棵树专门纠正前一棵。
共同家族叫“梯度提升树”。它们擅长表格数据。
树会连续问几个“是 / 否”问题,把样本送到一个最终答案。
能记住复杂规则,也更容易把训练数据背下来。
每棵只做一点小修正,组合后通常更稳。这就是提升树的方向。
每一轮都测量当前答案的错误,再训练一棵新树去减少这个错误。
| XGBoost | LightGBM | CatBoost | |
|---|---|---|---|
| 核心印象 | 成熟、控制细 | 速度快、内存省 | 类别特征省心 |
| 树的生长 | 常按层生长 | 优先分裂收益最大的叶子 | 默认对称树 |
| 大数据速度 | 快 | 通常最快 | 中等 |
| 类别列 | 通常先编码 | 支持类别特征 | 强项:原生处理 |
| 小数据稳健性 | 常是可靠起点 | 要控制叶子复杂度 | 类别多时有优势 |
| GPU | 支持 | 支持 | 支持 |
“谁一定最准”没有固定答案。数据、特征与验证方式决定结果。
“城市=上海”不是数字大小关系,随便编码成 1、2、3 容易误导模型。
品牌、颜色、城市、用户类型都属于类别。它们有区别,却通常没有自然的大小顺序。
CatBoost 用训练顺序和统计方法转换类别,减少直接偷看答案造成的数据泄露。
一共训练多少棵树。太少学不够,太多可能过拟合。
每棵树的修正力度。小步慢走常更稳。
单棵树有多复杂。越复杂越容易记住噪声。
每轮只看部分行或列,增加随机性来防过拟合。
对复杂模型加惩罚,让它少走极端。
验证集不再进步时自动停,避免无效加树。
它们都遵循 fit → predict;主要区别在模型类和少量参数。
# XGBoost
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=6)
model.fit(X_train, y_train)# LightGBM
model = LGBMClassifier(
n_estimators=500,
learning_rate=0.05,
num_leaves=31)
model.fit(X_train, y_train)# CatBoost
model = CatBoostClassifier(
iterations=500,
learning_rate=0.05,
depth=6,
verbose=False)
model.fit(X_train, y_train,
cat_features=cat_cols)