Когда вы обучаете модель машинного обучения, вы должны рассмотреть следующие шаги, чтобы повысить эффективность прогнозирования вашего классификатора:

  • Можно ли добавить больше помеченных данных для обучения модели? Обычно модели машинного обучения работают лучше по мере увеличения размера набора данных. Если у вас есть возможность добавить больше данных (желательно разнообразных), сделайте это. Вам может быть интересно, можем ли мы продолжать добавлять больше данных, чтобы продолжать улучшать производительность. На практике вы начинаете замечать уменьшение прироста производительности по мере добавления данных. Единственный способ узнать оптимальный размер набора данных для вашего проекта — это поэкспериментировать с увеличением размера наборов данных и определить точку, в которой у вас нет значительного прироста производительности.
  • Можете ли вы добавить больше функций в свою модель? Благодаря большему количеству функций модели машинного обучения, вероятно, будут иметь лучшую дискриминационную способность и, в свою очередь, лучшую прогностическую эффективность. Однако следует отметить, что если ваша модель имеет слишком много функций, она имеет тенденцию к чрезмерному соответствию обучающим данным и может плохо работать на тестовом наборе (не будет хорошо прогнозировать неизвестные данные). Итак, нам нужно найти баланс, чтобы не переусердствовать с нашей моделью. В этом случае вы можете попробовать методы сокращения функций.
  • Правильно ли вы предварительно обработали все свои функции? Когда у вас есть данные, важно выполнить исследовательский анализ данных, чтобы изучить свойства ваших данных. Разработайте стратегию обработки отсутствующих данных (вменение данных). Важно масштабировать ваши функции, чтобы алгоритм машинного обучения не отдавал предпочтение одной функции над другой из-за их масштаба. Например, если у вас есть функция с большим разбросом значений (скажем, от 1 до 1 миллиона), рекомендуется использовать нормализацию журнала. Для большинства других функций вы используете масштабирование min-max. Имейте стратегию обработки категориальных данных (если они не связаны (например, марка автомобиля), одним из вариантов является использование одноразового кодирования; если они имеют некоторый порядок (например, пояс для карате), рекомендуется кодировать их в порядковые значения ( например: LabelEncoder в sklearn)
  • Выполняли ли вы выборочную проверку всех возможных алгоритмов классификации? Вы будете удивлены, узнав, что разные алгоритмы классификации приводят к очень разным результатам производительности. Хорошей новостью является то, что относительно легко расширить ваш код для поддержки нескольких моделей, когда одна из них уже работает. Обычно мы пробуем XGBoost, RF (случайный лес), деревья классификации, SVM, логистическую регрессию, MLP (многослойные персептроны), наивный байесовский алгоритм, AdaBoost и расширяющие деревья. По моему опыту, XGBoost и RF, как правило, дают наилучшие результаты.
  • Вы настроили параметры своей модели? После того, как вы остановились на одном алгоритме классификации, вы обычно можете повысить производительность модели (иногда более чем на 5%), настроив параметры модели (например, если это RF, вы можете настроить параметры глубины деревьев, количество листовых узлов и т. д.). Настраивать эти параметры вручную утомительно и контрпродуктивно. Хорошей новостью является то, что библиотеки машинного обучения (sklearn) уже предоставляют вам метод определения оптимальных параметров (например, случайный поиск или поиск по сетке).

Таким образом, я бы попробовал следующее, чтобы повысить производительность:

  • Больше тренировочных данных
  • Больше возможностей
  • Различные методы предварительной обработки данных (вменение, масштабирование)
  • Несколько алгоритмов классификации
  • Настройка гиперпараметров

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