[ЗАСТАВКА] Добрый день. Меня зовут Константин Воронцов, я читаю лекции по машинному обучению в школе анализа данных Яндекс. В нашем курсе мы расскажем основные методы машинного обучения, покажем, как решать прикладные задачи. Машинное обучение в последние десятилетия стало чрезвычайно востребованной областью знаний, оно используется в огромном количестве прикладных задач, где накоплены большие объемы информации и требуется решать задачи предсказаний, автоматизации принятия решений, и так далее. То есть такие задачи, которые ранее считались прерогативой человека. Теперь мы всё чаще и чаще перекладываем их на плечи компьютеров. Что нужно делать, чтобы решать такие задачи? Первое — это накопить большие объемы информации, и второе — строить предсказательные модели. Вот о том, как это делать, будет наш курс. Давайте начнём с азов, с основных понятий и обозначений. По сути дела, большая часть машинного обучения — это наука о том, как решать задачу восстановления функции по точкам. У нас имеется функция отображения из множества объектов в множество ответов, она неизвестна, но промерена в конечном множестве точек, которое называется «обучающая выборка». То есть у нас имеется l штук пар объект-ответ, и нам хочется по этой информации восстановить эту зависимость или построить функцию, которая бы аппроксимировала вот эту самую неизвестную зависимость. Эту функцию аппроксимирующую мы будем называть a, иногда будем называть её алгоритмом, чтобы подчеркнуть, что это эффективно реализуемое на компьютере отображение. Итак, весь курс машинного обучения, по сути, будет посвящен конкретизации следующих вопросов: каким образом задаются объекты, какими могут быть ответы, как строить эту функцию, аппроксимирующую нашу неизвестную зависимость, и в каком смысле мы должны добиваться хорошего качества аппроксимации? Давайте разберёмся с этими вопросами и начнём с того, как задаются объекты. Самый распространённый способ задания объектов — это признаковое описание. Признаки чисто формально — это функции, которые объектам ставят в соответствие какие-то значения, как правило, числовые. На содержательном уровне это какие-то способы измерения над объектами, и в зависимости от того, что это за измерения, признаки делятся на следующие типы: самый простой это бинарный признак, это какой-то ответ «да» или «нет» про интересующий нас объект. Чуть сложнее номинальные признаки, они принимают тоже конечное множество значений, но это уже большее число значений. Признаки порядковые — это когда на множестве значений признаков задано некое отношение порядка. И, наверное, самый распространённый способ — это количественные признаки, которые являются какими-то числовыми измерениями над нашими объектами. Есть очень много задач, в которых эти разные, разнотипные признаки смешаны, и в признаковом описании объекта мы имеем и бинарные, и количественные, номинальные и может быть даже ещё какие-то более сложные измерения. Главный объект, с которым мы всё время будем иметь дело — это матрица «объекты-признаки», это представление нашей обучающей выборки. Строки этой матрицы соответствуют объекты... объектам и столбцы соответствуют признаки, то есть в каждой строчке мы имеем признаковое описание соответствующего объекта. И, самое главное, каждой строчке соответствует некоторый правильный ответ. Вот теперь давайте разберёмся с тем, какими бывают ответы. Самый простой случай, это когда мы имеем двухэлементное множество классов. Этот случай соответствует задачам, в которых нужно принять одно из двух решений. Примеры таких задач я приведу в следующей видеолекции. Более сложный случай, когда требуется классифицировать на большее число классов. Ну пример такой задачи — это оптическое распознавание символов или распознавание рукописного текста. Бывают случаи, когда объект может одновременно принадлежать разным классам, например, это задачи медицинской диагностики, где у одного пациента может быть целый букет заболеваний. Следующий тип задач, очень распространённый, это задачи восстановления регрессии, или мы говорим просто задача-регрессия, когда ответы — это действительные числа. К этому классу задач принадлежит огромное число задач прогнозирования, которые решаются в различных экономических приложениях, в технике, много очень промышленных, инженерных приложений. И упомяну ещё один специфический класс задач, когда множество допустимых ответов — это некое конечное упорядоченное множество, это задачи ранжирования, которые, в частности, решаются поисковыми системами при ранжировании поисковой выдачи. Давайте двинемся дальше и поймём, каким образом решаются эти задачи, каким образом подбирается предсказательная модель. Обычно она выбирается из некоторого параметрического семейства функции, которое заранее изобретается, это должны эксперты, люди придумать некое параметрическое семейство функции, в котором нашлась бы функция, которая хорошо аппроксимирует нашу неизвестную зависимость. Обычно это некоторое семейство g(x, θ), где θ — это вот искомый вектор параметров нашей модели. Самые простые примеры таких моделей — это линейные модели, и мы будем много о них говорить в нашем курсе, поскольку это одни из, с одной стороны, самых простых моделей, но, с другой стороны, они неплохо работают во многих прикладных задачах. Линейная модель регрессии — это просто взвешенная сумма всех признаков. Ну, естественно, возникает вопрос, а почему сумма всех признаков, взятых с какими-то коэффициентами θj является хорошей моделью для восстанавливаемой зависимости? Каждый раз, когда мы решаем прикладную задачу, этот вопрос возникает: применять ли линейную модель или какую-то более сложную? И для классификаций тоже используют линейные модели, но в таком случае нас больше интересует знак этой линейной комбинации признаков, и если знак положительный, то мы относим объекты X к классу +1, если знак отрицательный, к классу −1. То есть, фактически, линейная модель классификации строит разделяющую гиперплоскость в n-мерном пространстве, и по одну сторону от этой гиперплоскости объекты одного класса, по другую сторону объекты другого класса. Вот очень известный пример задачи, которая стала хрестоматийной, ещё Рональд Фишер, очень известный статистик в 36-м году собрал выборку из 150 цветков ириса, по 50 цветков каждого из трех классов. И задача заключается в том, чтобы по этим измерениям научиться определять вид цветка. Измерений всего 4, это 4 признака: длина и ширина чашелистика, длина и ширина лепестка. Вот здесь вот на слайде показан один из способов визуализации исходных данных, который хорошо проходит, когда признаков не очень много, вы сталкиваете друг с другом все признаки попарно и можете увидеть, нет ли таких сочетаний пар признаков, где задача бы решалась тривиально. Ну в данном случае видно, что, например, в осях «длина лепестка» и «ширина лепестка» очень хорошо отделился один из классов, да, в общем-то, и два других тоже отделились неплохо, и сразу напрашивается отделить их прямыми линиями, то есть построить линейный классификатор. Эта задача считается очень лёгкой, и поэтому она кочует из учебника в учебник как хрестоматийный пример, и мы с вами тоже будем о ней частенько вспоминать для иллюстрации разных методов. Вот пример задачи-регрессии, где тоже работают линейные модели. В данном случае мы берём некую функцию от одного переменного X, но в качестве признаков мы можем брать любые функции от X. В частности, мы можем взять степень X: X, X², X³, и так далее, можем взять любые функции от X, и линейные комбинации этих функций позволяют нам строить модели, которые приближают нашу искомую неизвестную зависимость, измеренную в конечном множестве точек. Следующий момент, который очень важно понять, и он общий для всех задач машинного обучения, что всегда есть две стадии решения задачи. На первой стадии мы, собственно, по выборке строим алгоритм, функцию, которая будет предсказывать нам какие-то значения на новых объектах, а вторая стадия стадия, это когда нам дают выборку из новых объектов. Ее называют тестовой, иногда называют контрольной. И наш уже построенный алгоритм a (x) должен выдавать на этих объектах некие ответы, прогнозы, принятые решения. Конечно, первая стадия самая сложная. Именно на этой стадии и работает вся тяжелая артиллерия машинного обучения. Вторая стадия — это, как правило, просто применение построенной функции a (x) к новым объектам. Давайте теперь обсудим вопрос, каким образом мы собираемся выбирать из предсказательной модели тот алгоритм a (x), который нас будет удовлетворять. Один из самых распространенных способов — это свести задачу обучения к задаче оптимизации. То есть выбрать такой алгоритм, который на большинстве объектов обучающей выборки дает правильные ответы или достаточно точные ответы. Но, чтобы это сделать, в первую очередь нужно разобраться с тем, а как мы будем измерять точность ответа алгоритма на одном отдельном объекте. Для этого вводится так называемая функция потерь. Для задачи классификации это просто индикатор ошибки, который равен единичке, если ошибка произошла, и нулю, если ответ был правильный. Ну на задачах регрессии самый распространенный выбор — это квадратичная функция потерь, которая приводит к широко известному методу наименьших квадратов. И вот если мы эти потери сложим по всем объектам... Иногда делят на количество объектов, иногда — не делят. То мы получим функционал, который называется эмпирическим риском. И вот минимизация этого функционала по параметру модели, предсказательной модели a (x, θ), мы ищем параметр θ, который будет давать минимум эмпирического риска. Итак, один из основных способов в машинном обучении, способов решения задачи обучения — это минимизация эмпирического риска. Как только мы сформулировали, что же мы считаем ошибкой, и выписали функционал средней ошибки, функционал эмпирического риска, мы можем дальше решать оптимизационную задачу, применяя для этого различные численные методы. Ну один из самых известных методов — это метод наименьших квадратов. Он применим для задач регрессии и удобен тем, что когда у нас там квадрат под знаком суммы, мы можем легко этот функционал продифференцировать по параметрам, приравнять нулю производную, и, то есть, воспользоваться методами математического анализа для того, чтобы решать эту задачу. Ну вот возникает вопрос — а сможем ли мы действительно восстановить закон природы, который мы ищем, ту самую зависимость? Или же мы просто подгоним нашу функцию g (x, θ) к заданным точкам? И может быть в других точках эта зависимость уже не будет выдавать нам правильные ответы. Если это получается, то, это конечно, нежелательный эффект. Он называется переобучением или переподгонкой. И мы очень много с вами в течении курса будем заниматься вот этим вот вопросом. Действительно ли нам удастся восстановить закон природы, приблизить искомую функцию, или же мы просто проведем кривую через заданные точки, которая между этими точками будет плохо себя вести и не будет восстанавливать закон природы. Это означает, что мы будем ошибаться на новых данных. И вот этот вот вопрос, насколько точно будет работать найденный алгоритм на новых данных, будет ли он обладать обобщающей способностью или он будет переобучаться, это один из ключевых вопросов машинного обучения. На этом мы заканчиваем первую вводную лекцию. Я вас познакомил с основными понятиями машинного обучения: объект, ответ, признак, предсказательная модель, метод обучения, эмпирический риск переобучения. Дальше мы будем заниматься самыми разными моделями, которые используются в машинном обучении, и методами их оптимизации. Но перед этим, в следующей лекции, мы пробежимся по разнообразным примерам прикладных задач машинного обучения. [ЗАСТАВКА]