计算数据点的平均分数,并对异常值进行惩罚

本文关键字:异常 惩罚 数据 平均分 计算 | 更新日期: 2023-09-27 18:34:37

我正在开发一个产品匹配功能,该功能适用于如下所示的数据集:

DisplayPixelsX =    1.00
DisplayPixelsY =    1.00
Weight =            0.89
Width =             0.96
Height =            0.96
Thickness =         0.97
BatteryCapacity =   0.92
StorageSize =       1.00
CpuCores =          1.00
CpuClock =          0.68
Title =             0.73

这些值表示从 0 到 1 的各种产品属性的相似性。所有这些值目前都是平均(加权(的,以提供从 0 到 1 的最终相似性分数。

我对这些数据点求平均值的粗略方法使得涉及的数据点越多,结果的可靠性就越低。计算上述样本的平均值得出 0.918 的分数,考虑到底部的两个异常值(CpuClockTitle(,这太好了。

我想实现的是一个聚合函数,其工作原理类似于平均值,但随着值进一步向零漂移,它为值提供指数负权重。

计算数据点的平均分数,并对异常值进行惩罚

有很多方法可以做到这一点,这取决于什么对你来说"太好了"。我的方法是为每个数字计算某种加权值,如下所示:

double value = Math.Pow(value, 9 - (int)(10*(value-0.1)))

此代码按原样采用 0.91 到 1.00 的值,正方形 0.81 到 90,立方体 0.71 到 0.80,依此类推。所以价值越小,改造后就越少。然后使用这些新值计算平均值。您可以根据需要更改步长或功率