Классификация по нескольким меткам, включающая диапазон чисел в качестве меток

У меня проблема с классификацией, когда мои метки - это рейтинги от 0 до 100 с шагом 1 (например, 1, 2, 3, 4,).

У меня есть набор данных, в котором каждая строка имеет имя, текстовый корпус и рейтинг (0–100).

Из текстового корпуса я пытаюсь извлечь функции, которые я могу передать в свой классификатор, который будет выводить соответствующий рейтинг для каждой строки (0–100).

Что касается выбора функций, я думаю начать с простого набора слов. Однако мой вопрос заключается в алгоритме классификации. Есть ли в sci-kit learn алгоритм классификации, который поддерживает такого рода проблемы?

Я читал http://scikit-learn.org/stable/modules/multiclass.html, но описанные алгоритмы, похоже, поддерживают полностью дискретные метки, тогда как у меня есть набор непрерывных меток.

РЕДАКТИРОВАТЬ: Как насчет случая, когда я убираю свои рейтинги? Например, у меня может быть 10 ярлыков, от 1 до 10 в каждой.


comment
Если вы признаете, что ваши занятия являются непрерывными, почему бы вместо этого не использовать регрессию?   -  person Artem Sobolev    schedule 04.11.2014
comment
Ах, я не знаком с регрессией, кажется, это естественное решение этой проблемы?   -  person jeffrey    schedule 04.11.2014
comment
Да, когда ваша целевая переменная представляет собой какое-то непрерывное значение, где отклонения не имеют значения (можно прогнозировать 36 вместо 37, но нельзя прогнозировать 90 вместо 11). Что вы действительно хотите сделать, так это свести к минимуму вероятность предсказания неправильного значения, но вероятность предсказания отдаленного значения. И для этого используются алгоритмы регрессии. Подойдет любой алгоритм, имя которого заканчивается на Regressor.   -  person Artem Sobolev    schedule 04.11.2014


Ответы (2)


Вместо классификации можно использовать многовариантную регрессию. U может сгруппировать функции n-граммы из корпуса текста, чтобы сформировать словарь и использовать его для формирования набора функций. С помощью этого набора функций обучайте регрессионную модель, в которой выходные данные могут быть непрерывными значениями. U может округлить выходное действительное число, чтобы получить дискретную метку от 1 до 100.

person Mujtaba Hasan    schedule 04.11.2014
comment
Ах, кажется, что многовариантная регрессия действительно является более естественным решением. Позаботится ли об этом регрессия scikit-learn? Я предполагаю, что логистическая регрессия - это алгоритм классификатора, а не то, о чем вы говорите. - person jeffrey; 04.11.2014
comment
Да, логистическая регрессия - это алгоритм классификации. Вы можете попробовать линейную регрессию, регрессию гребня или случайную регрессию леса. - person Andreas Mueller; 05.11.2014
comment
посмотрите scikit-learn.org/stable/modules/linear_model.html для линейной и полиномиальной регрессии. Возможно, вам придется попробовать разные полиномиальные модели, чтобы придумать ту, которая подойдет вам лучше всего. Я думаю, вам следует сначала начать с линейной модели, а затем попробовать другие полиномиальные варианты позже. Другим предложением было бы также поискать леса регрессии, если это не работает в соответствии с вашими потребностями. - person Mujtaba Hasan; 05.11.2014

Вы можете предварительно обработать свои данные с помощью OneHotEncoder, чтобы преобразовать одну функцию от 1 до 100 в 100 двоичных функций, соответствующих каждому значению интервала [1..100]. Тогда у вас будет 100 ярлыков и вы выучите мультиклассовый классификатор.

Хотя я предлагаю вместо этого использовать регрессию.

person Artem Sobolev    schedule 04.11.2014
comment
Чего можно достичь с применением OneHotEncoder? Вы можете просто использовать 0-100 напрямую с любым из классификаторов в scikit-learn. - person Andreas Mueller; 05.11.2014