Data Science в действии - Леонард Апельцин - E-Book

Data Science в действии E-Book

Леонард Апельцин

0,0

Beschreibung

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

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

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 852

Veröffentlichungsjahr: 2023

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.



Леонард Апельцин
Data Science в действии
2023

Переводчик Д. Брайт

Леонард Апельцин

Data Science в действии. — СПб.: Питер, 2023.

ISBN 978-5-4461-1982-0

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

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

Посвящается моему наставнику Александру Вишневскому, научившему меня рассуждать.

Предисловие

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

Когда соискатель ушел, я задумался о том, как сам когда-то получал образование в области data science. Насколько же тогда все было иначе! В 2006 году эта сфера еще не являлась столь вожделенным карьерным выбором, а учебных курсов по этому направлению просто не существовало. В те дни я был бедным студентом выпускного курса, с трудом оплачивавшим аренду жилья в дорогом Сан-Франциско. В качестве исследования для дипломной работы мне нужно было провести анализ миллионов генетических связей с заболеваниями. Тогда я осознал, что мои навыки вполне переносимы и на другие сферы анализа, — с этого и началась моя консалтинговая деятельность в области обработки данных.

Не ставя в известность своего научного руководителя, я начал предлагать услуги по аналитике разным компаниям в районе залива Сан-Франциско. Эта подработка позволяла платить по счетам, так что особо выбирать среди поручаеsмых заданий не приходилось. В результате я подписался работать с различными проектами по анализу данных — от простого статистического анализа до сложного предиктивного моделирования. Иногда я сталкивался, казалось бы, c неразрешимыми задачами, но в итоге мое упорство брало верх. Благодаря своему усердию я освоил всяческие нюансы разнообразных техник аналитики и научился наилучшим образом их комбинировать для получения элегантных решений. Но более важно то, что я узнал, каким образом привычные приемы могут давать ошибки и как их преодолевать для достижения продуктивных результатов. В итоге я стал ведущим специалистом в этой области.

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

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

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

Писать эту книгу было трудно, и в одиночку я бы точно не справился. К счастью, моя семья и друзья поддержали меня во время этого трудоемкого путешествия. В первую очередь хочу поблагодарить свою мать, Ирину Апельцин (Irina Apeltsin). Она подогревала мою мотивацию в тяжелые дни, когда стоявшие передо мной задачи казались неразрешимыми. Также благодарю мою бабушку, Веру Фишер (Vera Fisher), чьи дельные советы не давали мне сбиться с пути, пока я перелопачивал материал для своей книги.

Кроме того, выражаю признательность своему другу детства Вадиму Стольнику (Vadim Stolnik). Вадим — великолепный дизайнер графики, который помог мне оформить книгу бесчисленными иллюстрациями. Также благодарю своего друга и коллегу Эммануэля Йеру (Emmanuel Yera), который оказывал поддержку в самом начале проекта. Не могу не упомянуть и мою дорогую партнершу по танцам Александрию Лоу (Alexandria Law), которая не давала мне пасть духом в трудную минуту и помогла выбрать обложку для книги.

Выражаю свою благодарность и редактору издательства Manning Элеше Хайд (Elesha Hyde). На протяжении последних трех лет ты неустанно трудилась, стремясь сделать так, чтобы мой труд оказался полезным для читателей. Я буду вечно признателен за твои терпение, оптимизм и непреклонное стремление к качественному результату. Ты стимулировала меня к оттачиванию своих писательских навыков, и эти усилия в конечном итоге пойдут на пользу читателям. Хочу также поблагодарить технического редактора Артура Зубарова (Artur Zubarov) и технического корректора Рафаэллу Вентальо (Rafaella Ventaglio). Ваше содействие помогло мне сделать книгу более грамотной и чистой. Выражаю благодарность главному редактору Дейрдре Хиам (Deirdre Hiam), выпускающему редактору Тиффани Тейлор (Tiffany Taylor), корректору Кэйти Теннант (Katie Tennant) и всем остальным сотрудникам Manning, приложившим руку к созданию этой книги.

Отдельная благодарность всем рецензентам — Адаму Шеллеру (Adam Scheller), Адриану Бейерцу (Adriaan Beiertz), Алану Богусевичу (Alan Bogusiewicz), Амарешу Раджасекхарану (Amaresh Rajasekharan), Айону Рою (Ayon Roy), Биллу Митчеллу (Bill Mitchell), Бобу Квинтусу (Bob Quintus), Дэвиду Джейкобсу (David Jacobs), Диего Каселле (Diego Casella), Дункану Макрею (Duncan McRae), Элиасу Рангелю (Elias Rangel), Франку Л. Кинтане (Frank L. Quintana), Гжегожу Бернасу (Grzegorz Bernas), Джейсону Хейлсу (Jason Hales), Жан-Франсуа Морену (Jean-François Morin), Джеффу Смиту (Jeff Smith), Джиму Амрхайну (Jim Amrhein), Джо Юстесену (Joe Justesen), Джону Касевичу (John Kasiewicz), Максиму Купферу (Maxim Kupfer), Майклу Джонсону (Michael Johnson), Михалу Амброзевичу (Michał Ambroziewicz), Раффаэлле Вентальо (Raffaella Ventaglio), Рави Саджнани (Ravi Sajnani), Роберту Диане (Robert Diana), Симоне Сгуацца (Simone Sguazza), Шрираму Мачарле (Sriram Macharla) и Стюарту Вудворду (Stuart Woodward) — ваши рекомендации помогли мне сделать эту книгу лучше.

О книге

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

Для кого эта книга

Эта книга задумана для новичков в сфере data science. Когда я представляю типичного читателя, то вижу студента выпускного курса кафедры экономики, желающего освоить более широкий спектр возможностей аналитики, или уже окончившего вуз химика, который хочет пойти по карьерному пути, больше ориентированному на обработку данных. Среди читателей вполне могут оказаться также успешные фронтенд-разработчики с очень ограниченными знания­ми по математике, которые подумывают переключиться на работу с данными. Предполагается, что никто из моих потенциальных читателей не посещал ранее занятия по этой науке и не имеет опыта применения различных техник анализа данных. Цель книги как раз в том, чтобы компенсировать этот недостаток навыков.

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

Структура издания

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

Первое практическое задание связано с базовой теорией вероятности.

• В главе 1 рассказывается, как вычислять вероятности с помощью простого кода Python.

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

• В главе 3 разбирается метод оценки вероятностей с помощью рандомизированных симуляций. Здесь для эффективного выполнения симуляции вводится библиотека численных вычислений NumPy.

• В главе 4 содержится решение этого практического задания.

Второе практическое задание расширяется из области вероятностей на область статистики.

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

• В главе 6 речь пойдет о центральной предельной теореме, которую можно использовать для составления статистических прогнозов.

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

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

• В главе 9 приводится решение данного практического задания.

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

• В главе 10 показано, как измерение центральности можно использовать для кластеризации данных по группам. Здесь также вводится библиотека scikit-learn, которая позволит выполнять кластеризацию более эффективно.

• В главе 11 разбирается тема извлечения и визуализации географических данных. Извлечение из текста выполняется с помощью библиотеки GeoNamesCache, а для визуализации применяется библиотека отрисовки карт Cartopy.

• В главе 12 приводится решение.

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

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

• В главе 14 демонстрируется применение уменьшения размерности для повышения эффективности матричного анализа. Здесь параллельно с объяснением методов уменьшения размерности, содержащихся в библиотеке scikit-learn, рассматривается математическая теория.

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

• В главе 16 демонстрируется, как извлекать текст из онлайн-данных с помощью библиотеки парсинга HTML Beautiful Soup.

• В главе 17 приводится решение.

Пятое практическое задание завершает книгу разбором теории сетей и машинного обучения (МО) с учителем.

• В главе 18 разъясняется базовая теория сетей, а также вводится библиотека NetworkX, используемая для анализа данных, представленных в виде графа.

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

• В главе 20 вводится простой алгоритм машинного обучения с учителем, основанный на теории сетей. Попутно с этим демонстрируются распространенные приемы оценки эффективности моделей МО при помощи scikit-learn.

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

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

• В главе 23 приводится решение этого практического задания.

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

О коде

Эта книга содержит множество примеров исходного кода как в пронумерованных листингах, так и в тексте. В обоих случаях код для наглядности выделяется моношириннымшрифтом. В листингах он структурирован по модульным фрагментам и содержит письменные пояснения, сопровождающие каждую модульную часть. Такой стиль представления кода отлично подходит для блокнотов Jupyter, поскольку они связывают функциональные примеры с текстовым описанием. В связи с этим исходный код каждого практического задания доступен для скачивания в блокнотах Jupyter по адресу www.manning.com/books/data-science-bookcamp. Эти блокноты объединяют листинги с обобщенным описанием из книги. Как обычно, в блокнотах между отдельными ячейками существуют взаимозависимости, поэтому рекомендуется выполнять примеры кода именно в том порядке, в котором они приводятся в блокноте, иначе вы рискуете допустить ошибки.

Об авторе

Леонард Апельцин (Leonard Apeltsin) является главой отдела обработки данных в Anomaly. Его команда использует продвинутые методы аналитики для выявления случаев мошенничества, растрат и злоупотреблений в сфере здравоохранения. До этого Леонард руководил проектами машинного обучения в Primer AI — стартапе, специализирующемся на обработке естественного языка. Будучи одним из основателей, он помог расширить команду Primer AI с четырех до почти ста сотрудников. Прежде чем начать развивать стартапы, Леонард работал в сфере науки, выявляя скрытые паттерны в заболеваниях, связанных с генетикой. Его открытия публиковались в приложениях к журналам Science и Nature. Леонард получил степени бакалавра по биологии и computer science в Университете Карнеги — Меллона, а также степень доктора наук в Калифорнийском университете в Сан-Франциско.

Иллюстрация на обложке

Рисунок на обложке называется Habitante du Tyrol — «Житель Тироля». Эта иллюстрация взята из коллекции рисунков, изображающих гардероб жителей различных стран, под названием Costumes de Différents Pays, собранной Жаком Грассе де Сен-Совером (Jacques Grasset de Saint-Sauveur) (1757–1810) и опубликованной им во Франции в 1797 году. Каждая такая иллюстрация была нарисована от руки и раскрашена. Богатое разнообразие коллекции Грассе де Сен-Совера отчетливо напоминает нам о том, насколько культурно разнообразными были города и отдельные области мира всего лишь 200 лет назад. Живя изолированно друг от друга, люди говорили на разных диалектах и языках. На улицах города или в сельской местности по одежде человека можно было легко определить, где он живет и какое положение в обществе занимает.

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

Во времена, когда сложно отличить одну книгу по компьютерным наукам от другой, издательство Manning демонстрирует изобретательность и инициативность компьютерного бизнеса, используя обложки, основанные на богатом разнообразии жизни различных регионов два века назад, возвращаемом к жизни благодаря иллюстрациям Грассе де Сен-Совера.

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

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

Мы будем рады узнать ваше мнение!

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

Практическое задание 1.  Поиск выигрышной стратегии в карточной игре

Условие задачи

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

В игре будет правило: вы сможете попросить меня остановить ее в любой момент. Как только вы говорите: «Стоп», я переворачиваю очередную карту и игра заканчивается. То есть эта карта будет выступать в роли последней, и если она окажется красной, доллар ваш, как показано на рис. ПЗ.1.

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

Рис. ПЗ1.1. Игра с переворачиванием карт. Начинаем с перетасованной колоды. Далее я поочередно переворачиваю верхние карты. На рисунке а я только что перевернул четвертую карту. Вы говорите: «Стоп». На рисунке б я перевернул пятую, последнюю, карту. Она оказалась красной. Доллар ваш

Описание

Для решения задачи нужно знать следующее.

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

2. Как отобразить вероятность событий для ряда значений интервалов.

3. Как симулировать случайные процессы, такие как подбрасывание монеты и перетасовка карт, с помощью Python.

4. Как оценивать свою уверенность в решениях, полученных в результате симуляций, используя анализ доверительных интервалов.