Подгонка

Одна из проблем, с которой обычно сталкиваются кодировщики, заключается в том, чтобы убедиться, что их модель не подходит слишком хорошо или недостаточно. Теперь это непростая задача, потому что у вас нет конкретного ответа на этот вопрос. Тем не менее, есть несколько инструментов, таких как ваш опыт и литература по машинному обучению, которые помогут вам найти хороший ответ (не самый лучший!).

Давайте поговорим о сценарии с одной функциональной переменной, в котором мы использовали две модели для прогнозирования вывода.

Рассмотрим следующие модели:

Модель 1 — Y_Pred_Model1

Модель 2 — Y_Pred_Model2

Какую модель вы считаете лучше?

Чтобы ответить на этот вопрос, существует несколько концепций, работающих параллельно. Я легко вижу, что модель 1 показывает нулевые потери и фактически совпадает с фактическим выходом (красные точки). В то время как вторая модель более разбросана по значениям. Модель 1 кажется явным победителем, так как показывает нулевые потери, но это действительно так. Честно говоря, ответ пока не конкретен, потому что нам нужно больше информации. Появляется концепция регуляризации, которая позволяет убедиться, что ваша модель не подходит слишком сильно. Что ты хочешь этим сказать?

Представьте, вы учите двухлетнего ребенка и учите малыша, как отличить собаку от воробья. Однако ребенок не знает, как будет выглядеть зебра. Итак, когда ребенок видит зебру, он может сказать, что это собака, потому что ребенок знает о четвероногом животном, но не знает ни о каком другом варианте из животного мира.

Регуляризация

Интересная часть в приведенном выше примере заключается в том, что ребенок классифицировал данные (животное), хотя ребенок на самом деле не видел эту точку данных. Это обобщение, которого трудно достичь алгоритму ML/DL. Мы часто включаем параметр регуляризации в нашу функцию потерь и находим компромисс между смещением и дисперсией. Несколько примеров:

  1. В случае алгоритмов на основе дерева мы обрезаем деревья, чтобы избежать переобучения или, возможно, настраиваем глубину и т. д.
  2. В Ridge и lasso мы используем регуляризацию L1 и L2, чтобы избежать переобучения.

В идеале, когда бы ни моделировались данные, они сохраняют разные разбиения наборов данных. Допустим, у меня есть 1 миллион точек данных о том, что мне нужно классифицировать текст по n категориям. Можно было бы разделить данные на тестовый и обучающий наборы. А затем разделите обучающий набор на проверочный набор (обратитесь к перекрестной проверке, которая может помочь вам выбрать такие параметры, как C в SVM или идеальный коэффициент разделения или параметр пропускной способности в регрессии с локальным взвешиванием). Можно было бы обучить данные и проверить их точность на тестовом наборе, а затем сделать вывод о том, подходит ли модель больше или меньше. Несколько способов, которые я использую:

  1. Проверьте отклонение между обучением и точностью теста
  2. Проверьте кривую потерь, выделяя потери как при обучении, так и при тестировании для каждой эпохи.
  3. Настройте гиперпараметры, вероятность отсева.
  4. Анализ распределения данных в обучающем наборе и вне выборочных наборов данных.

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

Предостережения

Обратите внимание, что приведенная выше стратегия не гарантирует, что ваша модель хороша, даже если вы обнаружите производительность модели как в обучающем, так и в тестовом наборе данных. Почему? потому что здесь у нас есть одно колоссальное предположение, что набор данных из 1 миллиона точек данных представляет собой общее распределение. Лично я видел ситуации, когда моя модель работала хорошо на всех разбиениях, но в наборах данных «вне выборки» она была «плохой». Я сталкивался с такими ситуациями, когда работал в сфере аналитики социальных сетей.

Следовательно, очень важно анализировать данные и выполнять надежный EDA для набора данных. Лучший способ, возможно, использовать подход с несколькими граммами и проверить распределения наборов данных и убедиться, что они не совсем разные. Если они отличаются, вам необходимо связаться с заинтересованным лицом по сбору данных и понять данные.