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

时间:2016-02-14 20:30:06

标签: c# statistics

我正在研究适用于以下数据集的产品匹配功能:

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,但是当它们向零点漂移时,它会给出指数负权重。

1 个答案:

答案 0 :(得分:1)

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

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

此代码按原样取0.91到1.00的值,正方形0.81到90,立方体0.71到0.80等等。因此,价值越小,转型后的价值就越小。然后使用这些新值计算平均值。您可以根据需要更改步数或功率