Статистический метод оценки набора экспоненциальных данных - PullRequest
2 голосов
/ 26 сентября 2011

У меня есть приложение 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. Я рассмотрел использование среднего, режима и медианы.Я пытался использовать отклонение от среднего.Я озадачен тем, как сделать большие прыжки менее значимыми.Мое отсутствие незнания в области статистики показывает.

Помогите!

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

Классическим «демпфированием» огромного увеличения стоимости являются логарифмы . Если вы посмотрите на эту статью в Википедии, вы увидите, что значение функции изначально растет довольно быстро, но затем значительно меньше. Как упоминалось в другом ответе, логарифм с основанием 10 означает, что каждый раз, когда вы умножаете входное значение на десять, выходное значение увеличивается на one . Аналогично, логарифм с основанием два будет увеличиваться на единицу каждый раз, когда вы умножаете входное значение на два.

Если вы хотите ослабить эффект логарифма, вы можете изучить его, скажем, линейную функцию, например, f(x) = log2 x + 0.0001 x ... но этот множитель нужно было бы очень тщательно настроить, чтобы линейная часть не затмила логарифмическую часть быстро.

Придумать такое взвешивание по своей сути сложно, особенно если вы точно не знаете, как должна выглядеть функция. Однако есть программы, которые подгоняют кривую , т. Е. Вы можете задать ей пары функций ввода / вывода и шаблонную функцию, и программа найдет хорошие параметры для шаблонной функции для аппроксимации желаемой кривой. Таким образом, теоретически вы могли бы нарисовать свою кривую, а затем составить программу для определения хорошей формулы. Это тоже может быть немного сложно, но я подумала, что тебя это заинтересует. Одной из таких программ является инструмент с открытым исходным кодом QtiPlot .

0 голосов
/ 26 сентября 2011

Рассмотрите возможность использования функции log10 ().Это уменьшает прямое масштабирование результатов, как вы описали.Если вы зарегистрируете 10 () дохода, то тот, у кого доход в 1000 раз больше, получает оценку только в 3 раза больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...