Шрифт:
Интервал:
Закладка:
А теперь мы вступили в эру задач с большими n и большими p, когда имеется огромное количество случаев, каждый из которых может быть очень сложным, – подумайте об алгоритмах, анализирующих все посты, лайки и дизлайки каждого из миллиардов подписчиков Facebook, чтобы определить, какие новости и рекламу показывать.
Такие новые захватывающие задачи привели в науку о данных массу новых людей. Но давайте еще раз вспомним утверждение, приведенное в начале книги: данные не говорят сами по себе. Это мы наполняем их смыслом, а потому с ними нужно обращаться умело и с осторожностью, чтобы избежать многих потенциальных ловушек при наивном использовании алгоритмов. В этой главе мы приведем примеры некоторых классических катастроф, но сначала рассмотрим фундаментальную задачу по сведению данных в нечто полезное.
Выявление закономерностей
Одна из стратегий при работе с чрезмерным количеством случаев – формирование групп по схожести – процедура, известная как кластеризация, или неконтролируемое обучение (обучение без учителя), поскольку мы должны определить эти группы сами, нас не предупреждают заранее об их существовании. Нахождение таких однородных кластеров может быть и конечной целью. Например, можно определить группы людей с одинаковыми предпочтениями или предубеждениями, установить их характеристики, дать название, придумать алгоритмы для классификации будущих случаев. А затем давать таким выявленным кластерам соответствующие рекомендации фильмов, политическую, коммерческую и социальную рекламу – в зависимости от мотивации людей, построивших алгоритм.
Прежде чем конструировать алгоритм для классификации или прогнозирования, возможно, придется сократить объем исходных данных по величине p до приемлемого размера, поскольку изначально она может быть очень большой (в каждом конкретном случае измерялось слишком много характеристик). Этот процесс называется конструированием признаков. Просто представьте, сколько измерений можно сделать на человеческом лице. Чтобы разрабатывать программное обеспечение для распознавания лиц и сравнения их с базой данных, можно ограничиться измерением нескольких важных признаков. Те измерения, которые не нужны для прогноза или классификации, можно определить с помощью визуализации данных или методов регрессионного анализа, а затем отбросить. Кроме того, уменьшить число признаков можно с помощью «составных» измерений, которые включают большую часть информации.
Последние разработки в области чрезвычайно сложных моделей (вроде тех, что относятся к так называемому глубокому обучению) предполагают, что необходимости в первоначальном этапе сокращения данных может и не быть, то есть один алгоритм способен обработать все исходные данные.
Классификация и прогнозирование
Сегодня доступно ошеломляющее количество различных методов для построения алгоритмов классификации и прогнозирования. Исследователи обычно используют то, к чему привыкли в ходе своей профессиональной деятельности: например, статистики предпочитают регрессионные модели, а специалисты по теории вычислительных машин и систем – логику на основе правил и нейронные сети, которые были альтернативными способами имитации человеческого познания. Реализация любого из этих методов требует специальных навыков и программного обеспечения, но сейчас появились удобные программы, которые позволяют выбирать методы с помощью меню и тем самым поощряют менее однобокий подход, когда эффективность важнее, чем философия моделирования.
Начав измерять и сравнивать практическую эффективность алгоритмов, люди неизбежно стали соревноваться, и сейчас такие платформы, как Kaggle.com, проводят конкурсы в сфере науки о данных. Какая-нибудь коммерческая или академическая организация предоставляет участникам набор данных: это может быть задача по обнаружению китов по зафиксированным звукам, регистрация темной материи по астрономическим данным или прогнозирование числа госпитализированных больных. В каждом случае конкурсантам предоставляется тренировочный (обучающий) набор данных для конструирования алгоритма, а также тестовый набор для определения его эффективности. Особенно популярен конкурс (привлекающий тысячи команд) по созданию алгоритма для следующей задачи.
Можно ли сказать, какие пассажиры выжили после гибели «Титаника»?
Во время своего первого рейса «Титаник» столкнулся с айсбергом и медленно затонул в ночь с 14 на 15 апреля 1912 года. Только около 700 из 2200 пассажиров и членов экипажа оказались в спасательных шлюпках и выжили, и последующие исследования и расчеты сосредоточились на том, что шансы попасть в шлюпку и выжить критически зависели от того, билет какого класса у вас был.
Алгоритм, прогнозирующий выживание, может на первый взгляд показаться странным выбором проблемы в рамках стандартного цикла PPDAC, поскольку такая ситуация вряд ли возникнет снова, поэтому не представляет никакой ценности для будущего. Но один человек помог мне найти мотивацию. В 1912 году Фрэнсис Сомертон уехал из Илфракомба в Северном Девоне, расположенного недалеко от того места, где я родился и вырос. Отправившись искать счастье в США, он купил билет третьего класса за 8 фунтов и 1 шиллинг на новенький «Титаник», оставив в Европе жену и маленькую дочь. Однако так и не добрался до Нью-Йорка – его надгробие находится на церковном кладбище в Илфракомбе (рис. 6.1). Точный прогнозирующий алгоритм сможет сказать нам: Фрэнсису Сомертону действительно просто не повезло или его шансы на самом деле были невелики.
Рис. 6.1
Надгробие Фрэнсиса Сомертона на кладбище в Илфракомбе. Надпись гласит: «Также Фрэнсис Уильям, сын вышеуказанного, который погиб при катастрофе “Титаника” 14 апреля 1912 года в возрасте 30 лет»
План – собрать имеющиеся данные и попробовать ряд различных методов для создания алгоритмов, предсказывающих тех, кто выжил. Это можно считать скорее проблемой классификации, чем прогнозирования, поскольку все события уже случились. Данные – это открытая информация о 1309 пассажирах «Титаника»: потенциальные предикторные (предсказывающие) переменные включают их полное имя, форму обращения, пол, возраст, класс на судне (первый, второй, третий), сумму, уплаченную за билет, были ли они частью семьи, место посадки на судно (Саутгемптон, Шербур, Куинстаун), а также неполные данные о некоторых номерах кают[125]. Зависимая переменная – это указатель, выжил человек (1) или нет (0).
На этапе анализа важно разделить данные на две части: тренировочный набор, используемый для создания алгоритма, и тестовый набор, который служит только для оценки эффективности – смотреть на тестовый набор до готовности алгоритма было бы серьезным жульничеством. Как и в конкурсе Kaggle, мы возьмем в качестве тренировочного набора случайную выборку из 897 случаев, а оставшиеся 412 человек составят тестовый набор.