Существуют ли какие-либо алгоритмы классификации, предназначенные для данных с отношением один ко многим (1: n)? - PullRequest
8 голосов
/ 22 января 2011

Были ли какие-либо исследования в области интеллектуального анализа данных, касающиеся классификации данных, которые имеют отношение один ко многим?

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

Очевидные подходы включают в себя:

  1. Агрегирование - Несколько записей могут быть объединены вместе, в некотором роде сводя проблему к базовой проблеме классификации. В случае классификации учащихся среднее их оценок может быть объединено с их личными данными. Хотя это простое решение, часто ключевая информация теряется. Например, что если большинство студентов, изучающих органическую химию и получивших уровень ниже C, в конечном итоге бросают учебу, даже если их среднее значение превышает рейтинг B +.

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

Поэтому я ищу другие возможные решения для классификации данных с отношением один ко многим.

Ответы [ 4 ]

2 голосов
/ 22 января 2011

Почему бы вам не рассматривать каждую оценку как отдельную особенность одной и той же модели?

student['age'] = 23
student['gender'] = 'male'
 ... 
student['grade_in_organic_chemistry'] = 'B+'
student['grade_in_classical_physics'] = 'A-'

Полагаю, я не понимаю, почему вы хотите "объединить" или объединить несколько классификаторов, когда оценки могут быть просто отличительными чертами?

(Прошу прощения за неумелый псевдокод выше, но просто пытаюсь доказать мою точку зрения)

1 голос
/ 24 января 2011

Хотя это, вероятно, неоптимально по сравнению со специализированными методами, вы, вероятно, могли бы использовать SVM с коррекцией для несбалансированного класса, как в следующем примере (с использованием библиотеки Python scikit-learn ):

http://scikit -learn.sourceforge.net / auto_examples / SVM / plot_weighted_classes.html

На практике у меня были хорошие результаты с довольно несбалансированными классами.

0 голосов
/ 22 января 2011

Я предполагаю два основных пути продвижения вперед:

  1. Как вы это называете, «совокупное» решение, которое будет использовать различные сводки ситуации каждого учащегося: сколько классов было принято, чтопроцентов классов были начальные 101 классы, средний класс, низший квартиль и т. д.

  2. Некоторый тип накопителя доказательств, такой как наивная байесовская модель (как уже предложено Стивом) илибаза правил нечеткой логики.Такие решения, естественно, обрабатывают различные объемы поступающих данных.Я полагаю, что этого можно достичь с помощью достаточного количества данных, используя одну гигантскую обычную модель (нейронную сеть и т. Д.) И очень большой набор входных данных (для большинства из которых будет установлено нейтральное значение для «пропущенных»), но я сомневаюсьбудет работать так же, как и другие варианты.

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

0 голосов
/ 22 января 2011

Трудно сказать, не зная больше, но с байесовской точки зрения вас может заинтересовать случай отсутствующих функций .Я буду обсуждать в общих чертах.Для получения дополнительной информации см. [Duda and Hart, 2nd ed., Pp. 54-55].

Для любого классификатора Байесовское правило принятия решения заключается в выборе класса i , который максимизирует вероятностькласс i встречается при условии, что наблюдались данные x , то есть max P (i | x) .Вектор x содержит признаки, например, оценки, возраст и т. Д. Ученика

Не все учащиеся посещают одни и те же классы, поэтому вектор признаков x может быть пустымэлементы, т. е. «отсутствующие функции».В этом случае вы должны маргинализировать по отсутствующим элементам, т. Е. Просто суммировать по отсутствующим элементам, а затем принять решение о хороших, оставшихся элементах.

Пример.Предположим, что студент изучал биологию, но не химию:

P(student drops out | A+ in biology) 
= P(student drops out, A+ in biology)/P(A+ in biology) 
= P(student drops out, A+ in biology, A in chemistry)
  ---------------------------------------------------
  P(A+ in biology, A in chemistry) 
  + 
  P(student drops out, A+ in biology, B in chemistry)
  ---------------------------------------------------
  P(A+ in biology, B in chemistry) 
  + ... + 
  P(student drops out, A+ in biology, F in chemistry)
  ---------------------------------------------------
  P(A+ in biology, F in chemistry)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...