Как указать важные атрибуты?

15

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

Моя цель - найти некоторые «важные» атрибуты, которые каким-то образом «определяют» сущности, которые они описывают. Поэтому, когда я найду одинаковое значение для такого атрибута, я буду знать, что два описания, скорее всего, относятся к одному и тому же объекту (например, к одному и тому же человеку).

Например, атрибут «lastName» является более дискриминационным, чем атрибут «национальность».

Как я мог (статистически) найти такие атрибуты, которые важнее других?

Наивным решением было бы взять среднее значение IDF значений каждого атрибута и сделать его фактором «важности» атрибута. Аналогичный подход заключается в подсчете количества различных значений для каждого атрибута.

Я видел термин «особенность» или «выбор атрибутов» в машинном обучении, но я не хочу отбрасывать оставшиеся атрибуты, я просто хочу придать большее значение наиболее важным из них.

vefthym
источник

Ответы:

16

Возможное решение состоит в том, чтобы вычислить информационный выигрыш, связанный с каждым атрибутом:

Получение информации

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

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

Рубенс
источник
Это энтропия? Я запутался.
Валентина
Извините за задержку с ответом. Для того, чтобы получить информацию, чтобы уменьшить общую энтропию; так что они в основном одинаковые концепции. Взгляните на определения «энтропия» и «получение информации».
Рубенс
7

На самом деле здесь есть несколько вопросов:

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

Как упомянул Рубенс, вы можете использовать методы дерева решений , в частности, Случайные леса», для расчета наиболее важных атрибутов на основе получения информации, если вы уже нашли способ определить, как маркировать человека.

Тем не менее, если у вас нет информации о метках, возможно, вы можете использовать некоторые экспертные представления для предварительного выбора атрибутов. После этого вы делаете неконтролируемую классификацию , чтобы получить ваши ярлыки. Наконец, вы можете выбрать наиболее важные поля, используя Random Forest или другие методы, такие как Bayesian Belief Networks. .

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

darklordofsoftware
источник
2

Там много техник. Если ваша информационная система имеет прикрепленный атрибут решения или метки, лучший способ, который я нашел, - это использовать грубое сокращение атрибутов на основе набора. Посмотрите алгоритм быстрого сокращения, разработанный Цян Шеном и Ричардом Дженсеном.

Если у вас есть немеченые данные, проверьте Анализ основных компонентов (PCA) .

user242782
источник
0

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

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

Поддержка атрибута p заключается в том, как часто сущности в нашем наборе данных содержат значения для этого атрибута:

support(p) = |instances(p)|/ |D|, 

где instances (p) - это набор сущностей, которые имеют значение для p, а | D | количество объектов в наборе данных D.

discriminability(p) = |values(p)| / |instances(p)|, 

где values ​​(p) - это набор (различных, так как это набор) значений, которые атрибут p может иметь в нашем наборе данных. Это нормализуется числом сущностей, которые действительно имеют значение для этого атрибута.

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

Для получения более подробной информации вы можете прочитать мою диссертацию (Раздел 4.3.2), или вы можете найти более короткую версию в нашем документе EDBT 2019 (Раздел 2).

Спасибо всем за ваши конструктивные ответы!

vefthym
источник