Грокаем машинное обучение - Луис Серрано - E-Book

Грокаем машинное обучение E-Book

Luis Serrano

0,0

Beschreibung

Машинное обучение — это набор методов анализа данных, основанных на алгоритмах, которые дают все более точные результаты по мере поступления новых данных. Машинное обучение лежит в основе систем рекомендаций, программ распознавания лиц, «умных» колонок и даже беспилотных автомобилей. Эта уникальная книга объясняет основные понятия машинного обучения на простых и доступных примерах, увлекательных упражнениях и запоминающихся иллюстрациях. Здесь нет зубодробительного академического жаргона, для понимания объяснений достаточно знаний основ алгебры. По мере чтения вы будете создавать модели для идентификации спама, и распознавания изображений и другие интересные проекты на языке Python. Откройте для себя мощные методы машинного обучения, для понимания и применения которых достаточно знаний математики на уровне средней школы! Для читателей, знающих основы языка Python. Знаний в области машинного обучения не требуется.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 615

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Луис Серрано
Грокаем машинное обучение

Переводчик Р. Чикин

Луис Серрано

Грокаем машинное обучение. — СПб.: Питер, 2024.

ISBN 978-5-4461-1923-3

© ООО Издательство "Питер", 2024

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

Предисловие

Правда ли, что машинное обучение — это сложно и его трудно освоить? Конечно же, нет! Просто прочтите эту книгу!

Луис Серрано — настоящий волшебник, когда дело доходит до объяснения простыми словами. Я познакомился с ним, когда он преподавал машинное обучение на Udacity. Он заставлял наших студентов понять, что все машинное обучение так же просто, как сложение или вычитание. И самое главное, он делал материал интересным. Видеоролики, которые он создал для Udacity, были невероятно увлекательными и остаются одними из самых популярных материалов, предлагаемых на платформе.

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

Истинная цель книги — дать вам возможность самостоятельно овладеть этими методами. Так что книга полна забавных упражнений, в которых вы сможете сами опробовать эти загадочные (а теперь и разоблаченные) техники. Что бы вы предпочли — проглотить последнее телешоу Netflix или потратить время на применение машинного обучения к проблемам компьютерного зрения и понимания естественного языка? Если последнее, то эта книга для вас. Я не могу выразить, насколько это увлекательно — играть с новейшими разработками в области машинного обучения и видеть, как компьютер творит чудеса под вашим чутким руководством.

А поскольку машинное обучение едва ли не самая популярная технология последних лет, вы сможете использовать новообретенные навыки и в своей работе. Несколько лет назад газета New York Times объявила, что в мире насчитывается всего 10 000 экспертов по машинному обучению и миллионы открытых вакансий. Так обстоит дело и сегодня! Изучите эту книгу и станьте профессиональным инженером по машинному обучению. Вы гарантированно овладеете одним из самых востребованных в современном мире навыков.

В этой книге Луис Серрано проделал превосходную работу, объяснив сложные алгоритмы и сделав их доступными практически для всех. Но он сделал это не в ущерб глубине. Вместо этого он сфокусировался на расширении возможностей читателя с помощью цепочки понятных проектов и упражнений. В этом смысле это далеко не пассивное чтение. Чтобы в полной мере извлечь пользу из книги, вам придется потрудиться. У нас в Udacity есть поговорка: вы не похудеете, глядя за тем, как тренируются другие. Чтобы использовать машинное обучение, вы должны научиться применять его для решения реальных задач. Если вы готовы, то эта книга для вас — кем бы вы ни были!

Себастьян Тран, PhD, основатель Udacity, адъюнкт-профессор Стэнфордского университета

Вступление

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

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

Однако позже я начал сравнивать машинное обучение с другими предметами, такими как музыка. Музыкальная теория и практика — сложные предметы. Но когда мы размышляем о музыке, то думаем не о партитурах и гаммах, а о песнях и мелодиях. И тогда я задался вопросом: а не может ли машинное обучение быть тем же самым? Действительно ли это лишь набор формул и кода или за этим есть мелодия?

Рис. В.1. Музыка — это не только гаммы и ноты. За техническими деталями скрывается мелодия. Точно так же машинное обучение — это не только формулы и код. Есть и мелодия, и в этой книге мы ее исполним

С этой мыслью я и отправился в путешествие с целью понять мелодию машинного обучения. Я месяцами пялился на формулы и код. Нарисовал множество диаграмм. Царапал рисунки на салфетках и показывал их своей семье, друзьям и коллегам. Я обучал модели на небольших и огромных наборах данных. Экспериментировал. Через некоторое время я начал слышать мелодию машинного обучения. Внезапно в моем сознании начали формироваться прекрасные образы. Я начал писать истории, которые соответствуют всем этим концепциям машинного обучения. Мелодии, картинки, истории — вот как мне нравится изучать любую тему, и именно этими мелодиями, картинками и историями я делюсь с вами в книге. Моя цель — сделать машинное обучение на 100 % понятным каждому, и эта книга — шаг в этом путешествии‚ шаг, который я счастлив делать вместе с вами!

Благодарности

Прежде всего я хотел бы поблагодарить моего редактора Марину Майклс, без которой книга не появилась бы на свет. Благодарю Марджан Бейс, Берта Бейтса и остальных членов команды издательства Manning за их поддержку, профессионализм, отличные идеи и терпение. Благодарю технических корректоров Ширли Яп и Карстена Стребека, редактора по развитию Криса Ати и рецензентов за то, что они дали отличные отзывы и исправили многие мои ошибки. Я благодарю выпускающего редактора Кери Хейлз, редактора Памелу Хант, графического редактора Дженнифер Хоул, корректора Джейсона Эверетта и всю производственную команду за отличную работу по воплощению этой книги в реальность. Благодарю Лауру Монтойю за ее помощь с инклюзивным языком и этикой искусственного интеллекта, Диего Эрнандеса — за ценные дополнения к коду и Кристиана Пикона — за огромную помощь с техническими аспектами репозитория и библиотек.

Я благодарен Себастьяну Трану за прекрасную работу по демократизации образования. Udacity была платформой, которая впервые подарила мне возможность учить мир, и я хотел бы поблагодарить замечательных коллег и студентов, которых там встретил. Алехандро Пердомо и команда Zapata Computing заслуживают благодарности за то, что познакомили меня с миром квантового машинного обучения. Спасибо многим замечательным руководителям и коллегам, с которыми я познакомился в Google и Apple, — они сыграли важную роль в моей карьере. Особая благодарность Роберто Чиприани и команде Paper Inc. за то, что позволили мне стать частью своей семьи, и за превосходную работу, которую они выполняют в образовательном сообществе.

Я хотел бы поблагодарить своих многочисленных университетских преподавателей, которые сформировали мою карьеру и мой образ мышления: Мэри Фальк де Лосада и ее команду на Колумбийских математических олимпиадах, где я полюбил математику и имел возможность встретиться с великими наставниками и завести дружбу, которая длилась всю жизнь; научного руководителя Сергея Фомина, который сыграл важную роль в моем математическом образовании и стиле преподавания; советника моего учителя Яна Гулдена; Нантель и Франсуа Бержерон, Брюса Сагана и Федерико Ардила, а также многих профессоров и коллег, с которыми я имел возможность работать, в частности, в университетах Ватерлоо, Мичигана, Квебека в Монреале и Йорке, и, наконец, Ричарда Хосино, команду и студентов университета Квест, которые помогли мне протестировать и улучшить материал этой книги.

Спасибо всем рецензентам: Элу Пежевски, Альберту Ногесу Сабатеру, Амиту Ламбе, Биллу Митчеллу, Борко Джурковичу, Даниэле Андреису, Эрику Саперу, Хао Лю, Джереми Р. Лошайдеру, Хуану Габриэлю Боно, Кей Энгельхардт, Кшиштофу Камычеку, Мэтью Марголису, Маттиасу Бушу, Майклу Брайту, Милладу Дагдони, Полине Кесельман, Тони Холдройд и Валери Парэм-Томпсон, ваши предложения помогли сделать эту книгу лучше.

Я хотел бы поблагодарить свою жену Каролину Лассо, которая всегда поддерживала меня; маму Сесилию Эрреру, которая воспитывала меня с любовью и поощряла следовать за своими мечтами; бабушку — она тот ангел, что смотрит на меня с небес; лучшего друга Алехандро Моралеса за то, что всегда был рядом, и друзей, которые осветили мой путь и скрасили мою жизнь. Я благодарю вас и люблю всем сердцем.

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

Я благодарю всех, кто стремится сделать этот мир более справедливым и мирным. Всех, кто борется за справедливость, мир, окружающую среду и за равные возможности для всех людей на Земле независимо от расы, пола, места рождения, условий и выбора, я благодарю от всего сердца.

И последнее, но, конечно, не менее важное: эта книга посвящается тебе, читатель. Ты выбрал путь обучения, путь совершенствования, путь ощущения комфорта в условиях дискомфорта, и это достойно восхищения. Я надеюсь, что эта книга станет важным шагом на пути к твоим мечтам и созданию лучшего мира.

О книге

Эта книга научит двум вещам: моделям машинного обучения и тому, как их использовать. Модели машинного обучения бывают разных типов. Некоторые из них возвращают детерминированный ответ, такой как «да» или «нет», а другие — ответ в виде вероятности. Одни из них используют уравнения, другие — операторы if. Их общая черта заключается в том, что все они возвращают ответ или прогноз. Отрасль машинного обучения, которая включает в себя модели, возвращающие прогноз, удачно названа прогностическиммашиннымобучением. На этом типе машинного обучения мы и сосредоточимся.

Как организована книга: дорожная карта

Типы глав

Эта книга состоит из глав двух типов. Большинство из них — главы 3, 5, 6, 8–12 — посвящены одному типу моделей машинного обучения. В каждой главе модель подробно разбирается, в том числе рассматриваются примеры, формулы, код и самостоятельные упражнения. А главы 4, 7 и 13 содержат полезные методы, которые можно использовать для обучения, оценки и улучшения моделей машинного обучения. В частности, в главе 13 сквозной пример исследуется на реальном наборе данных, здесь вы сможете применить все знания, полученные в предыдущих главах.

Рекомендуемые пути обучения

Вы можете работать с книгой двумя способами. Я рекомендую знакомиться с ней последовательно, глава за главой, потому что такое чередование моделей и методов их обучения весьма полезно. Другой путь заключается в том, чтобы сначала изучить все модели (главы 3, 5, 6, 8–12), а затем — методы их обучения (главы 4, 7 и 13). И, конечно же, поскольку все мы учимся по-разному, вы можете следовать собственному пути!

Приложения

Книга имеет три приложения. В приложении А опубликованы решения упражнений, описанных в каждой главе. Приложение Б содержит некоторые полезные формальные математические выводы, более технически сложные, чем остальная книга. Приложение В — это список литературы и ресурсов, с которыми я рекомендую ознакомиться, если вы хотите углубить свое понимание темы.

Требования и цели обучения

Книга даст вам прочную основу в области прогностического машинного об­учения. Чтобы извлечь из нее максимальную пользу, вы должны обладать визуальным мышлением и хорошо разбираться в элементарной математике. Будет полезно (хотя и не обязательно) знать, как писать код, особенно на Python, потому что на протяжении всей книги вам предоставляется возможность реализовать и применить несколько моделей в реальных наборах данных. Прочитав эту книгу, вы сможете сделать следующее.

• Описать наиболее важные модели в прогностическом машинном обучении и то, как они работают, включая линейную и логистическую регрессию, наивный байесовский алгоритм, деревья решений, нейронные сети, машины опорных векторов и методы ансамблей.

• Определить их сильные и слабые стороны и параметры, которые они применяют.

• Определить, как эти модели используются в реальном мире, и сформулировать потенциальные способы применения машинного обучения к любой конкретной задаче, которую вы хотели бы решить.

• Узнать, как оптимизировать, сравнивать и улучшать эти модели, чтобы создавать лучшие из возможных моделей машинного обучения.

• Кодировать модели вручную или с помощью существующего пакета и использовать их для прогнозирования реальных наборов данных.

Если у вас на примете есть конкретный набор данных или проблема, я приглашаю вас подумать о том, как применить к ним то, что вы узнаете из этой книги, и использовать ее в качестве отправной точки для внедрения и экспериментов с вашими собственными моделями.

Я очень рад начать это путешествие вместе с вами и надеюсь, что вы рады не меньше!

Другие ресурсы

Данная книга самодостаточна. Это означает, что помимо требований, описанных ранее, в ней представлены все необходимые нам концепции. Тем не менее я включаю много ссылок, которые пригодятся, если вы захотите понять концепции более глубоко или изучить дополнительные темы. Все ссылки размещены в приложении В, а также здесь: http://serrano.academy/grokking-machine-learning.

Некоторые из моих собственных ресурсов тоже дополняют материалы этой книги. На странице в http://serrano.academy вы найдете множество материалов в форме видео, постов и кода. Видео есть и на моем канале YouTube www.youtube.com/c/LuisSerrano, с которым я рекомендую ознакомиться. И к большинству глав этой книги прилагается видео, которое стоит посмотреть во время чтения.

Мы будем писать код

Мы будем писать код на Python. Однако, если вы планируете изучать предложенные концепции без кода, можете игнорировать его. Тем не менее я рекомендую вам хотя бы взглянуть на него в ознакомительных целях.

Книга поставляется с репозиторием кода, и большинство глав дадут вам возможность кодировать алгоритмы с нуля или использовать некоторые распространенные пакеты Python для построения моделей, соответствующих заданным наборам данных. Репозиторий GitHub — это www.github.com/luisguiserrano/manning, и я указываю соответствующие блокноты по всей книге. В README репозитория вы найдете инструкции по установке пакетов для успешного запуска кода.

Основными пакетами Python, которые мы используем в книге, являются:

• NumPy — для хранения массивов и выполнения сложных математических вычислений;

• Pandas — для хранения, обработки и анализа больших наборов данных;

• Matplotlib — для построения графиков данных;

• Turi Create — для хранения и обработки данных, а также обучения моделей;

• Scikit-Learn — для обучения моделей машинного обучения;

• Keras (TensorFlow) — для обучения нейронных сетей.

О коде

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

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

Код примеров, приводимых в книге, доступен для скачивания на веб-сайте Manning (https://www.manning.com/books/grokking-machine-learning), а также с GitHub на www.github.com/luisguiserrano/manning.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Об авторе

ЛуисДж.Серрано — ученый-исследователь, работающий в области квантового искусственного интеллекта в Zapata Computing. Ранее он был инженером по машинному обучению в Google, ведущим преподавателем искусственного интеллекта в Apple и руководителем отдела контента в области искусственного интеллекта и науки о данных в Udacity. Луис получил докторскую степень по математике в Мичиганском университете, степень бакалавра и магистра математики в университете Ватерлоо и после этого работал исследователем в лаборатории комбинаторной и информационной математики Квебекского университета в Монреале. Луис ведет популярный YouTube-канал о машинном обучении с более чем 85 000 подписчиков и более чем 4 млн просмотров, часто выступает с докладами на конференциях по искусственному интеллекту и науке о данных.

2. Типы машинного обучения

Вэтойглаве

• Три различных типа машинного обучения: контролируемое, неконтролируемое и обучение с подкреплением.

• Разница между размеченными и неразмеченными данными.

• Разница между регрессией и классификацией‚ а также их использованием.

Как мы узнали из главы 1, машинное обучение — это здравый смысл для компьютера. Принимая решения на основе предыдущих данных, он примерно имитирует процесс, посредством которого люди принимают решения на основе опыта. Естественно, программирование компьютеров для имитации процесса человеческого мышления — сложная задача, потому что компьютеры созданы для хранения и обработки чисел, а не для принятия решений. Ее и стремится решить машинное обучение. Оно делится на несколько ветвей в зависимости от типа принимаемого решения. В этой главе мы рассмотрим некоторые наиболее важные из них.

Машинное обучение нашло применение во многих областях, например таких, как:

• прогнозирование цен на жилье на основе размера дома, количества комнат и местоположения;

• прогнозирование сегодняшних цен на фондовом рынке на основе вчерашних цен и других рыночных факторов;

• обнаружение спама на основе слов, употребленных в электронном письме, и данных отправителя;

• распознавание изображений, например лиц или животных, на основе составляющих их пикселов;

• обработка длинных текстовых документов и создание их резюме;

• рекомендации пользователю видеороликов или фильмов, например, на YouTube или Netflix;

• создание чат-ботов, которые взаимодействуют с людьми и отвечают на вопросы;

• обучение автомобилей с автопилотом самостоятельно двигаться по городу;

• постановка диагноза людям и разделение их на больных и здоровых;

• сегментация рынка на аналогичные группы в зависимости от местоположения, покупательской способности и интересов;

• игры‚ подобные шахматам или го.

Попробуйте представить, как можно использовать машинное обучение в каждой из этих областей. Обратите внимание на то, что некоторые из этих применений отличаются друг от друга, но задачи могут решать аналогичные. Например, прогнозировать цены на жилье и на акции можно одинаковыми методами. Прогноз того, является ли электронное письмо спамом или является ли транзакция по кредитной карте мошеннической, также можно сделать с помощью сходных методов. А как насчет группировки пользователей приложения на основе их сходства? Это звучит иначе, чем прогнозирование цен на жилье, но выполнить это можно аналогично группировке газетных статей по темам. А как насчет игры в шахматы? Не похоже на все предыдущие приложения, но зато может иметь сходство с игрой в го.

Модели машинного обучения подразделяются на типы в зависимости от того, как они работают.

Итак‚ три основных семейства моделей машинного обучения:

• контролируемое обучение;

• неконтролируемое обучение;

• обучение с подкреплением.

В этой главе рассмотрим все три. Однако в рамках книги сосредоточимся только на контролируемом обучении, так как это самый естественный способ начать обучение и, возможно, наиболее широко используемый в настоящее время. О других типах можно самостоятельно узнать из литературы, потому что все они интересны и полезны! Среди ресурсов, собранных в приложении В, имеется несколько интересных ссылок, в том числе на несколько видеороликов, созданных автором.

В чем разница между размеченными и неразмеченными данными

Что такое данные

Мы говорили о данных в главе 1, но прежде чем двигаться дальше, дадим четкое определение того, что в этой книге подразумевается под данными. Данные — это всего лишь информация. Всегда, когда у нас есть таблица с информацией, у нас есть данные. Обычно каждая строка в таблице представляет собой точку данных. Допустим, у нас есть набор данных о домашних животных. В этом случае каждая строка представляет отдельного четвероногого. Каждое домашнее животное в таблице описывается определенными признаками.

Что же это за признаки

В главе 1 мы определили признаки как свойства или характеристики данных. Если наши данные содержатся в таблице, то признаками являются столбцы таб­лицы. В примере с домашним животным признаками могут быть размер, имя, тип или вес. Признаками могут служить даже цвета пикселов на изображении домашнего животного. Это то, что описывает наши данные. Однако некоторые признаки — особенные, мы называем их метками.

Метки?

Этот вариант чуть менее точен, так как зависит от контекста проблемы, которую мы пытаемся решить. Как правило, если мы хотим спрогнозировать определенный признак на основе других, этот признак служит меткой. Если пытаемся спрогнозировать тип домашнего животного (например, кошки или собаки) на основе информации о нем, то метка — это тип домашнего животного (кошка/собака). Если стремимся спрогнозировать, болен питомец или здоров, основываясь на симптомах и другой информации, то метка — это состояние здоровья (болен/здоров). Если пытаемся предсказать возраст питомца, то метка — это возраст (число).

Прогнозы

Мы уже использовали концепцию свободного прогнозирования, теперь давайте определим ее. Цель прогностической модели машинного обучения состоит в том, чтобы угадать метки в данных. Предположение, которое делает модель, называется прогнозом.

Теперь, зная, что такое метки, мы можем допустить, что существуют два основных типа данных: размеченные и неразмеченные.

Размеченные и неразмеченные данные

Размеченные данные — такие, которые поставляются с тегом или меткой (метка может быть как типом‚ так и числом). Неразмеченные данные — те, что поставляются без меток. Примером размеченных данных может служить набор данных, относящихся к электронным письмам, в котором есть столбец, где записано, является ли письмо спамом‚ или столбец, где указано, связано ли оно с работой. Пример неразмеченных данных — набор электронных писем, где нет конкретного столбца, который мы хотели бы спрогнозировать.

На рис. 2.1 мы видим три набора данных, содержащих изображения домашних животных. В первом наборе есть столбец с указанием типа домашнего животного, во втором — столбец, где приведен его вес. Это два примера размеченных данных. Третий набор состоит из изображений без меток, что делает его неразмеченными данными.

Рис. 2.1. Наборы данных: слева — размечен, меткой служит тип домашнего животного (собака/кошка); посередине — размечен, меткой служит вес (в килограммах); справа — не размечен

Конечно, это определение содержит некоторую двусмысленность, потому что в зависимости от проблемы мы определяем, подходит ли конкретный признак в качестве метки. Таким образом, определение того, размечены данные или нет, во многих случаях зависит от решаемой проблемы.

Размеченные и неразмеченные данные дают две ветви машинного обучения — контролируемое и неконтролируемое. Их определение мы найдем в следующих трех разделах.

Контролируемое обучение — раздел машинного обучения, который работает с размеченными данными

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

В примере на рис. 2.1 набор данных слева содержит изображения собак и кошек, а метки — «собака» и «кошка». Для этого набора данных модель машинного обучения будет использовать предыдущие данные и прогнозировать метки новых точек данных. Это означает, что, если мы введем новое изображение без метки, модель будет угадывать, кто это — собака или кошка, прогнозируя таким образом метку точки данных (рис. 2.2). Здесь точка данных соответствует собаке, и алгоритм контролируемого обучения обучается прогнозировать, что она действительно соответствует собаке.

Рис. 2.2. Модель контролируемого обучения прогнозирует метку новой точки данных

Если вы помните из главы 1, основа для принятия решения — это принцип вспоминания — формулирования — прогнозирования. Именно так работает контролируемое обучение. Модель сначала вспоминает набор данных о собаках и кошках. Затем формулирует модель или правило для всего, что, по ее мнению, представляет собой собаку и кошку. Наконец, когда появляется новое изображение, модель делает прогноз о том, что, по ее мнению, является меткой изображения — собака или кошка (рис. 2.3).

Рис. 2.3. Модель контролируемого обучения соответствует схеме вспоминания — формулирования — прогнозирования

Теперь обратите внимание на то, что на рис. 2.1 два типа размеченных наборов данных. В том, что в середине, каждая точка данных размечена весом животного. Здесь метки представляют собой числа. В наборе данных слева каждая точка данных размечена типом животного — собака или кошка. В нем метки — это состояния. Числа и состояния — это два типа данных, с которыми мы столкнемся в моделях контролируемого обучения. Первый тип называется числовымиданными, второй — категориальными.

ЧИСЛОВЫЕДАННЫЕ — это любой тип данных, в которых используются такие числа, как 4, 2,35 или –199. Примерами числовых данных могут служить цены, размеры или веса.

КАТЕГОРИАЛЬНЫЕДАННЫЕ — это любой тип данных, который использует категории или состояния, такие как «мужчина/женщина» или «кошка/собака/птица». Для этого типа данных у нас имеется конечный набор категорий, которые нужно связать с каждой из точек данных.

Это приводит к появлению следующих двух типов моделей контролируемого обучения.

РЕГРЕССИОННЫЕМОДЕЛИ — это типы моделей, которые прогнозируют числовыеданные. Результатом регрессионной модели выступает число, такое как вес животного.

КЛАССИФИКАЦИОННЫЕМОДЕЛИ — это типы моделей, которые прогнозируют категориальныеданные. Результатом классификационной модели служит категория или состояние, например тип животного — кошка или собака.

Рассмотрим два примера моделей контролируемого обучения: одну регрессию и одну классификацию.

Модель1.Модельпрогнозированияценнажилье(регрессия). Здесь каж­дая точка данных представляет собой дом. Метка каждого дома — это его цена. Наша цель — добиться того, чтобы, когда на рынке появится новый дом (точка данных), мы могли бы спрогнозировать его метку, то есть цену.

Модель2.Модельобнаруженияспамавэлектроннойпочте(классификация). Здесь каждая точка данных представляет собой электронное письмо. Метка каждого из них — является ли оно спамом. Наша цель в том, чтобы при поступлении нового электронного письма (точки данных) мы могли спрогнозировать его метку, а именно, является ли оно спамом.

Обратите внимание на разницу между моделями 1 и 2.

• Модель прогнозирования цен на жилье может возвращать число из множества возможных значений, таких как 100 долларов, 250 000 долларов или 3 125 672,33 доллара. Это делает ее регрессионной моделью.

• Модель обнаружения спама может возвращать только два значения: спам или «ветчина». Таким образом, это классификационная модель.

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

Регрессионные модели прогнозируют числа

Как говорилось ранее, регрессионные модели — это те, где метка, которую мы хотим получить, представляет собой число. Оно прогнозируется на основе признаков. В примере с жильем признаками могут быть любые характеристики, описывающие дом: размер, количество комнат, расстояние до ближайшей школы или уровень преступности в районе.

Далее приведены другие области, где можно использовать регрессионные модели.

• Фондовыйрынок — прогнозирование цены определенной акции на основе других цен на акции и иных рыночных сигналов.

• Медицина — прогнозирование ожидаемой продолжительности жизни пациента или ожидаемого времени выздоровления на основе симптомов и истории болезни.

• Продажи — прогнозирование ожидаемой суммы, которую потратит клиент, на основе его демографических данных и поведения при покупках в прошлом.

• Рекомендациивидео — прогнозирование ожидаемого количества времени, в течение которого пользователь будет смотреть видео, на основе демографических данных пользователя и других просмотренных им видео.

Наиболее распространенным методом регрессии выступает линейная регрессия. Для составления прогнозов в ней применяются линейные функции (прямые или аналоги) на основе признаков. Мы изучим линейную регрессию в главе 3. Другими популярными методами, с помощью которых выполняется регрессия, выступают регрессия дерева решений (ее мы изучим в главе 9) и несколько методов ансамбля, таких как случайные леса, AdaBoost, деревья с градиентным усилением и XGBoost (см. главу 12).

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

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

В примере распознавания спама среди электронной почты модель предсказывает состояние электронного письма (а именно спам или «ветчина») на основе его признаков. В этом случае особенностями электронного письма могут быть содержащиеся в нем слова, количество орфографических ошибок, отправитель или что-либо еще, что его характеризует.

Другим распространенным применением классификации выступает распознавание изображений. Наиболее популярные модели распознавания изображений принимают в качестве входных данных пикселы изображения и выдают прогноз о том, что на нем представлено. Два наиболее известных набора данных для распознавания изображений — это MNIST и CIFAR-10. MNIST содержит приблизительно 60 000 черно-белых изображений размером 28 × 28 пикселов с написанными от руки цифрами, которые размечены как 0–9. Изображения взяты из нескольких источников, включая Американское бюро переписи населения и хранилище рукописных цифр (их авторы — американские старшеклассники). Набор данных MNIST можно найти по ссылке http://yann.lecun.com/exdb/mnist/. Набор данных CIFAR-10 содержит 60 000 цветных изображений различных объектов размером 32 × 32 пиксела. Они размечены десятью различными объектами (это объясняет число 10 в его названии): самолетами, автомобилями, птицами, кошками, оленями, собаками, лягушками, лошадьми, кораблями и грузовиками. Эта база данных поддерживается Канадским институтом перспективных исследований (CIFAR), ее можно найти по ссылке https://www.cs.toronto.edu/~kriz/cifar.html.

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

• Анализнастроений — прогнозирование того, будет ли рецензия на фильм положительной или отрицательной, на основе имеющихся в ней слов.

• Посещаемостьсайта — прогнозирование того, нажмет пользователь на ссылку или нет, на основе его демографических данных и взаимодействия с сайтом в прошлом.

• Социальныесети — прогнозирование того, будет ли пользователь дружить или взаимодействовать с другим пользователем, на основе их демографии, истории и общих друзей.

• Рекомендацииповидео — прогнозирование того, будет ли пользователь смотреть видео, на основе демографических данных и других просмотренных видео.

Основная часть книги (главы 5, 6, 8–12) охватывает классификационные модели. В них мы изучаем персептроны (глава 5), логистические классификаторы (глава 6), наивный байесовский алгоритм (глава 8), деревья решений (глава 9), нейронные сети (глава 10), машины опорных векторов (глава 11) и методы ансамбля (глава 12).

Неконтролируемое обучение: раздел машинного обучения, который работает с неразмеченными данными

Неконтролируемое обучение помимо прочего является распространенным типом машинного обучения. От контролируемого обучения его отличает то, что данные для него не размечены. Другими словами, цель модели машинного обучения состоит в том, чтобы извлечь как можно больше информации из набора данных, который не имеет меток или целей для прогнозирования.

Каким может быть такой набор данных и что мы можем с ним делать? В целом несколько меньше, чем с размеченным набором, так как у нас нет меток для прогнозирования. Однако мы способны извлечь достаточно информации и из неразмеченного набора данных. Вернемся к примеру с кошками и собаками в крайнем правом наборе данных на рис. 2.1. Он состоит из изображений кошек и собак, но в нем нет меток. Поэтому мы не знаем, какой тип домашнего животного представляет каждое изображение, и не можем спрогнозировать, соответствует новое изображение собаке или кошке. Однако можем выполнять другие задачи, например, определять, похожи ли две картинки друг на друга. Это то, на что способны алгоритмы неконтролируемого обучения. Такой алгоритм может группировать изображения на основе сходства, даже не зная, что представляет собой каждая группа (рис. 2.4). Если все сделано правильно, алгоритм сможет отделить изображения собак от изображений кошек и даже сгруппировать их по породам!

Рис. 2.4. Алгоритм неконтролируемого обучения вполне может извлекать информацию из данных. Например, он способен группировать похожие элементы

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

Основные направления неконтролируемого обучения — это кластеризация, понижение размерности и генеративное обучение.

АЛГОРИТМЫКЛАСТЕРИЗАЦИИ — алгоритмы‚ которые группируют данные в кластеры на основе сходства.

АЛГОРИТМЫПОНИЖЕНИЯРАЗМЕРНОСТИ — алгоритмы, которые упрощают данные и достоверно описывают их с меньшим количеством признаков.

ГЕНЕРАТИВНЫЕАЛГОРИТМЫ — алгоритмы, которые способны генерировать новые точки данных, похожие на существующие.

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

Алгоритмы кластеризации разбивают набор данных на группы похожих элементов

Как говорилось ранее, алгоритмы кластеризации — это алгоритмы, которые разбивают набор данных на группы схожих элементов. Чтобы проиллюстрировать это, вернемся к двум наборам данных, упомянутых в разделе «Контролируемое обучение…», — о жилье и спаме. Но теперь представьте, что у них нет меток. Это означает, что в наборе данных о жилье нет цен, а в наборе данных о почте нет информации о том, что электронные письма являются спамом. Начнем с набора данных о жилье. Что можно с ним сделать? Вот вам одна идея: мы могли бы каким-то образом сгруппировать дома по сходству. Например, можно сгруппировать их по местоположению, цене, размеру или сочетанию этих факторов. Такой процесс называется кластеризацией. Кластеризация — это ответвление неконтролируемого машинного обучения, занимающееся задачами группировки элементов в наборе данных, разбивая их на кластеры, где все точки данных похожи.

Теперь рассмотрим второй пример — набор данных электронных писем. Поскольку он не размечен, мы не знаем, является ли то или иное электронное письмо спамом. Однако можем выполнить кластеризацию набора. Алгоритм кластеризации разбивает изображения на несколько групп в зависимости от различных признаков электронного письма. Ими могут быть слова, использованные в сообщении, отправитель, количество и размер вложений или типы ссылок внутри письма. После кластеризации набора данных человек (или совместно человек и алгоритм контролируемого обучения) может обозначить эти кластеры такими категориями, как «Личные», «Социальные» и «Рекламные акции».

В качестве примера рассмотрим набор данных, содержащий девять электронных писем, которые нужно сгруппировать (табл. 2.1). Признаки набора данных — размер электронного письма и количество получателей.

Таблица2.1. Таблица электронных писем с указанием их размера и количества получателей

Электронная почта

Размер

Получатели

1

8

1

2

12

1

3

43

1

4

10

2

5

40

2

6

25

5

7

23

6

8

28

6

9

26

7

Сразу становится очевидно, что мы могли бы сгруппировать электронные письма по количеству получателей. Это создаст два кластера: один с электронными письмами, у которых два или менее получателей, и один с электронными письмами, у которых пять или более получателей. Мы могли бы также попытаться сгруппировать их в три группы по размеру. Но по мере того, как таблица будет становиться все больше, следить за группами станет все труднее и труднее. А что если построить график? Представим электронные письма в виде графика, где на горизонтальной оси указан размер, а на вертикальной — количество получателей. В итоге получим график, приведенный на рис. 2.5.

Рис. 2.5. График набора данных электронной почты

Здесь мы видим три четко определенных кластера (рис. 2.6).

Рис. 2.6. Можно сгруппировать электронные письма в три категории в зависимости от размера и количества получателей

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

Другие области применения кластеризации.

• Сегментациярынка — разделение покупателей на группы на основе демографических данных и предыдущего покупательского поведения для создания различных групповых маркетинговых стратегий.

• Генетика — объединение видов в группы на основе сходства генов.

• Медицинскаявизуализация — разделение изображения на части для изучения различных типов тканей.

• Рекомендацииповидео — разделение пользователей на группы на основе демографических данных и просмотренных ранее видео и применение этого приема для рекомендации пользователю роликов, которые смотрели другие члены их группы.

Подробнее о моделях неконтролируемого обучения

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

• КластеризацияK-средних. Этот алгоритм группирует точки, выбирая некоторые случайные центры масс и перемещая их все ближе и ближе к точкам, пока они не окажутся в нужных местах.

• Иерархическаякластеризация. Алгоритм начинается с группировки ближайших точек и продолжает работу, пока не получится нескольких четко определенных групп.

• Пространственнаякластеризациянаосновеплотности(DBSCAN). Этот алгоритм начинает группировать точки в местах с высокой плотностью, помечая изолированные точки как шум.

• Гауссовы моделисмешения. Алгоритм не присваивает точку одному кластеру, а присваивает доли точки каждому из существующих кластеров. Например, если есть три кластера, A, B и C, то алгоритм может определить, что 60 % точки принадлежит группе A, 25 % — группе B и 15 % — группе C.

Понижение размерности упрощает обработку данных без потери слишком большого объема информации

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

• размер;

• количество спален;

• количество ванных комнат;

• уровень преступности в районе;

• расстояние до ближайшей школы.

Этот набор данных состоит из пяти столбцов. А если нам требуется превратить его в более простой, с меньшим количеством столбцов, не теряя при этом большого количества информации? Давайте проделаем это, руководствуясь здравым смыслом. Присмотритесь повнимательнее к этим пяти признакам. Виден ли какой-то способ упрощения — возможно, способ объединить более мелкие категории в более общие?

При внимательном рассмотрении становится ясно, что первые три характеристики схожи, так как связаны с размером дома. Аналогично, четвертый и пятый признаки похожи друг на друга, поскольку связаны с качеством жизни в районе. Мы могли бы объединить первые три признака в больший признак «размер», а четвертый и пятый — в «благополучие района». Как же уплотнить признаки‚ касающиеся размера? Мы могли бы опустить данные о комнатах и спальнях и учитывать только размер или, возможно, взять какую-то другую комбинацию этих трех признаков. Таким же образом можно сжать признаки‚ касающиеся благополучия района. Алгоритмы понижения размерности ищут эффективные способы уплотнить первичные признаки (рис. 2.7, слева), потеряв при этом как можно меньше информации, сохранив данные как можно более нетронутыми и одновременно сумев упростить их для обработки и хранения (рис. 2.7, справа).

Рис. 2.7. Алгоритмы понижения размерности помогают упрощать данные

Почему этот процесс называется понижением размерности, если мы  всего лишь уменьшаем количество столбцов в данных? Модное словцо для обозначения количества столбцов в наборе данных — измерение. Подумайте вот о чем: если данные состоят из одного столбца, то каждая точка данных представляет собой одно число. Набор чисел может быть нанесен на график как набор точек на линии, которая имеет ровно одно измерение. Если данные состоят из двух столбцов, то каждая точка данных формируется парой чисел. Мы можем представить набор пар чисел как набор точек в городе, где первое число — это номер улицы, а второе — номер дома. Адреса на карте являются двумерными, потому что располагаются на плоскости. Что происходит, когда наши данные состоят из трех столбцов? В этом случае каждая точка данных формируется тремя числами. Мы можем представить, что если каждый адрес в городе — это здание, то первое и второе числа — это улица и номер здания, а третье — этаж. Это больше похоже на трехмерный город. Можно продолжать и дальше. А как насчет четырех чисел? Мы не можем по-настоящему это визуализировать, но если бы могли, то набор точек выглядел бы как набор мест в четырехмерном городе и т.д. Лучший способ представить себе четырехмерный город — это представить таблицу с четырьмя столбцами. А как насчет 100-мерного города? Это будет таблица со 100 столбцами, в которой у каждого человека есть адрес, состоящий из 100 значений. Картина, которую можно было бы вообразить, думая о более высоких измерениях, показана на рис. 2.8. Это придуманный город, в котором адреса имеют столько координат, сколько нам нужно. Поэтому, перейдя от пяти измерений к двум, мы превратили наш пятимерный город в двумерный. Вот почему это называется понижением размерности.

Рис. 2.8. Представление пространства более высоких измерений

Другие способы упрощения данных. Матричная факторизация и разложение по сингулярным значениям

Кажется, что кластеризация и понижение размерности совсем не похожи друг на друга, но на деле они не так уж сильно различаются. Предположим‚ у нас имеется таблица, полная данных, каждая строка соответствует точке данных, а каждый столбец — признаку. Следовательно, мы можем использовать кластеризацию для уменьшения количества строк в наборе данных (рис. 2.9), а понижение размерности — для уменьшения количества столбцов (рис. 2.10).

Возможно, вам интересно, есть ли способ, которым можно сократить количество строк и столбцов одновременно? И ответом будет — да! Два распространенных способа это проделать — разложение матрицынамножители и разложение посингулярнымзначениям. Эти два алгоритма преобразуют большую матрицу данных в произведение меньших матриц.

Рис. 2.9. Кластеризация может быть использована для упрощения данных за счет уменьшения количества строк в наборе данных путем группировки нескольких строк в одну

Рис. 2.10. Понижение размерности можно применять для упрощения данных за счет сокращения количества столбцов в наборе данных

Такие компании, как Netflix, широко задействуют матричную факторизацию для выработки рекомендаций. Представьте себе большую таблицу, где каждая строка соответствует пользователю, каждый столбец — фильму, а каждая запись в матрице — это рейтинг, который пользователь дал фильму. С помощью матричной факторизации можно извлечь определенные признаки, такие как тип фильма, актеры, появляющиеся в нем, и др., а также предсказать рейтинг, который пользователь даст ленте, на основе этих признаков.

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

Генеративное машинное обучение

Генеративноемашинноеобучение — одна из самых удивительных областей машинного обучения. Если вы видели ультрареалистичные лица, изображения или видео, созданные компьютерами, значит, вы видели генеративное машинное обучение в действии.