- •Об авторе
- •Предисловие
- •Для кого эта книга
- •О чем эта книга
- •Что вам потребуется при чтении этой книги
- •Условные обозначения
- •От издательства
- •Глава 1. Обзор алгоритмов
- •Что такое алгоритм
- •Этапы алгоритма
- •Определение логики алгоритма
- •Псевдокод
- •Использование сниппетов
- •Создание плана выполнения
- •Введение в библиотеки Python
- •Библиотеки Python
- •Реализация Python с помощью Jupyter Notebook
- •Методы разработки алгоритмов
- •Параметры данных
- •Параметры вычислений
- •Анализ производительности
- •Анализ пространственной сложности
- •Анализ временной сложности
- •Оценка эффективности
- •Выбор алгоритма
- •«О-большое»
- •Проверка алгоритма
- •Точные, приближенные и рандомизированные алгоритмы
- •Объяснимость алгоритма
- •Резюме
- •Глава 2. Структуры данных, используемые в алгоритмах
- •Структуры данных в Python
- •Список
- •Кортеж
- •Словарь
- •Множество
- •DataFrame
- •Матрица
- •Абстрактные типы данных
- •Вектор
- •Стек
- •Очередь
- •Базовый принцип использования стеков и очередей
- •Дерево
- •Резюме
- •Глава 3. Алгоритмы сортировки и поиска
- •Алгоритмы сортировки
- •Обмен значений переменных в Python
- •Сортировка пузырьком
- •Сортировка вставками
- •Сортировка слиянием
- •Сортировка Шелла
- •Сортировка выбором
- •Алгоритмы поиска
- •Линейный поиск
- •Бинарный поиск
- •Интерполяционный поиск
- •Практическое применение
- •Резюме
- •Глава 4. Разработка алгоритмов
- •Знакомство с основными концепциями разработки алгоритма
- •Вопрос 1. Даст ли разработанный алгоритм ожидаемый результат?
- •Вопрос 2. Является ли данный алгоритм оптимальным способом получения результата?
- •Вопрос 3. Как алгоритм будет работать с большими наборами данных?
- •Понимание алгоритмических стратегий
- •Стратегия «разделяй и властвуй»
- •Стратегия динамического программирования
- •Жадные алгоритмы
- •Практическое применение — решение задачи коммивояжера
- •Использование стратегии полного перебора
- •Использование жадного алгоритма
- •Алгоритм PageRank
- •Постановка задачи
- •Реализация алгоритма PageRank
- •Знакомство с линейным программированием
- •Практическое применение — планирование производства с помощью линейного программирования
- •Резюме
- •Глава 5. Графовые алгоритмы
- •Представление графов
- •Типы графов
- •Особые типы ребер
- •Эгоцентрические сети
- •Анализ социальных сетей
- •Введение в теорию сетевого анализа
- •Кратчайший путь
- •Создание окрестностей
- •Показатели центральности
- •Вычисление показателей центральности с помощью Python
- •Понятие обхода графа
- •BFS — поиск в ширину
- •DFS — поиск в глубину
- •Практический пример — выявление мошенничества
- •Простой анализ мошенничества
- •Анализ мошенничества методом сторожевой башни
- •Резюме
- •Глава 6. Алгоритмы машинного обучения без учителя
- •Обучение без учителя
- •Обучение без учителя в жизненном цикле майнинга данных
- •Современные тенденции исследований в области обучения без учителя
- •Практические примеры
- •Алгоритмы кластеризации
- •Количественная оценка сходства
- •Иерархическая кластеризация
- •Оценка кластеров
- •Применение кластеризации
- •Снижение размерности
- •Метод главных компонент (PCA)
- •Ограничения PCA
- •Поиск ассоциативных правил
- •Примеры использования
- •Анализ рыночной корзины
- •Ассоциативные правила
- •Оценка качества правила
- •Алгоритмы анализа ассоциаций
- •Практический пример — объединение похожих твитов в кластеры
- •Тематическое моделирование
- •Кластеризация
- •Алгоритмы обнаружения выбросов (аномалий)
- •Использование кластеризации
- •Обнаружение аномалий на основе плотности
- •Метод опорных векторов
- •Резюме
- •Глава 7. Традиционные алгоритмы обучения с учителем
- •Машинное обучение с учителем
- •Терминология машинного обучения с учителем
- •Благоприятные условия
- •Различие между классификаторами и регрессорами
- •Алгоритмы классификации
- •Задача классификации
- •Оценка классификаторов
- •Этапы классификации
- •Алгоритм дерева решений
- •Ансамблевые методы
- •Логистическая регрессия
- •Метод опорных векторов (SVM)
- •Наивный байесовский алгоритм
- •Алгоритмы регрессии
- •Задача регрессии
- •Линейная регрессия
- •Алгоритм дерева регрессии
- •Алгоритм градиентного бустинга для регрессии
- •Среди алгоритмов регрессии победителем становится...
- •Практический пример — как предсказать погоду
- •Резюме
- •Глава 8. Алгоритмы нейронных сетей
- •Введение в ИНС
- •Эволюция ИНС
- •Обучение нейронной сети
- •Анатомия нейронной сети
- •Градиентный спуск
- •Функции активации
- •Инструменты и фреймворки
- •Keras
- •Знакомство с TensorFlow
- •Типы нейронных сетей
- •Перенос обучения
- •Практический пример — использование глубокого обучения для выявления мошенничества
- •Методология
- •Резюме
- •Глава 9. Алгоритмы обработки естественного языка
- •Знакомство с NLP
- •Терминология NLP
- •Библиотека NLTK
- •Мешок слов (BoW)
- •Эмбеддинги слов
- •Окружение слова
- •Свойства эмбеддингов слов
- •Рекуррентные нейросети в NLP
- •Использование NLP для анализа эмоциональной окраски текста
- •Практический пример — анализ тональности в отзывах на фильмы
- •Резюме
- •Глава 10. Рекомендательные системы
- •Введение в рекомендательные системы
- •Типы рекомендательных систем
- •Рекомендательные системы на основе контента
- •Рекомендательные системы на основе коллаборативной фильтрации
- •Гибридные рекомендательные системы
- •Ограничения рекомендательных систем
- •Проблема холодного старта
- •Требования к метаданным
- •Проблема разреженности данных
- •Предвзятость из-за социального влияния
- •Ограниченные данные
- •Области практического применения
- •Практический пример — создание рекомендательной системы
- •Резюме
- •Глава 11. Алгоритмы обработки данных
- •Знакомство с алгоритмами обработки данных
- •Классификация данных
- •Алгоритмы хранения данных
- •Стратегии хранения данных
- •Алгоритмы потоковой передачи данных
- •Применение потоковой передачи
- •Алгоритмы сжатия данных
- •Алгоритмы сжатия без потерь
- •Практический пример — анализ тональности твитов в режиме реального времени
- •Резюме
- •Глава 12. Криптография
- •Введение в криптографию
- •Понимание важности самого слабого звена
- •Основная терминология
- •Требования безопасности
- •Базовое устройство шифров
- •Типы криптографических методов
- •Криптографические хеш-функции
- •Симметричное шифрование
- •Асимметричное шифрование
- •Практический пример — проблемы безопасности при развертывании модели МО
- •Атака посредника (MITM)
- •Избежание маскарадинга
- •Шифрование данных и моделей
- •Резюме
- •Глава 13. Крупномасштабные алгоритмы
- •Введение в крупномасштабные алгоритмы
- •Определение эффективного крупномасштабного алгоритма
- •Терминология
- •Разработка параллельных алгоритмов
- •Закон Амдала
- •Гранулярность задачи
- •Балансировка нагрузки
- •Проблема расположения
- •Запуск параллельной обработки на Python
- •Разработка стратегии мультипроцессорной обработки
- •Введение в CUDA
- •Кластерные вычисления
- •Гибридная стратегия
- •Резюме
- •Глава 14. Практические рекомендации
- •Введение в практические рекомендации
- •Печальная история ИИ-бота в Твиттере
- •Объяснимость алгоритма
- •Алгоритмы машинного обучения и объяснимость
- •Этика и алгоритмы
- •Проблемы обучающихся алгоритмов
- •Понимание этических аспектов
- •Снижение предвзятости в моделях
- •Решение NP-трудных задач
- •Упрощение задачи
- •Адаптация известного решения аналогичной задачи
- •Вероятностный метод
- •Когда следует использовать алгоритмы
- •Практический пример — события типа «черный лебедь»
- •Резюме
188 |
Глава 7. Традиционные алгоритмы обучения с учителем |
zz Методы оценки производительности классификаторов. zz Алгоритмы регрессии.
zzМетоды оценки производительности регрессионных алгоритмов.
Начнем с основных концепций МО с учителем.
МАШИННОЕ ОБУЧЕНИЕ С УЧИТЕЛЕМ
Машинное обучение опирается на анализ данных и создает автономные систе мы, которые помогают нам принимать решения (под контролем человека или же без него). Для этого используется ряд алгоритмов и методологий обнаруже ния и формулировки повторяющихся закономерностей в данных. Одной из самых популярных и мощных методологий, используемых в МО, является машинное обучение с учителем (supervised machine learning). Алгоритму предо ставляются набор входных данных, называемых признаками, и соответствующие им выходные данные, называемые целевыми переменными. Затем алгоритм ис пользует этот набор данных для обучения модели, которая отражает сложную взаимосвязь между признаками и целевыми переменными, представленную математической формулой. Обученная модель служит основным средством предсказания.
Предсказания делаются путем генерации целевой переменной для незнакомого набора признаков с помощью обученной модели.
Способность алгоритма обучения с учителем учиться на основе име ющихся данных аналогична способности человеческого мозга учиться на собственном опыте. Это свойство открывает возможности разви тия искусственного интеллекта и делегирования машинам принятия решений.
Обратимся к примеру. Применим метод МО с учителем для обучения модели, способной сортировать набор электронных писем на нужные (называемые legit) и нежелательные (называемые spam). Для начала нам понадобятся примеры из прошлого, чтобы машина могла узнать, какое содержимое электронных писем следует классифицировать как спам. Обучение на основе контента для тексто вых данных — сложный процесс и требует использования алгоритма МО с учи телем. Некоторые алгоритмы, которые можно применить для обучения модели в нашем примере, включают деревья решений и наивные байесовские класси фикаторы (их мы обсудим позже).
Машинное обучение с учителем |
189 |
Терминология машинного обучения с учителем
Прежде чем углубиться в детали, определим некоторые основные термины МО с учителем (табл. 7.1).
Таблица 7.1
Термин |
Объяснение |
|
|
Целевая |
Переменная, которую мы прогнозируем с помощью нашей |
переменная |
модели. В модели обучения с учителем может быть только |
(target variable) |
одна целевая переменная |
|
|
Метка |
Если прогнозируемая целевая переменная является категори |
(label) |
альной, она называется меткой |
|
|
Признаки |
Набор входных переменных, используемых для предсказания |
(features) |
метки |
|
|
Конструирование |
Преобразование признаков с целью подготовить их к работе |
признаков |
с выбранным алгоритмом МО с учителем |
(feature |
|
engineering) |
|
|
|
Вектор признаков |
Прежде чем предоставить алгоритму обучения с учителем |
(feature vector) |
необходимые данные, все признаки объединяются в структуру |
|
данных, называемую вектором признаков |
|
|
Исторические |
Данные за прошлый период, используемые для формулирова |
данные |
ния взаимосвязи между целевой переменной и признаками. |
(historical data) |
Исторические данные включают в себя примеры для обучения |
|
|
Обучающие/ |
Исторические данные с примерами для обучения делятся на |
контрольные |
две части: обучающие данные (большая часть) и контрольные |
данные |
(меньшая) |
(training/testing |
|
data) |
|
|
|
Модель |
Математическая формулировка закономерностей, которые |
(model) |
наилучшим образом отражают взаимосвязь между целевой |
|
переменной и признаками |
|
|
Обучение |
Создание модели с использованием обучающих данных |
(training) |
|
|
|
Тестирование |
Оценка качества обученной модели с использованием |
(testing) |
контрольных данных |
|
|
Предсказание |
Использование модели для предсказания целевой переменной |
(prediction) |
|
|
|
190 |
Глава 7. Традиционные алгоритмы обучения с учителем |
Модель, обученная с помощью МО с учителем, способна делать пред сказания, оценивая целевую переменную на основе признаков.
Введем обозначения, которые мы будем использовать в обсуждении методов машинного обучения (табл. 7.2).
Таблица 7.2
Переменная |
Термин |
|
|
y |
Фактическая метка |
|
|
y′ |
Предсказываемая метка |
|
|
d |
Общее количество примеров |
|
|
b |
Количество обучающих примеров |
|
|
c |
Количество контрольных примеров |
|
|
Теперь разберем применение этих понятий на практике.
Как уже упоминалось, вектор признаков — это структура данных, в которой хранятся все признаки.
Допустим, количество признаков равно n, количество обучающих примеров — b, а X_train представляет собой обучающий вектор признаков. Каждый пример — это строка в векторе признаков.
Набору обучающих данных соответствует вектор признаков X_train. Если в на боре данных представлено b примеров, то в X_train будет b строк. Если в на боре данных есть n переменных, то в нем будет и n столбцов. Таким образом, набор обучающих данных имеет размерность n × b (рис. 7.1).
Рис. 7.1
Теперь предположим, что у нас имеется b примеров для обучения и c контроль ных примеров. Конкретный пример обучения представлен как (X, y).
Машинное обучение с учителем |
191 |
Используем верхний индекс для указания места обучающего примера в на боре.
Итак, размеченный набор данных представлен как D = {X(1), y(1)), (X(2), y(2)), ..., (X(d), y(d))}.
Разделим его на две части — Dtrain и Dtest.
Таким образом, обучающий набор можно представить как Dtrain = {X(1), y(1)), (X(2), y(2)), ..., (X(b), y(b))}.
Цель обучения модели состоит в том, чтобы для любого i-го примера в обучаю щем наборе предсказываемое значение целевой переменной стало как можно ближе к фактическому значению в примерах.
Другими словами, y′(i) ≈ y(i); при 1 ≤ i ≤ b.
Итак, контрольный набор можно представить как Dtest = {X(1), y(1)), (X(2), y(2)), ..., (X(c), y(c))}.
Значения целевой переменной представлены вектором Y:
Y ={y(1), y(2), ..., y(m)}.
Благоприятные условия
Обучение с учителем основано на способности алгоритма обучать модель на примерах. Для этого необходимы следующие благоприятные условия.
zz Достаточное количество примеров. Алгоритму требуется достаточное коли чество примеров для обучения модели.
zz Закономерности в исторических данных. Примеры, используемые для обу чения модели, должны содержать закономерности. Вероятность наступления интересующего нас события должна зависеть от сочетания закономерностей, тенденций и событий. Без них мы имеем дело со случайными данными, ко торые нельзя использовать для обучения модели.
zz Допустимые предположения. При обучении модели ожидается, что предпо ложения, касающиеся обучающих примеров, будут действительны и в буду щем. Рассмотрим реальную задачу. Представим, что правительство поручи ло нам подготовить модель МО, которая может предсказать вероятность выдачи визы студенту. Подразумевается, что законы и процедуры не изме нятся к тому моменту, когда модель будет использоваться. Если же они по