我正在研究适用于以下数据集的产品匹配功能:
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 )。
我想要实现的是一个聚合函数,它的工作方式类似于Average,但是当它们向零点漂移时,它会给出指数负权重。
答案 0 :(得分:1)
很多方法可以做到这一点取决于对你来说“太好”的东西。我的方法是计算每个数字的某种加权值,如下所示:
double value = Math.Pow(value, 9 - (int)(10*(value-0.1)))
此代码按原样取0.91到1.00的值,正方形0.81到90,立方体0.71到0.80等等。因此,价值越小,转型后的价值就越小。然后使用这些新值计算平均值。您可以根据需要更改步数或功率