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

Python и машинное обучение: крайне необходимое пособие по новейшей предсказательной аналитике, обязательное для более глубокого понимания методологии машинного обучения

Покупка
Артикул: 712428.01.99
Доступ онлайн
1 299 ₽
В корзину
Книга предоставит вам доступ в мир прогнозной аналитики и продемонстрирует, почему Python является одним из лидирующих языков науки о данных. Охватывая широкий круг мощных библиотек Python, в том числе scikit-learn, Theano и Keras, предлагая руководство и советы по всем вопросам, начиная с анализа мнений и заканчивая нейронными сетями, книга ответит на большинство ваших вопросов по машинному обучению. Издание предназначено для специалистов по анализу данных, находящихся в поисках более широкого и практического понимания принципов машинного обучения.
Рашка, С. Python и машинное обучение: крайне необходимое пособие по новейшей предсказательной аналитике, обязательное для более глубокого понимания методологии машинного обучения / С. Рашка ; пер. с англ. А.В. Логунова. - Москва : ДМК Пресс, 2017. - 418 с. - ISBN 978-5-97060-409-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027758 (дата обращения: 28.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Себастьян Рашка

Python и машинное обучение

Наука и искусство построения алгоритмов,  
которые извлекают знания из данных

Sebastian Raschka

Python Machine Learning

Unlock deeper insights into machine learning 
with this vital guide to cutting-edge  
predictive analytics

BIRMINGHAM – MUMBAI

Себастьян Рашка

Python и машинное обучение

Наука и искусство построения алгоритмов,  
которые извлекают знания из данных

Москва, 2017

УДК 004.438Python:004.6
ББК 32.973.22
 
Р28

 
Рашка С.
Р28 
Python и машинное обучение: крайне необходимое пособие по новейшей предсказательной аналитике, обязательное для более глубокого понимания методологии машинного обучения  / пер. с англ. А. В. Логунова. – М.: ДМК Пресс, 
2017. – 418 с.: ил. 

 
ISBN 978-5-97060-409-0

Книга предоставит вам доступ в мир прогнозной аналитики и продемонстрирует, почему Python является одним из лидирующих языков науки о данных. Охватывая широкий 
круг мощных библиотек Python, в том числе scikit-learn, Theano и Keras, предлагая руководство и советы по всем вопросам, начиная с анализа мнений и заканчивая нейронными 
сетями, книга ответит на большинство ваших вопросов по машинному обучению.
Издание предназначено для специалистов по анализу данных, находящихся в поисках 
более широкого и практического понимания принципов машинного обучения.

УДК 004.438Python:004.6
ББК 32.973.22

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы 
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев 
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность 
технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности 
за возможные ошибки, связанные с использованием книги.

ISBN 978-1-78355-513-0 (анг.) 
©  2016 Packt Publishing
ISBN 978-5-97060-409-0 (рус.) 
©  Издание, перевод, ДМК Пресс, 2017

Содержание

Предисловие ..................................................................................................................................11
Об авторе ..........................................................................................................................................12
О рецензентах ...............................................................................................................................13
Введение ...........................................................................................................................................15

Глава 1. Наделение компьютеров способностью обучаться  
на данных .........................................................................................................................................25
Построение интеллектуальных машин для преобразования данных в знания ...........25
Три типа машинного обучения ......................................................................................................26

Выполнение прогнозов о будущем на основе обучения с учителем ..........................26

Задача классификации – распознавание меток классов  ........................................27
Задача регрессии – предсказание значений непрерывной целевой  
переменной ..............................................................................................................................28

Решение интерактивных задач на основе обучения с подкреплением .....................29
Обнаружение скрытых структур при помощи обучения без учителя ......................30

Выявление подгрупп при помощи кластеризации ....................................................30
Снижение размерности для сжатия данных ................................................................31

Введение в основополагающую терминологию и систему обозначений .......................32
Дорожная карта для построения систем машинного обучения .........................................33

Предобработка – приведение данных в приемлемый вид .............................................34
Тренировка и отбор прогнозной модели ..............................................................................35
Оценка моделей и прогнозирование на ранее не встречавшихся  
экземплярах данных ...................................................................................................................36

Использование Python для машинного обучения ..................................................................36

Установка библиотек Python ...................................................................................................37
Блокноты (записные книжки) Jupyter/IPython ...............................................................38

Резюме ...................................................................................................................................................40

Глава 2. Тренировка алгоритмов машинного обучения  
для задачи классификации .................................................................................................42
Искусственные нейроны – краткий обзор ранней истории машинного  
обучения ................................................................................................................................................42
Реализация алгоритма обучения перcептрона на Python ....................................................48

Тренировка перcептронной модели на наборе данных цветков ириса .....................50

Адаптивные линейные нейроны и сходимость обучения ....................................................54

Минимизация функций стоимости методом градиентного спуска ...........................55
Реализация адаптивного линейного нейрона на Python ...............................................57
Крупномасштабное машинное обучение и стохастический  
градиентный спуск  .....................................................................................................................62

Резюме ...................................................................................................................................................67

Содержание

Глава 3. Обзор классификаторов с использованием  
библиотеки scikit-learn ..........................................................................................................68
Выбор алгоритма классификации ................................................................................................68
Первые шаги в работе с scikit-learn..............................................................................................69

Тренировка перcептрона в scikit-learn ..................................................................................69

Моделирование вероятностей классов логистической регрессией ..................................73

Интуитивное понимание логистической регрессии и условные вероятности ......74
Извлечение весов логистической функции стоимости ..................................................77
Тренировка логистической регрессионной модели в scikit-learn ...............................79
Решение проблемы переобучения при помощи регуляризации .................................81

Классификация с максимальным зазором на основе метода опорных векторов ........84

Интуитивное понимание максимального зазора ..............................................................85
Обработка нелинейно разделимого случая при помощи ослабленных  
переменных ....................................................................................................................................86

Альтернативные реализации в scikit-learn ................................................................................88
Решение нелинейных задач ядерным методом SVM ............................................................88

Использование ядерного трюка для нахождения разделяющих  
гиперплоскостей в пространстве более высокой размерности  ...................................90

Обучение на основе деревьев решений ......................................................................................93

Максимизация прироста информации – получение наибольшей отдачи  ..............94
Построение дерева решений ....................................................................................................98
Объединение слабых учеников для создания сильного при помощи  
случайных лесов ........................................................................................................................ 100

k ближайших соседей – алгоритм ленивого обучения ...................................................... 103
Резюме ................................................................................................................................................ 106

Глава 4. Создание хороших тренировочных наборов –  
предобработка данных ....................................................................................................... 107
Решение проблемы пропущенных данных ............................................................................ 107

Устранение образцов либо признаков с пропущенными значениями ................... 109
Импутация пропущенных значений .................................................................................. 110
Концепция взаимодействия с оценщиками в библиотеке scikit-learn ................... 110

Обработка категориальных данных ......................................................................................... 112

Преобразование порядковых признаков .......................................................................... 112
Кодирование меток классов .................................................................................................. 113
Прямое кодирование на номинальных признаках ........................................................ 114

Разбивка набора данных на тренировочное и тестовое подмножества ....................... 116
Приведение признаков к одинаковой шкале......................................................................... 117
Отбор содержательных признаков ........................................................................................... 119

Разреженные решения при помощи L1-регуляризации ............................................. 119
Алгоритмы последовательного отбора признаков ........................................................ 125

Определение важности признаков при помощи случайных лесов ............................... 130
Резюме ................................................................................................................................................ 132

Глава 5. Сжатие данных путем снижения размерности ............................ 133
Снижение размерности без учителя на основе анализа главных компонент ............ 133

Изучение наиболее успешных методов оценки  моделей и тонкой настройки

Общая и объясненная дисперсия ........................................................................................ 135
Преобразование признаков ................................................................................................... 138
Анализ главных компонент в scikit-learn ......................................................................... 140

Сжатие данных с учителем путем линейного дискриминантного анализа ................ 143

Вычисление матриц разброса ............................................................................................... 145
Отбор линейных дискриминантов  
для нового подпространства признаков ........................................................................... 147
Проецирование образцов на новое пространство признаков .................................... 149
Метод LDA в scikit-learn ........................................................................................................ 150

Использование ядерного метода анализа главных компонент  
для нелинейных отображений ..........................................................................................................151

Ядерные функции и ядерный трюк .................................................................................... 152
Реализация ядерного метода анализа главных компонент на Python ................... 156

Пример 1. Разделение фигур в форме полумесяца ................................................. 157
Пример 2. Разделение концентрических кругов ..................................................... 159

Проецирование новых точек данных ................................................................................. 162
Ядерный метод анализа главных компонент в scikit-learn......................................... 165

Резюме ................................................................................................................................................ 166

Глава 6. Изучение наиболее успешных методов оценки  
моделей и тонкой настройки гиперпараметров ............................................... 167
Оптимизация потоков операций при помощи конвейеров .............................................. 167

Загрузка набора данных Breast Cancer Wisconsin ......................................................... 167
Совмещение преобразователей и оценщиков в конвейере ........................................ 169

Использование k-блочной перекрестной проверки для оценки качества  
модели ................................................................................................................................................. 170

Метод проверки с откладыванием данных ...................................................................... 171
k-блочная перекрестная проверка ...................................................................................... 172

Отладка алгоритмов при помощи кривой обучения и проверочной кривой ............. 176

Диагностирование проблем со смещением и дисперсией при помощи  
кривых обучения ....................................................................................................................... 176
Решение проблемы переобучения и недообучения при помощи  
проверочных кривых ............................................................................................................... 179

Тонкая настройка машиннообучаемых моделей методом сеточного поиска  ............ 181

Настройка гиперпараметров методом поиска по сетке параметров ....................... 181
Отбор алгоритмов методом вложенной перекрестной проверки ............................ 183

Обзор других метрик оценки качества .................................................................................... 184

Прочтение матрицы несоответствий ................................................................................. 185
Оптимизация точности и полноты классификационной модели ........................... 186
Построение графика характеристической кривой ........................................................ 188
Оценочные метрики для многоклассовой классификации ....................................... 191

Резюме ................................................................................................................................................ 192

Глава 7. Объединение моделей для методов ансамблевого  
обучения ........................................................................................................................................ 193
Обучение при помощи ансамблей............................................................................................. 193

Изучение наиболее успешных методов оценки моделей и тонкой настройки

Реализация простого классификатора с мажоритарным голосованием  .................... 197

Объединение разных алгоритмов классификации методом  
мажоритарного голосования ................................................................................................. 202

Оценка и тонкая настройка ансамблевого классификатора  ........................................... 205
Бэггинг – сборка ансамбля классификаторов из бутстрап-выборок ............................ 210
Усиление слабых учеников методом адаптивного бустинга  ........................................... 214
Резюме ................................................................................................................................................ 221

Глава 8. Применение алгоритмов машинного обучения  
в анализе мнений ..................................................................................................................... 222
Получение набора данных киноотзывов IMDb ................................................................... 222
Концепция модели мешка слов .................................................................................................. 224

Преобразование слов в векторы признаков .................................................................... 225
Оценка релевантности слова методом tf-idf .................................................................... 226
Очистка текстовых данных ................................................................................................... 228
Переработка документов в лексемы ................................................................................... 229

Тренировка логистической регрессионной модели для задачи  
классификации документов ........................................................................................................ 232
Работа с более крупными данными – динамические алгоритмы и обучение  
вне ядра ............................................................................................................................................... 234
Резюме ................................................................................................................................................ 237

Глава 9. Встраивание алгоритма машинного обучения  
в веб-приложение ................................................................................................................... 239
Сериализация подогнанных оценщиков библиотеки scikit-learn .................................. 239
Настройка базы данных SQLite для хранения данных ..................................................... 242
Разработка веб-приложения в веб-платформе Flask .......................................................... 244

Наше первое веб-приложение Flask ................................................................................... 245
Валидация и отображение формы ...................................................................................... 246

Превращение классификатора кинофильмов в веб-приложение .................................. 249
Развертывание веб-приложения на публичном сервере ................................................... 256

Обновление классификатора киноотзывов ..................................................................... 258

Резюме ................................................................................................................................................ 259

Глава 10. Прогнозирование значений непрерывной целевой  
переменной на основе регрессионного. анализа ............................................. 260
Введение в простую линейную регрессионную модель  ................................................... 260
Разведочный анализ набора данных Housing ....................................................................... 261

Визуализация важных характеристик набора данных ................................................ 263

Реализация линейной регрессионной модели обычным методом  
наименьших квадратов  ................................................................................................................. 266

Решение уравнения регрессии для параметров регрессии методом  
градиентного спуска ................................................................................................................ 267
Оценивание коэффициента регрессионной модели в scikit-learn ........................... 270

Подгонка стабильной регрессионной модели алгоритмом RANSAC ........................... 272
Оценивание качества работы линейных регрессионных моделей ................................ 274

Изучение наиболее успешных методов оценки моделей и тонкой настройки

Применение регуляризованных методов для регрессии................................................... 277
Превращение линейной регрессионной модели в криволинейную –  
полиномиальная регрессия ......................................................................................................... 278

Моделирование нелинейных связей в наборе данных Housing ............................... 280
Обработка нелинейных связей при помощи случайных лесов ................................ 283

Регрессия на основе дерева решений ........................................................................... 283
Регрессия на основе случайного леса .......................................................................... 285

Резюме ................................................................................................................................................ 287

Глава 11. Работа с немаркированными данными –  
кластерный анализ ................................................................................................................. 289
Группирование объектов по подобию методом k средних ................................................ 289

Алгоритм k-средних++ ........................................................................................................... 292
Жесткая кластеризация в сопоставлении с мягкой ...................................................... 294
Использование метода локтя  
для нахождения оптимального числа кластеров ........................................................... 296
Количественная оценка качества кластеризации методом силуэтных  
графиков ...................................................................................................................................... 298

Организация кластеров в виде иерархического дерева ..................................................... 302

Выполнение иерархической кластеризации на матрице расстояний .................... 303
Прикрепление дендограмм к теплокарте ......................................................................... 307
Применение агломеративной кластеризации в scikit-learn ....................................... 308

Локализация областей высокой плотности алгоритмом DBSCAN .............................. 309
Резюме ................................................................................................................................................ 313

Глава 12. Тренировка искусственных нейронных сетей  
для распознавания изображений ............................................................................... 315
Моделирование сложных функций искусственными нейронными сетями .............. 315

Краткое резюме однослойных нейронных сетей ........................................................... 317
Введение в многослойную нейросетевую архитектуру  .............................................. 318
Активация нейронной сети методом прямого распространения сигналов .......... 320

Классификация рукописных цифр ........................................................................................... 322

Получение набора данных MNIST ..................................................................................... 323
Реализация многослойного персептрона ......................................................................... 328

Тренировка искусственной нейронной сети .......................................................................... 339

Вычисление логистической функции стоимости .......................................................... 339

Тренировка нейронных сетей методом обратного распространения ошибки ........... 341
Развитие интуитивного понимания алгоритма обратного распространения  
ошибки ................................................................................................................................................ 344
Отладка нейронных сетей процедурой проверки градиента ........................................... 345
Сходимость в нейронных сетях ................................................................................................. 350
Другие нейросетевые архитектуры ........................................................................................... 351

Сверточные нейронные сети ................................................................................................. 352
Рекуррентные нейронные сети ............................................................................................ 354

Несколько последних замечаний по реализации нейронной сети ................................ 355
Резюме ................................................................................................................................................ 355

Изучение наиболее успешных методов оценки моделей и тонкой настройки

Глава 13. Распараллеливание тренировки нейронных сетей  
при помощи Theano ............................................................................................................... 356
Сборка, компиляция и выполнение выражений в Theano ............................................... 356

Что такое Theano? .................................................................................................................... 358
Первые шаги с библиотекой Theano .................................................................................. 359
Конфигурирование библиотеки Theano ........................................................................... 360
Работа с матричными структурами .................................................................................... 362
Завершающий пример – линейная регрессия ................................................................ 364

Выбор функций активации для нейронных сетей с прямым  
распространением сигналов ........................................................................................................ 367

Краткое резюме логистической функции ........................................................................ 368
Оценивание вероятностей в многоклассовой классификации  
функцией softmax ..................................................................................................................... 370
Расширение выходного спектра при помощи гиперболического тангенса .......... 371

Эффективная тренировка нейронных сетей при помощи библиотеки Keras ........... 373
Резюме ................................................................................................................................................ 378

Приложение А ........................................................................................................................... 380
Оценка моделей ............................................................................................................................... 380

Что такое переобучение? ........................................................................................................ 380
Как оценивать модель? ........................................................................................................... 381

Сценарий 1. Элементарно обучить простую модель .............................................. 381
Сценарий 2. Натренировать модель и выполнить тонкую настройку  
(оптимизировать гиперпараметры) ............................................................................. 382
Сценарий 3. Построить разные модели и сравнить разные алгоритмы  
(например, SVM против логистической регрессии против случайных  
лесов и т. д.) .......................................................................................................................... 383

Перекрестная проверка. Оценка качества оценщика ................................................... 384
Перекрестная проверка с исключением по одному ...................................................... 386
Пример стратифицированной k-блочной перекрестной проверки......................... 387
Расширенный пример вложенной перекрестной проверки ....................................... 387

А. Вложенная кросс-валидация: быстрая версия .................................................... 388
Б. Вложенная кросс-валидация: ручной подход с распечаткой  
модельных параметров ..................................................................................................... 388
В. Регулярная k-блочная кросс-валидация для оптимизации модели  
на полном наборе тренировочных данных ................................................................ 389

График проверочной (валидационной) кривой ............................................................. 389
Настройка типового конвейера и сеточного поиска ..................................................... 391

Машинное обучение ...................................................................................................................... 393

В чем разница между классификатором и моделью?................................................... 393
В чем разница между функцией стоимости и функцией потерь? ........................... 394
Обеспечение персистентности моделей scikit-learn на основе JSON ..................... 395

Глоссарий основных терминов и сокращений .................................................. 400
Предметный указатель ....................................................................................................... 408

Предисловие

Мы живем в потоке данных. Согласно недавним оценкам, ежедневно генерируется 
2,5 квинтилиона (1018) байт данных. Это такой огромный объем данных, что более 90% информации, которую мы храним в наши дни, было сгенерировано за все 
прошедшее десятилетие. К сожалению, люди не способны воспользоваться подавляющей частью этой информации. Данные либо лежат за пределами возможностей 
стандартных аналитических методов, либо они просто слишком обширны, чтобы 
наши ограниченные умы смогли их понять.
Благодаря методам машинного обучения мы наделяем компьютеры способностями обрабатывать большие объемы данных, которые в противном случае стояли бы 
непроницаемой стеной, даем им возможность обучаться на этих данных и извлекать 
из них практические выводы. От массивных суперкомпьютеров, которые обеспечивают работу поисковых движков компании Google, до смартфонов, которые мы 
носим в наших карманах, – везде мы опираемся на машинное обучение, которое 
приводит в действие значительную часть окружающего нас мира, и нередко мы об 
этом даже не догадываемся. 
Являясь первооткрывателями наших дней дивного нового мира больших данных, 
нам надлежит узнать еще больше о машинном обучении. Что же такое машинное 
обучение и как оно работает? Каким образом его применять, чтобы заглянуть в неизведанное, привести в действие свой бизнес либо просто узнать, что Интернет в целом думает о моем любимом фильме? Все это и даже больше будет охвачено в следующих главах, созданных моим добрым другом и коллегой Себастьяном Рашкa.
Когда Себастьян не занят одомашниванием моей вспыльчивой собаки, он неустанно посвящает свое свободное время сообществу специалистов, работающих 
с открытым исходным кодом в области машинного обучения. В течение последних 
нескольких лет Себастьян разработал десятки популярных учебных руководств, 
в которых затрагиваются различные темы из области машинного обучения и визуализации данных на Python. Он также является автором и соавтором разработок ряда 
библиотек Python с открытым исходным кодом, и некоторые из них теперь являются составной частью базового потока операций по машинному обучению на Python.
В силу его обширных экспертных познаний в этой области я уверен, что глубокое понимание Себастьяном мира машинного обучения на Python будет неоценимо 
для пользователей всех уровней квалификации. Я искренне рекомендую эту книгу 
любому, кто находится в поисках более широкого и более практического понимания 
принципов машинного обучения.

Доктор Рандал С. Олсон,
исследователь в области искусственного интеллекта  
и машинного обучения, Университет шт. Пенсильвания, США

Об авторе

Себастьян Рашка – аспирант докторантуры в Мичиганском университете, США, 
занимающийся разработкой новых вычислительных методов в области вычислительной биологии. Веб-сайтом Analytics Vidhya (https://www.analyticsvidhya.com/) 
сообщества увлеченных профессионалов в области науки о данных отмечен первым 
местом среди наиболее влиятельных аналитиков данных на GitHub. За его плечами 
многолетний опыт программирования на Python; он также проводит ряд семинаров 
по практическому применению науки о данных и машинного обучения. Регулярные 
выступления и публикации на тему науки о данных, машинного обучения и языка 
Python на деле мотивировали его написать эту книгу, с тем чтобы помочь людям 
разрабатывать управляемые данными решения без обязательного наличия предварительной квалификации в области машинного обучения. 
Он также является активным соавтором проектов с открытым исходным кодом 
и автором собственных методов, которые теперь успешно применяются в конкурсах 
по машинному обучению, таких как Kaggle. В свое свободное время он работает над 
моделями для спортивного прогнозирования, и если не сидит перед компьютером, 
то любит проводить время, занимаясь спортом.

Хотел бы поблагодарить своих профессоров, Арун Росса и Панг-Нинг Тана, 
а также многих других, кто вдохновил меня и сформировал у меня огромный интерес к исследованиям в области классификации образов, машинного 
обуче ния и добычи данных. 
Хотел бы воспользоваться представившейся возможностью и поблагодарить огромное сообщество пользователей и разработчиков библиотек Python 
с открытым исходным кодом, которые помогли мне создать совершенную среду для научных исследований и науки о данных.
Особую благодарность передаю базовым разработчикам библиотеки scikitlearn. В качестве одного из соавторов этого проекта было приятно работать 
вместе с замечательными людьми, которые не только превосходно осведомлены в области машинного обучения, но и являются превосходными программистами.
Наконец, хочу поблагодарить всех за проявление интереса к этой книге 
и искренне надеюсь, что смогу передать весь свой энтузиазм по поводу моего 
присоединения к огромным сообществам программистов на Python и в области машинного обучения.

О рецензентах

Ричард Даттон начал заниматься программированием компьютера ZX Spectrum 
в возрасте 8 лет, и с тех пор это увлечение направляет его по противоречивому массиву технологий и ролей в области промышленности и финансов. 
Работал в Microsoft и управляющим в Barclays, его текущим увлечением является 
гибрид из Python, машинного обучения и цепочки блоков транзакций. 
Если он не сидит перед компьютером, то его можно найти в спортзале либо дома 
с бокалом вина перед смартфоном iPhone. Он называет это равновесием. 
Дэйв Джулиан – ИТ-консультант и преподаватель с 15-летним стажем. Работал 
техником, проектным инженером, программистом и веб-разработчиком. Его текущие проекты состоят из разработки инструмента для анализа урожайности в составе интегрированных стратегий по борьбе с сельскохозяйственными вредителями 
в теплицах. Его большой интерес пролегает на пересечении биологии и технологии 
с уверенностью, что умные машины способны помочь решить самые важные глобальные задачи. 
Вахид Мирджалили получил звание доктора наук Мичиганского университета 
по машиностроению, где он разработал новые методы рафинирования белковых 
структур с использованием молекулярно-динамического имитационного моделирования. Объединив свои знания из областей статистики, добычи данных и физики, 
разработал мощные управляемые данными подходы, которые помогли ему и его исследовательской группе одержать победу в двух недавних мировых конкурсах по 
прогнозированию и рафинированию протеиновых структур, CASP, в 2012 и 2014 гг. 
Работая над докторской диссертацией, решил присоединиться к факультету информатики и инженерного дела в Мичиганском университете с целью специализации в области машинного обучения. Его текущие исследовательские проекты 
включают разработку алгоритмов машинного обучения без учителя для добычи 
массивных наборов данных. Он также является страстным поклонником программирования на Python и делится своими реализациями алгоритмов кластеризации на 
своем личном веб-сайте http://vahidmirjalili.com.
Хамидреза Саттари – ИТ-профессионал, участвовавший в ряде областей, связанных с разработкой программного обеспечения, от программирования до архитектуры и управления. Владеет степенью магистра в области разработки программного 
обеспечения Университета Хериота-Уатта, Соединенное Королевство, и степенью 
бакалавра по электротехнике (электронике) Тегеранского университета Азад, Иран. 
В последние годы его области интереса составляли большие данные и машинное 
обучение. Является соавтором книги «Веб-службы Spring 2. Книга рецептов» (Spring 
Web Services 2 Cookbook); ведет свой собственный блог по адресу http://justdeveloped-blog.blogspot.com/.
Дмитрий Тарановский – разработчик программного обеспечения с заинтересованностью и квалификацией в Python, Linux и машинном обучении. Родом из Киева, Украина, он переехал в США в 1996 г. С раннего возраста страстно увлекался 
наукой и знаниями, побеждая на конкурсах по физике и математике. В 1999 г. был 
избран членом команды США по физике. В 2005 г. окончил Мичиганский Технологический институт со специализацией по математике. Позже работал программным 

О рецензентах

инженером над системой трансформации текста для компьютерных медицинских 
транскрипций (eScription). Изначально работая на Perl, он по достоинству оценил 
мощь и ясность Python, который позволил ему масштабировать систему до данных 
больших объемов. Впоследствии работал инженером программного обеспечения 
и аналитиком на алгоритмическую трейдинговую фирму. Он также внес значительный вклад в математические основы, в том числе создание и совершенствование 
расширения языка теории множеств и его связи с аксиомами множеств большой 
мощности, разработав понятийный аппарат конструктивной истины и создав систему порядковой индексации с реализацией на Python. Он также любит читать, быть 
за городом и старается сделать мир лучше.

Введение

Н
аверное, не стоит и говорить, что машинное обучение стало одной из самых захватывающих технологий современности. Такие крупные компании, как Google, 
Facebook, Apple, Amazon, IBM, и еще многие другие небезосновательно вкладывают 
значительный капитал в разработку методов и программных приложений в области машинного обучения. Хотя может показаться, что термин «машинное обучение» 
сегодня уже набил оскомину, совершенно очевидно, что весь этот ажиотаж не является результатом рекламной шумихи. Эта захватывающая область исследования 
открывает путь к новым возможностям и стала неотъемлемой частью нашей повседневной жизни. Разговоры с речевым ассистентом по смартфону, предоставление 
рекомендаций относительно подходящего продукта для клиентов, предотвращение 
актов мошенничества с кредитными картами, фильтрация спама из входящих сообщений электронной почты, обнаружение и диагностирование внутренних заболеваний – и этот список можно продолжать.
Если вы хотите стать практиком в области машинного обучения, более основательным решателем задач или, возможно, даже обдумываете карьеру в научно-исследовательской области, связанной с машинным обучением, то эта книга для вас! 
Однако новичка теоретические идеи, лежащие в основании машинного обучения, 
нередко могут подавлять своей сложностью. И все же многие из опубликованных 
в последние годы практических изданий способны помочь вам приступить к работе 
с машинным обучением на основе реализации мощных алгоритмов обучения. По 
моему мнению, использование практических примеров программного кода служит 
важной цели. В них идеи иллюстрируются путем приведения изученного материала непосредственно в действие. Однако помните, что огромная мощь влечет за собой большую ответственность! Идеи, лежащие в основании машинного обучения, 
слишком красивы и важны, чтобы их прятать в черном ящике. Поэтому моя личная 
миссия состоит в том, чтобы предоставить вам иную книгу: книгу, в которой обсуждаются важные подробности относительно идей и принципов машинного обучения, 
предлагаются интуитивные и одновременно информативные объяснения по поводу 
того, каким образом алгоритмы машинного обучения работают, как их использовать 
и, самое главное, как избежать наиболее распространенных ловушек.
Если в поисковой системе Академия Google1 в качестве поискового запроса набрать «машинное обучение», то она вернет обескураживающе большое количество 
публикаций. В английском сегменте их число составляет 1 800 000 публикаций (для 
сравнения, в русском – 16 400). Разумеется, мы не сможем обсудить мельчайшие 
подробности всех основных алгоритмов и приложений, которые появились в течение предыдущих 60 лет. Однако в этой книге мы предпримем увлекательное путешествие, которое затронет все существенные темы и понятия, чтобы дать вам преимущество в этой области. Если вы считаете, что ваша потребность в знаниях из 
области машинного обучения не удовлетворена, то можно воспользоваться много
1 Академия Google (Google Scholar) (https://scholar.google.ru/schhp?hl=ru) – бесплатная поисковая система по полным текстам научных публикаций всех форматов и дисциплин. Проект работает с ноября 2004 г. – Прим. перев. 

Введение

численными полезными ресурсами, чтобы отслеживать существенные прорывы 
в этой области.
Если вы уже подробно изучили теорию машинного обучения, то эта книга покажет вам, каким образом претворить ваши знания на практике. Если вы использовали методы машинного обучения прежде и хотите получить более глубокое понимание того, каким образом машинное обучение работает в действительности, то 
эта книга для вас! Не переживайте, если вы абсолютно плохо знакомы с машинным 
обучением; у вас гораздо больше причин испытывать предвкушение. Я обещаю вам, 
что машинное обучение изменит ваш способ мышления относительно задач, которые вы хотите решать, и покажу вам, как справляться с ними путем высвобождения 
мощи данных.
Прежде чем мы погрузимся с головой в область машинного обучения, отвечу на 
ваш сакраментальный вопрос – «почему, собственно, Python?» Ответ прост: он – 
мощный и одновременно очень доступный. Python стал самым популярным языком 
программирования для науки о данных, потому что он позволяет забыть об утомительных сторонах программирования и предлагает нам среду, где мы можем быстро 
набросать наши мысли и привести идеи непосредственно в действие.
Размышляя над тем путем, который я прошел лично, могу сказать вам совершенно искренне, что изучение методов машинного обучения сделало меня более основательным ученым, мыслителем и решателем задач. В этой книге я хочу поделиться этими знаниями с вами. Знание достигается в процессе исследования, ключом 
к нему является наш энтузиазм, а истинное освоение навыков может быть достигнуто только практикой. Местами продвижение может быть ухабистым, и некоторые 
темы могут оказаться более сложными для понимания, чем другие, но я надеюсь, 
что вы воспользуетесь этой возможностью и сконцентрируетесь на вознаграждении. 
Помните, что мы отправляемся в это путешествие вместе, и по ходу изложения мы 
будем пополнять ваш арсенал большим количеством мощных методов, которые помогут нам решать даже самые трудноразрешимые задачи на основе управляемого 
данными подхода.

О чем эта книга рассказывает

Глава 1 «Наделение компьютеров способностью обучаться на данных» знакомит 
с основными подобластями машинного обучения, в которых решаются самые разные практические задачи. Кроме того, в ней обсуждаются принципиальные шаги, 
которые необходимо предпринять, чтобы создать типичную машиннообучае мую 
модель, и создается конвейер, который будет направлять нас в последующих главах.
Глава 2 «Тренировка алгоритмов машинного обучения для задачи классификации» 
обращается к истокам области исследований, связанной с машинным обучением, 
и знакомит с бинарными (двуклассовыми) классификаторами на основе перcептрона 
и адаптивных линейных нейронов. Эта глава является осторожным введением в основополагающие принципы классификации образов, где основное внимание уделено взаимодействию машинного обучения с алгоритмами оптимизации.
Глава 3 «Обзор классификаторов с использованием библиотеки scikit-learn» описывает принципиальные алгоритмы машинного обучения, предназначенные для зада
Доступ онлайн
1 299 ₽
В корзину