Предположим, у нас есть измеримых переменных , мы выполняем ряд измерений , а затем хотим выполнить разложение по сингулярным значениям результатов, чтобы найти оси наибольшей дисперсии для точек в мерном пространстве. ( Примечание: предположим , что средства я уже вычитали, так ⟨ я ⟩ = 0 для всех ) .
Теперь предположим, что одна (или более) переменная имеет существенно отличающуюся характеристическую величину, чем остальные. Например , 1 может иметь значение в диапазоне 10 - 100 , а остальные может быть около 0,1 - 1 . Это сильно изменит ось наибольшей дисперсии в направлении оси .
Разница в величинах может быть просто из-за неудачного выбора единицы измерения (если мы говорим о физических данных, например, километрах против метров), но на самом деле разные переменные могут иметь совершенно разные измерения (например, вес против объема), поэтому не может быть никакого очевидного способа выбрать «сопоставимые» единицы для них.
Вопрос: Я хотел бы знать, существуют ли какие-либо стандартные / общие способы нормализации данных, чтобы избежать этой проблемы. Меня больше интересуют стандартные методы, которые производят сравнимые величины для для этой цели, а не придумывают что-то новое.
РЕДАКТИРОВАТЬ: Одна возможность состоит в нормализации каждой переменной по ее стандартному отклонению или что-то подобное. Однако тогда возникает следующая проблема: давайте интерпретируем данные как облако точек в мерном пространстве. Это облако точек можно вращать, и этот тип нормализации даст разные конечные результаты (после SVD) в зависимости от вращения. (Например, в самом крайнем случае представьте, что данные вращаются точно, чтобы выровнять главные оси с основными осями.)
Я ожидаю, что не будет никакого способа, не зависящего от вращения, но я был бы признателен, если бы кто-то мог указать мне на некоторое обсуждение этого вопроса в литературе, особенно в отношении предостережений при интерпретации результатов.
Ответы:
Три общие нормализации - центрирование, масштабирование и стандартизация.
Пусть - случайная величина.X
Центрирование:
Полученный будет иметь ¯ х * = 0 .x∗ x∗¯=0
Масштабирование
Результирующий будет иметь ∑ i x ∗ i 2 = 1Икс* ΣяИкс*я2= 1 .
Стандартизация - это центрирование, а затем масштабирование. Полученный будет иметь ¯ х * = 0 и Σ я х * я 2 = 1 .Икс* Икс*¯= 0 ΣяИкс*я2= 1
источник
Вы абсолютно правы в том, что наличие отдельных переменных с очень разными отклонениями может быть проблематичным для PCA, особенно если это различие связано с разными единицами измерения или разными физическими размерами. По этой причине, если все переменные не являются сопоставимыми (одна и та же физическая величина, одни и те же единицы), рекомендуется выполнять PCA на корреляционной матрице вместо ковариационной матрицы. Посмотреть здесь:
Ведение PCA на корреляционной матрице эквивалентно стандартизации всех переменных перед анализом (а затем выполнение PCA на ковариационной матрице). Стандартизация означает центрирование, а затем деление каждой переменной на ее стандартное отклонение, чтобы все они стали единичной дисперсией. Это можно рассматривать как удобную «смену единиц», чтобы сделать все единицы сопоставимыми.
Можно спросить, может ли иногда быть лучший способ «нормализации» переменных; Например, можно выбрать деление на некоторую надежную оценку дисперсии, а не на необработанную дисперсию. Это было задано в следующей ветке, и вы увидите последующее обсуждение (хотя там не было дано определенного ответа):
Наконец, вы были обеспокоены тем, что нормализация стандартным отклонением (или чем-то подобным) не является инвариантом вращения. Ну да, это не так. Но, как заметил @whuber в приведенном выше комментарии, не существует способа, инвариантного к вращению: изменение единиц отдельных переменных не является операцией, инвариантной к вращению ! Здесь не о чем беспокоиться.
источник
Обычная техника перед применением PCA состоит в том, чтобы вычесть среднее значение из образцов. Если вы этого не сделаете, первым будет собственный вектор. Я не уверен, что вы это сделали, но позвольте мне поговорить об этом. Если мы говорим в коде MATLAB: это
Как видно из рисунка, я думаю, вам следует вычесть среднее значение из данных, если вы хотите лучше проанализировать (со) дисперсию. Тогда значения не будут между 10-100 и 0,1-1, но их среднее будет все равно нулю. Дисперсии будут найдены как собственные значения (или квадрат сингулярных значений). На найденные собственные векторы не влияет масштаб измерения для случая, когда мы вычитаем среднее так же, как и для случая, когда мы этого не делаем. Например, я протестировал и наблюдал следующее, что говорит, что вычитание среднего значения может иметь значение для вашего случая. Таким образом, проблема может быть вызвана не дисперсией, а переводом.
источник
Для нормализации данных для PCA также использовалась следующая формула
гдеИкс это необработанное значение для этого показателя для страны с в год T , и Икс
описывает все исходные значения во всех странах для этого показателя за все годы.
источник