Три года я был эстонским пивоваром: придумывал рецепты и сам варил. Когда начал изучать Python, SQL и анализ данных, понял, что между подготовкой данных и подготовкой сусла много общего: оказывается, в цеху я занимался DS, но не подозревал об этом. Меня зовут Алексей Гаврилов, я сеньор дата-аналитик в ретейле. В этой статье расскажу, чем пивоварение и аналитика данных похожи изнутри.
Я отучился на инженера-теплотехника в Московском энергетическом институте. На последнем курсе выиграл грант и уехал учиться в Финляндию, где получил степень магистра по модному теперь направлению «устойчивое развитие». Вернулся в Россию, попробовал найти работу, но в 2016 году специалисты по устойчивому развитию были не нужны. Знакомые сказали, что есть вакансия пивовара в Эстонии. С пивоварением меня ничего не связывало, если не считать, что в детстве помогал дедушке в деревне варить пиво и гнать самогон :) Но в Эстонии ценятся финские дипломы, а инженерные навыки нужны на производстве. И вот я собираю вещи: впереди самолёт Москва — Таллин, автобус до Хапсалы, оттуда паром на остров Хийумаа. В Кярдле, единственном городе на острове, я проведу ближайшие три года жизни.
Пивоварня, на которой я работал, совсем небольшая: 670 квадратных метров. На них умещалось 10 танков на 1200 литров и один — на 2400. Варили примерно 150 тысяч литров пива в год, при этом оно продавалось во всех эстонских сетях. Один раз завозили пиво в Россию, однако дело не пошло. На пивоварне я многое делал сам, даже освоил «Иллюстратор», чтобы рисовать этикетки, потому что дизайнера у нас не было. Сейчас работаю в крупной компании, здесь мне не нужно делать всё, на что хватит рук. Но навык быть автономным и выкручиваться в условиях ограничений здорово пригодился в новой профессии.
Данные и пиво готовятся поэтапно, и эти этапы похожи
Пайплайны
Пайплайн у аналитика начинается с сырых данных, которые собираются ежесекундно из приложения или сайта. Их нельзя сразу же использовать: они не организованы как надо, не соответствуют форматам, могут быть дублированы или некорректны. У пивовара всё начинается с сырья — с солода.
И там, и там важно дробить…
Если солод раздробить слишком мелко, будет сложнее фильтровать и отделять дробину от сусла. Зато повысится экстрактивность. Идеальное дробление — когда скорлупка разделяется на четыре части, а ядро — на две.
Для данных необходимо определить степень детализации, то есть специфичность. Слишком высокий уровень агрегации затруднит нахождение важных закономерностей, а слишком низкий не даст получить значимые выводы. Если мы рассматриваем возраст пользователей, лучше разделить их на смысловые группы: дети, молодёжь, взрослые, а не брать данные по каждому году рождения отдельно.
...придавать форму...
Затем пивовар замешивает солод и воду и определяет ферментные паузы, которые критически повлияют на продукт и создадут нужную пропорцию простых и сложных сахаров. А аналитик денормализует таблицы, соединяя их с помощью команды join, создаёт временные таблицы, чтобы придать данным форму и вид, нужные для условий задачи.
... фильтровать...
Здесь у аналитиков всё проще: достаточно в оператор where добавить нужные условия. Это дело нескольких секунд. Пивовару надо профильтровать сусло через дробину. Это занимает несколько часов. Дробину мы собирали в мешки и отдавали местным фермерам, а те кормили ею коз. Точно так же некоторые компании открывают свои отработанные данные, чтобы подкармливать ими сообщество. Гармония и экологичность.
…отделять лишнее…
Пиво в водовороте отделяется от лишних примесей. Аналитик сортирует данные в нужном порядке с помощью оператора order by.
…дополнительно фильтровать
В аналитике эту функцию выполняет команда having — второй фильтр, но уже не строчный, а агрегированный. У пивовара из инструментов обычный фильтр: чтобы хмель и осадок не попали вместе с суслом в ферментационный танк и не испортили вкус пива.
Кульминация
Для финальной метаморфозы сусло отправляется в ферментационные танки, где дрожжи жадно потребляют сахара, чтобы выработать алкоголь и углекислый газ. Данные попадают в дашборды, где владельцы продукта и все заинтересованные стороны смогут употребить их в виде разных графиков.
Сорта пива и графиков. И холивары вокруг
У пива и у графиков есть сорта. У них — свои сторонники.
Лагер и эль — две разные идеологии. Первым пивом был эль, потому что раньше не было холодильников и возможности поддерживать низкую температуру. При изготовлении эля используются дрожжи верхового брожения, которым нужны более высокие температуры. Это приводит к образованию побочных продуктов брожения. Ещё такие дрожжи выдерживают большую концентрацию спирта.
Лагер проще масштабировать, потому что мы контролируем температуру брожения: при более низкой температуре дрожжи ведут себя предсказуемо. У лагера больше срок годности. Но в последние лет 5–10 компании стали возвращать в моду эль: стауты, ипы. Пивные гурманы ценят их, но такого пива много не выпьешь.
Я больше люблю лагер — классическое пиво. У светлого лагера благодаря щадящей обжарке солода лёгкий освежающий вкус с минимальной сладостью. Тёмный лагер слаще, с кофейным послевкусием, потому что при нагревании солода сахара карамелизируется. Большая часть пива в массмаркете — это лагер. Лагер среди графиков — столбчатая диаграмма и линейный график. Это классические простые диаграммы, они чаще всего встречаются в презентациях.
В дата-анализе более сложные и насыщенные диаграммы — это как в пивоварении эли и всё, что к ним относится, — стауты, ипы.
Например, диаграмму рассеяния (scatter plot) можно сравнить с IPA. Это пиво с сухим охмелением, его любят за смелый и сложный вкус. А диаграмма отображает сложные взаимосвязи между несколькими переменными смелым, но понятным способом. С её помощью визуализируют продолжительность жизни в зависимости от GDP.
Стаут — тёмное сливочное пиво с насыщенным вкусом. Как и тепловая карта, поначалу может показаться сложным и пугающим, но, как только вы его распробуете, откроете для себя множество вкусовых оттенков.
У графиков, как и у сортов пива, есть сторонники и противники. Например, лидер аналитики Google призывал вообще не применять круговую диаграмму. Основная проблема в том, что круговые диаграммы используют для отображения пропорций или процентов, а не абсолютных значений. И если у этой диаграммы нет заголовка или другой информации, она не помогает зрителю понять, на что он смотрит.
Параметры пива и графиков
Пиво становится тёмным лагером, если попадает в узкие диапазоны по алкоголю, горечи, плотности и цвету. Мы всюду измеряем температуру: смешивая воду и дроблёный солод, кипятя сусло и достигая ферментных пауз, охлаждая и подавая в бродильный бак, потом на всех этапах жизни дрожжей. И везде следим за метриками.
График тоже должен попадать в параметры и включать необходимые составляющие. В своей методологии дата-журналист Дэвид Маккэндлесс называет следующие:
-
информация — данные, с которыми вы работаете;
-
история — чёткое и убедительное повествование или концепция;
-
цель — задача для визуализации;
-
визуальная форма — эффективное визуальное выражение.
Ни в пиве, ни в графике нельзя нарушить параметры и выкинуть ингредиент. Визуальная форма без цели, истории или данных может быть эскизом или произведением искусства, но не дата-продуктом. Данные и визуальная форма без цели оторваны от контекста. Данные с целью, но без истории или визуальной формы непонятны.
Впервые требования к пиву появились в Германии в XVI веке в законе Reinheitsgebot о защите прав потребителей. В нём говорилось, что в напитке должно быть три ингредиента: хмель, вода и ячменный солод. Сейчас есть четвёртый элемент — дрожжи. Если выкинуть один элемент, продукт не будет называться пивом. Сегодня на полках магазинов встречается пивной продукт — напиток, в котором вместо солода используется более дешёвый несоложеный ингредиент, например рис или кукуруза.
Как аналитики добиваются, чтобы графики соответствовали параметрам и включали нужные ингредиенты? Всё начинается со сбора данных. Мы составляем спецификацию для разработчиков: что отслеживать, когда, какие параметры передавать. Ингредиенты для пива попадают в баки, а данные — в хранилище, где с помощью ETL-инструментов аналитики создают витрины для дальнейшей визуализации и мониторинга.
Аналитик следит, чтобы все данные корректно рассчитывались и переходили из одного состояния в другое. Пивовар следит, чтобы не отклониться от заданных параметров.
В пивоварении отклонение от параметров в лучшем случае поменяет вкус, в худшем — испортит всю партию. Если подать в бродильный бак слишком горячее сусло, погибнут дрожжи, и не начнётся брожение. Если неправильно прокипятить сусло и нарушить ферментные паузы, будет не хватать сахаров или нарушится их пропорция. Тогда изменится вкус напитка и содержание в нём алкоголя.
Некорректные данные показывают искажённую картину действительности и могут повести команду, которая на них опирается, по неверному маршруту. Допустим, вы неправильно рассчитали активных пользователей приложения и завысили их количество — получили некорректные данные по прибыли от рекламных блоков.
Но что происходит, если подготовка пива или данных пошла не по плану?
Не выкидываем сусло и дашборды, а выкручиваемся
Чтобы осветлить пиво и улучшить его вкус, сусло отделяют от осадка, медленно вращая мешалку на дне чана, это создаёт эффект водоворота, процесс называется whirlpool. Один раз у меня в чане сломался клапан — и в сусло полилась холодная вода. Нужно было бежать в другое отделение и перекрывать кран. Пока я это делал, вылилось почти 100 литров воды. Из-за этого снизилась начальная экстрактивность сусла, которая измеряется ареометром. После таких происшествий у сусла одна дорога — в канализацию. Но для маленькой пивоварни это серьёзные потери, поэтому пришлось импровизировать.
Тут пригодился давно ждущий своего часа рецепт медового пива. Разведённое водой сусло как раз подходило под него по характеристикам. По рецепту мёд можно было добавить перед процессом брожения. Мы начали регистрацию рецепта — и аккурат к завершению созревания свет увидел первый медовый сорт пива нашей пивоварни. Новинка получила неплохие отзывы в untappd, — это приложение, где пивные гурманы обсуждают напитки и ставят им оценки.
В аналитике вместо 100 литров воды на нас может вылиться много чего интересного — например, задвоенные события из-за бага в разработке. Соседний продукт по невероятному стечению обстоятельств использует такие же названия событий. Или DAG в AirFlow после многомесячной бесперебойной работы всё-таки сломался. Всё это не всегда можно отловить на этапе сбора, и только 120% retention rate заставляет аналитика усомниться в корректности данных.
К счастью, скрипт, в отличие от сусла, всё стерпит. Дашборд с такими показателями не придётся выкидывать: можно завести баг на разработку, уточнить источник события и починить DAG, поэтому такие казусы часто проходят бесследно, если не окажутся на столе у руководства.
Разжёвываем аналитическую историю, используя чутьё
Однажды летом на пивоварню приехали стажироваться студенты, а у меня закончился тёмный солод Munich TYPE II — он даёт пиву мимолётный шоколадно-кофейный вкус. Оставался солод Munich TYPE I. Но как понять, что он подойдёт на замену? Я показал ученикам способ пивных племён Южной Америки, который теперь использую в анализе данных: солод надо пожевать. Вкус солода — а я помнил вкус «мюниха 2» — совпал на 100%. Но мне нужно было подтвердить это. Я собрал в данных конечный результат, вбил всё в beertools — пивоваренную программу, получил подтверждение:
В мире аналитики, если нет нужных данных, правила строже: я попрошу отсутствующие данные собрать. Если их нельзя собрать по какой-то причине, можно заменить на данные из открытых источников. Но эта история показывает ещё и другую схожесть ремёсел: и в дата-анализе, и в пивоварении можно «пожевать» ингредиенты и представить финальный продукт, а уже потом варить пиво собирать график.
Иногда я начинаю строить пайплайн с конца: собираю макет дашборда и задаюсь вопросами. Кто будет использовать эту визуализацию для принятия решений? Какую историю она расскажет? Что может пойти не так? И я смотрю, пока не почувствую «вкус» аналитического сюжета, который ещё не приготовлен.
Однажды нужно было построить визуализацию для оценки популярности категорий контента. Но категорий очень много, они постоянно меняются. Я взял небольшой срез данных, создал из них витрину и подключил к инструменту визуализации, чтобы попробовать данные на «вкус». Несколько раз пересобирал витрину в разных срезах, подбирая нужные категории для внятной реализации, и наконец-то нашёл идеальное сочетание, которое уже использовал на всех данных. В итоге получилась довольно редкая визуализация — накопительная диаграмма с областями.
И пивовар, и аналитик — это full-stack
Пивовар должен разбираться в химии, биологии, физике и в инженерном деле. А если работаешь на маленьком производстве, как было у меня, то всё делаешь сам: дробишь солод на мельнице, занимаешься учётом акцизного склада, выписываешь накладные, разливаешь пиво, потом ещё едешь на ярмарку и презентуешь разработки.
Аналитик совмещает обязанности дата-инженера, дата-аналитика, bi-разработчика, бизнес-аналитика и продуктового аналитика. В чём он должен разбираться?
-
Статистика. Например, главная рутинная статистическая задача — это описательная статистика, скажем, по нахождению средних, медиан; построение гистрограмм, чтобы понимать, какие значения встречаются в выборке. Это помогает лучше описать и понять данные: какое значение нормальное, а какое может быть аномалией и требует дополнительной проверки.
-
Математика. Если не брать в расчёт элементарную математику, можно начать с теории множеств, вероятностей и статистики. Следующий шаг — изучение линейной алгебры и матанализа, чтобы разобраться в работе ML.
-
Программирование. Можно начать с основных структур данных: массив, связный список, стек, очередь. Начать решать лёгкие задачи на leetcode.com. Понимание оценки сложности алгоритма тоже будет плюсом.
-
Визуализация данных. Чтобы знать, как выражать информацию понятно и корректно.
И пивовары, и аналитики опрашивают потребителей
Но выводы, сделанные на основе опросов, необходимо проверять, перед тем как масштабировать на всю аудиторию. Долгожданные нововведения для одних могут стать проблемой для других. В таких случаях обычно проводят А/Б-тест, чтобы не только улучшить приёмочные метрики, но и не уронить другие. У пивоваров роль А/Б-тестов могут выполнять закрытые дегустации.
К тому же пивовары следят за отзывами на пиво в приложениях вроде Untappd.
Вместо заключения
И данные, и молодое пиво должны созреть, чтобы расцвести в полном великолепии.
Сусло только через месяц наберёт необходимую карбонизацию и алкоголь и сможет называться пивом. В это время пивовар следит за температурой, чтобы дрожжи не вышли из сна, и пробует пиво каждый день, убеждаясь, что вкус как надо.
И данные не сразу складываются в визуальную историю. Когда мы только запускаем анализ, то не знаем, какие неведомые линии отразят процессы, которые мы пытаемся понять. А пока аналитик поднимает упавшие даги, заводит баг-репорты о том, что не все события отслеживаются, и тоже пробует данные на вкус.
В итоге мы получаем дата-продукт и пивной продукт — совершенные в своём роде создания, которые находят потребителя далеко за пределами цеха, где произведены.
Помните, что злоупотребление алкоголем вредно для здоровья. Буду рад ответить в комментариях на вопросы как о пивоварении, так и о дата-анализе.
Автор: Алексей Гаврилов