Вопрос или проблема
Я хочу классифицировать набор данных обращений в службу поддержки, которые в основном содержат текст в поле описания и иногда серверные логи в отдельном поле.
Поле логов не всегда присутствует, но когда оно есть, это хороший индикатор целевого класса обращения.
Я создал классификатор на основе CNN, который может классифицировать обращения на основе поля логов, и SVM классификатор с функциями на основе TFIDF для поля описания.
Я подумываю о добавлении вероятностей вывода классификатора CNN в классификатор SVM на основе TFIDF, чтобы объединить модели в виде столбца признаков.
Есть ли лучший способ объединить эти модели?
Есть ли лучший способ подойти к этой задаче, не имея две отдельные модели?
Во-первых, вам следует прояснить свои нефункциональные требования (скорость, потребление памяти). Убедитесь, что у вас есть четкое представление о том, кто будет поддерживать программное обеспечение и каковы будут затраты, если вы внесете какие-то изменения. Более высокая точность может не стоить усилий.
Самый простой способ объединить n моделей — это усреднение их предсказаний. Эта техника часто используется на Kaggle. См. главу 2.6 по ссылке https://arxiv.org/pdf/1707.09725
Вы пробовали простой MLP с признаками tf-idf? Каковы результаты? Обычно он работает намного быстрее SVM, если у вас много классов.
Прочитайте о стекинге. Попросту говоря, вы можете построить обе модели, и вывод этих двух может стать признаками другой модели. Надеюсь, это поможет.
Ответ или решение
Подход, который вы описали, для классификации тикетов с использованием двух отдельных моделей — CNN для логов и SVM с TF-IDF для описаний — имеет свои преимущества и недостатки. Однако стоит рассмотреть возможные улучшения, чтобы повысить эффективность системы классификации.
1. Объединение моделей
Ваше предложение о добавлении вероятностей, полученных от CNN, в качестве признаков для SVM, является разумным шагом. Этот подход можно рассматривать как метод ансамблирования, который может улучшить общую производительность модели. Однако есть и другие способы объединить модели, которые могут дать более качественный результат:
-
Метод стекинга (Stacking): Как упомянуто, стеккинг учитывает предсказания нескольких базовых моделей (в вашем случае CNN и SVM) в качестве входных данных для мета-модели. Это может быть реализация простой логистической регрессии, которая использует выходы предыдущих моделей для окончательной классификации. Это решение может быть более качественным, так как мета-модель научится оптимально сочетать характеристики предсказаний обеих моделей.
-
Гибридная модель: Вместо того чтобы использовать две отдельные модели, вы можете создать единую гибридную архитектуру, комбинирующую CNN для обработки текстов и логов. Например, вы можете использовать многоканальную CNN, где один канал будет обучаться на текстовых данных, а другой — на логах. Это позволит модели увидеть полное представление о каждом тикете и применить более комплексные взаимосвязи между текстом и логами.
2. Альтернативные алгоритмы
Вы упомянули использование SVM с TF-IDF. Имейте в виду, что MLP (многослойные перцептроны) могут работать быстрее и совершенно подходить для задач с несколькими классами. Попробуйте протестировать производительность MLP на ваших данных, возможно, вы получите очень конкурентоспособные результаты при меньших вычислительных затратах.
3. Параметры и не функциональные требования
Прежде чем окончательно выбрать архитектуру, убедитесь, что вы оптимально определили не функциональные требования вашего проекта — такие как скорость обработки, потребление памяти и масштабируемость. Эти аспекты могут значительно повлиять на выбор решения. Если модели сложные и медленные, это может привести к задержкам в обработке тикетов и ухудшению оценки правильности работы системы.
4. Обработка пропусков
Обратите внимание, что поле логов может отсутствовать в некоторых тикетах. Используйте подходы к обработке отсутствующих данных, например, заполнение нулевыми значениями или добавление дополнительного признака, который указывает на наличие логов. Это поможет модели стандартизировать входные данные и повысить её устойчивость.
Заключение
Таким образом, ваш текущий подход к классификации тикетов на основе различных полей текста и логов имеет смысл, однако вы можете улучшить его с помощью стекинга, гибридных моделей или альтернативных алгоритмов. Не забывайте учитывать не функциональные требования и особенности ваших данных. Поддерживайте постоянный контроль за производительностью моделей, чтобы сделать обоснованный выбор при внедрении системы.