爬山测试集
2021-9-2
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
爬山测试集是一种在机器学习竞赛中实现良好或完美预测的方法,无需接触训练集,甚至无需开发预测模型。
作为机器学习竞赛的一种方法,它理所当然地不受欢迎,并且大多数竞赛平台都会施加限制来防止它。
然而,爬山测试集是机器学习从业者在参加比赛时不小心做的事情。通过开发一个显式的实现来爬山测试集,它有助于更好地理解过度使用测试数据集来评估建模pipelines是多么容易。
 
机器学习竞赛,如 Kaggle 上的竞赛,提供了完整的训练数据集以及测试集的输入。
给定竞赛的目标是预测目标值,例如测试集的标签或数值。解决方案根据隐藏的测试集目标值进行评估并适当评分。在测试集上得分最高的提交赢得了比赛。
机器学习竞赛的挑战可以被定义为一个优化问题。传统上,竞赛参与者充当优化算法,探索导致不同预测集的不同建模pipelines,对预测进行评分,然后对pipelines进行更改以提高分数。
这个过程也可以直接使用优化算法进行建模,其中生成和评估候选预测,而无需查看训练集。
通常,这被称为爬山测试集,因为实现解决这个问题的最简单的优化算法之一是爬山算法。
尽管在实际的机器学习比赛中爬山测试集是理所当然的,但为了了解该方法的局限性和过度拟合测试集的危险,实施该方法可能是一个有趣的练习。此外,无需接触训练数据集就可以完美预测测试集这一事实常常让许多机器学习初学者感到震惊。
最重要的是,当我们反复评估不同的建模pipelines时,我们会隐式爬升测试集。风险在于以增加泛化错误为代价提高测试集的分数,即在更广泛的问题上表现更差。
运行机器学习竞赛的人很清楚这个问题,并对预测评估施加限制以应对它,例如将评估限制为每天一次或几次,并报告测试集的隐藏子集而不是整个测试集的分数。

爬山算法

爬山算法是一种非常简单的优化算法。
生成候选解决方案并对其进行评估。这是一个起点,然后逐步改进,直到无法实现进一步的改进,或者我们耗尽了时间、资源或兴趣。
从现有的候选解决方案生成新的候选解决方案。通常,这涉及对候选解决方案进行一次更改,对其进行评估,并接受候选解决方案作为新的“当前”解决方案,如果它与之前的当前解决方案一样好或更好。否则,它被丢弃。
我们可能认为只接受分数更高的候选人是个好主意。对于许多简单问题,这是一种合理的方法,尽管在更复杂的问题上,希望接受具有相同分数的不同候选者,以帮助搜索过程缩放特征空间中的平坦区域(高原)。
当爬山测试集时,候选解决方案是预测列表。对于二元分类任务,这是两个类的0和1值的列表。对于回归任务,这是目标变量范围内的数字列表。
对候选分类解决方案的修改是选择一个预测并将其从0翻转到1或1到0。对回归候选解决方案的修改是将高斯噪声添加到列表中的一个值或替换一个值在具有新值的列表中。
解决方案的评分涉及计算评分指标,例如分类任务的分类准确度或回归任务的平均绝对误差。

实施爬山

notion image
 
爬山糖尿病分类数据集
notion image
 
爬山住房回归数据集
notion image
  • Scikit-Learn
  • 数据泄漏特征选择
    目录