You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CatBoost中使用L1正则化剔除无关特征并避免过拟合?

CatBoost中L1正则化的实现方法

CatBoost确实支持L1正则化,可用于剔除无关特征并抑制过拟合,核心通过以下参数实现:

关键参数说明

  • l1_reg: 直接控制L1正则化强度,取值为非负浮点数(默认0,即不启用)。增大该值会让更多特征的权重趋近于0,自动完成无关特征的筛选。
  • model_size_reg: 组合型正则化参数,同时包含L1和L2项(公式为 model_size_reg = L1*|w| + L2*w²)。若需纯L1效果,可将L2部分设为0。

Python代码示例

基础L1正则化用法

from catboost import CatBoostClassifier, Pool

# 构造训练数据集(假设已准备好X_train、y_train和分类特征列cat_features)
train_pool = Pool(data=X_train, label=y_train, cat_features=cat_features)

# 初始化模型并设置L1正则化强度
model = CatBoostClassifier(
    l1_reg=1.0,  # 根据业务场景调整,值越大正则化约束越强
    iterations=1000,
    learning_rate=0.05,
    loss_function='Logloss',
    verbose=100
)

model.fit(train_pool)

# 查看特征权重,权重趋近于0的即为可剔除的无关特征
feature_weights = model.get_feature_importance()

纯L1正则化(关闭L2项)

model = CatBoostClassifier(
    model_size_reg=0.8,  # L1正则化强度
    l2_leaf_reg=0.0,     # 关闭L2正则化,仅保留L1效果
    iterations=1000,
    learning_rate=0.05,
    verbose=100
)

注意事项

  • 正则化强度需通过交叉验证调整,避免过度正则化导致模型欠拟合。
  • 可通过get_feature_importance()输出的特征权重,手动移除被L1压制的无关特征,进一步简化模型。
  • 分类、回归任务中参数用法一致,仅需调整loss_function适配任务类型。

内容的提问来源于stack exchange,提问作者mina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:50:27