Правильный способ стандартизации/масштабирования/нормализации нескольких переменных в соответствии со степенным законом распределения для использования в линейной комбинации

Я хотел бы объединить несколько показателей узлов в графе социальной сети в одно значение для ранжирования узлов:

in_degree + betweenness_centrality = informal_power_index

Проблема в том, что in_degree и betweenness_centrality измеряются в разных масштабах, скажем, 0-15 против 0-35000, и следуют степенному закону распределения (по крайней мере, определенно не нормальному распределению).

Есть ли хороший способ изменить масштаб переменных, чтобы одна из них не доминировала над другой при определении informal_power_index?

Три очевидных подхода:

  • Стандартизация переменных (вычесть mean и разделить на stddev). Кажется, это слишком сильно сжало бы распределение, скрывая огромную разницу между значением в длинном хвосте и рядом с пиком.
  • Перемасштабирование переменных в диапазоне [0,1] путем вычитания min(variable) и деления на max(variable). Это кажется ближе к устранению проблемы, поскольку не изменит форму распределения, но, может быть, на самом деле это не решит проблему? В частности средства будут другими.
  • Уравняйте средние значения, разделив каждое значение на mean(variable). Это не устранит разницу в масштабах, но, возможно, средние значения более важны для сравнения?

Любые другие идеи?


person Jacob Rigby    schedule 01.04.2009    source источник


Ответы (4)


Вы, кажется, хорошо разбираетесь в основных дистрибутивах. Естественное перемасштабирование заключается в замене каждой переменной ее вероятностью. Или, если ваша модель неполная, выберите преобразование, которое примерно соответствует этому. Если это не удается, вот связанный подход: если у вас есть много одномерных данных, из которых можно построить гистограмму (каждой переменной), вы можете преобразовать каждую в 10-балльную шкалу в зависимости от того, находится ли она в процентиле 0-10% или 10-20%-процентиль ...90-100%-процентиль. Эти преобразованные переменные по своей конструкции имеют равномерное распределение на 1,2,...,10, и вы можете комбинировать их по своему усмотрению.

person Community    schedule 01.04.2009

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

((1 - (in_degee/15) * 2000) + ((1 - (betweenness_centrality/35000) * 2000) = ?

person Thad    schedule 01.04.2009
comment
Разве этот подход не будет иметь ту же проблему, что и метод стандартизации, он сожмет распределение так, что процентили 95 и 99 будут выглядеть довольно близко друг к другу, даже несмотря на то, что они совершенно разные (подумайте о банковском счете Билла Гейта по сравнению с... моим!) - person Jacob Rigby; 01.04.2009
comment
Этот метод помещает все в пределах процента. Он не основан на том, как число отклоняется от среднего. Но, возможно, я не совсем понимаю вашу методологию. 2000 год был произвольным. Чем он больше, тем больше уникальных значений можно создать. - person Thad; 01.04.2009

Очень интересный вопрос. Может ли что-то вроде этого работать:

Предположим, что мы хотим масштабировать обе переменные в диапазоне [-1,1]. Возьмем пример betweeness_centrality с диапазоном 0-35000.

  1. Выберите большое число в порядке диапазона переменной. В качестве примера выберем 25 000
  2. создать 25 000 ячеек в исходном диапазоне [0-35000] и 25 000 ячеек в новом диапазоне [-1,1]
  3. Для каждого числа x-i найдите номер ячейки, в которой оно находится в исходной ячейке. Пусть это будет Б-я
  4. Найдите диапазон B-i в диапазоне [-1,1].
  5. Используйте максимум/минимум диапазона B-i в [-1,1] в качестве масштабированной версии x-i.

Это сохраняет распределение по степенному закону, а также уменьшает его до [-1,1] и не имеет проблемы, с которой сталкивается (x-mean)/sd.

person user1489476    schedule 28.06.2012

нормализация до [0,1] была бы моей короткой рекомендацией по объединению двух значений, поскольку она сохранит форму распределения, как вы упомянули, и должна решить проблему объединения значений.

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

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

person Community    schedule 01.04.2009
comment
Ваш второй абзац, по-видимому, описывает подход к стандартизации, когда вы переходите от необработанного значения метрики к количеству стандартных отклонений, значение которых является средним. Все это лучше всего работает с нормальными дистрибутивами и хуже с другими дистрибутивами. - person Jacob Rigby; 01.04.2009
comment
согласен, как я указал в третьем абзаце, вам нужно посмотреть на статистические измерения, относящиеся к вашему набору данных, если они представляют собой распределения мощности, это дисперсия, моменты, асимметрия и, возможно, эксцесс. - person ; 02.04.2009