Порядковая классификация пакетов и алгоритмов - PullRequest
12 голосов
/ 16 августа 2010

Я пытаюсь создать классификатор, который выбирает оценку (1-5) для элемента i . Для каждого элемента i у меня есть вектор x , содержащий около 40 различных величин, относящихся к i . У меня также есть рейтинг золотого стандарта для каждого предмета. Основываясь на некоторой функции x , я хочу обучить классификатор, чтобы получить рейтинг 1-5, который близко соответствует золотому стандарту.

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

Ответы [ 4 ]

10 голосов
/ 16 августа 2010

Я согласен с вами, что проблемы ОД, в которых переменная ответа находится в порядковом масштабе требуется специальная обработка - «машинный режим» (т. е. возвращение метки класса) кажется недостаточным потому что метки класса игнорируют отношения между метками («1-й, 2-й, 3-й»); аналогично, «режим регрессии» (то есть обработка порядковых меток как плавающих, {1, 2, 3}), потому что он игнорирует метрическое расстояние между переменными отклика (например, 3 - 2! = 1).

R имеет (как минимум) несколько пакетов, направленных на порядковую регрессию. Один из них на самом деле называется Ordinal , но я им не пользовался. Я использовал пакет Design в R для порядковой регрессии, и я, безусловно, могу рекомендовать его. Конструкция содержит полный набор функций для решения, диагностики, тестирования и представления результатов задач порядковой регрессии с помощью Порядковой логистической модели . Оба пакета доступны из CRAN ). пошаговое решение проблемы порядковой регрессии с использованием пакета проектирования представлено на сайте статистики UCLA.

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

7 голосов
/ 17 августа 2010

Вы пробовали использовать Weka ?Он поддерживает двоичные, числовые и номинальные атрибуты из коробки, последние два из которых могут работать достаточно хорошо для ваших целей.

Кроме того, похоже, что одним из доступных классификаторов является мета-классификатор с именем OrdinalClassClassifier.java , который является результатом этого исследования:

Если вам не нужен заранее подготовленный подход, то эти ссылки (в дополнение к примечанию Дуга о статье SVM Yahoo ) могут быть полезны:

3 голосов
/ 23 августа 2010

Проблемы, возникшие у теста , действительны. Позвольте мне добавить еще один. Вы не сказали, как бы вы хотели измерить соответствие между классификацией и «золотым стандартом». Вы должны сформулировать ответ на этот вопрос как можно скорее, так как это окажет огромное влияние на ваш следующий шаг. По моему опыту, наиболее проблемной частью любой (хорошо, а не любой) задачи оптимизации является функция оценки. Попробуйте спросить себя, равны ли все ошибки? Влияет ли неправильная классификация «3» как «4» так же, как классификация «4» и «3»? Как насчет "1" против "5". Может по ошибке пропустить один случай иметь катастрофические последствия (пропустить диагноз ВИЧ, активировать выброс пилота в самолете)

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

Сказав это, иногда выбор решения, которое «просто работает» вместо «правильного», происходит быстрее и проще. Если бы я был тобой, я бы выбрал библиотеку машинного обучения (R, Weka, мне лично нравится Orange ) и посмотри, что я получу. Только если у вас недостаточно хороших результатов, ищите более сложные решения

1 голос
/ 23 августа 2010

Если не интересует причудливая статистика, то нейронная сеть с обратным распространением в один скрытый слой с 3 или 5 выходными узлами, вероятно, справится с задачей, если обучающие данные достаточно велики.Большинство классификаторов NN пытаются минимизировать среднеквадратическую ошибку, которая не всегда желательна.Упомянутые ранее опорные векторные машины являются хорошей альтернативой.FANN - хорошая библиотека для NN обратного распространения, у нее также есть некоторые инструменты, помогающие в обучении сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...