7

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

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

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

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

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

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

+0

Привет @Nixuz Я столкнулся с такой же ситуацией с моим проектом, какой вариант вы выбрали? –

ответ

2

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

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

Я предполагаю, что я не вижу, почему вы хотели бы, чтобы «агрегат» или объединиться несколько классификаторов, когда классы могут быть просто отличительные особенности?

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

+0

Извините, если я не прояснил это, но не все студенты берут те же курсы. Таким образом, либо мы останемся с большим количеством нулевых значений в записи, либо записи не будут стандартными для нашей классификации с использованием вашего решения. – Nixuz

+0

Я думаю, что мне непонятно, что вы подразумеваете под «записью»? Вы спрашиваете о том, как сохранить эту студенческую модель в СУБД или как смоделировать набор функций ученика для классификации? Если это последнее, я не знаю, почему набор функций должен быть стандартным для всех учеников. У некоторых учеников будет функция «grade_in_organic_chemistry», другие - нет. Механизм классификации был бы разработан для понимания того, что некоторые функции являются необязательными и, вероятно, даже используют эту информацию для классификации. –

+0

+1, потому что сначала вы должны попробовать простой подход. Множество нулевых значений может не быть проблемой - это не в модели суммирования слов в НЛП, если вы используете правильный алгоритм. SVM работают нормально с разреженными, высокоразмерными входами. – Stompchicken

0

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

Для любого классификатора, решение правила Байеса заключается в выборе класса я, которая максимизирует вероятность класса я СОВЕРШАЕМЫМИ, учитывая, что данные х наблюдались, то есть макс P (я | х) , Вектор x содержит функции, например, оценки учащихся, возраст и т. Д.

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

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

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) 
+0

Хотя я думаю, что этот метод будет работать в некоторых случаях, как, например, проблема с примером, которую я дал, я думаю, что это может столкнуться с проблемами, если записи курса учащегося имеют большое количество атрибутов. Если это так, то в каждой записи будет большое количество нулевых значений (отсутствующих признаков). Например, если в каждом курсе было 100 атрибутов, мы могли бы в конечном итоге получить тысячи нулевых значений, и проклятие размерности может убить нас. – Nixuz

+0

Во-вторых, как насчет случаев, когда n неограничен? Например, говорят, что ученики могут повторно выполнять занятия столько раз, сколько они хотят.Неясно, как мы будем обрабатывать этот случай, поскольку мы не можем установить все возможные функции, поскольку их бесконечное число. – Nixuz

0

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

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

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

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

1

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

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

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