Алгоритм обработки агрегации данных из множества подверженных ошибкам источников - PullRequest
11 голосов
/ 25 мая 2011

Я собираю списки концертов из нескольких разных источников, ни один из которых не является одновременно полным и точным. Некоторые данные поступают от пользователей (например, на last.fm) и могут быть неверными. Другие источники данных очень точны, но могут содержать не каждое событие. Я могу использовать такие атрибуты, как дата события и город / штат, чтобы попытаться сопоставить списки из разных источников. Я хотел бы быть достаточно уверенным, что события действительны. Похоже, было бы хорошей стратегией использовать как можно больше различных источников для проверки списков в подверженных ошибкам источниках.

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

Ответы [ 4 ]

3 голосов
/ 25 мая 2011

Вот подход, который находит его в статистике - в частности, он использует скрытую марковскую модель (http://en.wikipedia.org/wiki/Hidden_Markov_model):

1) Используйте процесс сопоставления, чтобы получить очищенный список возможных событий. Считайте каждое событие помеченным как «истинное» или «поддельное», даже если отметки скрыты от вас. Вы можете себе представить, что какой-то источник событий производит их, генерируя их как «истинные» или «поддельные» в соответствии с вероятностью, которая является неизвестным параметром.

2) Свяжите неизвестные параметры с каждым источником списков. Они дают вероятность того, что этот источник сообщит об истинном событии, произведенном источником событий, и вероятность того, что он сообщит о поддельном событии, произведенном источником.

3) Обратите внимание, что если бы вы могли видеть маркировку «истинно» или «фальшиво», вы могли бы легко определить вероятности для каждого источника. К сожалению, конечно, вы не можете видеть эти скрытые маркировки.

4) Давайте назовем эти скрытые маркировки «скрытыми переменными», потому что тогда вы можете использовать http://en.wikipedia.org/wiki/Em_algorithm для выбора вершины для многообещающих решений этой проблемы, начиная со случайного запуска.

5) Очевидно, что вы можете усложнить задачу, разделив события на классы и предоставив источники параметров перечисления, которые повышают вероятность того, что они сообщат о некоторых классах событий, чем о других. Это может быть полезно, если у вас есть источники, которые чрезвычайно надежны для некоторых видов событий.

1 голос
/ 25 мая 2011

Я считаю, что вы ищете термин Связывание записей -

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

Эта презентация (PDF) выглядит как хорошее введение в поле.Один из алгоритмов, который вы можете использовать, это Fellegi-Holt - статистический метод для редактирования записей.

1 голос
/ 25 мая 2011

Одним из возможных поисковых терминов является «нечеткая логика».

Я бы использовал число с плавающей запятой или двойное число для хранения вероятности (0,0 = опровергнуто ... 1,0 = доказано) того, что некоторые детали события верны.По мере появления источников корректируйте вероятности соответствующим образом.Однако вам есть над чем подумать:

  • пытается распознать, когда несколько источников скопированы друг от друга, и уменьшить их влияние
  • , придавая больший вес более свежим данным или данным, которые явнопризнает старые данные (например, на 100% надежном сайте с надписью «концерт X состоится 4 августа» и в неизвестном блоге, в котором говорится, что «концерт X перенесен с 4 августа на 9 августа»), вы могли бы сохранить вероятность такогоКонцерт на 100%, но есть список с обоими датами и вероятностями, которые вы считаете целесообразными ...)
  • остерегайтесь предположения, что вещи дискретны;противоречивая информация может отражать множество похожих событий, двойное выставление счетов, исполнителей с одинаковыми фамилиями и т. д. - чем больше вы уверены в том, что на одни и те же вещи ссылаются, тем больше данных можно объединить, чтобы усилить или опровергнуть друг друга
  • вам следуетбыть в состоянии «протестировать» вашу эволюционную логику, используя данные, относящиеся к набору концертов, где вы теперь полностью осведомлены об их фактической постановке или ее отсутствии;обработайте данные, размещенные до различных предельных дат перед событиями, чтобы увидеть, как полученные вами прогнозы отражают фактические результаты, настраивают и повторяют (возможно, автоматически)

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

0 голосов
/ 25 мая 2011

Интеллектуальный анализ данных - это поиск информации из структурированных источников, таких как база данных, или пост, где поля разделены для вас.Здесь есть некоторая добыча текста, когда вам нужно разобрать информацию из свободного текста.В любом случае вы можете отслеживать, сколько источников данных согласны на шоу в качестве меры доверия.Либо отобразите показатель достоверности, либо используйте его, чтобы решить, достаточно ли хороши ваши данные.Есть много, чтобы играть с.Наличие списка законных городов, мест проведения и актов может помочь вам решить, представляет ли строка законный объект.Ваши списки могут даже находиться в базе данных, которая позволяет вам сравнивать город и место для согласованности.

...