1. ПРЕДИСЛОВИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. ЧТО ТАКОЕ МАШИННОЕ ОБУЧЕНИЕ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Тренировочные и тестовые данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Анатомия машинного обучения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. КАТЕГОРИИ МАШИННОГО ОБУЧЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Контролируемое обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Неконтролируемое обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Полуконтролируемое обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Обучение с подкреплением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Q-обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4. ИНСТРУМЕНТЫ МАШИННОГО ОБУЧЕНИЯ . . . . . . . . . . . . . . . . . . . . . . 35
Отделение 1: Данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Отделение 2: Инфраструктура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Отделение 3: Алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Визуализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Расширенный набор инструментов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Отделение 1: Большие данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Отделение 2: Инфраструктура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Отделение 3: Продвинутые алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . 44
5. ОЧИСТКА ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Отбор признаков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Сжатие строк . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Прямое кодирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Биннинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Нормализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Стандартизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Отсутствующие данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7
6. РАЗБИЕНИЕ ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Перекрестная проверка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Сколько данных мне нужно? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7. ЛИНЕЙНАЯ РЕГРЕССИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Наклон . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Формула линейной регрессии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Пример расчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Множественная линейная регрессия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Дискретные переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Выбор переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8. ЛОГИСТИЧЕСКАЯ РЕГРЕССИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9. МЕТОД KБЛИЖАЙШИХ СОСЕДЕЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
10. КЛАСТЕРИЗАЦИЯ МЕТОДОМ KСРЕДНИХ . . . . . . . . . . . . . . . . . . . . . . 89
Выбор значения k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11. СМЕЩЕНИЕ И ДИСПЕРСИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
12. МАШИНЫ ОПОРНЫХ ВЕКТОРОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
13. ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Дилемма «черного ящика» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Построение нейронной сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Многослойные перцептроны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Глубокое обучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8
14. ДЕРЕВЬЯ РЕШЕНИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Построение дерева решений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Вычисление энтропии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Переобучение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Бэггинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Метод случайного леса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Бустинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Контрольная работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
15. АНСАМБЛЕВОЕ МОДЕЛИРОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
16. СРЕДА РАЗРАБОТКИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Импорт библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Импорт и предварительный просмотр набора данных . . . . . . . . . . . . . 149
Поиск нужной строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Вывод на экран названий столбцов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
17. ПОСТРОЕНИЕ МОДЕЛИ НА ЯЗЫКЕ PYTHON . . . . . . . . . . . . . . . . . . . 155
Импорт библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Импорт набора данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Очистка набора данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Процесс очистки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Разбиение набора данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Выбор алгоритма и настройка его гиперпараметров . . . . . . . . . 161
Оценка результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
18. ОПТИМИЗАЦИЯ МОДЕЛИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Код оптимизированной модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Код для выполнения поиска по решетке . . . . . . . . . . . . . . . . . . . . . . 171
ДАЛЬНЕЙШИЕ ШАГИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Видеоуроки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Построение модели для прогнозирования
стоимости домов на Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Прочие ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Благодарность читателю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Программа Bug Bounty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Дополнительные ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
| Машинное обучение | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
| Базовые алгоритмы | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
| Будущее искусственного интеллекта | . . . . . . . . . . . . . . . . . . . . . . . 178
| Программирование | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
| Рекомендательные системы | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
| Глубокое обучение | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
| Профессии будущего | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
ПРИЛОЖЕНИЕ: ВВЕДЕНИЕ В PYTHON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Типы данных в Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Отступы и пробелы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Арифметические операторы в Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Объявление переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Импорт библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Импорт набора данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Вывод данных на экран . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Индексирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Нарезка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
ДРУГИЕ КНИГИ АВТОРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Курс на платформе Skillshare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Практическое и подробное введение в машинное обучение.
Простые и понятные объяснения и отсутствие необходимости опыта программирования делают эту книгу прекрасной альтернативой академическому учебнику. Здесь представлены основные алгоритмы машинного обучения (ML), которые сопровождаются наглядными примерами и практическими работами. Также вы узнаете про перекрестную проверку, ансамблевое моделирование, поиск по сетке для настройки моделей, проектирование функций, горячее кодирование и многое другое.
Для разработки интеллектуальных машин в первую очередь надо понять классическую статистику, так как алгоритмы на ее основе — это сердце машинного обучения. Написание кода — еще одна неотъемлемая часть ML, которая предусматривает управление данными. Однако материал этого руководства можно освоить даже без навыков программирования.
Возможно, с чтения этой книги начнется ваш путь к получению работы в области машинного обучения, а может быть, она просто удовлетворит ваше любопытство.
Внутри руководства: