Нужна помощь в применении scikit-learn к этой несбалансированной задаче категоризации текста
У меня многоклассовая проблема классификации / категоризации текста. У меня есть набор наземных данных правды с K
разные взаимоисключающие классы. Это несбалансированная проблема в двух отношениях. Во-первых, некоторые занятия намного чаще, чем другие. Во-вторых, некоторые классы представляют для нас больший интерес, чем другие (обычно они положительно коррелируют с их относительной частотой, хотя есть некоторые классы, которые встречаются довольно редко).
Моя цель состоит в том, чтобы разработать отдельный классификатор или набор из них, чтобы иметь возможность классифицировать k << K
классы, представляющие интерес с высокой точностью (не менее 80%) при сохранении разумного отзыва (то, что "разумно", немного расплывчато).
Функции, которые я использую, в основном типичные, основанные на униграмме / биграмме, плюс некоторые бинарные функции, поступающие из метаданных входящих документов, которые классифицируются (например, были ли они отправлены по электронной почте или через веб-форму).
Из-за несбалансированных данных я склоняюсь к разработке двоичных классификаторов для каждого из важных классов, а не одного, такого как многоклассовый SVM.
Какие алгоритмы обучения ML (бинарные или нет) реализованы в scikit-learn
разрешить тренировку, настроенную на точность (по сравнению, например, с отзывом или F1), и какие опции мне нужно для этого установить?
Какие инструменты анализа данных в scikit-learn
Можно использовать для выбора признаков, чтобы сузить характеристики, которые могут быть наиболее релевантными для точной классификации определенного класса?
Это на самом деле не проблема "больших данных": K
около 100
, k
около 15
общее количество образцов, доступных мне для обучения и тестирования, составляет около 100,000
,
Спасибо
1 ответ
Учитывая, что k мало, я бы просто сделал это вручную. Для каждого желаемого класса обучите свой индивидуальный (один против остальных) классификатор, посмотрите на кривую точности-отзыва, а затем выберите порог, который дает желаемую точность.