Алгоритмы Data Science и их практическая реализация на Python
Покупка
Основная коллекция
Тематика:
Кибернетика
Издательство:
Инфра-Инженерия
Год издания: 2022
Кол-во страниц: 392
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9729-1006-9
Артикул: 791490.01.99
Рассмотрен полный каскад разработки моделей искусственного интеллекта. Проанализирована область Data Science, из которой выделены все необходимые для прикладной сферы алгоритмы машинного обучения, расположенные по уровню возрастания сложности работы с ними.
Для студентов, изучающих информационные технологии. Может быть полезно как начинающим программистам, так и специалистам высокого уровня.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
А. В. Протодьяконов П. А. Пылов В. Е. Садовников АЛГОРИТМЫ DATA SCIENCE И ИХ ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ НА PYTHON Учебное пособие Москва Вологда «Инфра-Инженерия» 2022
УДК 004.89 ББК 32.813 П83 Рецензенты: кандидат технических наук, доцент, заведующий кафедрой информационных и автоматизированных производственных систем ФГБОУ ВО «Кузбасский государственный технический университет» И. В. Чичерин; доктор технических наук, профессор РАН, главный научный сотрудник ФГБНУ «Федеральный исследовательский центр угля и углехимии Сибирского отделения Российской академии наук» А. Е. Майоров Протодьяконов, А. В. П83 Алгоритмы Data Science и их практическая реализация на Python : учебное пособие / А. В. Протодьяконов, П. А. Пылов, В. Е. Садовников. - Москва ; Вологда : Инфра-Инженерия, 2022. - 392 с. : ил., табл. ISBN 978-5-9729-1006-9 Рассмотрен полный каскад разработки моделей искусственного интеллекта. Проанализирована область Data Science, из которой выделены все необходимые для прикладной сферы алгоритмы машинного обучения, расположенные по уровню возрастания сложности работы с ними. Для студентов, изучающих информационные технологии. Может быть полезно как начинающим программистам, так и специалистам высокого уровня. УДК 004.89 ББК 32.813 ISBN 978-5-9729-1006-9 © Протодьяконов А. В., Пылов П. А., Садовников В. Е., 2022 © Издательство «Инфра-Инженерия», 2022 © Оформление. Издательство «Инфра-Инженерия», 2022
ОГЛАВЛЕНИЕ Предисловие.............................................................7 Часть 1. Процесс машинного обучения.....................................8 Задачи машинного обучения...............................................8 Модель и процесс машинного обучения....................................10 ПонятиеЕТЬ.............................................................12 Понятие EDA............................................................13 Подготовка данных......................................................15 Разбиение выборки......................................................18 Оптимизация гиперпараметров............................................21 Недообучение и переобучение............................................23 Смещение, разброс и ошибка данных......................................27 Использование HDF......................................................30 Часть 2. Метрики и модели общие........................................33 Метод максимального правдоподобия......................................33 Метод наименьших квадратов.............................................36 Аппроксимация пропусков в данных.......................................38 Среднеквадратичная ошибка..............................................40 Метрики и расстояния...................................................42 Часть практических навыков к1 -2.......................................45 Процесс ETL............................................................45 Интерполяция и экстраполяция...........................................50 Оценка модели..........................................................52 Линейная регрессия.....................................................55 Оптимизация потребления памяти.........................................57 EDA и исследование зависимостей в данных...............................61 Заполнение пропусков в данных..........................................69 Часть 3. Модели линейной регрессии.....................................73 Линейная регрессия и И^2-регуляризация.................................73 Изотоническая регрессия................................................76 В1СиА1С................................................................78 Полиномиальная регрессия...............................................79 Линеаризация регрессии.................................................81 Часть практических навыков к3..........................................84 Обогащение данных......................................................84 Иерархия моделей.......................................................94 Оптимизация регрессии.................................................101 Экспорт и импорт данных...............................................105 Ансамбль регрессионных моделей........................................114 Расчет результатов....................................................120 3
Часть 4. Модели классификации и её метрики............................132 Точность и полнота....................................................132 F-мера................................................................134 ROCAUCnGini...........................................................136 Оценка Каппа Коэна....................................................139 Взвешенная квадратичная оценка Каппа Коэна............................140 Логистическая функция потерь..........................................142 Метод ближайших соседей...............................................144 Часть практических навыков к 4........................................147 Страховой скоринг.....................................................147 F1 и Каппа оценки классификации.......................................155 Метод ближайших соседей...............................................161 Наивный Байес в задаче классификации скоринга и оптимизации потребления памяти....................................................165 Логистическая регрессия...............................................170 Иерархия логистической ргерессии......................................174 Метод опорных векторов (Support-Vector Machine).......................179 Часть 5. Ансамблевые модели...........................................183 Ансамблевые модели....................................................183 Бутсрэп...............................................................185 Бэггинг...............................................................186 Случайный лес.........................................................188 Out-of-Bag............................................................190 Сверхслучайные деревья................................................192 Адаптивный бустинг....................................................194 LogitBoost, BrownBoost и L2Boost......................................197 Градиентный спуск.....................................................200 Градиентный бустинг и XGBoost.........................................203 Стохастический градиентный бустинг....................................205 Часть практических навыков к5.........................................208 Решающие деревья......................................................208 Случайный лес.........................................................212 Бустинг с XGBoost.....................................................216 Часть 6. Продвинутые ансамбли.........................................220 LightGBM..............................................................220 CatBoost..............................................................222 Ансамбль стекинга.....................................................224 Часть практических навыков к 6........................................228 LightGBM..............................................................228 CatBoost..............................................................232 Ансамбль классификации................................................238 Расчет результатов....................................................243 4
Часть 7. Искусственные нейронные сети.................................247 Искусственные нейронные сети..........................................247 Слои в нейросетях.....................................................250 Нейрон смещения.......................................................251 Функции активации.....................................................253 Обратное распространение ошибки.......................................256 Многослойный перцептрон...............................................258 Часть практических навыков к 7........................................261 Задача предсказания формы облаков.....................................261 Предобработка изображений.............................................266 Опорные векторы и коэффициент сходства................................270 Двухслойный перцептрон................................................273 Часть 8. Обучение нейросети...........................................278 Эпохи, пакеты, итерации...............................................278 Оптимизация нейронной сети по Нестерову...............................279 Адаптивная оптимизация нейронной сети.................................281 RMSprop, Adadelta, Adam...............................................282 Оптимизация нейронных сетей...........................................283 Пакетная нормализация.................................................285 Регуляризация обучения нейронных сетей................................287 Методы инициализации весов в нейронных сетях..........................288 Дополнение данных.....................................................290 Свертка и подвыборка..................................................292 Сверточные нейронные сети.............................................294 Часть практических навыков к 8........................................296 Свертка и предвыборка.................................................296 Активация и оптимизаторы..............................................300 Нормализация и переобучение...........................................305 Дополнение изображений................................................310 Часть 9. Архитектуры сверточных нейросетей............................315 LeNet.................................................................315 AlexNet...............................................................317 VGG...................................................................320 GoogLeNet.............................................................323 Inception.............................................................325 ResNet................................................................329 ResNetXt..............................................................331 SE-ResNet.............................................................333 EfficientNet..........................................................334 DenseNet..............................................................336 MobileNet.............................................................338 Часть практических навыков к 9........................................341 LeNet и AlexNet.......................................................341 VGG16nVGG19...........................................................345 5
GoogLeNet и Inception-BN.................................................349 InceptionV3 и V4.........................................................361 ResNet...................................................................365 Архитектура нейросети....................................................369 MobileNet для различных предметных областей..............................375 Библиографический список.................................................380 Приложение 1. Варианты заданий для самостоятельной реализации алгоритмов машинного обучения.......................................................384 Приложение 2. Варианты заданий для исследовательских работ в области машинного обучения.......................................................387 Приложение 3. Варианты заданий, включающие в себя самостоятельный этап Data Mining, для построения End-To-End решений в области машинного обучения.388
ПРЕДИСЛОВИЕ Данное учебное пособие предполагает обучение студентов технических специальностей (и является профильным для студентов информационных технологий) навыкам и методикам работы с сложными моделями машинного и глубокого обучения. Отличительной чертой пособия от других схожих курсов обучения искусственному интеллекту (онлайн площадки, интернет-курсы) является плавность возрастания сложности и целостность логики повествования. Сложность входного порога к изучению алгоритмов и моделей машинного / глубокого обучения является минимальной из всех возможных, то есть даже неподготовленный студент может начать обучению по настоящему учебному пособию и плавно упрочнять свои навыки до уровня Junior Data Scientists. Состав и последовательность вариантов работ в учебном пособии организованы по логическому возрастанию уровня сложности. Таким образом, предложенные задания могут быть освоены студентами не только в рамках курса дисциплины, но и, по своему интересу, студенты могут самостоятельно повышать свои навыки и умения на более сложных заданиях, не затрачивая дополнительное время на поиск заданий и наборов данных в сети Интернет. Полное освоение работ по данному учебному пособию (при условии самостоятельного выполнения практических работ) гарантирует появление у студента навыков и умений hard skills, необходимых и достаточных для трудоустройства в компании по специальности Junior Data Scientists / Data Analyst¹. ¹ Согласно реальным данным анкет одного из крупнейших в РФ поисковых сервисов работы (https://spb.hh.ru/vacancies/data-analyst и https://spb.hh.ru/search/vacancy?clusters=true&area=2&ored_ clusters=true&enable_snippets=true&salary=&text=data+scientists) по состоянию на конец ноября -начало декабря 2021 года. 7
Часть 1 ПРОЦЕСС МАШИННОГО ОБУЧЕНИЯ ЗАДАЧИ МАШИННОГО ОБУЧЕНИЯ Начинать знакомство с машинным обучением логично с обзора тех задач (классификации задач), которые относятся к машинному обучению. Данным задачам и методам их решения будут посвящены следующие разделы учебного пособия. Классификаций задач в машинном обучении очень много (некоторые идут от способа решения, другие от метода решения), в нашем случае примем за основу самую общую и наиболее простую классификацию, выделяющую три основных группы в задачах машинного обучения: 1. Обучение с учителем. 2. Обучение без учителя. 3. Обучение с подкреплением. Начнем с первой группы задач. Такая концепция подразумевает под собой тот факт, что у нас есть на входе некоторые данные, для которых известен ответ (задача очень похожа на арифметическую / геометрическую прогрессию, когда нужно угадать следующее/предыдущее число в ряду чисел). При этому у нас есть некоторые новые данные, для которых требуется найти правильное значение (наиболее правильное), так как машинное обучение предполагает возможность, при котором может не быть однозначно правильного ответа на поставленный вопрос. То есть существует некоторый набор ответов, каждый из которых по-своему близок к правильному, но, скорее всего, правильным не является (всегда существует определенная статистическая ошибка). Обучение с учителем - наиболее простой класс задач в машинном обучении, так как предполагает, что у нас уже есть собранные данные, на эти данные есть правильный ответы и по аналогичным данным нам нужно предсказать ответ, который будет похож на правильный и максимально близок к правильному (во всяком случае мы сможем оценить, насколько предсказываемый 8
ответ близок к правильному). В обучении с учителем выделяют две основные задачи: • задачарегрессии; • задача классификации. По сути, они достаточно похожи друг на друга, только в задачи регрессии мы предсказываем числовое значение, а в задачи классификации ответ представлен в виде ранга или категории (по факту - нечисловое значение). Задачи решаются одними и теми же алгоритмами, но принято их разделять и говорить, что если предсказывается числовое значение - то это точно задача регрессии (у неё свой набор методов - линейная регрессия, нелинейная регрессия), в то время как предсказание рангов и классов относится к задаче классификации (у неё существует другой набор алгоритмов - метод ближайших соседей, множественная классификация). Обучение без учителя - вторая группа задач - говорит, что у нас нет правильного ответа. Существуют данные, но ответа на них нет. Соответственно возникает ряд задач в связи с тем, что у нас нет ответа на данные. Первая подзадача - задача кластеризации. В ней по определённым параметрам (например, количество кластеров) необходимо предсказать каким образом данные распределены между собой. Это позволяет разнести данные по кластерам, основываясь на среднем удалении от центра кластера, на количестве кластеров и других признаков, тем самым решив задачу кластеризации таким образом. Кроме того, группа задач обучения без учителя включает в себя методы понижения размерности, когда существует огромное количество признаков и нам требуется уменьшить их до нескольких, чтобы потом применить задачу кластеризации или задачу обучения с учителем (чтобы на разных параметрах определить какие параметры важны и, снизив размерность, решить задачу обучения с учителем. При большой размерности решить задачу с учителем не представляется возможным без серьезного аппаратного обеспечения). Также к классу задач обучения без учителя относится класс задач по выявлении аномалий. Они похожи на кластеризацию, где есть все данные и дополнительно могут быть ещё какие-то. Обращаем особое внимание на то, что 9
«каких-то дополнительных данных» может и не быть, то есть мы можем не знать какая конкретно будет аномалия, однако мы можем предположить, что некоторые зависимости в данных уже являются аномалиями. Например, задача Фродо относится к классу задач обучения без учителя, так как в ней нужно предсказать пытается ли кто-то обмануть систему или нет. Из практики можно привести пример автоматического распознавания Ddos-атаки, когда алгоритм сам определяет, что такого количества посетителей не должно быть и, скорее всего прирост запросов на сайт - действие злоумышленников. Третий тип задач машинного обучения - это обучение с подкреплением. Оно похоже на обучение, но это его единственное сходство с двумя другими категориями, потому что обучение с подкреплением предполагает, что у нас нет данных как таковых, но у нас есть среда, которая генерирует поток сигналов. На основании данных сигналов система должна принимать решения самостоятельно. Разумеется, задачу третьего типа можно свести к одной из двух типов задач машинного обучения, однако важное отличие третьего типа от двух остальных состоит в том, что существует положительная обратная связь от среды. Обучение предполагает, что у нас будет ответ, насколько мы правильно или неправильно решили поставленную от среды задачу (правильно повернули на автомобиле или нет). Подкрепление есть как система обратной связи -положительной или отрицательной; в любом случае у нас должен существовать новый ассортимент методов и алгоритмов для решения узконаправленной задачи. МОДЕЛЬ И ПРОЦЕСС МАШИННОГО ОБУЧЕНИЯ Модель машинного обучения - это некоторая функция или алгоритм (порядок действий), который по набору входных параметров (десятки, сотни, тысячи значений) выдает какой-то ответ или оценку ситуации (какое-то число; действия, которые необходимо предпринять; категорию; набор ответов). Функция ставит в соответствие некоторый образец данных некоторому решению (решение может быть достаточно произвольным: число, действие, категория, отсутствие действия). Этому результату модель может обучаться (может не обучаться, а просто выдавать его). Чтобы получить эту главную функцию необходимо выполнить определенный, достаточно трудоёмкий процесс. 10
Процесс всегда начинается с выбора источника данных, а также обязательная постановка цели, метрики или критерия. То есть того, каким должен быть результат, который нам нужен (насколько точный он должен быть; путь, который он должен проходить). В любом случае всегда должна стоять некоторая цель или метрика результата. Каким образом эта цель (метрика) формулируется в конкретных задачах машинного обучения будет исследовано в следующих главах учебного пособия, но очень важно, что перед тем, как начинать делать модель машинного обучения, необходимо четко понимать, что от данной модели нам необходимо получить. Без двух вышеописанных основополагающих блоков (цель и выбор источника данных) процесс машинного обучения теряет смысл. После того, как определены два блока, наступает процесс сбора, очистки и объединения данных (процесс ETL, подробно рассмотрен в следующих главах); после него может идти процесс исследовательского анализа данных (EDA) - в случаях, если данных очень много и необходимо предварительно найти взаимосвязи в данных, исключить лишние информационные ветви. Также процесс EDA может вернуть какие-то данные вновь в процесс обработки. То есть, поменяв что-то в процессе обработки данных, вернули результат и далее, основываясь на результате двигаемся дальше. Затем следует процесс очистки данных (допустим, перевод категориальных данных в числовые). После очистки данных можно произвести выбор модели машинного обучения и произвести её обучение. После обучения обязательно следует проверка результата по заранее выставленной метрике (для каждого алгоритма существует своя собственная метрика. Например, для задачи регрессии метрикой может выступать метод наименьших квадратов; для задачи классификации - матрица неточности). Завершающий этап - оценка модели. После оценки модели можно вновь вернуться к выбору модели, если оценка является неудовлетворительной или улучшить данные на разных этапах (в следующих главах подробнее об этом). 11
После всех этапов, в случае, когда нас устраивает оценка модели, модель может быть внедрена в виде черного ящика/набора функций/оборудования, на котором работает нейросеть отгружается на операционное устройство для выполнения интеграции с сервисом (мобильная платформа, ПК и так далее). ПОНЯТИЕ ETL ETL (Extract, Transformer, Load) Процесс ETL - Extract, Transform, Load. В переводе с английского оригинала звучит как «Выбрать, Преобразовать, Загрузить» - процесс препреподготовки данных, когда нам необходимо понять всё ли у нас готово для того, чтобы начинать работать с моделью. Процесс ETL обычно включает некоторый первичный анализ исходных данных. Допустим, у нас существуют данные по энергопотреблению зданий, но в них нет погодных данных в выборке. У нас есть гипотеза, что наличие погодных данных так или иначе позволит уточнить модель. В таком случае, на этапе процесса ETL необходимо добавить погодные и гидрометеорологические данные, чтобы ими обогатить модель и проверить больше гипотез на этапе построения модели. К этапу сбору и подготовки данных допустимо возвращаться по несколько раз по ходу оценки точности работы модели. Однако, процесс является базовым и состоит из нескольких инструментов. Первый из них - это получить данные из нескольких источников. То есть настройка получения данных, так как процесс может выполняться множество раз, нам требуется процедура, позволяющая регулярно получать данные. Вторым аспектом является очистка данных, либо заполнить пропуски при существовании таких. Пропуски являются наиболее частой проблемой 12
при работе с моделью машинного обучения. Существует несколько вариантов заполнения пропусков: 1. Провести интерполяцию значений (заполнение близкими значениями). Предположить, что у нас также развивалась ситуация и заполнить наиболее характерное значение. Не работает для категориальных данных! Однако хорошо справляется с числовыми или ранговыми значениями. 2. Заполнить пропуски никогда не встречающимися значениями (-1 или -100). Таким образом мы отмечаем, что эти данные никак не должны участвовать в оценке модели, но при этом они не должны испортить сам модель - сам пропуск данных «выключает» тот экземпляр данных (или целый кортеж), который есть с этим пропуском. При преобразовании данных всегда следует помнить о том, что данные нельзя «ломать». Намеренная замена пропусков отличными от реальности значениями приведет к основному правилу машинного обучения «мусор на входе - мусор на выходе», что отличным образом описывает качество модели машинного обучения. Поэтому данные должны остаться корректными, сохраняя в себе свою главную суть, а не просто поправленными по нашей необходимости. Третьим аспектом в ETL является объединение данных из нескольких источников. Предположим, существуют данные по городу, людям и автомобилям. Чтобы провести аналитику замкнутого цикла человек - автомобиль -город, достаточно будет объединить данные по человеку, автомобилю, который с ним связан и городу, в котором он проживает. Таким образом, произойдет расширение параметров, но модель сможет работать с каждым кортежем данных атомарно, что позволит распараллелить процесс и разбить данные на тренировочную и тестовую выборку без потерь. На этапе ETL, при необходимости, должно быть объединение данных, чтобы каждая строка данных исчерпывающим образом описывала ситуацию предметной области без пропусков в них. Только после подготовки данных можно переходить к непосредственному построению модели машинного обучения. ПОНЯТИЕ EDA Что такое EDA (Exploratory Data Analysis) Важной частью процесса машинного обучения является разведка или исследовательский анализ данных (EDA, от английского Exploratory Data Analysis - Исследовательский анализ данных). Зачем он нужен? Он позволяет на самом деле заглянуть немножко вперед, как бы представить, что вдруг у нас модель машинного обучения уже построена, что она из себя могла бы представлять. 13
Иногда на этапе разведывательного анализа данных у нас получается выбрать некоторую очень простую модель, то есть увидеть какую-то простую взаимосвязь в исходных данных, которая позволит получить точный ответ. Это бывает редко, но это одна из задач исследовательского анализа данных. Вторая задача, на самом деле более важная задача, — это найти пропуски в данных. Поскольку с пропусками мы не можем построить адекватную модель, то нам нужно провести анализ данных и найти все пропуски во всех сериях, во всех параметрах, которые у нас присутствуют и, возможно, это будет даже не явные пропуски, но какие-то нулевые значения, например, или любые, скажем так, некорректные значения, которые нам нужно на этапе очистки данных каким-то образом преобразовать. Исследовательский анализ данных проводится обычно единожды для каждой конкретной задачи машинного обучения на основании этих данных что у нас есть и его результаты (они представлены в виде некоторого отчета) обычно появляется ряд графиков и замечаний и по его итогам идут исправления, либо улучшения. То есть EDA сам по себе не строит никакую модель, однако, он позволяет существенным образом улучшить данные, которые для этой модели делаются: 1. Первое улучшение: находим пропуски в данных. 2. Второе: оценивается параметр распределения наших параметров, то есть какие это распределения (равномерное и т. д.). 3. Корреляции. Причём рассматриваются как корреляции между самими параметрами (чтобы понять какие из них, например, можно отбросить), так и на корреляцию между предсказываемыми значениями (в случае обучения с учителем, и даже обучение с подкреплением. Предсказываемое значение одного из параметров, чтобы понять, какую самую простую модель мы можем использовать по параметрам поиска по неизвестным причинам, которые в наибольшей степени коррелирует с результатом). Собственно, это одна из задач исследовательского анализа данных: помочь определиться с наиболее важными параметрами, в том числе за счет корреляции между этими параметрами и предсказываемым значением. И, естественно, здесь (в EDA) смотрят на примеры данных, потому что иногда эти три ранее представленные метода не позволяют что-то выявить. Однако на примерах данных, то есть на нескольких образцах данных легко видеть одни и те же значения параметров и какую-то сложную корреляционную связь между рядом параметров. Поэтому всегда исследовательский анализ данных включают примеры того, что за данные будут использоваться, как они выглядят, могут ли быть какие-то ограничения на них. Например, если у нас есть задача сегментации изображения, то нам важно оценить какая в задаче область сегмента. И здесь только по примерам данных мы сможем понять, на фотографии какая максимальная область сег 14