Хороший анализ данных

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Автор: Патрик Райли

Особая благодарность: Дайан Танг, Рехан Хан, Элизабет Такер, Амир Наджми, Хилари Хатчинсон, Джоэл Дарнауэр, Дейл Нил, Анер Бен-Арци, Сандерс Кляйнфельд, Дэвид Уэстбрук и Барри Розенберг.

История

Обзор

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

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

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

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

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

Технические

Давайте рассмотрим некоторые методы проверки ваших данных.

Посмотрите на свои раздачи

Большинство практиков используют сводные метрики (например, среднее значение, медиана, стандартное отклонение и т. д.) для информирования о распределениях. Однако обычно следует исследовать гораздо более подробные представления распределения, создавая гистограммы, кумулятивные функции распределения (CDF), графики квантилей-квантилей (QQ) и т. д. Эти более подробные представления позволяют обнаруживать важные особенности данных, такие как мультимодальное поведение или значительный класс выбросов.

Рассмотрите выбросы

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

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

Учитывайте шум

Случайность существует и обманет нас. Некоторые люди думают: «У Google так много данных; шум уходит». Это просто неправда. Каждое число или сводка данных, которые вы производите, должны сопровождаться понятием вашей уверенности в этой оценке (с помощью таких показателей, как доверительные интервалы и p-значения ).

Посмотрите на примеры

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

Важно, как вы сэмплируете эти примеры:

  • Если вы классифицируете базовые данные, посмотрите на примеры, принадлежащие каждому классу.
  • Если это большой класс, просмотрите больше образцов.
  • Если вы вычисляете число (например, время загрузки страницы), убедитесь, что вы смотрите на экстремальные примеры (возможно, самые быстрые и самые медленные 5%; вы ведь знаете, как выглядит ваше распределение, верно?), а также точки по всему пространству. измерений.

Разделите свои данные

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

Каждый раз, когда вы нарезаете данные для сравнения двух групп (например, экспериментальная и контрольная или даже «время A» и «время B»), вы должны знать о смешанных сдвигах. Микс-сдвиг — это когда объем данных в срезах для каждой группы разный. В результате может возникнуть парадокс Симпсона и другие недоразумения. Как правило, если относительный объем данных в срезе одинаков для двух ваших групп, вы можете смело проводить сравнение.

Учитывайте практическую значимость

При большом объеме данных может возникнуть соблазн сосредоточиться исключительно на статистической значимости или сосредоточиться на деталях каждого бита данных. Но вам нужно спросить себя: «Даже если верно, что значение X на 0,1% больше, чем значение Y, имеет ли это значение?» Это может быть особенно важно, если вы не можете понять/классифицировать часть ваших данных. Если вы не можете понять некоторые строки пользовательского агента в своих журналах, то, представляют ли они 0,1% или 10% данных, имеет большое значение в том, насколько вы должны исследовать эти случаи.

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

Проверяйте согласованность во времени

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

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

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

Подтвердите и подсчитайте свою фильтрацию

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

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

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

Соотношения должны иметь четкие числитель и знаменатель

Наиболее интересными показателями являются соотношения основных показателей. Часто интересная фильтрация или другие варианты данных скрыты в точных определениях числителя и знаменателя. Например, что из следующего на самом деле означает «Запросы/Пользователь»?

  • Запросы / Пользователи с запросом
  • Запросы/Пользователи, посетившие Google сегодня
  • Запросы/Пользователи с активной учетной записью (да, я бы определил активную )

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

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

Процесс

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

Раздельная проверка, описание и оценка

Я думаю, что анализ данных состоит из трех взаимосвязанных этапов:

  1. Валидация 1 : Считаю ли я, что данные непротиворечивы, что они были собраны правильно и представляют то, что я думаю, они делают?
  2. Описание: Какова объективная интерпретация этих данных? Например, «Пользователи делают меньше запросов, классифицированных как X», «В экспериментальной группе время между X и Y на 1% больше» и «Меньше пользователей переходит на следующую страницу результатов».
  3. Оценка: с учетом описания говорят ли нам данные о том, что происходит что-то хорошее для пользователя, для Google или для всего мира?

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

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

Подтвердите настройки эксперимента и сбора данных

Прежде чем просматривать какие-либо данные, убедитесь, что вы понимаете контекст, в котором они были собраны. Если данные получены из эксперимента, посмотрите на конфигурацию эксперимента. Если это инструментарий нового клиента, убедитесь, что у вас есть хотя бы приблизительное представление о том, как собираются данные. Вы можете заметить необычные/плохие конфигурации или ограничения на количество пользователей (например, действительные данные только для Chrome). Все примечательное здесь может помочь вам построить и проверить теории позже. Некоторые вещи, которые следует учитывать:

  • Если эксперимент запущен, попробуйте сами. Если не можете, то хотя бы просмотрите скриншоты/описания поведения.
  • Проверьте, не было ли чего-то необычного во временном диапазоне эксперимента (праздники, большие запуски и т. д.).
  • Определите, какие группы пользователей участвовали в эксперименте.

Проверьте, что не должно измениться

На этапе «Проверка», прежде чем ответить на интересующий вас вопрос (например, «Увеличилось или уменьшилось количество кликов при добавлении изображения лица?»), исключите любую другую изменчивость данных, которая может повлиять на эксперимент. Например:

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

Эти вопросы имеют смысл как для сравнения эксперимента/контроля, так и для изучения тенденций с течением времени.

Стандартный первый, пользовательский второй

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

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

Измерьте дважды или более

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

Проверить воспроизводимость

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

Если модель не воспроизводима, вы, вероятно, не улавливаете что-то фундаментальное в основном процессе, в результате которого были получены данные.

Проверьте соответствие с прошлыми измерениями

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

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

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

Новые метрики следует сначала применять к старым данным/функциям.

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

Выдвигайте гипотезы и ищите доказательства

Как правило, анализ данных для сложной проблемы является итеративным. 2 Вы обнаружите аномалии, тенденции или другие особенности данных. Естественно, вы будете разрабатывать теории, объясняющие эти данные. Не просто разработайте теорию и заявите, что она верна. Ищите доказательства (внутри или вне данных), чтобы подтвердить/опровергнуть эту теорию. Например:

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

У хорошего анализа данных есть что рассказать. Чтобы убедиться, что это правильная история, вам нужно рассказать ее самому себе, а затем найти доказательства того, что она неверна. Один из способов сделать это — спросить себя: «Какие эксперименты я бы провел, чтобы подтвердить/опровергнуть историю, которую я рассказываю?» Даже если вы не можете или не можете проводить эти эксперименты, это может дать вам идеи о том, как проверить данные, которые у вас есть.

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

Исследовательский анализ выигрывает от сквозной итерации

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

Следите за отзывами

Обычно мы определяем различные показатели успеха пользователя. Например, нажимали ли пользователи на результат? Если вы затем отправите эти данные обратно в систему (что мы и делаем в ряде мест), вы создадите множество возможностей для путаницы при оценке.

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

Образ мышления

В этом разделе описывается, как работать с другими и делиться идеями.

Анализ данных начинается с вопросов, а не с данных или техники

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

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

Будьте и скептиком, и чемпионом

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

  • Какие еще данные я могу собрать, чтобы показать, насколько это круто?
  • Что я мог найти такого, что опровергало бы это?»

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

Корреляция! = Причина

Создавая теории о данных, мы часто хотим утверждать, что «X вызывает Y» — например, «медленная работа страницы приводит к тому, что пользователи меньше нажимают на нее». Даже xkcd знает , что вы не можете просто установить причинно-следственную связь из-за корреляции. Размышляя над тем, как бы вы подтвердили теорию причинности, вы обычно можете получить хорошее представление о том, насколько достоверной является теория причинности.

Иногда люди пытаются придерживаться корреляции как значимой, утверждая, что даже если нет причинно-следственной связи между А и В, должно быть что-то лежащее в основе совпадения, чтобы один сигнал мог быть хорошим индикатором или прокси для другого. Эта область опасна для задач проверки нескольких гипотез; как также знает xkcd , при достаточном количестве экспериментов и достаточном количестве измерений некоторые сигналы будут выровнены для конкретного эксперимента. Это не означает, что одни и те же сигналы будут выравниваться в будущем, поэтому вы обязаны рассмотреть причинно-следственную теорию, такую ​​как «существует скрытый эффект C, который вызывает как A, так и B», чтобы вы могли попытаться проверить, насколько правдоподобно Это.

Аналитик данных часто должен ориентироваться в этих причинно-следственных вопросах для людей, которые хотят использовать данные. Вы должны разъяснить этим потребителям, что вы можете и что не можете сказать о причинно-следственной связи.

Сначала поделитесь с коллегами, а затем с внешними потребителями

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

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

Ожидайте и принимайте невежество и ошибки

Есть много ограничений на то, что мы можем узнать из данных. Нейт Сильвер убедительно доказывает в «Сигнале и шуме» , что, только признавая пределы нашей уверенности, мы можем добиться более точного предсказания. Признание невежества — это сила, которая обычно не сразу вознаграждается. В данный момент это плохо, но в долгосрочной перспективе это принесет большую пользу вам и вашей команде. Еще хуже, когда вы совершаете ошибку и обнаруживаете ее позже (или даже слишком поздно!), но активное признание своих ошибок вызывает уважение. Это уважение выражается в доверии и влиянии.

Заключительные мысли

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

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


  1. Это иногда называют «первичным анализом данных». См. статью в Википедии об анализе данных

  2. Технически он должен быть итеративным, только если вы проводите исследовательский, а не подтверждающий анализ.