我正在针对机器学习问题进行特征提取过程,我遇到了一个问题。
考虑一组产品。每个产品的评级为0或1,分别映射为坏或好。现在我想为每个独特的产品计算[0, n]
区间的评分,其中n
是一个大于0的整数。
每种产品的总评分明显不同,因此简单的平均值会产生以下问题:
avg_ratio_score = good_rates / total_rates
a) 1/1 = 1
b) 95/100 = 0.95
即使比率a)更高,比率b)也给用户更多的信心。出于这个原因,我需要加权平均值。
问题是选择什么重量。产品的频率从大约100到100k不等。
我的第一种方法如下:
ratings frequency interval weight
-------------------------- ------
90k - 100k 20
80k - 90k 18
70k - 80k 16
60k - 70k 14
50k - 60k 12
40k - 50k 11
30k - 40k 10
20k - 30k 8
10k - 20k 6
5k - 10k 4
1k - 5k 3
500 - 1k 2
100 - 500 1
1 - 100 0.5
weighted_rating_score = good_ratings * weight / total_ratings
起初这听起来像是一个很好的解决方案,但是看一个真实的例子它可能不如它看起来那么好:
a. 90/100 = 0.9 * 0.5 = 0.45
b. 50k/100k = 0.5 * 20 = 10
这样的结果表明,产品b)是比产品a)更好的替代品,但是考虑可能不是这种情况的原始比率。
我想知道一种有效的(如果有的话)计算完美体重或其他类似建议的方法。
我认为你的问题的答案是主观的,因为你选择与引起的不确定性相关的重要性是样本数量较少,也是主观的。
然而,考虑到较低数量的样本的“惩罚”,我可以想到另一种方法来纠正较低数量的样本的评级。看下面的公式:
(GoodRates / TotalRates) - alpha * (1 / TotalRates)
我无法在线添加公式的图像,但你可以看到它here。
当TotalRates接近无穷大时,此公式使得评级接近简单评级。实际上,数量级为数百或更高的偶数可以忽略不计。选择不同的alpha值将增加或减少总费率较低的重要性。
粗略地,您可以始终考虑更复杂的评级方法,这些方法将捕获数据的其他属性,例如对于具有相同观察数量的更高速率的更大惩罚,等等。