Візуалізація багатовимірних даних за допомогою діаграм Ендрюс

В епоху Big Data графічне представлення багатовимірних даних є вельми актуальним завданням. Однак результат візуалізації не завжди відповідає очікуванням. Ось приклад не самого наочного графіка для зображення багатовимірних даних «Іриси Фішера»:


Це звичайна точкова діаграма. Можна навіть побачити в ній закономірність. Є група точок (виділений червоним сорт setosa) які явно виділяються на тлі інших. Але скільки часу знадобилося, щоб розглянути всю діаграму і зрозуміти це? А тут адже тільки 4 вимірювання. Що буде, коли у вас будуть дані з 10-ю вимірами? Не важко здогадатися, що тоді завдання візуальної класифікації стане набагато складніше.

Діаграми Ендрюс

Девід Ендрюс (Andrews, David F.) в 1972-му році описав зручний спосіб візуалізації багатовимірних даних. Суть цього методу така:
Кожна точка представляється у вигляді ряду Фур'є:



Отримана функція зображується на графіку в проміжку
Таким чином, кожній точці з набору даних відповідає лінія на графіку в цьому проміжку.
Візьмемо для наочності той же набір даних, який використовувався для точкової діаграми вище, і зобразимо ці дані з допомогою діаграми Ендрюса.

Код на МП Python
import numpy as np
import pylab as pl

def andrews_curve(x,theta):
curve = list()
for th in theta:
x1 = x[0] / np.sqrt(2)
x2 = x[1] * np.sin(th)
x3 = x[2] * np.cos(th)
x4 = x[3] * np.sin(2.*th)
curve.append(x1+x2+x3+x4)
return curve

accuracy = 1000
samples = np.loadtxt('iris.csv', usecols=[0,1,2,3], delimiter=',')
theta = np.linspace(-np.pi, np.pi, accuracy)

for s in samples[:20]: # setosa
pl.plot(theta, andrews_curve(s, theta), 'r')

for s in samples[50:70]: # versicolor
pl.plot(theta, andrews_curve(s ,theta), 'g')

for s in samples[100:120]: # virginica
pl.plot(theta, andrews_curve(s, theta), 'b')

pl.xlim(-np.pi,np.pi)
pl.show()







Можна помітити, що лінії відповідні схожим значенням також мають схожу форму. При цьому розмірність даних не має ніякого значення, кожній точці завжди буде відповідати одна лінія на графіку. Так само не становить праці виділити сорт setosa (лінії зображені червоним кольором) в окремий клас. Головним досягненням діаграми Ендрюса в даному випадку є, те, що ми отримали зрозумілу і легко читатися уявлення наших даних.

Діаграми Ендрюс далеко не єдина можливість візуалізувати багатовимірні дані. Але цей метод простий у реалізації, зрозумілий і може без проблем застосовуватися на практиці.

Список літератури:
en.wikipedia.org/wiki/Andrews_plot
● Andrews, David F. (1972). «Plots of High-Dimensional Data». International Biometric Society 18 (1): 125-136. JSTOR 2528964.
glowingpython.blogspot.ua/2014/10/andrews-curves.html

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.