[БЕЗ_ЗВУКА] В этом видео мы обсудим проблему переобучения градиентного бустинга и поговорим о том, как с ней бороться. На этом графике изображена ошибка градиентного бустинга на обучающей и контрольной выборках в зависимости от числа деревьев в нем. Синяя кривая — это ошибка на обучающей выборке. Видно, что она монотонно убывает и в какой-то момент уходит в 0. Красная кривая — это ошибка на контрольной выборке, видно, что она сильно больше, чем ошибка на обучающей выборке, и при этом она в какой-то момент, на примерно 10-й итерации или 20-й, достигает минимума, после чего начинает опять возрастать. Налицо переобучение. В чем же дело? Эту проблему легко объяснить. В градиентном бустинге каждый базовый алгоритм пытается приблизить вектор антиградиента на обучающей выборке. При этом в градиентном бустинге используются довольно простые базовые алгоритмы, например, невысокие решающие деревья, которые вряд ли могут хорошо аппроксимировать вектор антиградиента. В итоге вектор, который построит базовый алгоритм, будет указывать не в сторону наискорейшего убывания ошибки, а куда-то в другую сторону. И у нас есть риск вместо градиентного спуска получить случайное блуждание в пространстве. Из-за этого и получается, что качество на тесте оказывается не очень хорошим. Как бороться с этой проблемой? Нужно не доверять тому направлению, которое построил базовый алгоритм и лишь чуть-чуть смещаться в сторону этого вектора. Благодаря этому мы получим очень аккуратное движение в пространстве и есть надежда, что мы сойдемся-таки к локальному минимуму. Итак, для того чтобы не доверять тому направлению, мы будем прибавлять новый базовый алгоритм bN с некоторым коэффициентом η (эта). Данный коэффициент η называется длиной шага и принимает значения от 0 до 1. При этом понятно, что выставлять его равным 0 не имеет смысла, в этом случае композиция будет константной. Посмотрим, как влияет длина шага на кривые качества на обучении и контроле. Первый график показывает ошибку на обучении и контроле при η = 1. Это та картинка, которую мы уже видели. Налицо переобучение, красная кривая, то есть ошибка на контроле сильно выше, чем ошибка на обучении. Выставим η равным 0,1. В этом случае качество на контроле получается уже гораздо лучше, и при этом оно монотонно убывает. То есть мы в каком-то смысле начинаем бороться с переобучением. Если уменьшить η еще сильнее и выставить равным 0,01, то видно, что сходимость гораздо медленнее. Даже чтобы достичь низкого качества на обучении, градиентному бустингу нужно существенно больше итераций, на несколько сотен больше. Но при этом и качество на контроле получается чуть-чуть лучше. Итак, мы заметили одну важную особенность, связанную с размером шага: чем меньше шаг, чем меньше η, тем больше нужно базовых алгоритмов, чтобы достичь хорошего качества. Таким образом нам нужно выбирать — мы хотим потратить больше времени на обучение, построить больше алгоритмов, получить качество получше, или же быстрее получить результат, но при этом получить качество чуть-чуть меньше. Также обратите внимание, что размер шага — это гиперпараметр, который нужно как-то подбирать: или по отложенной выборке, или по кросс-валидации. Получается, что у градиентного бустинга есть 2 важных гиперпараметра — это число деревьев, или, что то же самое, число итераций N, и размер шага η. Перебирать два гиперпараметра довольно сложно, поэтому обычно выбирают одну из двух следующих стратегий: первая — это зафиксировать размер шага η, например, взять его равным 0,01, и подбирать число итераций N, либо же зафиксировать число итераций N, например, взять его равным тысяче, и подбирать размер шага η. Обе стратегии неплохо работают, но если у вас есть много времени и ресурсов, то можно подобрать и оба гиперпараметра одновременно. Еще один подход к борьбе с переобучением градиентного бустинга — это бэггинг. То есть давайте обучать каждый базовый алгоритм не по всей обучающей выборке, а по некоторой случайной подвыборке. Такой подход называется стохастическим градиентным бустингом. Давайте посмотрим, как влияет сокращение шага и бэггинг на качество на контроле. На этом графике по оси X отложено число деревьев в композиции, по оси Y — качество на контрольной выборке. Оранжевая кривая — это качество градиентного бустинга без применения сокращения шага и без бэггинга. Видно, что у этой кривой есть явно выраженный минимум, после чего алгоритм начинает переобучаться. Бирюзовая кривая — это качество при использовании сокращения шага. Здесь η выставлена равной 0,1. Видно, что здесь требуется больше итераций, чтобы достичь хорошего качества, но и при этом достигается более низкая ошибка. То есть сокращение шага здесь действительно работает. Синяя кривая — это градиентный бустинг, который обучен с сокращением шага, η = 0,1, и с бэггингом, где каждый базовый алгоритм обучается по половине обучающей выборки. Видно, что здесь форма кривой такая же, как и при использовании только сокращения шага, но при этом за такое же количество итераций данный алгоритм достигает более низкой ошибки. То есть использование стохастического градиентного бустинга позволяет уменьшить ошибку или достичь той же ошибки при таком же числе итераций. Итак, мы обсудили, что градиентный бустинг переобучается из-за того, что в нем используются довольно простые базовые алгоритмы, и вывели два способа борьбы — это сокращение шага и бэггинг, который также называется стохастическим градиентным спуском. В следующем видео мы поговорим о том, как применять градиентный бустинг для конкретных функций потерь в классификации и регрессии.