как нормализовать статистику для радиолокационной карты - PullRequest
3 голосов
/ 03 февраля 2011

Я использую RaphaelJS, чтобы нарисовать «радиолокационную карту» для отображения статистических данных.Для каждой оси следует принимать значения от 0 до 10.

Например, долины многоугольника с его центральной точкой прямо в центре диаграммы [10,10,10,10,10].Простой ...

Однако, может случиться так, что данные выглядят так:

[26, 14, 48, 18, 1],
[ 3, 14,  8,  9, 5],
[10,  6,  4, 16, 3]

, что приводит к этому (отображение многоугольника с его центральной точкой внизу слева от графика):

radar off scale

Если бы я нормализовал данные на основе их наибольшего значения (в данном случае 48), все остальные центральные точки были бы слишком близко к центру диаграммы, ии его информативное значение будет около 0.


те же данные, нормализованные на основе его наибольшего значения:

[5.42, 2.92, 10,   3.75, 0.21],
[0.63, 2.92, 1.67, 1.88, 1.04],
[2.08, 1.25, 0.83, 3.34, 0.63]

radar normalized

Так что теперьдругие центральные точки сгруппированы в центре диаграммы и потеряли всю свою объяснительную силу ... Если бы было более 3 центральных точек, они, скорее всего, перекрывали бы друг друга.

centered

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

Любые идеикак это сделать, или, может быть, другой подход, как нормализовать?

Ответы [ 2 ]

11 голосов
/ 03 февраля 2011

Как предполагает @ daroczig , лог-преобразование данных - это путь. Я просто хотел добавить, что существует множество типов преобразований, которые вы можете выполнять.

Возможно, пример может помочь в этом. Я буду использовать визуализацию Параллельные координаты , чтобы проиллюстрировать пример, но те же концепции должны применяться к Радарной карте . Все эксперименты проводятся в MATLAB.

Рассмотрим набор данных Fisher Iris , он содержит 150 экземпляров, в которых каждая точка имеет 4 измерения. Если мы добавим точку выброса за пределы диапазона нормальных значений, мы получим:

org-vs-outlier

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

Ответ заключается в нормализации данных путем применения какого-либо преобразования. Ниже показано сравнение четырех разных преобразований:

  • Мин / Макс нормализация :

    x_new = (x-min)/(max-min), так что x_new in [0,1]

  • г-* 1035 стандартизация *:

    x_new = (x-mean)/std, где x_new ~ N(0,1)

  • нормализация softmax с логистической сигмоидой :

    x_new = 1/(1+exp(-(x-mean)/std)) и x_new in [0,1]

  • нормализация энергии :

    x_new = x / ||x||, так что x_new in [0,1] (сделать каждую точку единичным вектором)

minmax-standarize-softmax-energy

2 голосов
/ 03 февраля 2011

Преобразование ваших данных в логарифмическая шкала не вариант?

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

...