Как определяются тренды?

Сервис трендов независимо анализирует два динамических показателя - динамику количества упоминаний объекта и динамику заметности объекта.

Цель сервиса: определить особые точки - скачки количества упоминаний/заметности.

Для того, чтобы понять, является данная точка особой или нет, анализируется динамика, и строится прогностическая модель, которая предсказывает "ожидаемое" значение показателя в данной точке. Прогностическая модель основана на экспоненциальном сглаживании (см. презентацию https://confluence.interfax.ru/pages/viewpage.acti... ). В результате получаем ожидаемое значение показателя с некоторым доверительным интервалом (серая область на рисунке). Если реальное значение показателя выше прогностического (выше серой зоны), то точка считается особой. В этих точках и срабатывает триггер тренда (независимо по заметности и по количеству упоминаний).

Использован также календарь праздничных и выходных дней, который позволяет, во-первых, учесть естественное падение показателей и не считать особой точкой первый день после праздников (когда количество публикаций резко вырастает) и, во-вторых, заметить аномальный рост количества публикаций, если он случился в выходные дни (несмотря на то, что количество публикаций все равно меньше среднего количества публикаций в будний день).

Возможные проблемы и направления доработок:

  1. Календарь праздников очень примитивный (российские праздники задаются через конфигурацию - параметр AddedHolidays), в необычные праздники триггер может срабатывать в первый рабочий день после них или наоборот не срабатывать из-за сдвигов праздников.
    вот как выглядит календарь праздников сейчас:
    <add key="AddedHolidays" value="1 янв, 2 янв, 3 янв, 4 янв, 5 янв, 6 янв, 7 янв, 8 янв, 23 фев, 8 мар, 1 мая, 9 мая, 12 июня, 4 ноября, 9 мар, 2 мая, 30 апр, 11 июня, 31 дек"></add>
    <add key="AddedWorkdays" value="22 фев, 7 мар, 28 апр, 8 мая, 9 июня, 29 дек"></add>
  2. Разумным кажется визуализировать на пользовательском графике предиктивные значения, чтобы было интуитивно понятно, почему данный день является особым.

Отчет о трендах приходит пользователю не по окончании суток, а в течение дня, как только система заметила превышение пороговых значений. Пользователь получает график динамики упоминаний/заметности, который оканчивается текущим днем. Но день еще не закончен, из-за этого визуально пользователь может и не наблюдать пика показателя, и смущаться от этого (ведь система делает поправку на то, что день еще не закончен, и публикации еще могут приходить в будущем, а пользователь об этом забывает). По окончании дня если перестроить динамику, то станет очевидно, что тренд сработал не зря.