7

У меня есть база данных, в которой хранятся данные на основе следующих трех полей: id, text, {labels}. Обратите внимание, что каждый текст присваивается нескольким меткам \ tag \ class. Я хочу создать модель (weka \ rapidminer \ mahout), которая сможет рекомендовать \ классифицировать кучу меток \ тегов \ классов для заданного текста.Классификация документов с несколькими ярлыками

Я слышал о SVM и Naive Bayes Classifier, но не уверен, поддерживают ли они классификацию с несколькими метками или нет. Все, что направляет меня в правильном направлении, более чем приветствуется!

ответ

1

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

Некоторые примеры приведены в статье статьи SVM в разделе мультикласса. Я не уверен, что вас интересуют детали, но они включены в Weka и Rapidminer. Например, классификатор SMO является одним из вариантов применения SVM к многозвенным проблемам.

Naive Bayes может применяться непосредственно в среде с несколькими этикетками.

+0

Я думаю, что вы вводите в заблуждение многоклассовую и многокласную классификацию. В первом случае каждый образец имеет один класс, но есть более двух возможностей; в последнем случае каждый образец может принадлежать нескольким классам одновременно. –

+0

Итак, давайте выбираем NB. Какими должны быть атрибуты в этом сценарии? У меня есть некоторые идеи по этому поводу, но я хотел бы услышать предложение кого-то с большим опытом, чем я. – user2295350

+0

@larsmans Точно. То, что я прошу, - это классификация с несколькими метками, то есть каждый образец может принадлежать нескольким классам одновременно. – user2295350

4

Основным методом многовекторной классификации является односторонний (OvR), также называемый бинарной релевантностью (BR). Основная идея заключается в том, что вы берете готовый бинарный классификатор, такой как Naive Bayes или SVM, а затем создаете K его экземпляры для решения K проблемы с независимой классификацией. В Python-как псевдокод:

for each class k: 
    learner = SVM(settings) # for example 
    labels = [class_of(x) == k for x in samples] 
    learner.learn(samples, labels) 

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

(Оба обучение и прогнозирование, очевидно, могут быть сделаны параллельно, поскольку проблемы предполагаются независимыми. См Wikipedia для ссылок на два Java пакетов, которые делают мульти-метку классификации.)

+1

Существует множество возможностей для выхода за рамки ряд независимых проблем. Например, с вероятностным классификатором (логистическая регрессия, скажем), вы можете определить распределение по результирующему набору меток, например. модель темы или MRF, и оптимизировать глобально. Я уверен, что вы могли бы включить подобную идею в SVM, используя метод Platt или какой-либо прямой дискриминационный глобальный критерий. –

+0

@BenAllison: конечно, но я просто указываю базовый подход и набор инструментов, которые делают более продвинутые вещи. –

0

Может предложить вам некоторые инструменты которые являются расширениями для weka, что делает многозначную классификацию .

  1. МЕКА: Мульти-метка Расширение WEKA
  2. Мулан: А библиотеки Java для мульти-метки обучения

Существует также SVM Lib расширение SVMLib. Если вы довольны пакетами python, обучение по scikit также дает один для Multi-label classification

Также, эта недавняя статья в ICML 2013 «Эффективная многоклеточная классификация со многими ярлыками» должна помочь вам в реализации. Если вы хотите реализовать его самостоятельно.

Смежные вопросы