Как заметить необычную новостную активность - PullRequest
5 голосов
/ 11 июня 2010

Предположим, вы смогли отследить упоминания в новостях о различных сущностях, таких как, скажем, "Стив Джобс" и "Стив Баллмер".

Каким образом вы могли бы сказать, было ли количество упоминаний на сущность за данный период времени необычным по сравнению с их обычной степенью частоты появления?

Я полагаю, что для более популярного человека, такого как Стив Джобс, увеличение на 50% может быть необычным (увеличение от 1000 до 1500), в то время как для относительно неизвестного генерального директора увеличение на 1000% для данного дня может быть возможным (увеличение от 2 до 200). Если у вас не было способа масштабирования, то в вашем индексе необычности могли доминировать неслыханные люди, получившие 15 минут славы.

обновление: Чтобы сделать его более понятным, предполагается, что вы уже можете получать непрерывный поток новостей, идентифицировать сущности в каждом элементе новостей и хранить все это в хранилище реляционных данных.

Ответы [ 4 ]

3 голосов
/ 11 июня 2010

Вы можете использовать скользящее среднее . Так работают многие фондовые трекеры. Отслеживая последние n точек данных, вы могли видеть, было ли это изменение существенным изменением за пределами их обычной дисперсии.

Вы также можете попробовать некоторую нормализацию - один очень простой способ состоит в том, что каждая категория имеет общее количество упоминаний ( m ), процентное изменение по сравнению с последним периодом времени ( δ ), а затем некоторое нормализованное значение ( z ), где z = m * δ . Давайте посмотрим на таблицу ниже ( m0 - предыдущее значение m):

Name                m    m0    δ    z
Steve Jobs       4950  4500    .10      495
Steve Ballmer     400   300    .33      132
Larry Ellison      50    10    4.0      400
Andy Nobody        50    40    .20      10

Здесь, изменение на 400% для неизвестного Ларри Эллисона приводит к значению z 400, изменение на 10% для гораздо более известного Стива Джобса - 495, и мой всплеск 20% - все еще низкий 10. Вы можете настроить это Алгоритм в зависимости от того, что вы считаете хорошими весами, или используйте стандартное отклонение или скользящее среднее, чтобы определить, насколько это далеко от их «ожидаемых» результатов.

2 голосов
/ 11 июня 2010
  • Создать базу данных и вести историю историй с отметкой времени.Затем у вас есть история историй с течением времени для каждой категории новостного элемента, который вы отслеживаете.
  • Периодически вычисляйте количество историй за единицу времени (вы выбираете единицу).если текущее значение больше стандартных отклонений X от исторических данных.

Некоторые данные будут более волатильными, чем другие, поэтому вам может потребоваться настроить X соответствующим образом.X = 1 - разумная отправная точка

0 голосов
/ 12 июня 2010

Метод, который вы используете, будет зависеть от распределения подсчетов для каждого человека.Я догадываюсь, что они не будут распределяться нормально, а это означает, что некоторые из стандартных подходов к продольным данным могут быть неуместны - особенно для мелкого, неизвестного генерального директора, которого вы упоминаете, у которого будут данные, которые очень не-последовательный.

Я действительно недостаточно разбираюсь в продольных методах, чтобы дать вам твердый ответ здесь , но вот что я, вероятно, сделал бы, если бы вы заперли меня в комнатечтобы реализовать это прямо сейчас:

  1. Выкопать кучу прошлых данных.Трудно сказать, сколько вам нужно, но я бы в основном пошел, пока это не станет вычислительно безумным или график не станет нереальным (не ожидая ссылок на Стива Джобса из 1930-х годов).

  2. В процессе подготовкидля создания имитируемого «распределения вероятностей» (я здесь использую термины в общих чертах), более свежие данные должны быть взвешены больше, чем прошлые данные - например, через тысячу лет, услышав одно упоминание (этого) Стива Джобса, возможно,можно считать заслуживающим внимания событием, поэтому вы не хотели бы использовать ожидаемые результаты с сегодняшнего дня (скользящее среднее значение Энди использует тот же принцип).Для каждого счета (дня) в вашей базе данных создайте вероятность выборки, которая уменьшается со временем.Вчера наиболее релевантные данные и должны часто отбираться;30 лет назад не следует.

  3. Выборка из этого набора данных с использованием весов и с заменой (т. Е. Один и тот же элемент данных можно отбирать более одного раза).Сколько раздач вы делаете, зависит от данных, сколько человек вы отслеживаете, насколько хорошо ваше оборудование и т. Д. Чем больше, тем лучше.

  4. Сравните фактическое количество историй длядень, о котором идет речь в этом распределении.Какой процент от смоделированных значений лежит выше вашего реального значения?Это примерно (не дай бог ни один экономист на это посмотреть) вероятность того, что ваш реальный счет или более высокий показатель произойдет в этот день.Теперь вы решаете, что уместно - 5% - это норма, но это произвольная, глупая норма.Просто просмотрите свои результаты на некоторое время и посмотрите, что кажется вам подходящим.Конец.

Вот что отстой в этом методе: в нем нет тенденции.Если у Стива Джобса было 15 000 недель назад, 2000 три дня назад и 300 вчера, то есть явная тенденция к снижению.Но описанный выше метод может объяснить это только путем уменьшения весовых коэффициентов для более старых данных;у него нет возможности проецировать эту тенденцию вперед.Предполагается, что процесс в основном стационарный - что с течением времени не происходит никаких реальных изменений, только более и менее вероятные события из того же случайного процесса.

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

Удивительный вопрос, во всяком случае.Поддержите статистический сайт StackExchange , и как только он будет запущен, вы сможете получить гораздо лучший ответ, чем этот.

0 голосов
/ 11 июня 2010

Путь через упрощенный хранить имена людей и количество статей, созданных за последние 24 часа, с указанием их имени. Сравнить с историческими данными.

Реальная жизнь- Если вы пытаетесь динамически выбирать имена людей, как бы вы это сделали? Поиск по статьям, как вы захватываете имена? Как только вы получаете новое имя, вы ищете все статьи для него? Как вы отделяете Стива Джобса от Apple от Стива Джобса, новой звезды, бегущей назад, которая генерирует много статей?

Если вы ищете простоту, создайте таблицу с 50 именами людей, которые вы на самом деле вставляете. Каждый день в полночь ваша программа запускает быстрый запрос Google в течение последних 24 часов и сохраняет количество результатов. В этом есть много переменных, которые мы не учитываем.

...