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

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

Смещение против дисперсии

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

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

С другой стороны, когда степень полинома слишком высока, обучающие данные будут слишком хорошо вписываться в алгоритм. Таким образом, ошибка обучения будет очень низкой. Но алгоритм будет очень плохо работать с данными перекрестной проверки. Таким образом, ошибка перекрестной проверки будет очень высокой. Это называется проблемой высокой дисперсии или проблемой переобучения. Признак проблемы переобучения или проблемы с высокой дисперсией заключается в том, что точность обучающего набора будет очень высокой, а точность набора перекрестной проверки будет низкой.

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

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

Вот уравнение для гипотезы (вверху) и функция стоимости (внизу) для полиномиальной регрессии. Если мы выберем слишком большую лямбду, такую ​​как 10000, тета-значения, кроме тета0, будут незначительными. Поскольку все тета-значения являются случайно инициализированными значениями, которые представляют собой значения от 0 до 1. В этом случае гипотеза будет:

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

Как выбрать параметр регуляризации

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

  1. Выберите некоторые значения лямбда, такие как 0, 0,02, 0,04, 0,08, 0,1, …. 10.24.
  2. Используйте эти лямбда-выражения и обучите модель с помощью обучающего набора и минимизируйте затраты. Таким образом, мы получим минимальную стоимость и тета-значения для каждого значения лямбда.
  3. Используйте оптимизированные тета-значения и рассчитайте функции стоимости для набора данных перекрестной проверки.
  4. Выясните, какое значение лямбда дало наименьшую стоимость в наборе перекрестной проверки. Это значение лямбда должно быть нашим последним параметром регуляризации. На приведенной ниже диаграмме, скажем, j-cv(3) является наименьшим. Окончательный параметр регуляризации лямбда будет равен 0,04. На этой диаграмме я попытался перечислить все шаги.

5. Наконец, проверьте этот параметр регуляризации и тета-значения, чтобы узнать, насколько хорошо он работает с тестовым набором данных.

Я надеюсь, что это было полезно.

Рекомендуемое чтение:

  1. Полиномиальная регрессия с нуля в Python

2. Алгоритм линейной регрессии в Python: шаг за шагом

3. Как разработать модель рекомендации фильмов на Python

4. Анализ настроений в Python

5. Реализация очередей из двух стеков в Python: структура данных