Книга представляет собой подробный обзор передовых практик и паттернов проектирования в области прикладного машинного обучения. В отличие от многих учебников, уделяется внимание инженерным аспектам МО. Рассматриваются сбор, хранение и предобработка данных, конструирование признаков, а также тестирование и отладка моделей, развертывание и вывод из эксплуатации, сопровождение на этапе выполнения и в процессе эксплуатации. Главы книги можно изучать в любом порядке.
Издание будет полезно тем, кто собирается использовать машинное обучение в крупномасштабных проектах. Предполагается, что читатель знаком с основами МО и способен построить модель при наличии подходящим образом отформатированного набора данных.
Author(s): Андрей Бурков
Edition: 1
Publisher: ДМК Пресс
Year: 2022
Language: Russian
Commentary: Vector PDF
Pages: 306
City: М.
Tags: Machine Learning; Deep Learning; Unsupervised Learning; Reinforcement Learning; Regression; Supervised Learning; Classification; Feature Engineering; Monitoring; Logging; Pipelines; Regularization; Hyperparameter Tuning; Best Practices; Project Management; Model Evaluation; Data Collection; Teamwork; Data Preparation; Model Training; Model Deployment; Semi-Supervised Learning
От издательства
Вступительное слово
Предисловие
Глава 1. Введение
1.1. Обозначения и определения
1.1.1. Структуры данных
1.1.2. Заглавная сигма
1.2. Что такое машинное обучение
1.2.1. Обучение с учителем
1.2.2. Обучение без учителя
1.2.3. Обучение с частичным привлечением учителя
1.2.4. Обучение с подкреплением
1.3. Терминология машинного обучения
1.3.1. Данные, используемые прямо и косвенно
1.3.2. Первичные и аккуратные данные
1.3.3. Обучающие и зарезервированные наборы
1.3.4. Ориентир
1.3.5. Конвейер машинного обучения
1.3.6. Параметры и гиперпараметры
1.3.7. Классификация и регрессия
1.3.8. Обучение на основе модели и обучение на основе экземпляров
1.3.9. Поверхностное и глубокое обучение
1.3.10. Обучение и оценивание
1.4. Когда следует использовать машинное обучение
1.4.1. Когда задача слишком сложна для кодирования
1.4.2. Когда задача постоянно меняется
1.4.3. Когда речь идет о задаче восприятия
1.4.4. Когда это неизученное явление
1.4.5. Когда задача имеет простую целевую функцию
1.4.6. Когда это экономически выгодно
1.5. Когда не следует использовать машинное обучение
1.6. Что такое инженерия машинного обучения
1.7. Жизненный цикл проекта машинного обучения
1.8. Резюме
Глава 2. Прежде чем приступать к проекту
2.1. Определение приоритетов проекта машинного обучения
2.1.1. Последствия машинного обучения
2.1.2. Стоимость машинного обучения
2.2. Оценивание сложности проекта машинного обучения
2.2.1. Неизвестные
2.2.2. Упрощение задачи
2.2.3. Нелинейный прогресс
2.3. Определение цели проекта машинного обучения
2.3.1. Что модель может делать
2.3.2. Свойства успешной модели
2.4. Организация группы машинного обучения
2.4.1. Две традиции
2.4.2. Члены группы машинного обучения
2.5. Причины провалов проектов машинного обучения
2.5.1. Нехватка квалифицированных кадров
2.5.2. Отсутствие поддержки со стороны руководства
2.5.3. Отсутствующая инфраструктура данных
2.5.4. Трудности с разметкой данных
2.5.5. Разобщенные организации и отсутствие сотрудничества
2.5.6. Технически невыполнимые проекты
2.5.7. Нестыковка между техническими и коммерческими группами
2.6. Резюме
Глава 3. Сбор и подготовка данных
3.1. Вопросы к данным
3.1.1. Доступны ли данные?
3.1.2. Насколько велик объем данных?
3.1.3. Пригодны ли данные для использования?
3.1.4. Понятны ли данные?
3.1.5. Надежны ли данные?
3.2. Типичные проблемы с данными
3.2.1. Высокая стоимость
3.2.2. Плохое качество
3.2.3. Зашумленность
3.2.4. Смещение
Типы смещения
Как избежать смещения
3.2.5. Низкая предсказательная способность
3.2.6. Устаревшие примеры
3.2.7. Выбросы
3.2.8. Просачивание данных
3.3. Что считать хорошими данными
3.3.1. Хорошие данные информативны
3.3.2. Хорошие данные обладают хорошим покрытием
3.3.3. Хорошие данные отражают реальные входы
3.3.4. Хорошие данные несмещенные
3.3.5. Хорошие данные не являются результатом петли обратной связи
3.3.6. У хороших данных согласованные метки
3.3.7. Хорошие данные достаточно велики
3.3.8. Сводный перечень свойств хороших данных
3.4. Обработка данных о взаимодействии
3.5. Причины просачивания данных
3.5.1. Цель является функцией от признака
3.5.2. Признак скрывает цель
3.5.3. Признак из будущего
3.6. Разбиение данных
3.6.1. Просачивание во время разбиения
3.7. Обработка отсутствия атрибутов
3.7.1. Методы подстановки данных
3.7.2. Просачивание во время подстановки
3.8. Приращение данных
3.8.1. Приращение данных для изображений
3.8.2. Приращение данных для текста
3.9. Обработка несбалансированных данных
3.9.1. Выборка с избытком
3.9.2. Выборка с недостатком
3.9.3. Гибридные стратегии
3.10. Стратегии выборки данных
3.10.1. Простая случайная выборка
3.10.2. Систематическая выборка
3.10.3. Стратифицированная выборка
3.11. Хранение данных
3.11.1. Форматы данных
3.11.2. Уровни хранения данных
3.11.3. Версионирование данных
3.11.4. Документация и метаданные
3.11.5. Жизненный цикл данных
3.12. Дополнительные рекомендации по работе с данными
3.12.1. Воспроизводимость
3.12.2. Сначала данные, потом алгоритм
3.13. Резюме
Глава 4. Конструирование признаков
4.1. Зачем конструировать признаки
4.2. Как конструируются признаки
4.2.1. Конструирование признаков для текста
4.2.2. Почему мешок слов работает
4.2.3. Преобразование категориальных признаков в числа
4.2.4. Хеширование признаков
4.2.5. Тематическое моделирование
4.2.6. Признаки для временных рядов
4.2.7. Проявите свои творческие способности
4.3. Штабелирование признаков
4.3.1. Штабелирование векторов признаков
4.3.2. Штабелирование индивидуальных признаков
4.4. Свойства хороших признаков
4.4.1. Высокая предсказательная способность
4.4.2. Быстрое вычисление
4.4.3. Надежность
4.4.4. Некоррелированность
4.4.5. Другие свойства
4.5. Отбор признаков
4.5.1. Отрезание длинного хвоста
4.5.2. Boruta
4.5.3. L1-регуляризация
4.5.4. Зависящий от задачи отбор признаков
4.6. Синтезирование признаков
4.6.1. Дискретизация признаков
4.6.2. Синтез признаков из реляционных данных
4.6.3. Синтезирование признаков по данным
4.6.4. Синтезирование признаков по другим признакам
4.7. Обучение признаков на данных
4.7.1. Погружения слов
4.7.2. Погружения документов
4.7.3. Погружения всего, чего угодно
4.7.4. Выбор размерности погружения
4.8. Понижение размерности
4.8.1. Быстрое понижение размерности методом PCA
4.8.2. Понижение размерности с целью визуализации
4.9. Масштабирование признаков
4.9.1. Нормировка
4.9.2. Стандартизация
4.10. Просачивание данных при конструировании признаков
4.10.1. Возможные проблемы
4.10.2. Решение
4.11. Хранение и документирование признаков
4.11.1. Файл схемы
4.11.2. Хранилище признаков
4.12. Рекомендации по конструированию признаков
4.12.1. Генерируйте много простых признаков
4.12.2. Повторно используйте унаследованные системы
4.12.3. Используйте идентификаторы как признаки, когда это необходимо…
4.12.4. …но по возможности уменьшайте количество значений
4.12.5. Осторожнее со счетчиками
4.12.6. Отбирайте признаки, когда необходимо
4.12.7. Тщательно тестируйте код
4.12.8. Синхронизируйте код, модель и данные
4.12.9. Изолируйте код выделения признаков
4.12.10. Сериализуйте модель и экстрактор признаков совместно
4.12.11. Протоколируйте значения признаков
4.13. Резюме
Глава 5. Обучение модели с учителем (часть 1)
5.1. Прежде чем приступать к работе над моделью
5.1.1. Проверка согласованности со схемой
5.1.2. Определение достижимого уровня качества
5.1.3. Выбор метрики качества
5.1.4. Выбирайте правильный ориентир
5.1.5. Разбиение данных на три набора
5.1.6. Предварительные условия для обучения с учителем
5.2. Представление меток для машинного обучения
5.2.1. Многоклассовая классификация
5.2.2. Многозначная классификация
5.3. Выбор алгоритма обучения
5.3.1. Основные свойства алгоритма обучения
5.3.2. Выборочная проверка алгоритмов
5.4. Построение конвейера
5.5. Оценивание качества модели
5.5.1. Метрики качества для регрессии
5.5.2. Метрики качества для классификации
5.5.3. Метрики качества для ранжирования
5.6. Настройка гиперпараметров
5.6.1. Поиск на сетке
5.6.2. Случайный поиск
5.6.3. Поиск с измельчением
5.6.4. Другие методы
5.6.5. Перекрестная проверка
5.7. Обучение поверхностной модели
5.7.1. Стратегия обучения поверхностной модели
5.7.2. Сохранение и восстановление модели
5.8. Компромисс между смещением и дисперсией
5.8.1. Недообучение
5.8.2. Переобучение
5.8.3. Компромисс
5.9. Регуляризация
5.9.1. L1- и L2-регуляризации
5.9.2. Другие формы регуляризации
5.10. Резюме
Глава 6. Обучение модели с учителем (часть 2)
6.1. Стратегия обучения глубоких моделей
6.1.1. Стратегия обучения нейронной сети
6.1.2. Метрика качества и функция стоимости
6.1.3. Стратегии инициализации параметров
6.1.4. Алгоритмы оптимизации
6.1.5. Планы уменьшения скорости обучения
6.1.6. Регуляризация
6.1.7. Определение размера сети и настройка гиперпараметров
6.1.8. Работа с несколькими входами
6.1.9. Работа с несколькими выходами
6.1.10. Перенос обучения
6.2. Штабелирование моделей
6.2.1. Типы ансамблевого обучения
6.2.2. Алгоритм штабелирования моделей
6.2.3. Просачивание данных при штабелировании моделей
6.3. Борьба со сдвигом распределения
6.3.1. Обработка сдвига распределения
6.3.2. Состязательная проверка
6.4. Обработка несбалансированных наборов данных
6.4.1. Взвешивание классов
6.4.2. Ансамбль перераспределенных наборов данных
6.4.3. Другие методы
6.5. Калибровка модели
6.5.1. Хорошо откалиброванные модели
6.5.2. Методы калибровки
6.6. Поиск неполадок и анализ ошибок
6.6.1. Причины плохого поведения модели
6.6.2. Итеративное уточнение модели
6.6.3. Анализ ошибок
6.6.4. Анализ ошибок в комплексных системах
6.6.5. Использование расслоенных метрик
6.6.6. Исправление неправильных меток
6.6.7. Нахождение дополнительных примеров для пометки
6.6.8. Поиск неполадок при глубоком обучении
6.7. Рекомендации
6.7.1. Поставляйте хорошую модель
6.7.2. Доверяйте популярным реализациям с открытым исходным кодом
6.7.3. Оптимизируйте важную для бизнеса меру качества
6.7.4. При обновлении начинайте с нуля
6.7.5. Избегайте каскадов коррекций
6.7.6. Используйте каскадирование моделей с осторожностью
6.7.7. Пишите эффективный код, компилируйте и распараллеливайте
6.7.8. Тестируйте на старых и новых данных
6.7.9. Больше данных лучше, чем более умный алгоритм
6.7.10. Новые данные лучше более изощренных признаков
6.7.11. Радуйтесь крохотным достижениям
6.7.12. Обеспечьте воспроизводимость
6.8. Резюме
Глава 7. Оценивание модели
7.1. Офлайновое и онлайновое оценивания
7.2. A/B-тестирование
7.2.1. G-критерий
7.2.2. Z-критерий
7.2.3. Заключительные замечания и предупреждения
7.3. Многорукий бандит
7.4. Статистические границы качества модели
7.4.1. Статистический интервал для ошибки классификации
7.4.2. Бутстреп статистического интервала
7.4.3. Бутстреп интервала предсказания для регрессии
7.5. Оценивание адекватности тестового набора
7.5.1. Нейронное покрытие
7.5.2. Мутационное тестирование
7.6. Оценивание свойств модели
7.6.1. Робастность
7.6.2. Справедливость
7.7. Резюме
Глава 8. Развертывание модели
8.1. Статическое развертывание
8.2. Динамическое развертывание на устройстве пользователя
8.2.1. Развертывание параметров модели
8.2.2. Развертывание сериализованного объекта
8.2.3. Развертывание в браузере
8.2.4. Плюсы и минусы
8.3. Динамическое развертывание на сервере
8.3.1. Развертывание на виртуальной машине
8.3.2. Развертывание в контейнере
8.3.3. Бессерверное развертывание
8.3.4. Потоковое развертывание модели
8.4. Стратегии развертывания
8.4.1. Разовое развертывание
8.4.2. Немое развертывание
8.4.3. Канареечное развертывание
8.4.4. Многорукие бандиты
8.5. Автоматизированное развертывание, версионирование и метаданные
8.5.1. Объекты, сопровождающие модель
8.5.2. Синхронизация версий
8.5.3. Метаданные версии модели
8.6. Рекомендации по развертыванию модели
8.6.1. Эффективность алгоритма
8.6.2. Развертывание глубоких моделей
8.6.3. Кеширование
8.6.4. Формат доставки модели и кода
8.6.5. Начинайте с простой модели
8.6.6. Тестируйте на посторонних
8.7. Резюме
Глава 9. Выполнение, мониторинг и сопровождение модели
9.1. Свойства среды выполнения модели
9.1.1. Безопасность и корректность
9.1.2. Простота развертывания
9.1.3. Гарантии правильности модели
9.1.4. Простота восстановления
9.1.5. Предотвращение расхождений между обучением и выполнением
9.1.6. Предотвращение скрытых петель обратной связи
9.2. Режимы выполнения модели
9.2.1. Выполнение в пакетном режиме
9.2.2. Обслуживание запроса со стороны человека
9.2.3. Обслуживание запроса со стороны машины
9.3. Выполнение модели на практике
9.3.1. Готовность к ошибкам
9.3.2. Отношение к ошибкам
9.3.3. Готовность к изменениям и отношение к ним
9.3.4. Готовность к особенностям человеческой природы и отношение к ним
Избегайте путаницы
Умерьте ожидания
Завоевывайте доверие
Не переутомляйте пользователя
Остерегайтесь фактора отторжения
9.4. Мониторинг модели
9.4.1. Что может пойти не так?
9.4.2. Что и как мониторить
9.4.3. Что протоколировать
9.4.4. Мониторинг неправомерного использования
9.5. Сопровождение модели
9.5.1. Когда обновлять
9.5.2. Как обновлять
9.6. Резюме
Глава 10. Заключение
10.1. Сухой остаток
10.2. Что еще почитать
10.3. Благодарности
Предметный указатель