[БЕЗ_ЗВУКА] Наш курс подходит к концу. Вы уже узнали, какие бывают семейства алгоритмов машинного обучения, какие у них параметры, какие гиперпараметры, как их настраивать, как оценивать качество. В последних лекциях мне хотелось бы подвести итоги и напомнить вам, какие бывают этапы анализа данных, а также рассказать об особенностях решения практических задач. Первое, что вам нужно понять, когда вы имеете дело с машинным обучением, — это чем вы занимаетесь, какую задачу вы решаете. Представьте, что вас нанял банк помогать ему с анализом данных, и они хотят, чтобы вы предсказывали, сколько денег потеряет банк, если выдаст кредит тому или иному клиенту. Если клиент полностью вернёт кредит, то потери равны нулю. Если не сделает ни одного платежа, то потери равны 100 %. Иначе — они где-то между нулём и 100 %. Это задача регрессии, поскольку целевая переменная Y здесь вещественная, от нуля до 100 %. При этом иногда вы можете сами влиять на постановку задачи. Представьте, что в этой задаче на самом деле банк будет бинаризовать ваши предсказания. Если прогноз потерь равен нулю, то кредит будет выдан. Если прогноз потерь больше нуля, то кредит выдан не будет. В этом случае вы можете предсказывать напрямую: ноль или один, вернёт ли клиент кредит или не вернёт. Мы получим задачу бинарной классификации, где целевая переменная может принимать дискретные значения. Также бывают задачи кластеризации, в которых нет правильных ответов. Вам нужно найти группы похожих объектов, которые схожи по некоторым признакам. Например, в том же банке вас могут попросить кластеризовать клиентов. Допустим, вы можете найти кластер клиентов, которые получают зарплату на карту, снимают её и больше ничего не делают, или группу клиентов, которые используют карту, только чтобы ездить за границу. Дальше банк может думать, как, например, улучшать интернет-банк, чтобы помочь каждой группе клиентов. Хорошо. После того как мы поняли, чем мы занимаемся, нужно понять, какая метрика будет измерять качество нашего решения, как мы будем понимать, что мы успешно решили задачу. Регрессия — это может быть среднеквадратичная ошибка, то есть средний квадрат отклонения нашего прогноза от правильного ответа по всем объектам. Или средняя абсолютная ошибка. Это то же самое, но только квадрат меняется на модуль. Средняя абсолютная ошибка более устойчива к объектам с сильными отклонениями. Классификация — это может быть доля верных ответов, точность или полнота, площадь под ROC или под кривой точности и полноты. Выбор конкретной метрики зависит от того, какую задачу вы решаете. В кластеризации всё немного сложнее. Там, поскольку нет правильных ответов, нет правильной метрики, и конкретный выбор зависит от вашей задачи. Эти метрики подходят, если вы решаете соревнование по машинному обучению или пишете научную статью. При этом не стоит забывать, что ещё бывают бизнес-метрики, которые характеризуют коммерческую ценность вашего решения. Например, представьте, что вы пишете рекомендательную систему для интернет-магазина, и вашего заказчика интересует прибыль, которую он получит после её внедрения. В этом случае вы будете делать алгоритм, который предсказывает, какой товар купит пользователь, заинтересуется ли он тем или иным товаром или нет. В то же время максимизация доли верных ответов и прибыли — это совершенно разные задачи. Представьте простой пример: к вам приходит пользователь, которому нужны цветные карандаши и холодильник. Он не помнит об этом, но если напомнить ему, то он купит. При этом вы можете сделать только одну рекомендацию. Если вы посоветуете карандаши, то покупка будет иметь место, но прибыль магазина будет ничтожной, поскольку карандаши дешёвые. Холодильник — гораздо более выгодная рекомендация. В этом случае вам будет полезно учитывать цены товаров в вашем алгоритме, чтобы максимизировать бизнес-метрику. Или другой пример. Представьте, что вам нужно разослать клиентам письма с рекомендациями отелей, в которые они могут заселиться. При этом итоговая метрика — это число кликов по рекомендациям к письмам. Вы можете делать алгоритм, который предсказывает, кликнет пользователь по тому или иному отелю или не кликнет. В то же время есть много других факторов, которые не зависят от машинного обучения. Например, сколько отелей показать в письме: один, два, три, может быть, шесть? Наверное, меньше — это лучше. Если советов будет шесть, то пользователь подумает, что это спам. Если же совет будет один, и при этом хорошо описан, пользователь может заинтересоваться. Или ещё один фактор. Рядом с отелями вы будете показывать фотографии. Если фотография очень красивая, то пользователь заинтересуется и кликнет по ней. Если же она не очень качественная, то вряд ли это ему понравится. И, возможно, в этой задаче улучшение качества фотографии гораздо важнее, чем улучшение качества моделей. Вывод отсюда такой: проследите, что метрика, которой будет мериться ваш успех, зависит от машинного обучения, а не от других факторов. Хорошо. Допустим, мы поняли, какую задачу решаем и как измеряется успех. Дальше нужно понять, на основе каких данных мы будем делать предсказания. Данные могут быть самые разные. Они могут быть числовыми, например, возраст или годовой доход человека. С числами проще всего. Все алгоритмы машинного обучения уже готовы к этому. Но данные могут быть и более сырыми, например, категориальными. Это признаки, которые нельзя сравнивать между собой. Например, цвет. Мы не можем сказать, зелёный и красный как соотносятся. Красный больше зелёного? Меньше? Равен? Это просто какие-то значения. Или это может быть идентификатор пользователя. Их тоже нельзя сравнивать между собой. Также признаки могут быть текстовыми, например, описание товара на странице интернет-магазина. Признаки могут иметь структуру, например, изображение или звуковые сигналы. Также признаками могут быть координаты, например, объектом может являться последовательность координат, по которой проехал ваш клиент на автомобиле. И задачей является предсказание вероятности того, что он рано или поздно попадёт в аварию. Когда мы поняли, на основе каких данных будем решать задачу, нужно учиться формировать по ним признаки или создавать матрицу «объекты-признаки», по которой уже дальше будет обучаться алгоритм машинного обучения. В первую очередь нужно уметь преобразовывать числовые признаки. Конечно, с ними можно работать сразу, но иногда полезнее сделать преобразование, например, отмасштабировать их, привести к одной шкале. Если же у вас более сложные признаки: сырые, категориальные, текстовые или что-то ещё, то нужны специальные преобразования, чтобы получить из них числа. Мы поговорим об этом в одной из следующих лекций. После того как признаки сформированы, нужно сделать их предобработку. Дело в том, что данные могут быть «грязными». К примеру, в них могут быть выбросы. Например, выбросы — это ситуация, в которой объект класса 1 отнесён к классу 0 по какой-то причине. В этом случае алгоритм будет настраиваться не на ту разметку, его качество будет хуже. Или в признаках могут быть шумы. Например, кто-то проставил клиенту возраст 1000, хотя это явно неправда. Ещё в данных могут быть пропущенные значения. Например, если мы имеем дело с данными опроса населения, то кто-то мог не отвечать на один из вопросов, или тот, кто задавал вопросы, мог забыть внести ответы, и нужно уметь как-то заполнять эти пропуски. Без них ничего не будет работать. Вообще, в машинном обучении есть такой принцип: мусор на входе — мусор на выходе. Или, другими словами, если вы будете обучать алгоритм на плохих данных, то и прогнозы будут не очень осмысленными. Хорошо. Дальше нужно научиться строить алгоритм и выбрать, из какого семейства будет ваш алгоритм машинного обучения. Считается, что наиболее популярные модели — это линейные, это композиции деревьев, которые настраиваются градиентным бустингом или случайными лесами, а также это могут быть нейронные сети. Как правило, речь идёт о глубоких нейронных сетях, которые состоят из большого количества слоёв, а также имеют сложную структуру. Например, свёрточные нейронные сети или рекуррентные. К сожалению, они выходят за рамки этого курса. Также вам может понадобится отбор признаков, если вы считаете, что далеко не все признаки в выборке полезны, или же понижение размерности, когда вы генерируете новые признаки на основе старых. Их будет меньше, но при этом их выразительная способность будет больше. После того как вы определились с семейством алгоритмов, нужно понять, как оценить качество, как настроить гиперпараметры. Для этого пригождается, например, отложенная выборка или же кросс-валидация. При этом вы должны понимать, сколько объектов взять в отложенную выборку или по скольки блокам сделать кросс-валидацию. Также иногда может быть полезно разбивать данные не случайно, а, например, по дате. Мы поговорим об этом чуть позже. Итак, мы обсудили основные этапы анализа данных. В первую очередь вы должны понять, какую задачу вы решаете и как будет определяться успех её решения. Дальше вы разбираетесь с тем, какие данные вам будут предоставлены. После этого формируете признаки на их основе, предобрабатываете их, строите модель, оцениваете её качество и настраиваете гиперпараметры с помощью отложенной выборки, кросс-валидации или других методов. [БЕЗ_ЗВУКА]