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

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

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

История

Обзор

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

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

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

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

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

Технический

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

Посмотрите на свои дистрибутивы

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

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

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

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

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

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

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

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

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

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

Разделите ваши данные

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

Каждый раз, когда вы нарезаете данные для сравнения двух групп (например, экспериментальной и контрольной или даже «времени А» и «времени Б»), вам необходимо учитывать сдвиги в смеси. Сдвиг микса — это когда объем данных в срезах для каждой группы различен. Результатом может стать парадокс Симпсона и другие путаницы. Как правило, если относительный объем данных в срезе одинаков в двух группах, вы можете смело провести сравнение.

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

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

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

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

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

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

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

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

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

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

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

Коэффициенты должны иметь четкие числитель и знаменатель.

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

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

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

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

Процесс

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

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

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

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

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

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

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

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

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

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

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

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

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

Сначала стандартное, потом индивидуальное

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

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

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

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

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

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

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

Проверьте соответствие предыдущим измерениям.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Будьте одновременно скептиком и защитником

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

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

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

Корреляция != Причинно-следственная связь

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

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

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

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

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

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

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

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

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

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

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


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

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