Python и машинное обучение: крайне необходимое пособие по новейшей предсказательной аналитике, обязательное для более глубокого понимания методологии машинного обучения
Покупка
Издательство:
ДМК Пресс
Автор:
Рашка Себастьян
Перевод:
Логунов А. В.
Год издания: 2017
Кол-во страниц: 418
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-409-0
Артикул: 712428.01.99
Доступ онлайн
В корзину
Книга предоставит вам доступ в мир прогнозной аналитики и продемонстрирует, почему Python является одним из лидирующих языков науки о данных. Охватывая широкий круг мощных библиотек Python, в том числе scikit-learn, Theano и Keras, предлагая руководство и советы по всем вопросам, начиная с анализа мнений и заканчивая нейронными сетями, книга ответит на большинство ваших вопросов по машинному обучению. Издание предназначено для специалистов по анализу данных, находящихся в поисках более широкого и практического понимания принципов машинного обучения.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Себастьян Рашка 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» описывает принципиальные алгоритмы машинного обучения, предназначенные для зада
Доступ онлайн
В корзину