Провалы в создании идеальных прогнозов: предвзятость и дисперсия (и шум)

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

Деревья решений — это фантастика, потому что, как и глубокое обучение, они позволяют подогнать модель машинного обучения практически к любой функциональной форме. Мы уже рассматривали этот пример раньше, но линейные модели испытывают затруднения, когда функция, которую они пытаются обнаружить/предсказать, не является линейной.

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

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

Таким образом, проблема с деревьями решений возникает, когда у вас высокая «дисперсия» — другими словами, действительно высокая точность ваших обучающих данных, но очень плохая производительность при тестировании или реальных ситуациях. Оказывается, наборы данных, на которых строятся модели машинного обучения, не всегда (и, можно утверждать, редко) отражают всю полноту правды в реальном мире. Что, если бы, например, в реальном мире ваши данные выглядели бы так?

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

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

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

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

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

Еще не все!