Вопрос или проблема
У меня есть набор данных о фильмах и их субтитрах. Моя задача – классифицировать их на основе их рейтингов – [R, NR, PG, PG-13, G].
У меня есть 13 примеров для каждого класса. Я предварительно обработал субтитры следующим образом:
- Я использовал токенизатор для игры слов для токенизации субтитров.
- Удалил стоп-слова и знаки препинания.
- Произвел стемминг.
- Векторизовал субтитры с использованием TF-IDF векторизатора.
Точность, которую я получаю, используя:
1) svm :
точность обучения – 1.0, а точность тестирования – .17.
2) наивный байес:
точность обучения – 0.5, а точность тестирования – .23.
У меня есть следующие вопросы:
1) Почему моя точность такая низкая и что я могу сделать для ее улучшения?
2) Поможет ли больше данных для обучения?
3) Следует ли мне выполнить выбор признаков?
4) Какие другие алгоритмы классификации я могу использовать для повышения точности?
Вам следует попытаться выполнить кросс-валидацию с использованием всех ваших наборов данных. Возможно, ваш тестовый набор имеет совершенно другую распределенность, чем ваш обучающий набор (при таком малом количестве образцов из всех возможных субтитров это вероятно). Вы создали этот набор данных?
Каков размер окончательных входных векторов, которые вы используете, и какой размер словаря вы используете для этого?
- По крайней мере, в случае SVM кажется, что ваша модель переобучается, и вам нужно увеличить регуляризацию.
- Дополнительные данные для обучения всегда помогут.
- Не уверен, какие у вас здесь есть варианты.
- Существует множество вариантов на основе малого числа образцов, вы можете попробовать использовать кластеризацию (KNN, K-Mean).
Ответ или решение
Почему низкая точность классификации текста и как ее улучшить?
1. Анализ проблемы с точностью
Из вашего описания видно, что у вас есть набор данных с субтитрами фильмов и их рейтингами, но количество примеров в каждой категории очень ограничено — всего 13. Это существенно влияет на модель. Низкая точность, особенно в тестировании (0.17 для SVM и 0.23 для Наивного Байеса), может быть вызвана несколькими причинами:
- Проблема с переобучением: Mодель SVM демонстрирует 100% точность на обучающем наборе, что указывает на переобучение. Это означает, что она слишком хорошо запомнила данные, но не может обобщать на новых данных.
- Нехватка данных: Для обучения модели необходим больший объем данных, особенно для таких классов, как ratings. Всего 13 примеров на класс не позволяют модели извлечь достаточные паттерны.
- Неправильный выбор признаков: Ваша предобработка включает удаление стоп-слов и стемминг, что может привести к утрате информации. TF-IDF, хотя и полезен, может быть недостаточно эффективным без соответствующего выбора признаков.
2. Вопросы и рекомендации
Вопрос: Поможет ли больше обучающих данных?
- Ответ: Да, увеличенное количество обучающих данных значительно улучшит точность модели. Ваша выборка слишком мала для надежного обучения. Попробуйте собрать дополнительные субтитры или данные из других источников с уже известными рейтингами.
Вопрос: Нужно ли проводить отбор признаков?
- Ответ: Это может быть полезно, но прежде всего сосредоточьтесь на увеличении объема данных. Отбор признаков может помочь выявить более релевантные характеристики, но в небольших выборках маловероятно, что это существенно повлияет на результаты.
Вопрос: Какие другие алгоритмы классификации можно использовать для улучшения точности?
- Ответ: Вы можете попробовать различные алгоритмы, такие как:
- Logistic Regression: Это простой и интерпретируемый алгоритм, который часто показывает хорошие результаты на небольших выборках.
- Random Forest: Он хорошо справляется с переобучением и может обрабатывать нечисловые данные.
- Классификация с учетом ансамблей: Используйте методы, такие как Bagging или Boosting, которые могут помочь комбинировать несколько слабых классификаторов для получения одного сильного.
- Нейронные сети: Даже простая многослойная перцептронная сеть (MLP) может улучшить результаты, если она правильно настроена.
3. Стратегии улучшения точности
-
Кросс-валидация: Проведение кросс-валидации поможет вам лучше понять, имеет ли ваша модель обобщающие способности, или же она просто запоминает обучающий набор.
-
Увеличение объема данных: Используйте синтетические данные или аугментацию текстов, чтобы разнообразить выборку.
-
Несколько векторов признаков: Попробуйте различные методы векторизации, такие как Word2Vec или GloVe, которые могут сохранять смысловые отношения между словами.
-
Регуляризация модели: Увеличение значения параметров регуляризации может помочь уменьшить проблемы с переобучением, особенно в SVM.
Заключение
Ваши начальные попытки классификации текста могут стать основой для более глубокого и завершенного анализа. Следуйте рекомендациям по увеличению объема данных и экспериментируйте с различными алгоритмами и методами векторизации. С правильным подходом и усердной работой вы сможете значительно улучшить точность модели и добиться успеха в вашей задаче классификации фильмов по рейтингам.