Порядковые классификационные пакеты и алгоритмы

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

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

12
задан tkerwin 16 August 2010 в 16:25
поделиться

4 ответа

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

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

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

10
ответ дан 2 December 2019 в 07:20
поделиться

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

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

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

7
ответ дан 2 December 2019 в 07:20
поделиться

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

1
ответ дан 2 December 2019 в 07:20
поделиться

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

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

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

3
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: