[БЕЗ_ЗВУКА] В этом видео мы поговорим о разложении ошибки на смещение и разброс — технике, которая позволяет понять, почему усреднение алгоритмов позволяет повысить их качество. Итак, ы прошлом видео мы выяснили, что усреднение решающих деревьев в задаче классификации делает разделяющую поверхность менее переобученной, позволяет повысить качество. Почему это происходит? В целом подход с усреднением довольно известный, например, в физике довольно распространенный подход — сделать несколько измерений одной величины и усреднить. И это уменьшает ошибку измерений. Но давайте попробуем понять, почему это работает хорошо именно в машинном обучении. Для этого нам пригодится разложение ошибки на смещение и разброс, о котором вы уже узнали в прошлом модуле. Итак, идея состоит в том, что ошибка алгоритма на новых тестовых данных складывается из трех компонент: шума, смещения и разброса. При этом все они характеризуют разные аспекты данных и модели, с помощью которой вы решаете задачу на этих данных. Начнем с шума. Шум показывает, какова ошибка лучшей из всех возможных в мире моделей на данной задаче. Поскольку данные могут быть зашумленные, и на них в принципе невозможно получить нулевую ошибку, идеальная модель тоже может ошибаться, и шум показывает, насколько сильно будет ошибаться идеальная модель на этой задаче. Шум никак нельзя улучшить, это характеристика ваших данных, с этим приходится жить. Вторая компонента разложения — это смещение. Чтобы понять ее, давайте проведем некоторый умственный эксперимент. Педставьте, что обучающая выборка — это некоторая случайная величина, ее можно генерировать из некоторого распределения. Генерируя ее снова и снова, будем получать немного разные обучающие выборки из одного и того же распределения. Итак, допустим, мы сгенерировали много обучающих выборок из этого распределения. На каждой мы обучили нашу модель, например решающее дерево. Смещение показывает, насколько сильно отклоняется средний прогноз по всем обученным моделям от прогноза идеальной модели. По сути, смещение говорит, насколько мы можем аппроксимировать идеальную модель, насколько наше семейство алгоритмов сложное и позволяет восстанавливать сложные закономерности. Если это избразить с помощью диаграммы, то процесс вычисления смещения выглядит примерно так. Мы генерируем много обучающих выборок x1, ..., xn. На каждой обучаем свой алгоритм b1(x), b2(x), ..., до bn(x) и усредняем их ответы на объекте x. После чего сравниваем средний ответ с ответом идеального алгоритма y(x). Наконец, разброс — третья компонента разложения. Разброс вычисляется по похожей схеме. Мы генерируем много обучающих выборок, на каждой обучаем нашу модель, например решающее дерево, и дальше смотрим на дисперсию ответов всех этих моделей. Диаграмма получается примерно такой же: мы генерируем много выборок x1, ..., xn, обучаем на них базовые алгоритмы и дальше смотрим на дисперсию выборки b1(x), b2(x), ..., bn(x) на каких то объектах. Чем больше эта дисперсия, чем выше разброс, тем сильней алгоритм зависит от небольших изменений обучающей выборки. Например, решающие деревья обладают этим свойством. Если чуть-чуть поменять обучающую выборку, дерево меняется очень сильно. На этой картинке можно увидеть иллюстрацию смещения и разброса. Зеленая кривая — это истинная зависимость. Будем генерировать из нее 10 случайных точек, добавлять к ней небольшой шум и считать это обучающей выборкой, и будем обучать на этом полином третьего порядка. На левой картинке красными кривыми изображены полиномы, которые получаются при немножко разных обучающих выборках, сгенерированных таким образом. Видно, что средний полином, который изображен справа красной кривой, идеально угадывает истинную зависимость — зеленую кривую. Но при этом отдельные полиномы могут отличаться от этой зависимости, разброс довольно большой в каждой точке. Итак, мы здесь получили семейство алгоритмов, которые имеют низкое смещение и довольно большой разброс. Вернемся к линейным моделям. Вспомним, что их смещение может быть довольно большим. Линейные модели могут восстанавливать только линейные зависимости, но при этом в большинстве задач зависимости нелинейные, из за чего смещение большое и линейная модель в принципе не может восстановить сложные зависимости. При этом разброс маленький. У линейной модели параметров столько, сколько признаков. Это очень мало. Вряд ли они сильно изменятся, если чуть-чуть поменять обучающую выборку. Итак, у линейных моделей большое смещение и низкий разброс. Решающие деревья — это полная противоположность. У них низкое смещение. Они могут восстанавливать очень сложные закономерности, но при этом разброс очень большой, поскольку деревья очень сильно меняются даже при небольших изменениях обучающей выборки. Поговорим теперь про усреднение базовых алгоритмов. Оказывается, что если мы усредняем много базовых алгоритмов, например построенных по бутстрапированным подвыборкам, то мы не меняем их смещение. Смещение композиции, смещение среднего алгоритма совпадает со смещением отдельного базового алгоритма. Таким образом, если мы усредняем деревья, а у деревьев низкое смещение, то и у их композиции тоже будет низкое смещение. Композиции будут в состоянии восстанавливать сложные закономерности, а вот разброс меняется. Разброс композиций состоит из двух слагаемых. Первое — это разброс одного базового алгоритма, который делится на N большое — на число базовых алгоритмов. Второе слагаемое — это корреляции между двумя базовыми алгоритмами. Обратите внимание, что если базовые алгоритмы независимы, если их прогнозы не коррелируют между собой, то разброс композиции — это всего лишь разброс одного базового алгоритма, деленный на N. Это прекрасно. Если алгоритмы базовые не коррелированы и это решающие деревья, то композиция будет иметь низкое смещение, поскольку у базовых алгоритмов низкое смещение, и низкий разброс, если мы возьмем большое N. У деревьев большой разброс, мы поделим его на большое число и получим низкий разброс композиции. Итак, если базовые алгоритмы не коррелированы, то композиция может дать нам идеальный алгоритм. Но, к сожалению, это не всегда так. Базовые алгоритмы обучаются на одной и той же выборке или на подвыборках одной и той же выборки, из за чего они оказываются зависимыми, их ответы коррелированы, и очень сложно сделать их полностью независимыми. Но при этом можно попытаться хотя бы уменьшить корреляцию, и к этому есть два подхода. Первый — это то, о чем мы уже говорили: бэггинг — обучение отдельных базовых алгоритмов на случайных подвыборках объектов. За счет этого базовые алгоритмы получаются немножко разные, и при этом, наверное, чем меньше мы будем брать обучающую выборку для одного базового алгоритма, тем более независимые они будут. Но при этом не стоит здесь увлекаться. Если обучающая выборка будет слишком маленькой, то с переобучением решающих деревьев уже ничего нельзя будет поделать. Но при этом давайте вспомним, что у обучающей выборки есть два измерения: это объекты и признаки этих объектов. Если рассматривать матрицу «объекты–признаки», то по строкам записаны объекты, по столбцам — признаки, и бэггинг делает рандомизацию по строкам, то есть он выбирает случайное подмножество строк и обучает на этом подмножестве один базовый алгоритм. Но при этом можно можно брать и случайное подмножество столбцов. Это называется методом случайных подпространств. В этом случае мы сэмплируем — мы выбираем случайное подмножество признаков (столбцов) и только на этих признаках обучаем очередной базовый алгоритм. При этом два данных подхода — бэггинг и метод случайных подпространств — можно объединять. Можно сэмплировать как столбцы, так и строки матрицы «объекты–признаки» и обучать на такой подматрице каждый базовый алгоритм. При этом обратите внимание, что у метода случайных подпространств есть гиперпараметр — какую долю признаков мы выбираем? Можно от него избавиться, если тоже делать бутстрап, но это будет довольно странно. У матрицы «объекты–признаки» будут одинаковые столбцы — коррелирующие признаки, что довольно плохо. Итак, мы с вами обсудили, что такое разложение ошибки на смещение и разброс. Смещение характеризует, насколько сложно у нас семейство алгоритмов, насколько оно может восстанавливать сложные закономерности, а разброс говорит, насколько чувствительны алгоритмы к небольшим изменениям выборки. При этом мы выяснили, что усреднение алгоритмов, объединение их в такую композицию не меняет смещение и при этом уменьшает разброс. При этом чем менее коррелированы базовые алгоритмы, тем сильнее уменьшение разброса. И обсудили два подхода к уменьшению корреляции между базовыми алгоритмами: бэггинг и метод случайных подпространств. А в следующем видео мы поговорим о еще одном способе рандомизации случайных деревьев, в котором мы углубляемся и пытаемся рандомизировать сам процесс построения дерева.