Table Of ContentПрикладное
машинное обучение с помощью
Scikit-Learn и TensorFlow
Концепции, инструменты и техники
для создания интеллектуальных систем
d
Han s-On
Machine Learning with
d
Scikit-Learn an TensorFlow
Concepts, Tools, and Techniques to Build
Intelligent Systems
Aurelien Geron
Beijing • Boston • Farnham • Sebastopol • Tokyo O"REILLY®
Прикладное
машинное обучение помощью
с
Scikit-Learn и TensorFlow
Концепции, инструменты и техники
для создания интеллектуш�ьных систе.м
Орельен Жерон
Москва · Санкт-Петербург · Киев
2018
ББК 32.973.26-018.2.75
Ж61
УДК 681.3.07
Компьютерное издательство "Диалектика"
Зав. редакцией Тригуб
С.Н.
Перевод с английского и редакция Артеменко
Ю.Н.
По общим вопросам обращайтесь в издательство "Диалектика"
по адресу: [email protected], http://www.dialektika.com
Жерон, Орельен.
Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow:
Жбl
концепции, инструменты и техники для создания интеллектуальных систем.
Пер. с англ. - СпБ.: ООО "Альфа-книга': 2018. -688 с.: ил. - Парал. тит. англ.
978-5-9500296-2-2 (рус.)
ISBN
ББК 32.973.26-018.2.75
Всен азванпиряо граммнпырхо дуктов явзлаярюетгсияс трировтаонрнгыомвиы ммаир камсио ответс
твующифхи рм.
Никакачяа сrньа стоящиезгдоа нниияв к акихц елях нем ожебты тьв оспроизвевкд еанкаоб йы т он иб ьmо
формие к акимбиы т они бьmо будтьо э лектронинлыиме е ханичесвккилюеч,а фяо токопирование
средствами,
и запинсьам агнитнныойс итеелсьл,ни а э тон етпи сьменноргаоз ршеениияз дательOс'тRвeаi lAlsys ociates.
&
AuthoriRzuesds itarna nslaotfti hoeEn n glish eodfi tion
Hands-On Machine Leaming with Scikit-Learn and
TensorF/ow (ISBN 978-1-491-96229-9) © 2017 AureliGeenr onAl.l righrtess erved.
Тhitsr ansliastp iuobnl isahnedsd o lЬdу p ermissoifOo 'nR eiMleldyi al,п сw"h. icohw nso rc ontrolrsi ghts
all
top uЬ!iasnhds eltlh es ame.
Alrli ghrtess ervNeod p.a rotf t hiwso rkm ayЬ еr eproduocret dr ansmiitnta endyf ormo rЬ уa nym eans,
electroornm iecc haniicnacll,u dpihnogt ocopyriencgo,r doirnЬ gу,a nyi nformasttioorna ogrre e triseyvsatle m,
withotuhtep riowrr ittpeenr missoifto hnce o pyriogwhnte arn dt heP uЬ!isher.
Научно-популярное издание
Орельен Жерон
Прикладное машинное обучение с помощью
Scikit-Learn и Tensor Flow:
концепции, инструменты и техники для создания
интеллектуальных систем
Верстка Т.Н. Артеменко
Художественный редактор Павлютин
В.Г.
Подписавн пое чат29ь.0 1.2018. Форма7т0 х100/16.
ГарнитуTрiаm eПsе.ч атоьф сетная.
Услп.е чл..5 5 ,47. Уч.-излд.5.3 , 5.
Тираж50 0 экзЗ.а ка№з 0 000.
ООО ''Альфа-кн1и95г0а27', ;С анкт-ПеутрегрМ,ба гнитогоруслк"да .я30 , литА , пом8.4 8
ISBN 978-5-9500296-2-2 (рус.) ©Компьютерниозед ательство "Ди2а01л8е, ктика·:
перевоодф,о рмленмиаек,е тирование
ISBN 978-1-491-96229-9 (англ.) © 2017 Aurelien Geron
Оглавление
25
Часть 1. Основы машинногообучения
Глава Введение в машинное обучение 27
1.
Глава Полный проект машинного обучения 63
2.
Глава Классификация 121
3.
Глава Обучение моделей 153
4.
Глава Методы опорных векторов 199
5.
Глава Деревья принятия решений 223
6.
Глава Ансамблевое обучение и случайные леса 239
7.
Глава Понижение размерности 267
8.
291
Часть 11. Нейронные сети и глубокое обучение
Глава Подготовка к работе с 293
9. TensorFlow
Глава Введение в искусственные нейронные сети 323
1О .
Глава Обучение глубоких нейронных сетей 351
11 .
Глава Использование для распределения
12. TensorFlow
вычислений между устройствами и серверами 401
Глава Сверточные нейронные сети 453
1З .
Глава Рекуррентные нейронные сети 483
14.
Глава Автокодировщики 523
15.
Глава Обучение с подкреплением 553
16.
Приложение А. Решения упражнений 593
Приложение Контрольный перечень для проекта машинного обучения 633
Б.
Приложение В. Двойственная задача 640
SVM
Приложение Г. Автоматическое дифференцирование 643
Приложение Д. Другие популярные архитектуры искусственных
нейронных сетей 651
Предметный указатель 662
Содержание
Об авторе 15
Благодарности 15
Предисловие 17
Цунами машинного обучения 17
Машинное обучение в ваших проектах 18
Цель и подход 18
Предварительные требования 19
Дорожная карта 20
Другие ресурсы 21
Типографские соглашения, используемые в книге 22
Использование примеров кода 23
Ждем ваших отзывов! 24
25
Часть 1. Основы машинногообучения
Глава Введение в машинное обучение 27
1 .
Что такое машинное обучение? 28
Для чего используют машинное обучение? 29
Типы систем машинного обучения 32
Обучение с учителем и без учителя 33
Пакетное и динамическое обучение 40
Обучение на основе образцов или на основе моделей 43
Основные проблемы машинного обучения 50
Недостаточный размер обучающих данных 50
Нерепрезентативные обучающие данные 52
Данные плохого качества 54
Несущественные признаки 54
Переобучение обучающих данных 55
Недообучение обучающих данных 57
Шаг назад 58
Испытание и проверка 59
Упражнения 61
Глава Полный проект машинного обучения 63
2.
Работа с реальными данными 63
Выяснение общей картины 65
Постановка задачи 65
Выбор критерия качества работы 68
Проверка допущений 71
б Содержание
Получение данных 71
Создание рабочей области 71
Загрузка данных 75
Беглый взгляд на структуру данных 77
Создание испытательного набора 81
Обнаружение и визуализация данных для понимания их сущности 87
Визуализация географических данных 87
Поиск связей 90
Экспериментирование с комбинациями атрибутов 93
Подготовка данных для алгоритмов машинного обучения 94
Очистка данных 95
Обработка текстовых и категориальных атрибутов 98
Специальные трансформаторы 102
Масштабирование признаков 103
Конвейеры трансформации 104
Выбор и обучение модели 106
Обучение и оценка с помощью обучающего набора 107
Более подходящая оценка с использованием перекрестной проверки 108
Точная настройка модели 111
Решетчатый поиск 111
Рандомизированный поиск 114
Ансамблевые методы 115
Анализ лучших моделей и их ошибок 115
Оценка системы с помощью испытательного набора 116
Запуск, наблюдение и сопровождение системы 117
Пробуйте! 118
Упражнения 118
Глава Классификация 121
3.
121
MNIST
Обучение двоичного классификатора 124
.
Показатели производительности 125
Измерение правильности с использованием перекрестной проверки 125
Матрица неточностей 127
Точность и полнота 129
Соотношение точность/полнота 131
Кривая ROC 135
Многоклассовая классификация 139
Анализ ошибок 142
Многозначная классификация 146
Многовыходовая классификация 148
Упражнения 150
Содержание 7
Глава Обучение моделей 153
4.
Линейная регрессия 154
Нормальное уравнение 156
Вычислительная сложность 159
Градиентный спуск 160
Пакетный градиентный спуск 163
Стохастический градиентный спуск 167
Мини-пакетный градиентный спуск 170
Полиномиальная регрессия 172
Кривые обучения 174
Регуляризированные линейные модели 179
Гребневая регрессия 179
Лассо-регрессия 182
Эластичная сеть 184
Раннее прекращение 185
Логистическая регрессия 187
Оценивание вероятностей 187
Обучение и функция издержек 189
Границы решений 190
Многопеременная логистическая регрессия 193
Упражнения 197
Глава Методы опорных векторов 199
5.
Линейная классификация 199
SVM
Классификация с мягким зазором 200
Нелинейная классификация 203
SVM
Полиномиальное ядро 204
Добавление признаков близости 206
Гауссово ядро RВF 207
Вычислительная сложность 209
Регрессия 210
SVM
Внутренняя кухня 212
Функция решения и прогнозы 212
Цель обучения 213
Квадратичное программирование 215
Двойственная задача 216
Параметрически редуцированные методы 217
SVM
Динамические методы 220
SVM
Упражнения 222
Глава Деревья принятия решений 223
6.
Обучение и визуализация дерева принятия решений 223
Вырабатывание прогнозов 225
8 Содержание
Оценивание вероятностей классов 227
Алгоритм обучения CART 228
Вычислительная сложность 229
Загрязненность Джини или энтропия? 230
Гиперпараметры регуляризации 230
Регрессия 232
Неустойчивость 235
Упражнения 236
Глава Ансамблевое обучение и случайные леса 239
7.
Классификаторы с голосованием 240
Бэггинг и вставка 243
Бэггинг и вставка в Scikit-Learn 245
Оценка на неиспользуемых образцах 246
Методы случайных участков и случайных подпространств 248
Случайные леса 248
Особо случайные деревья 250
Значимость признаков 250
Бустинг 251
AdaBoost 252
Градиентный бустинг 256
Стекинг 261
Упражнения 264
Глава Понижение размерности 267
8.
"Проклятие размерности" 268
Основные подходы к понижению размерности 270
Проекция 270
Обучение на основе многообразий 272
РСА 274
Предохранение дисперсии 274
Главные компоненты 275
Проецирование до d измерений 277
Использование Scikit-Learn 277
Коэффициент объясненной дисперсии 278
Выбор правильного количества измерений 278
Алгоритм РСА для сжатия 279
Инкрементный анализ главных компонентов 281
Рандомизированный анализ главных компонентов 282
Ядерный анализ главных компонентов 282
Выбор ядра и подстройка rиперпараметров 283
LLE 286
Другие приемы понижения размерности 288
Упражнения 289
Содержание 9