Візуалізація – це не одна задача
"Потрібно зробити графік" може означати кілька різних завдань з різними вимогами. Дослідницький аналіз даних, який виконується під час побудови моделі, потребує швидких, тимчасових діаграм, які може створити та викинути даністех, щоб відчути дані. Моніторинг моделей у виробництві вимагає інформаційних панелей, які оновлюються автоматично та сигналізують про проблему, коли вона з’являється, часто для аудиторії інженерів, які повинні реагувати на те, що бачать. Пояснення результатів нетехнічним зацікавленим сторонам вимагає відшліфованих, підібраних візуалізацій, розроблених для чіткого донесення конкретної точки зору, а не для заохочення будь-якої дослідницької діяльності. Розглядаючи ці завдання як однакові та вирішувані одним інструментом, – це часта причина розчарування — інструмент, оптимізований для однієї з цих ролей, зазвичай не підходить для інших.
Matplotlib та Seaborn: швидкі, статичні та точні
Matplotlib є базовою Python бібліотекою для малювання, яка надає детальний контроль над усіма елементами фігури, але це супроводжується відносноverbose кодом. Seaborn побудований на основі Matplotlib і пропонує статистично-обізнані типи діаграм — розподільні графіки, ящикові діаграми, теплові карти — з розумними зауваженнями та значно менше коду для типових завдань, але це супроводжується дещо меншим рівнем контролю на низькому рівні. Обидва генерують статичні зображення, що саме по собі правильно для дослідження всередині ноутбука, де дані аналітики хочуть створити гістограму або теплову карту кореляції в одному рядку, подивитися на них і перейти до наступного питання, а також правильно для звіту чи публікації, яка потребує фіксованої, відтворюваної фігури, вбудованої в документ.
Вони не підходять для будь-чого, що вимагає інтерактивності після створення зображення — масштабування до конкретного періоду часу, наведення курсора на точку, щоб побачити її точне значення або фільтрація діаграми за допомогою натискання на позначку легенди. Це фундаментально інший вимог, і використання Matplotlib для побудови чогось інтерактивного зазвичай означає боротьбу з інструментом замість його використання таким чином, як призначено.
Plotly: інтерактивність для дашбордів та моніторингу моделей
Plotly генерує графіки з вбудованим зумом, інструментами підказки та вибором одразу, і природно інтегрується з фреймворками для створення дашбордів та середовищами ноутбуків, що робить його особливо придатним для сценаріїв моніторингу моделей. Кілька типів графіків часто зустрічаються достатньо, щоб їх варто виділити окремо: гістограма важливості ознак, відсортована та горизонтальна, яка показує, на які вхідні дані найбільше покладається модель; матриця невідповідностей, представлена як теплова карта для задач класифікації, роблячи візуальний шаблон помилок миттєвим, а не таблицею чисел; і розсіяна діаграма фактичного значення проти прогнозованого значення для задач регресії, з посиланням на діагональну лінію, яка показує, що виглядає досконала передбачення, щоб систематична упередженість — точки послідовно над або під лінією — була видимою на перший погляд, а не занурювалася в агрегатний показник помилок.
Power BI: дашборди для нетехнічної аудиторії
Power BI займає іншу нішу – інструмент бізнес-аналітики для підприємств, розроблений для безкоду (або з низьким коду) користувачів, із сильним інтегрованням у корпорачну інфраструктуру — безпосереднім підключенням до SQL Server, SharePoint або подібних систем, автоматичними оновленнями даних за розкладом, щоб дашборд залишався актуальним без ручного втручання, рівнем безпеки на рівні рядків, щоб різні користувачі бачили лише дані, до яких вони мають право, та з мобільними додатками для перегляду дашбордів поза офісом. Це саме ті вимоги, які потрібні для дашборду KPI – показники ключових результатів діяльності, фінансові показники або показники операційної ефективності, що аналізуються менеджерами, які не будуть писати код Python для дослідження даних самостійно та потребують чогось, що просто працює, коли вони відкривають його.
Power BI є поганим рішенням, на відміну від цього, для швидкої, кодової ітерації, яку потребує дані-науковець під час активного розроблення моделі, або для тісного зв’язку візуалізації з внутрішнім станом живого ML пайплайну. Правило велике, яке випливає з цього, є простим: використовуйте Power BI для полірованих, запланованих, бізнес-орієнтованих звітів, призначених для нетехнічних зацікавлених сторін, і використовуйте інструменти на основі Python — Plotly або легку фреймворк додатків, як Streamlit, щоб швидко обгорнути скрипт Python в інтеракний веб-інтерфейс, для технічних дашбордів, які використовуються командою, що будує та підтримує ML систему.
Практична справа: продуктивність та вибір кольорів, які зберігаються у великих масштабах
Графік, який виглядає добре з тисячами точок, може стати непридатним для використання з мільйонами. Поширені рішення включають агрегацію даних перед побудовою графіків замість побудови кожного рядка даних безпосередньо, зменшення роздільної здатності часових серій до більш грубого значення, коли повна роздільна здатність не є візуально відмінною на рівні масштабування, яке використовується для перегляду, та використання режиму рендерингу на основі WebGL (доступного в Plotly) для діаграм розсіювання з дуже великою кількістю точок, оскільки стандартне рендерингове SVG помітно сповільнюється при збільшенні кількості точок до тисяч, а не десятків тисяч. Для дійсно великих наборів даних спеціалізовані бібліотеки рендерингу, розроблені для агрегації точок у растрове зображення на льоту, є наступним кроком, коли навіть WebGL має труднощі.
Вибір кольорів — це менший, але не менш важливий детальний момент: палітри, дружні до кольору сліпих і сприйнятно однорідні, такі як viridis або cividis, повинні бути за замовчуванням, а не як додаткова увага, оскільки значна частина будь-якої аудиторії має певну форму колірного зору, і графік, який покладається на розрізнення червоного та зеленого кольорами, просто не спрацює для тих глядачів. Обмеження кількості унікальних кольорів в одному графі до семи або восьми є практичним лімітом, після якого більшість глядачів мають труднощі з достовірним визначенням і запам’ятанням, який колір відповідає якому класу.
Часті запитання
Коли варто використовувати Plotly замість Matplotlib?
Використовуйте Matplotlib або Seaborn для швидких, статичних графіків під час дослідження даних або для фіксованого зображення у звіті. Використовуйте Plotly, коли графіку потрібна інтерактивність — можливість збільшувати, переглядати при наведенні курсора або вбудовувати його в динамічний дашборд, який оператори та зацікавлені сторони будуть досліджувати самі, а не просто швидко озиратися.
Чи є Power BI хорошим вибором для робочого процесу даних науки?
Рідко для щоденного розроблення моделей, оскільки він не призначений для швидкої, кодової ітерації, яка передбачає. Він стає правильним інструментом тоді, коли результати потрібно представити нетехнічній, бізнес-орієнтованій аудиторії на регулярному основі — для цієї конкретної задачі він пропонує інтеграцію та функції контролю доступу, які Python бібліотека малювання не намагається забезпечити.
Як зберегти Plotly графік чутливим при великому обсязі даних?
Агрегуйте або зменште обсяг даних перед малюванням замість відображення кожного окремого рядка, і перейдіть до WebGL-заснованого рендерингу точок Plotly для великої кількості точок, оскільки стандартний рендеринг помітно сповільнюється, коли на графіку міститься десятки тисяч точок або більше.
Чому вибір палітри кольорів має значення не лише з естетичної точки зору?
Значна частина будь-якої аудиторії має певну ступінь колірбудівельного порушення, тому палітри, які покладаються на розрізнення відтінків, такі як червоний і зелений, можуть зробити графік нечитабельним для тих глядачів. Палітри, що відповідають сприйняттю, та доступні для людей з колірбудівельним порушенням, такі як viridis, усувають це, а також легше читаються всіма, а не лише людьми з колірбудівельним порушенням.
Що таке теплова карта матриці плутанини та для чого вона корисна окрім просто звітування про точність?
Вона показує конкрельний патерн помилок класифікатора, а не лише їх кількість — наприклад, чи послідовно він плутає одну певну категорію з іншою, що повністю приховується одним числом точності. Цей патерн часто вказує безпосередньо на те, що потрібно виправити, наприклад, дисбаланс класів або перекриття розподілів ознак між двома конкретними класами.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію the simulation