返回列表

4th Place Solution: Introducing hillclimbers

550. Playground Series - Season 3, Episode 14 | playground-series-s3e14

开始: 2023-05-02 结束: 2023-05-15 产量与品质预测 数据算法赛
作者:Matt OP(Kaggle Grandmaster)
排名:第4名
发布时间:2023年5月16日

第4名解决方案:介绍hillclimbers

大家好,非常感谢你们参加这场有趣的Playground系列比赛!自从今年1月PS第3赛季开始以来,我学到了很多知识,也享受了参与这些比赛的快乐时光。

我要感谢很多人帮助我获得第4名(请为所有这些notebook点赞!):

后处理技巧

上述所有notebook的共同点是什么?它们(以及其他许多人)都使用了后处理技巧。然而,它们的使用方式并不完全相同。有些人在交叉验证拆分中使用它,有些人在拆分预测混合后使用它。我个人发现在交叉验证拆分中使用它以及在拆分预测混合后使用它都很有益。

什么是hillclimbers?

我之所以感谢上述所有notebook,是因为这些正是我最终集成中使用的所有模型!我这样做也是为了尝试我的项目hillclimbers,这是一个使用爬山算法迭代混合机器学习模型预测的Python模块。特别感谢@cdeotte 最初解释和展示爬山算法的帖子 第3名解决方案 以及 @samuelcortinhas 的精彩notebook 📈 PS S3E3 - Hill Climbing like a GM。没有你们,我不可能创造出hillclimbers!

为什么创建hillclimbers?

我创建hillclimbers是因为在参加几次比赛后,我很快意识到拥有多样化模型的重要性。使用爬山算法时,交叉验证分数最好的模型并不总是被优先选择,相反,爬山算法会选择多样化的模型。我开始研究@samuelcortinhas的notebook代码,并在过去几届Playground比赛中尝试使用它。我发现自己在不同比赛中经常修改代码,因此希望创建一个更具适应性的工具。以下是我实现的一些功能,使得爬山算法几乎可以用于任何表格问题:

!pip install hillclimbers
from hillclimbers import climb_hill, partial

def climb_hill(
    train=None, 
    oof_pred_df=None, 
    test_pred_df=None, 
    target=None, 
    objective=None, 
    eval_metric=None,
    negative_weights=False, 
    precision=0.01, 
    plot_hill=True, 
    plot_hist=False
) -> np.ndarray: # 返回爬山算法产生的测试预测
    
  • target:指定要预测的目标列
  • objective:根据使用的评估指标设置为"maximize""minimize"
  • eval_metric:定义评估指标
  • negative_weights:是否要使用负权重?
  • precision:指定权重数组中的步长

更多详细说明请访问 GitHub仓库

结果


现在让我展示hillclimbers如何工作:

以下是爬山算法的可视化图表:

您可以在这个notebook中找到此解决方案的完整代码

同比赛其他方案