Testing Stage’19: Technical | Security | Management and Approach — Early bird till 21 Dec. Hurry up!
×Закрыть

Визуализация данных в работе аналитика: типы диаграмм и какую выбрать

Меня зовут Анна Пономарева, я Game Analyst в Plarium Kharkiv. В этом году наш департамент запустил мобильный RPG-проект Stormfall: Saga of Survival и теперь занимается его поддержкой. Моя задача в проекте — оперативно анализировать игровые процессы и предоставлять отчеты для корректной настройки баланса.

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

Важно не просто показать информацию, а сделать это максимально понятно и прозрачно для заказчика, выделив ключевые показатели. Как именно это сделать, я и постараюсь рассказать в статье.

Как не надо делать

Часто в попытке выжать из имеющейся информации всё мы можем получить нечто несуразное и пугающее.

Или еще хуже.

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

Этапы анализа данных

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

Формулирование цели

Каждое исследование должно отвечать на ряд поставленных вопросов — не нужно плодить исследования для исследований.

Сбор данных

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

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

Подготовка данных

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

Иногда требуется расширение метрик, например добавление вычислительной информации (прирост, ранг, номер и т. п.). Иногда следует сократить количество признаков (переменных) или перейти к вспомогательным переменным, принимающим одно из двух значений: true (1)/false(0).

На этом этапе сырые данные превращаются в полезную входную информацию для моделирования и анализа.

Исследование данных

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

Визуализация и построение выводов

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

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

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

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

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

Выбор диаграмм для визуализации

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

Джин Желязны в книге «Говори на языке диаграмм» пишет, что (почти) каждая идея может быть выражена с помощью сравнения. Требуется лишь определить тип сравнения данных:

  • покомпонентное: процент от целого;
  • позиционное: соотношение объектов;
  • временное: изменения во времени;
  • частотное: число объектов в интервалах;
  • корреляционное: зависимость между переменными.

Автор предлагает использовать следующую таблицу для выбора диаграмм:

Если проводить классификацию по объектам, то можно выделить такие типы визуализации:

  • детерминированные зависимости: графики, диаграммы, временные ряды;
  • статистические распределения: гистограммы, матрицы диаграмм рассеяния, график «ящик с усами»;
  • иерархии: диаграммы связей, дендрограммы;
  • сети: графы, дуговые диаграммы;
  • геовизуализация: карты, картограммы.

Чтобы упростить себе работу, я использую схему по выбору диаграмм Эндрю Абела, в которую внесла некоторые правки и адаптировала под свои задачи.

Оригинальную схему Эндрю Абела можно посмотреть тут.

Выбор диаграммы на конкретном примере

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

Сначала я расписала, как собрать данные, какие показатели необходимо рассчитать и как именно это сделать, как должна выглядеть визуализация. Затем специалисты из Game BI Department (отвечают за базу данных для всех наших проектов) проверили правильность алгоритма сбора, оптимизировали запрос и сформировали дашборд по моему дизайну.

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

  1. Сравниваем 2 признака (количество получаемых и затрачиваемых ресурсов) — значит используем столбчатую диаграмму.
  2. У нас несколько источников для получения ресурсов и способов их расхода — поэтому добавляем структуру к столбчатой диаграмме (каждый источник и потребитель обозначаем своим цветом).
  3. Отслеживаем, как изменяется приход и расход ресурсов в зависимости от игрового дня, — горизонтальной оси задаем соответствующий параметр.
  4. Для удобного чтения все income-действия (приход) отображаем сверху горизонтальной оси, а outcome (расход) — снизу. Это позволяет визуально оценить величину разницы.
  5. Чтобы было понятно, в какие периоды жизни игрока возникает профицит, а в какие дефицит того или иного ресурса, накладываем на столбчатую диаграмму линейный график, который визуализирует вычисляемое поле разницы.

Пример выявленного профицита предмета (линейный график выше столбцов).

Пример жизненного цикла ресурса и его перехода из профицитной категории к дефицитной (линейный график ниже горизонтальной оси).

В итоге наша диаграмма показывает приход и расход ресурсов в разные игровые дни и демонстрирует наличие дефицита или профицита ресурсов.

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

Периодичность

Большинство выводов по исследованиям теряют актуальность со временем. Некоторые данные необходимо уточнять ежедневно, некоторые мониторить ежемесячно и т. д. Необходимо сразу четко классифицировать признаки с точки зрения частоты обновления:

  • требующие непрерывного мониторинга (стандартные показатели retention, конверсии и т. п.);
  • данные, динамику которых следует оценивать периодически (результаты А/В-тестов, динамику набора уровней и т. п.).

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

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

Полезные ссылки

Грамотная организация дашбордов

Игровая аналитика

Инструменты визуализации данных

Как выбрать диаграмму

Диаграммы Google

Диаграммы в Tableau

11 правил визуализации данных

Диаграмма Санкей

Книга «Говори на языке диаграмм»

Выводы

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

LinkedIn

16 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Спасибо за статью!

Очень хорошая статья. Спасибо!
Особенно зацепили:

Каждое исследование должно отвечать на ряд поставленных вопросов — не нужно плодить исследования для исследований.

Мне вообще нравится думать об исследовании как о «разговоре с данными», или, вернее, «допросе», спокойном и последовательном :)

особое внимание стоит уделить правильной интерпретации данных
зачастую смириться с существующим форматом данных

Всегда есть тонкое желание придраться к форматированию, но «мы здесь собрались» ради информации (или вернее знания), а не во имя бессмысленного перфекционизма :)

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

Очень крутая статья, спасибо!

Отдельно хочу вспомнить мое любимое: «Хорошая визуализация должна не давать ответы, а ставить вопросы.»

Основная проблема — когда делаешь аналитику для заказчика — это научить, его, заказчика, правильно читать диаграммы :). При этом должен сказать, что если заказчик хочет учиться (а дата-сцаентист умеет объяснять вещи простыми словами), то все обычно получается.
Ну а что касается предложенного метода выбора диаграмм — ну да, в простейших случаях этого хватит. Вот только как быть, когда:
1. Данных чуть меньше чем до ... фига, и даже на 4K экран их не уместить.
2. Данные (сильно) многомерны
3. Зависимости между переменными меняются со временем
Вот примеры решения:
1. youtu.be/wCAnGSJ4bwk — диаграмма в виде мультика (заметим, что можно было бы представить множество кривых в виде 3d графика, но тогда бы терялось восприятие эволюции кривых).
2. letyourmoneygrow.com/...​3/81_AIRT__Air-T-Inc..png — исследование временнОй (не)устойчивости корреляций двух случайных величин (доходности по акции AIRT и индексу SP500)
3. Пример того, как чрезмерная агрегация-усреднение дает не то что не полное, а в корне неверное представление о сути вещей
letyourmoneygrow.com/...​a-superficial-statistics

1. Данных чуть меньше чем до ... фига, и даже на 4K экран их не уместить.

Это легко ресемплинг и огибающие и с учетом имульсов, если таковые нужны. Ну и фильтрация разная.

2. Данные (сильно) многомерны

А вот с этим до сих пор не представляю как в общем случае. PCA иногда поможет, но чаще нет.

Данных чуть меньше чем до ...

Это легко

Э, не. Вот, допустим, тебе нужно разместить на одном графике данные о нескольких тысячах акций — причем не просто некий summary, а довольно детальную статистику.
Тут, конечно, надо прежде всего искать компромисс между детализацией и читабельностью.
Конкретно для вышеупомянутой задачи я выбрал monthy time series of box plots of daily returns :)
letyourmoneygrow.com/...​s/2018/10/octoberVola.pdf
Причем сделал это в pdf — чтоб можно было увеличивать. Следующим этапом было бы создание интерактивного графика — наводишь на определенный месяц мышку, а тебе в поп-апе дополнительная инфа. Вот поэтому я и учусь на баристу осваиваю ЯваСкрипт
dou.ua/forums/topic/25517

2. Данные (сильно) многомерны
А вот с этим до сих пор не представляю как в общем случае

Так и я в общем случае не представляю (и даже не пытаюсь :)).
Зато в каждом частном, пожалуй, найду приемлемое решение. Причем начинаю я обычно с ручного скрининга — даже если данных терабайты, выборочный просмотр малого сэмпла может быть весьма полезен (с петабайтами сталкиваться, правда, еще не приходилось)

Я не про жабаскрипт, а про методы. Выше их написал. Пример хороших реализаций можешь увидеть в AdobeAudition (в младенчестве CoolEdit). Там где осцилограмма(амлитуда).

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

*визуализация аудиосигнала звучит круто, почти как «слышать глазами»

Мне кажется Виктор , когда сделал упоминание про

AdobeAudition

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

Нет. Там очень приличное решение по визуализации. Написать те алгоритмы фильтрации и FFT элементарно, а вот отображать аудиосигнал так, чтобы было удобно пользователю и не тормозило, очень сложно.
И кстати собственно алгоритмы обработки сигнала там никакие — так на поиграться сгодятся.

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

А чего там сложного то? Ну сигнал и сигнал (считай, одномерный временной ряд) с возможностью zoom’а.

Вот в зуме одна большая сложность, в скорости отображения другая.

Да,

компромисс между детализацией и читабельностью

 — это прям в точку.

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

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

3. Пример того, как чрезмерная агрегация-усреднение дает не то что не полное, а в корне неверное представление о сути вещей

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

2. Данные (сильно) многомерны

«в лоб» это задачу не решишь, важно ставить корректные вопросы и искать компромисс). Методы машинного обучения могут в этом помочь — но важно четко понимать цель и уметь работать с этим «мощным аппаратом».

horizon graph по идее как раз для этого придумали

Подписаться на комментарии