делаю понятный график из двух непонятных — Дизайн на vc.ru
Прочитал первую книгу Тафти и захотел сделать редизайн какого-нибудь графика. Далеко ходить не пришлось — в дипломной работе моего друга как раз был слайд с двумя графиками, их мы сегодня и улучшим.
265 просмотров
Это слайд из презентации на предзащите диплома. Тема связана с машинным обучением, но для простоты вместо технических терминов я буду использовать пирожки в корзине. В конце статьи можно почитать, какие термины были под прикрытием пирожков.
Задача графиков найти такую длину пирожка, что 99% всех пирожков такой же длины или короче
Что не так с этими графиками
По горизонтали показана длина пирожка, а по вертикали количество пирожков такой длины в корзине.
Каждый столбик показывает суммарное количество пирожков для каждого диапазона длин. Например, второй столбик говорит нам, что есть примерно 1000 пирожков, у которых длина от 50 до 100.
У графика три проблемы:
- Оси не подписаны. Даже со словесными объяснениями я не понял, что происходит на графике
- Вертикальная ось неравномерная: отрезки 10²–10³ и 10³–10⁴ выглядят одинаковыми по высоте, но первый представляет 900 пирожков (1000–100), а второй 9000 (10000–1000). Создается впечатление, что пирожков в первом столбике меньше половины от корзинки, хотя их там намного больше, чем в остальных столбиках вместе взятых
- График не помогает найти эталонную длину пирожка, которую мы ищем — придется вычислять
Второй график — ящик с усами, он же box plot. По вертикали указано количество пирожков. Друг построил его когда понял, что первый график не решил задачу.
Тут уже лучше видно, что бóльшая часть пирожков длиной от ~15 до ~30, а средняя длина около 20.
Проблемы три:
- Оси не подписаны
- График так же не помогает найти эталонную длину пирожка
- Такой график мало кто видел в своей жизни. Как читать его без пояснений автора или ныряния в интернет — непонятно
Новый график
Теперь мы знаем про проблемы старых графиков, какие данные они отображают и какую задачу решают. Пора сделать новый график, который решит все проблемы.
- Стало видно, что бóльшая часть пирожков имеет длину до 50. Теперь с помощью графика легко обосновать выбор этой длины как эталонной. Наглядно видно, что площадь графика левее 50 занимает около 99% от всего графика. Пирожки длиннее 50 — очень редкие случаи, на которые можно забить. Это главное отличие графика от старых, где выбор эталонной длины пирожка не был очевиден ни автору, ни зрителю
- Каждый столбик теперь отвечает за одно число, а не отрезок.
- Вертикальная ось стала равномерной. Ушло искажение — теперь два любых отрезка равной длины обозначают одинаковое количество пирожков. Это помогло увидеть, сколько на самом деле пирожков с конкретной длиной
- Оси стали показывать размах данных — минимальные и максимальные значения. А еще избавились от ненужных засечек, которые никак не помогали зрителю понять решение задачи
- Оси обрели понятные подписи. График стал более самостоятельным, его стало проще понять без объяснений автора
Что же было вместо пирожков
Сейчас будет небольшое погружение в программирование. Старался объяснить так, чтобы любой смог понять.
В языке программирования «Питон» есть много функций, которые делают разные вещи: одна читает ввод с клавиатуры, другая вычисляет квадратный корень числа. Каждая функция занимает несколько строчек кода. Каждая строчка — инструкция для компьютера. Например, print(‘hello’) это инструкция «напечатать слово hello в консоль», а return a + b — «вычислить сумму a и b и вернуть это значение».
Токен — смысловой кусочек инструкции. Если разобрать последнюю строку на токены, то получится список [return, a, +, b], состоящий из 4 токенов. Будем называть это число длиной строки. То есть длина строки return a + b равна 4, а print(‘hello’) — 2.
Длина пирожка — это «длина функции» — длина самой длинной строки в этой функции. В примере выше она равна 4, а на графике показана горизонтальной осью X. В оригинале ось назвали «Length of the longest line of function».
На вертикальной оси Y показываем количество функций такой длины. В оригинале ось назвали «# of such functions».
Задача поиска оптимальной длины функции родилась из-за ограничений машинного обучения. Если вкратце, то при включении больших длин в данные для обучения, нам не хватит памяти на компьютере, чтобы обучить модель. Оптимальное решение — взять большинство функций, а на редкие и длинные забить.
Что почитать
Если хотите узнать больше про представление количественной информации, рекомендую прочитать книгу Эдварда Тафти «The Visual Display of Quantitative Information».