计算数据点的平均分数,并对异常值进行惩罚
本文关键字:异常 惩罚 数据 平均分 计算 | 更新日期: 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 的分数,考虑到底部的两个异常值(CpuClock 和 Title(,这太好了。
我想实现的是一个聚合函数,其工作原理类似于平均值,但随着值进一步向零漂移,它为值提供指数负权重。
有很多方法可以做到这一点,这取决于什么对你来说"太好了"。我的方法是为每个数字计算某种加权值,如下所示:
double value = Math.Pow(value, 9 - (int)(10*(value-0.1)))
此代码按原样采用 0.91 到 1.00 的值,正方形 0.81 到 90,立方体 0.71 到 0.80,依此类推。所以价值越小,改造后就越少。然后使用这些新值计算平均值。您可以根据需要更改步长或功率