Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Алгоритмы Data Science и их практическая реализация на Python

Покупка
Основная коллекция
Артикул: 791490.01.99
Рассмотрен полный каскад разработки моделей искусственного интеллекта. Проанализирована область Data Science, из которой выделены все необходимые для прикладной сферы алгоритмы машинного обучения, расположенные по уровню возрастания сложности работы с ними. Для студентов, изучающих информационные технологии. Может быть полезно как начинающим программистам, так и специалистам высокого уровня.
Протодьяконов, А. В. Алгоритмы Data Science и их практическая реализация на Python : учебное пособие / А. В. Протодьяконов, П. А. Пылов, В. Е. Садовников. - Москва ; Вологда : Инфра-Инженерия, 2022. - 392 с. - ISBN 978-5-9729-1006-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1902689 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.

А. В. Протодьяконов П. А. Пылов В. Е. Садовников




АЛГОРИТМЫ 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