Я выполняю процесс извлечения функций для проблемы машинного обучения, и я столкнулся с проблемой.
Рассмотрим набор продуктов. Каждый продукт оценивается как 0 или 1, что соответствует плохо или хорошо соответственно. Теперь я хочу вычислить для каждого уникального продукта рейтинговую оценку в интервале [0, n]
, где n
- это целое число, большее 0.
Суммарные рейтинги для каждого продукта, очевидно, отличаются, поэтому простое среднее приведет к возникновению таких проблем, как:
avg_ratio_score = good_rates / total_rates
a) 1/1 = 1
b) 95/100 = 0.95
Несмотря на то, что коэффициент а) выше, коэффициент б) дает пользователю гораздо большую уверенность. По этой причине мне нужно средневзвешенное значение.
Проблема в том, какой вес выбрать . Частота продуктов варьируется от 100 до 100 тыс.
Мой первый подход был следующим:
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), но с учетом исходных соотношений, которые могут не иметь места.
Я хотел бы узнать эффективный (если есть) способ расчета идеального веса или другие подобные предложения.