添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

原文链接: 数据竞赛三剑客变四剑客了~

早期做数据竞赛的时候,常听大家戏称 Catboost,Xgboost和Lightgbm 为竞赛三剑客,如今,在诸多的竞赛中,又多了一位 HistGradientBoosting ,该算法基本也会出现在所有的竞赛问题中。例如:Steel Plate Defect Prediction竞赛中第二名的模型就是用到了HistGradientBoostingClassifier。

关于HistGradientBoosting算法

基于直方图的模型HistGradientBoosting算法相较于GradientBoostingClassifier 和 GradientBoostingRegressor:

  • 模型训练速度会快几个数量级,尤其是在样本数量超过数万个样本时。

  • 支持缺失值。

  • 支持样本加权;

HistGradientBoosting算法首先将输入样本 X 划分为整数值的箱(通常为 256 个箱),这极大地减少了需要考虑的分割点数量,并允许算法在构建树时利用基于整数的数据结构(直方图),而不是依赖排序的连续值。

RETRAIN_HGBC_MODEL = False
def objective(trial):
    # Define hyperparameters to tune
    param = {
        'learning_rate': trial.suggest_float('learning_rate', 0.005, 0.1),
        'max_iter': trial.suggest_int('max_iter', 100, 2500),  # Equivalent to n_estimators
        'max_depth': trial.suggest_int('max_depth', 3, 20),
        'l2_regularization': trial.suggest_float('l2_regularization', 1e-8, 10.0, log=True),  # Equivalent to reg_lambda
        'min_samples_leaf': trial.suggest_int('min_samples_leaf', 20, 300),
        'max_bins': trial.suggest_int('max_bins', 25, 255),
    auc_scores = []
    for train_idx, valid_idx in cv.split(X, y):
        X_train_fold, X_valid_fold = X.iloc[train_idx], X.iloc[valid_idx]
        y_train_fold, y_valid_fold = y.iloc[train_idx], y.iloc[valid_idx]
        # Create and fit the model
        model = HistGradientBoostingClassifier(**param)
        model.fit(X_train_fold, y_train_fold)
        # Predict class probabilities
        y_prob = model.predict_proba(X_valid_fold)
        # Compute the AUC for each class and take the average
        average_auc = roc_auc_score(targets_bin.iloc[valid_idx], y_prob[:, 1:], multi_class="ovr", average="macro")
        auc_scores.append(average_auc)
    # Return the average AUC score across all folds
    return np.mean(auc_scores)
if RETRAIN_HGBC_MODEL:
    # Example usage with Optuna
    hgbc_study = optuna.create_study(direction='maximize', study_name="HistGradientBoostingClassifier_model_training")
    hgbc_study.optimize(objective, n_trials=200)  # Adjust the number of trials as necessary
    # Output the optimization results
    print(f"Best trial average AUC: {study.best_value:.4f}")
    print(study.best_params)
    for key, value in study.best_params.items():
        print(f"{key}: {value}")

LightGBM等模型试用的场景都可以直接使用。

  1. https://www.kaggle.com/code/yunqicao/2nd-place-solution-steel-plate-defect-prediction

  2. https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。 大家有推荐的公众号可以评论区留言,共同学习,一起进步。

早期做数据竞赛的时候,常听大家戏称Catboost,Xgboost和Lightgbm为竞赛三剑客,如今,在诸多的竞赛中,又多了一位HistGradientBoosting,该算法基本也会出现在所有的竞赛问题中。例如:Steel Plate Defect Prediction竞赛中第二名的模型就是用到了HistGradientBoostingClassifier。
如何从一个菜鸟成为 kaggle 竞赛 大师 From:https://medium.com/analytics-vidhya/from-a-novice-to-the-youngest- kaggle -competition-master-and-landing-in-a-fortune-500-cc8acf49de 一、阅读书籍推荐: 1. Python Recom...
Kaggle 是一个 数据分析 竞赛 平台,网址:https://www. kaggle .com/ 首先进入 Kaggle 网站,注册登陆后拉下来会看到进行中的比赛。 关于比赛的细节: 1、我们下载得到的 数据 都是csv格式的 数据 ,因为最后只需要提交结果,所以这中间我们使用任何语言任何 算法 都是可以的,没有任何限制 2、初始 数据 中训练集是有Label的,而测试 数据 是没有Label的,我们要做的是用训练集来训练 模型 ...
kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考, kaggle 教程,方案分析, 竞赛 资料, 竞赛 方案参考,