У меня есть приложение PHP, которое позволяет пользователю указывать список стран и список продуктов.Он говорит им, какой розничный продавец является наиболее близким.Для этого используется формула, аналогичная следующей:
(
(количество сопоставленных стран / число выбранных стран) * (важность соответствия страны)
+
(количество подходящих продуктов / количество выбранных продуктов) * (важность соответствия продуктов)
)
*
(значение обеих страни соответствие решения * (совпадающие совпадения / количество возможных совпадающих совпадений))
Где [важность соответствия страны] составляет 30%, [важность соответствия продукта] составляет 10% и [значение обеих страни сопоставление решения] равно 2,5
Итак, чтобы упростить его: (совпадение страны + совпадение продукта) * множитель.
Думайте об этом как [они работают в этой стране?+ они продают этот продукт?] * [продают ли этот продукт в этой стране?]
Это дает нам процент совпадений для каждого розничного продавца, которого я использую для ранжирования результатов поиска.
Моя таблица данных выглядит примерно так:
id | country | retailer_id | product_id
========================================
1 | FR | 1 | 1
2 | FR | 2 | 1
3 | FR | 3 | 1
4 | FR | 4 | 1
5 | FR | 5 | 1
До сих пор это было довольно просто, поскольку это было двоичное решение.Ритейлер либо работает в этой стране, либо продает этот продукт, либо нет.
Однако меня попросили добавить некоторые сложности в систему.Мне дали данные о доходах, показывающие, сколько этого продукта продает каждый продавец в каждой стране.Таблица данных теперь выглядит примерно так:
id | country | retailer_id | product_id | revenue
===================================================
1 | FR | 1 | 1 | 1000
2 | FR | 2 | 1 | 5000
3 | FR | 3 | 1 | 10000
4 | FR | 4 | 1 | 400000
5 | FR | 5 | 1 | 9000000
Моя проблема в том, что я не хочу, чтобы продавец 3 продавал в десять раз больше, чем продавец 1, чтобы сделать их в десять раз лучше, чем результат поиска.Точно так же, розничный продавец 5 не должен быть в девять тысяч раз лучше, чем розничный продавец 1. Я рассмотрел использование среднего, режима и медианы.Я пытался использовать отклонение от среднего.Я озадачен тем, как сделать большие прыжки менее значимыми.Мое отсутствие незнания в области статистики показывает.
Помогите!