从噪声点中找到平滑的全局最大值

数据挖掘 scikit-学习 超参数调整
2022-02-17 10:00:52

假设我有许多采样数据点和每个数据点的结果值。在实践中,这可能是一个高维问题,但这里有一个一维的例子:

在此处输入图像描述

在上面的示例中,35 处的点是最大值,但是,稍微高一点的点会显着下降,因此考虑噪声的平滑最大值可能更接近 25。

是否有可用于自动完成此任务的标准模型或算法?这个例子是 中类的n_estimators超参数的不同值的交叉验证分数,但实际上我需要优化多个超参数。有没有什么东西可以找到全局最大值但对于更高的维度,即在这种情况下更多的超参数?RandomForestRegressorsklearn

1个回答

我花了一段时间才明白你的意思,因为你也有一个接近最大值的 0.5。但我认为你的意思是你想降低风险,并远离 45 左右那个令人讨厌的最小值?

将每个点与其两侧的邻居平均可以为您提供这一点。用 N 点平均使得它更平滑,N 越高。更好的是加权平均值,因此距离较远的点影响较小。

(看起来这N是我们需要调整的另一个超参数!但我想我们可以猜测,在处理这样的少量点时,N 应该是 1 或 2。)

我在 scikit 中没有找到移动平均函数,但在 pandas 中有pandas.Series.rolling(). 或者https://stackoverflow.com/q/14313510/841830上的答案可能很有用。

附加:我的第一个想法是在每个维度(例如每个超参数)上运行这种平滑,一次一个。但是您可以将这个想法扩展到更多维度:它需要使用最近邻算法来确定要平均的 N 个邻居。相反,计算到每个其他邻居的距离以及基于反距离或反距离平方的权重可能会更有效。(所以所有其他点都会影响结果,但更近的点会产生更大的影响。)这需要使用原始点的相对权重。