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

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

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

История

Обзор

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

Это нетривиальный вопрос, особенно учитывая тип данных, которые мы регулярно собираем в 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. Технически, он должен быть итеративным только в том случае, если вы проводите исследовательский, а не подтверждающий анализ.

,

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

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

История

Обзор

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

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

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

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

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

Технический

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процесс

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Остерегайтесь обратной связи

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

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

Мышление

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

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

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

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

Быть скептиком и чемпионом

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

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

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

Корреляция! = Причинность

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

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

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

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

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

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

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

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

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

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

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


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

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