Какое обоснование формулы, используемой в hive_trend_mapper.py
программе этот учебник Hadoop для расчета тенденций в Википедии?
На самом деле существуют два компонента: ежемесячная тенденция и суточный тренд. Я собираюсь сосредоточиться на ежедневной тенденции, но подобные вопросы относятся к ежемесячному.
В дневном тренде pageviews
представляет собой массив количества просмотров страниц в день для этого раздела, один элемент в день и total_pageviews
- это сумма этого массива:
# pageviews for most recent day
y2 = pageviews[-1]
# pageviews for previous day
y1 = pageviews[-2]
# Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
Я знаю, что он делает поверхностно: он просто смотрит на изменение за последний день (slope
) и масштабирует его до журнала 1+total_pageviews
(log(1)==0
, поэтому этот коэффициент масштабирования неотрицателен). Это можно рассматривать как отношение к просмотру страниц в месяц как к весу, но умеренное, поскольку оно растет - таким образом, общее просмотрение страниц перестает иметь значение для вещей, которые являются "достаточно популярными", но в то же время большие изменения на незначительной доне, t весить столько.
Но зачем это делать? Почему мы хотим обесценивать вещи, которые изначально непопулярны? Разве большие дельта не имеют значения для предметов, которые имеют низкую постоянную популярность, и меньше для предметов, которые уже популярны (для которых большие дельта могут падать хорошо в пределах частичного отклонения)? Как соломенный, почему бы просто не взять y2-y1
и сделать с ним?
И для чего будет полезен error
? Учебник действительно не использует его осмысленно снова. Опять же, это не говорит нам, как используется trend
- это то, что нанесено в конечном продукте, правильно?
Где я могу прочитать (предпочтенный вводный) справочник по теории здесь? Есть ли имя для этого безумия? Является ли это формулой учебника где-нибудь?
Заранее благодарим за любые ответы (или обсуждение!).