[ЗАСТАВКА] В этой лекции мы поговорим о том, как организовать процесс оценивания качества алгоритма машинного обучения. Разумеется, это можно делать по обучающей выборке, но это не самая лучшая идея. Дело в том, что алгоритм подогнан под эту выборку. И даже если у него плохая обобщающая способность, вы увидите хорошее качество работы на обучение. Чтобы действительно понять, какая у него обобщающая способность, нужно использовать дополнительные данные. Например, отложенную выборку, или же делать кросс-валидацию. Поговорим о них подробнее. Отложенная выборка или hold-out состоит в следующем: вы берете все ваши данные и разбиваете их на две части, обучающую и валидационную. На обучающей вы настраиваете алгоритм машинного обучения, на валидационной — проверяете его качество. Здесь есть параметр: в каком соотношении разбивать данные на обучение и валидацию? Единого ответа нет, можно лишь дать некоторые советы. Например, если обучающая выборка будет слишком маленькая, то оценка качества окажется пессимистичной, поскольку обучение гораздо меньше, чем на самом деле. Качество будет ниже. Если же валидационная выборка будет слишком маленькой, то оценка будет неточной. Поскольку данных в тесте мало, вы не можете точно оценить по ним, какое качество. Типичный выбор здесь — это 70 % данных в обучающую выборку, 30 % — в валидацию. У этого подхода есть несколько проблем. В частности, результат сильно зависит от того, как именно вы разбиваете. Каждый объект участвует или в обучении, или в валидации. Вы никогда не узнаете, что было бы, если бы вы обучались на объектах, которые попали в валидацию. Также, еще одна проблема состоит в том, что если сравнивать много моделей, то есть риск подгонки под конкретную валидационную выборку. В этом случае нужно использовать кросс-валидацию. Кросс-валидация устроена следующим образом. Вы разбиваете данные на k примерно равных частей. Далее каждая из них по очереди выступает как валидационная. То есть вы берете первую часть — она является валидацией, из всех остальных формируется обучающая выборка. Дальше берете вторую часть — теперь она выступает как валидация, а остальные как обучение, и так далее. Всего нужно настроить k моделей, чтобы посчитать качество. Опять же, k является параметром, который нужно выбирать. Если k слишком маленький, то оценки будут пессимистичные, поскольку блоки слишком большие. В обучение попадет гораздо меньше объектов, чем во всей выборке. Если k — большое, то оценки будут несмещенные, но при этом их дисперсия высока, поскольку размеры валидационных выборок очень маленькие, по ним нельзя точно оценить качество. Типичный выбор — это k = 5 или k = 10. Обычно это работает хорошо. Основная проблема кросс-валидации состоит в том, что нужно обучать не один, а k алгоритмов. Если процедура обучения очень трудоемкая, то кросс-валидация — не самый желательный выбор. Об этих методах вы уже слышали. Давайте поговорим о том, с какими проблемами вы можете столкнуться, если будете их применять. Дело в том, что и отложенная выборка, и кросс-валидация опираются на предположение, что все объекты независимы и принадлежат одному распределению. Поговорим о принадлежности одному распределению. Вот простой пример: вы хотите предсказывать, какие сотрудники уволятся из компании в следующем полугодии. Понятно, что число увольнений сильно зависит от ситуации в компаний. Если дела у нее хорошо, то увольняется мало сотрудников. Если же дела идут плохо, то увольнений гораздо больше. Таким образом, распределение ответа очень сильно зависит от времени. Если вы будете разбивать сотрудников случайно, то и в обучении, и в валидации будут сотрудники из одного и того же времени, и алгоритм может подсмотреть в будущее, он будет знать, какой процент увольнений в тот или иной момент времени. Это будет нечестное сравнение, оценка качества будет завышенной. Правильным вариантом будет разбиение по времени. В обучающей выборке должны быть события, которые произошли до определенного порога, в валидационной — которые произошли после определенного порога. Еще один момент — все объекты должны быть независимыми. Разберем пример, в котором это не так. Представьте, что вам нужно предсказывать скорость транспортного потока на небольших участках дорог во всей Москве. Понятно, что скорость на смежных участках дороги практически одинаковая. Таким образом, объекты не являются независимыми. Чем ближе участки, тем больше корреляции между ответами на них. Таким образом, если вы разобьете участки случайно, то алгоритм подсмотрит скорость на соседних участках, которые оказались в обучении, и переобучится, оценка качества снова будет завышенной, а алгоритм будет знать информацию, о которой знать не должен. Таким образом, здесь нужно развивать участки с учетом близости или же по времени. Например, обучаться на одном интервале в сутках, проверять качество — на другом. Также, некоторые проблемы могут возникнуть, если вы совмещаете обучение алгоритма и отбор признаков или понижение размерности. Представьте себе такую ситуацию: вы берете всю выборку и находите по ней оптимальные признаки. Дальше вы фиксируете новые признаки и оцениваете качество алгоритма на этой выборке с помощью отложенной выборки или кросс-валидации. Это не очень хороший подход. Дело в том, что признаки отобраны так, чтобы оптимизировать качество алгоритма на всей обучающей выборке. В этом случае оценка качества будет слишком оптимистичной. Правильный подход состоит в следующем: сначала вы фиксируете разбиение всех данных на обучение и валидацию, или же фиксируете разбиение по кросс-валидации. Дальше берете каждую каждую обучающую и валидационную выборки, производите отбор признаков или понижение размерности на обучении и проверяете качество на валидации. Этот подход требует больше запусков отбора признаков, но при этом он даст более точную оценку качества. Итак, что мы узнали? Проверять качество алгоритма машинного обучения нужно на выборке, которая отличается от обучающей. При этом есть разные подходы. Можно делать отложенную выборку, можно оценивать качество по кросс-валидации. Кросс-валидация работает лучше, но при этом она более трудозатратная. Также могут быть некоторые проблемы с выборкой. Если объекты зависят друг от друга или же относятся к разным распределениям, то это нужно учитывать, и разбивать объекты на «обучение» и «валидацию» с учетом этой информации. Также, нельзя отбирать признаки до кросс-валидации. Нужно совмещать эти две процедуры. [ЗАСТАВКА] [ЗАСТАВКА]