SVD / PCA için “normalleştirme” değişkenleri


17

N ölçülebilir değişkenimiz olduğunu varsayalım , bir dizi ölçüm yapıyoruz ve sonra noktaları için en yüksek varyansın eksenlerini bulmak için sonuçlarda tekil değer ayrışması yapmak istiyoruz. içerisinde boyutlu alan. ( Not: araçlarının zaten çıkarıldığını varsayalım , bu yüzden tüm için )(a1,a2,,aN)M>NMNaiai=0i

Şimdi değişkenlerden birinin (veya daha fazlasının) diğerlerinden önemli ölçüde farklı karakteristik büyüklüğe sahip olduğunu varsayalım. Örneğin, , aralığında değerlere sahipken, geri kalanı 0.1-1 civarında olabilir . Bu, a_1'nin eksenine karşı en yüksek varyans eksenini çok eğecek .a1101000.11a1

Büyüklüklerdeki fark, talihsiz bir ölçüm birimi seçiminden kaynaklanabilir (fiziksel verilerden, örneğin kilometrelerce metrelerden bahsediyorsak), ancak aslında farklı değişkenlerin tamamen farklı boyutları olabilir (örn. Ağırlık ve hacim), onlar için "karşılaştırılabilir" birimler seçmenin açık bir yolu olmayabilir.

Soru: Bu sorunu önlemek için verileri normalleştirmenin standart / yaygın yolları olup olmadığını bilmek istiyorum. Bu amaç için yeni bir şey a1aN ziyade a_1 - a_N için karşılaştırılabilir büyüklükler üreten standart tekniklerle daha fazla ilgileniyorum .

DÜZENLEME: Bir olasılık, her bir değişkeni standart sapması veya benzer bir şeyle normalleştirmektir. Ancak, aşağıdaki sorun ortaya çıkar: verileri N boyutlu uzayda bir nokta bulutu olarak yorumlayalım . Bu nokta bulutu döndürülebilir ve bu normalleştirme türü, dönüşe bağlı olarak (SVD'den sonra) farklı nihai sonuçlar verecektir. (Örneğin, en uç durumda, ana eksenleri ana eksenlerle hizalamak için verileri tam olarak döndürdüğünüzü hayal edin.)

Bunu yapmak için dönme-değişmez bir yol olmayacağını umuyorum, ancak birisinin beni literatürde, özellikle sonuçların yorumlanmasındaki uyarılarla ilgili olarak bu konuyla ilgili bir tartışmaya yönlendirip yönlendiremeyeceğini takdir ediyorum.


4
Problemin kendisi genellikle dönme değişmezidir, çünkü değişkenlerin her biri buna uygun geleneksel bir ölçüm birimi ile kaydedilir. Örneğin, , ayak olabilir bir 2 mikron olarak, bir 3 değişkenler şeylerin farklı ölçer, tüm birimler, aynı olduğunda dahi, miktarlar hangi da değişir vb litre, karakteristik bir şekilde muhtemelen farklı olacaktır bu değişkenlerden biri: bir kez daha, bu rotasyon değişmez değil. Bu nedenle, yönlendirici değişmezliği yol gösterici bir ilke veya değerlendirme olarak bırakmalısınız. a1a2a3
whuber

Yanıtlar:


11

Üç yaygın normalizasyon merkezleme, ölçekleme ve standartlaştırmadır.

Let rasgele değişken.X

Merkezleme

xi=xix¯.

Ortaya çıkan , ¯ x = 0 olacaktır .xx¯=0

Ölçeklendirme

xi=xi(ixi2).

Ortaya çıkan , i x i 2 = 1 olacaktır .xixi2=1

Standardizasyon merkezleme sonra ölçeklendirmedir. Ortaya çıkan , ¯ x = 0 ve i x i 2 = 1 olacaktır .xx¯=0ixi2=1


"SS" tanımlayabilir misiniz lütfen?
Szabolcs

Sum-of-kareler. Kare Xi toplamı.
ttnphns

Kareler toplamının varyans değil 1 olarak ayarlanmasının nedeni, tekil değerlerin ana eksenler boyunca standart sapmalara karşılık gelmesidir (yanlış olmadıkça)?
Szabolcs

Lütfen soruya ilişkin düzenlememi de inceleyin.
Szabolcs

@Szabolcs, aslında düzenlemenizin bir noktasını kaçırabilirim. Ancak PCA (veya SVD) sadece bir dönüştür (eksenlerin dik dönüşünün özel bir durumu). Bulutun herhangi bir çevirisi (merkezleme gibi) veya daralma / dilatasyon (ölçekleme gibi) bu rotasyonun sonuçlarını etkilemelidir.
ttnphns

7

Özellikle bu fark farklı birimlerden veya farklı fiziksel boyutlardan kaynaklanıyorsa, çok farklı varyanslara sahip bireysel değişkenlere sahip olmanın PCA için sorunlu olabileceğinden kesinlikle haklısınız. Bu nedenle, değişkenlerin tümü karşılaştırılamazsa (aynı fiziksel miktar, aynı birimler), kovaryans matrisi yerine korelasyon matrisinde PCA yapılması önerilir. Buraya bakın:

Korelasyon matrisinde PCA yapmak, analizden önce tüm değişkenleri standartlaştırmaya eşdeğerdir (ve daha sonra kovaryans matrisinde PCA yapmak). Standartlaştırma, her bir değişkeni standart sapması ile ortalamak ve sonra bölmek anlamına gelir, böylece hepsi birim varyans haline gelir. Bu, tüm birimleri karşılaştırılabilir kılmak için uygun bir "birim değişikliği" olarak görülebilir.

Bazen değişkenleri normalleştirmenin daha iyi bir yolu olup olmadığı sorulabilir; örneğin, ham varyans yerine sağlam bir varyans tahminine bölünmeyi seçebilirsiniz. Bu, aşağıdaki başlıkta sorulmuştur ve aşağıdaki tartışmaya bakınız (orada kesin bir cevap verilmemiş olsa da):

Son olarak, standart sapma (veya benzer bir şey) ile normalleştirmenin rotasyonla değişmez olmadığı konusunda endişelisiniz. Evet, öyle değil. Ancak, @whuber'ın yukarıdaki yorumda belirttiği gibi, bunu döndürmenin değişmez bir yolu yoktur: bireysel değişkenlerin birimlerini değiştirmek bir dönme değişmez işlemi değildir ! Burada endişelenecek bir şey yok.


PCA için anladım. Ancak, Tek Değer Ayrıştırma işlemini çalıştırmadan önce herhangi bir normalleştirme işlemi yapılması da önerilir mi?
hipoglucido

4

PCA uygulamadan önce yaygın bir teknik, numunelerden ortalamanın çıkarılmasıdır. Bunu yapmazsanız, ilk özvektör ortalama olacaktır. Bunu yapıp yapmadığınızdan emin değilim ama bunun hakkında konuşmama izin verin. MATLAB kodunda konuşursak: bu

clear, clf
clc
%% Let us draw a line
scale = 1;
x = scale .* (1:0.25:5);
y = 1/2*x + 1;

%% and add some noise
y = y + rand(size(y));

%% plot and see
subplot(1,2,1), plot(x, y, '*k')
axis equal

%% Put the data in columns and see what SVD gives
A = [x;y];
[U, S, V] = svd(A);

hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found directly')

%% Now, subtract the mean and see its effect
A(1,:) = A(1,:) - mean(A(1,:));
A(2,:) = A(2,:) - mean(A(2,:));

[U, S, V] = svd(A);

subplot(1,2,2)
plot(x, y, '*k')
axis equal
hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found after subtracting mean')

Şekilde görülebileceği gibi, eğer (ko) varyansı daha iyi analiz etmek istiyorsanız, verilerden ortalamayı çıkarmanız gerektiğini düşünüyorum. Daha sonra değerler 10-100 ile 0.1-1 arasında olmayacak, ancak ortalamaları sıfır olacaktır. Varyanslar özdeğerler (veya tekil değerlerin karesi) olarak bulunacaktır. Bulunan özvektörler, ortalamayı almadığımız durumdaki kadar çıkardığımız durum için bir boyut ölçeğinden etkilenmez. Örneğin, ortalamanın çıkarılmasının davanız için önemli olabileceğini söyleyen aşağıdakileri test ettim ve gözlemledim. Dolayısıyla sorun varyanstan değil, çeviri farkından kaynaklanabilir.

% scale = 0.5, without subtracting mean
U =

-0.5504   -0.8349
-0.8349    0.5504


% scale = 0.5, with subtracting mean
U =

-0.8311   -0.5561
-0.5561    0.8311


% scale = 1, without subtracting mean
U =

-0.7327   -0.6806
-0.6806    0.7327

% scale = 1, with subtracting mean
U =

-0.8464   -0.5325
-0.5325    0.8464


% scale = 100, without subtracting mean
U =

-0.8930   -0.4501
-0.4501    0.8930


% scale = 100, with subtracting mean
U =

-0.8943   -0.4474
-0.4474    0.8943

enter image description here


1
Soruda ortalamanın zaten çıkarılmış olduğunu söylemeliydim. Ben buna göre düzenleyeceğim.
Szabolcs

1
Her değişkeni standart sapmasına bölebiliriz, ama insanların yaptıkları başka şeyler olup olmadığını merak ediyordum. Örneğin, bu veri kümesini bir nokta bulutu olarak düşünebiliriz.N-boyutlu uzay. Bunu, buradaki rotasyona bağlı olmayan bir şekilde yapmanın bir yolu var mıN--d alanı? Standart sapmalara bölersek, bu standart sapmaların hangi eksenlerde alındığı önemli olacaktır (yani rotasyon değişmez değildir). Bunu temel eksenler boyunca yaparsak, değişkenlerin ilişkisiz görüneceğini düşünüyorum.
Szabolcs

1
Bunu yapmak için dönme-değişmez bir yol olmayabilir, ama en azından bu konularla ilgili bazı tartışmaları okumak isterim ... herhangi bir işaretçi hoş geldiniz. Not: Uygulamalı stat konusunda eğitimim yok (sadece linalg, prob teorisi gibi matematik), bu yüzden bu şeyleri giderken öğreniyorum.
Szabolcs

1
Örnekleri ortalamadığınızda (ortalamaları sütunlardan çıkarın), ilk özvektör genellikle ortalama vektörü değildir .
whuber

-1 Düştü, çünkü bu cevap sadece merkezleme ile ilgili, soru ise ölçekleme ile ilgili. Ayrıca, birinci özvektörün, @whuber tarafından belirtildiği gibi, zorunlu olarak araç vektörü olduğu iddiası yanlıştır.
amip diyor Reinstate Monica

-5

PCA verilerini normalleştirmek için aşağıdaki formül de kullanılır

SC=100X-min(X)maksimum(X)-min(X)

nerede X bu göstergenin ülke için ham değeridir c yıl içinde t, ve X yıl boyunca bu gösterge için tüm ülkelerdeki tüm ham değerleri açıklar.


7
Ülkeler veya yıllar hakkında bir şey kim söyledi?
Nick Stauner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.