В этом видео мы разберемся с концепцией смещения и разброса моделей, которая поможет нам понять, какими именно должны быть базовые модели в бэггинге, чтобы композиция получалась сильной. Вообще говоря, это очень математичная концепция, которая говорит, что ошибка метода обучения складывается из трех компонент, которые записываются вот так. Мы не хотим настолько сильно погружаться в теорию вероятностей сейчас, поэтому мы разберем на уровне идеи. Итак, есть некоторый результат математический, который говорит, что то, насколько у вас получится плохая или хорошая модель, зависит от трех факторов, это складывается из тех компонент. Первый фактор — это шум (noise на английском), это некоторая характеристика самих данных, характеристика их сложности и противоречивости. Например, если у вас данные устроены так, что вполне может оказаться, что в выборке будет два объекта с одинаковыми признаками, но разными ответами, модель в принципе не сможет иметь нулевую ошибку. То есть вот это свойство, эта особенность данных уже вам задает некоторый нижний порог на ошибку модели. Поэтому может быть такое. Мы добавляем компоненту шума, которая характеризует, насколько данные мешают нам решать задачу. Вторая компонента — это смещение (bias). Эта компонента показывает, насколько наша модель в целом способна приблизить лучшую из возможных моделей. Грубо говоря, если задача очень нелинейная, и нужно приблизить какой-нибудь многочлен в 10 степени, а мы используем линейную модель, — очевидно, эта модель смещенная, она слишком слабая для этой задачи. Смещение, по сути, измеряет силу модели, насколько она может подогнаться под истинную закономерность, или же она слишком слабая. И третья компонента, которая идет в противовес смещению, — это разброс (или variance). Эта компонента показывает, насколько модель устойчива к изменениям в обучающей выборке. Собственно, это ровно то, о чем мы говорили в первом видео этой недели. Деревья, например, могут очень сильно меняться даже при небольших изменениях в выборке, у них большой разброс, они могут сильно поменяться. Вот variance (разброс) измеряет ровно это свойство. И получается, что, если мы хотим для данной задачи получить качественное решение, нужно искать модели, которые несмещенные, то есть достаточно сложные, чтобы подогнаться под эти данные, и которые имеют низкий разброс, то есть не очень сильно подгоняются под маленькие изменения в выборке, а которые, скорее, находят общие закономерности. Звучит логично. И при этом часто говорят про некоторый размен между смещением и разбросом, потому что, как правило, в машинном обучении вы либо выбираете модели, которые, может быть, послабее, но при этом более устойчивые, либо выбираете модели, которые очень мощные, очень выразительные, как деревья, но при этом могут переобучиться, и в каждом случае нужно решать, чего из этого мы хотим больше, а шум — это некоторое свойство задачи, на него мы повлиять не можем. Давайте посмотрим, как это на графиках выглядит. Допустим, у нас вот такая простая задача регрессии. Есть один признак и есть целевая переменная. Если вы помните, ровно на таком графике мы обсуждали, например, проблемы применимости линейной регрессии, когда мы говорили, что это расстояние от дома до метро, и мы по этому признаку предсказываем стоимость квартиры. Там была нелинейная зависимость, и мы думали, как это учесть в линейной регрессии. Неважно. На этой картинке черная кривая — это лучшая из возможных моделей. Это модель, которая истинная, которая находит настоящую закономерность. Давайте начнем с того, что будем применять сюда линейную модель, что очевидно плохая идея. Линейная модель плохо здесь работает, мы с этим уже сталкивались, но тем не менее. Давайте будем делать некоторые подвыборки объектов, на каждой подвыборке обучать линейную модель и рисовать ее здесь синей линией. Нагенерируем много таких подвыборок, на каждой обучим свою линейную модель, получим вот такую картину. Итак, что мы видим? Прежде всего, все эти модели жутко похожи друг на друга, они практически одинаковые, то есть разброса здесь особо нет. Вы меняете выборку, генерируете ее заново из того же распределения — модель не меняется, модель крайне устойчива. Итак, разброс низкий, а что со смещением? Смещение как раз большое. Эта модель ни при какой реализации не угадывает истинную закономерность. Разница между черной кривой и любой из синих прямых очень большая, поэтому мы имеем здесь подход с высоким смещением и низким разбросом. Давайте попробуем решающие деревья и начнем с деревьев глубины два, то есть очень слабеньких деревьев. Получится вот такая картина. Опять же, синие кривые — это отдельные деревья, обученные на разных подвыборках, а фиолетовой кривой я нарисовал средний прогноз по этим деревьям, то есть такая усредненная модель, чтобы была видна какая-то общая тенденция. Что мы здесь видим? Смещение определенно ниже, чем у линейной модели, фиолетовая кривая (средняя модель) очень неплохо аппроксимирует наши данные, и разброс, в принципе, тоже небольшой — синие кривые не очень сильно отклоняются от среднего, от фиолетовый кривой. Похоже, это очень неплохая модель, одна из лучших. Давайте перейдем к деревьям глубины три, посмотрим, что там. Видно, что смещение еще ниже, фиолетовая кривая лучше аппроксимирует нашу истинную зависимость, но при этом разброс растет. Мы видим, что синие кривые разбросаны куда сильнее относительно фиолетовой. А если мы будем строить деревья глубины шесть, то получится вот так: шесть-пять — уже большая глубина, получается довольно тяжело, может быть смещение здесь еще меньше, но разброс еще больше. Деревья очень сильно кидает в стороны от фиолетовой (от средней) кривой, то есть, по сути дела, при росте глубины дерева у нас снижается смещение, но растет разброс. Чем больше глубина, тем больше разброс. ОК, кажется, мы поняли общую концепцию, от чего зависит ошибка модели. Давайте теперь поговорим про бэггинг. Можно показать, что у бэггинга есть вполне конкретная связь между смещением и разбросом итоговой композиции и отдельных моделей, а именно: смещение композиции, построенной бэггингом, будет таким же, какое оно у базовых моделей, то есть если ваша исходная модель была с высоким смещением, например, это была линейная модель в задаче, которую мы только что обсуждали, то композиция, построенная бэггингом, будет тоже очень слабой, поскольку у нее будет такое же большое смещение. Это означает, что в бэггинге в качестве базовых моделей нужно брать мощные выразительные модели, например, глубокие решающие деревья, у них будет точно низкое смещение. А вот с разбросом все хитрее. Можно показать, что разброс итоговой композиции в бэггинге вычисляется как разброс отдельной модели, деленный на n (на число моделей в композиции), но сюда еще прибавляется ковариация между отдельными базовыми моделями. Что это означает? Если бы наши базовые модели были независимы, то есть по прогнозам одной модели мы не могли бы ничего сказать о прогнозах другой модели, даже более корректно говорить так: их ошибки должны быть независимыми, то есть по тому, что одна модель ошиблась на первом объекте, ничего нельзя предсказать о том, ошибется ли другая модель нашей композиции на этом объекте. Вот если модели такие независимые, то бэггинг будет уменьшать разброс в n раз. Это потрясающий результат был бы. Мы могли бы взять n побольше, и у нас получилась бы композиция с очень низким разбросом, а смещение бы не поменялось, оно было бы таким же, как у отдельных моделей. Но, к сожалению, есть добавка "с ковариацией". Если все-таки модели связаны, если по ошибкам одной модели можно что-то сказать об ошибках другой, то уменьшение разброса будет не таким сильным. И чем более связаны между собой модели, чем более они похожи, чем более они одинаковые, тем меньший эффект будет давать бэггинг, тем больше будет оставаться разброс у нашей композиции. Отсюда делаем вывод: мало того что отдельные модели должны быть сложными, еще нужно строить их так, чтобы базовые модели были как можно более независимыми, чтобы они были как можно менее похожи друг на друга. Как это делать, мы обсудим в следующем видео, а пока давайте проверим, что то, что говорит нам теория, выполняется на практике. Здесь картинка, которую мы уже видели, это деревья глубины, кажется, пять или шесть, короче, глубокие деревья, и разные их реализации при разных обучающих выборках, смещение низкое, разброс высокий. Если мы нарисуем такую же картинку, но для композиций из 10 моделей, то есть мы будем генерировать разные подмножества объектов, на них обучать бэггингом 10 моделей, усреднять и выдавать ответ, и так проделаем много раз, то получится вот такая картинка. Здесь одна синяя кривая — это одна композиция из десяти деревьев, и видно, что смещение такое же низкое, все еще хорошо аппроксимируется исходная зависимость, но при этом разброс уменьшился. Действительно, разброс стал меньше, чем на предыдущей картинке. Синие кривые очень неплохо концентрируются вокруг фиолетовой, вокруг средней кривой, то есть, кажется, это работает — бэггинг реально помогает уменьшить разброс наших базовых моделей. Итак, мы обсудили, что теория про смещение и разброс моделей говорит нам о том, что базовые модели нужно брать сложными и как можно более различными. Чтобы они были сложными, мы будем брать решающие деревья довольно большой глубины, осталось придумать, как сделать их различными. И об этом пойдет речь в следующем видео.