Sıra normalleşmesinin amacı nedir


13

Sütun normalleşmesinin ardındaki mantığı anlıyorum, çünkü özelliklerin aynı ölçekte ölçülmemiş olsalar bile eşit olarak ağırlıklandırılmasına neden oluyor - ancak, en yakın komşu literatüründe, hem sütunlar hem de satırlar normalleştiriliyor. Satır normalleştirmesi nedir / neden satırları normalleştirmelisiniz? Özellikle, satır normalleştirmesinin sonucu satır vektörleri arasındaki benzerliği / mesafeyi nasıl etkiler?


Lütfen sıraları normalleştiren literatürden bahsedebilir misiniz? Bunun nispeten eski bir tartışma olduğunu fark ettim ama son zamanlarda benzer bir sorunla karşılaştım ve farklılıkları bulmaya çalışıyorum. Ben cevap olarak cevap göndereceğiz.
DataD'oh

Yanıtlar:


4

Bu nispeten eski bir iş parçacığı ama son zamanlarda benim iş bu sorunla karşılaştı ve bu tartışma tökezledi. Soru cevaplandı, ancak analiz birimi olmadığında satırları normalleştirme tehlikesinin (bkz. Yukarıdaki @ DJohnson'ın cevabı) ele alınmadığını hissediyorum.

Ana nokta, normalleştirici sıraların, en yakın komşu veya k-araçları gibi herhangi bir sonraki analiz için zararlı olabileceğidir. Basit olması için, cevabı satırların ortalanmasına özgü tutacağım.

Bunu göstermek için, hiperküpün köşelerinde simüle edilmiş Gauss verileri kullanacağım. Neyse ki Rbunun için uygun bir fonksiyon var (kod cevabın sonunda). 2B durumda, satır ortalama merkezli verilerin başlangıç ​​noktasından 135 dereceden geçen bir çizgiye düşmesi kolaydır. Simüle edilen veriler daha sonra doğru sayıda kümeye sahip k-araçları kullanılarak kümelenir. Veriler ve kümeleme sonuçları (orijinal verilerde PCA kullanılarak 2B olarak görüntülenir) şöyle görünür (en soldaki grafiğin eksenleri farklıdır). Kümelenme grafiklerindeki noktaların farklı şekilleri yer-doğruluk küme atamasına işaret eder ve renkler k-ortalama kümelemenin sonucudur.

resim açıklamasını buraya girin

Veriler satır ortalaması ortalandığında, sol üst ve sağ alt kümeler ikiye bölünür. Dolayısıyla, satır ortalama merkezlemesinden sonraki mesafeler çarpıtılmış ve çok anlamlı değildir (en azından verilerin bilgisine dayanarak).

2D'de bu kadar şaşırtıcı değil, ya daha fazla boyut kullanırsak? İşte 3D verilerde olanlar. Satır ortalama merkezlemesinden sonra kümeleme çözümü "kötü".

resim açıklamasını buraya girin

Ve 4D verileriyle benzer (şimdi kısalık için gösterilmiştir).

Bu neden oluyor? Satır ortalaması, verileri bazı özelliklerin diğerlerinden daha yakın olduğu bir alana iter. Bu, özellikler arasındaki korelasyona yansıtılmalıdır. Şuna bakalım (önce orijinal verilerde, ardından 2D ve 3D durumlar için satır ortalamalı verilerde).

[,1] [,2] [1,] 1.000 -0.001 [2,] -0.001 1.000 [,1] [,2] [1,] 1 -1 [2,] -1 1 [,1] [,2] [,3] [1,] 1.000 -0.001 0.002 [2,] -0.001 1.000 0.003 [3,] 0.002 0.003 1.000 [,1] [,2] [,3] [1,] 1.000 -0.504 -0.501 [2,] -0.504 1.000 -0.495 [3,] -0.501 -0.495 1.000 Yani satır-ortalama-merkezleme özellikler arasında korelasyonlar getirmektedir. Bu özellik sayısından nasıl etkileniyor? Bunu anlamak için basit bir simülasyon yapabiliriz. Simülasyonun sonucu aşağıda gösterilmiştir (yine sondaki kod).

resim açıklamasını buraya girin

Dolayısıyla, özelliklerin sayısı arttıkça, satır-ortalama-merkezlemenin etkisi, en azından getirilen korelasyonlar açısından azalmaktadır. Ancak bu simülasyon için sadece eşit dağıtılmış rastgele veriler kullandık ( boyutsallığın lanetini incelerken yaygın olarak olduğu gibi ).

Peki gerçek verileri kullandığımızda ne olur? Birçok kez verinin içsel boyutu daha düşük olduğu için lanet geçerli olmayabilir . Böyle bir durumda, satır ortalama merkezlemesinin yukarıda gösterildiği gibi "kötü" bir seçim olabileceğini tahmin ediyorum. Tabii ki, kesin iddialarda bulunmak için daha titiz bir analize ihtiyaç vardır.

Kümeleme simülasyonu kodu

palette(rainbow(10))
set.seed(1024)
require(mlbench)
N <- 5000
for(D in 2:4) {
X <- mlbench.hypercube(N, d=D)
sh <- as.numeric(X$classes)
K <- length(unique(sh))
X <- X$x

Xc <- sweep(X,2,apply(X,2,mean),"-")
Xr <- sweep(X,1,apply(X,1,mean),"-")

show(round(cor(X),3))
show(round(cor(Xr),3))

par(mfrow=c(1,1))

k <- kmeans(X,K,iter.max = 1000, nstart = 10)
kc <- kmeans(Xc,K,iter.max = 1000, nstart = 10)
kr <- kmeans(Xr,K,iter.max = 1000, nstart = 10)
pc <- prcomp(X)
par(mfrow=c(1,4))

lim <- c(min(min(X),min(Xr),min(Xc)), max(max(X),max(Xr),max(Xc)))
plot(X[,1], X[,2], xlim=lim, ylim=lim, xlab="Feature 1", ylab="Feature 2",main="Data",col=1,pch=1)
points(Xc[,1], Xc[,2], col=2,pch=2)
points(Xr[,1], Xr[,2], col=3,pch=3)
legend("topleft",legend=c("Original","Center-cols","Center-rows"),col=c(1,2,3),pch=c(1,2,3))
abline(h=0,v=0,lty=3)

plot(pc$x[,1], pc$x[,2], col=rainbow(K)[k$cluster], xlab="PC 1", ylab="PC 2", main="Cluster original", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kc$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-col", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kr$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-row", pch=sh)
}

Özellik simülasyonunu artırmak için kod

set.seed(2048)
N <- 1000
Cmax <- c()
Crmax <- c()
for(D in 2:100) {
X <- matrix(runif(N*D), nrow=N)    
C <- abs(cor(X))
diag(C) <- NA
Cmax <- c(Cmax, max(C, na.rm=TRUE))

Xr <- sweep(X,1,apply(X,1,mean),"-")
Cr <- abs(cor(Xr))
diag(Cr) <- NA
Crmax <- c(Crmax, max(Cr, na.rm=TRUE))
}
par(mfrow=c(1,1))
plot(Cmax, ylim=c(0,1), ylab="Max. cor.", xlab="#Features",col=1,pch=1)
points(Crmax, ylim=c(0,1), col=2, pch=2)
legend("topright", legend=c("Original","Center-row"),pch=1:2,col=1:2)

DÜZENLE

1/(p1)


5

Satır normalleştirmenin çeşitli formları vardır ve OP hangisinin aklına geldiğini belirtmez.

Her bir satırın normale getirildiği (Eucledian normuna bölünür) belirli bir sıra normalizasyonu (Eucledian norm normalizasyonu) sessiz popülerdir.

3.2

xxp

(0)r(xx)=||xx||2-1xx

p>1p

Örneğin, orijinal verileriniz ortalanmışsa (bu görüntüdeki siyah noktalar gibi) ve buna satır normalizasyonu uygularsanız, kırmızı yıldızları elde edersiniz.

library(car)
p = 2
n = 1000
m = 10
C = matrix(.9, p, p)
diag(C) = 1
set.seed(123)
x = matrix(runif(n * p, -1, 1), n, p) %*% chol(C)
z = sweep(x, 1, sqrt(rowSums(x * x)), FUN = '/')
plot(rbind(x, z), pch = 16, type = 'n', ann = FALSE, xaxt = 'n', yaxt = 'n')
points(x, pch = 16)
points(z, pch = 8, col = 'red')

Yeşil noktalar, orijinal verilerdeki az sayıda aykırı değeri temsil eder. Satır normalleştirme dönüşümünü onlara uygularsanız, mavi yıldızları elde edersiniz.

x_1 = sweep(matrix(runif(m * p, -1, 1), m, p), 2, c(2, -2))
z_1 = sweep(x_1, 1, sqrt(rowSums(x_1 * x_1)), FUN = '/')
plot(rbind(x, x_1, z, z_1), pch = 16, type = 'n', ann = FALSE, xaxt = 'n', yaxt = 'n')
points(x, pch = 16)
points(x_1, pch = 16, col = 'green')
points(z, pch = 8, col = 'red')
points(z_1, pch = 8, col = 'blue')

resim açıklamasını buraya girin

xFx

z

Verilere sırayla yerleştirilen şekil matrislerini (veya kontur elipsleri), kontamine versiyonunu ve satır normalleştirilmiş dönüşümünü karşılaştırarak bunu en açık şekilde görebilirsiniz:

ellipse(crossprod(rbind(x, x_1)) / (n + m - 1) / det(crossprod(rbind(x, x_1)) / (n + m - 1))^(1 / p), center = rep(0, p), col = 'green', radius = 1)
ellipse(crossprod(rbind(z, z_1)) / (n + m - 1) / det(crossprod(rbind(z, z_1)) / (n + m - 1))^(1 / p), center = rep(0, p), col = 'red', radius = 1)
ellipse(crossprod(rbind(x)) / (n - 1) / det(crossprod(rbind(x)) / (n - 1))^(1 / p), center = rep(0, p), col = 'black', radius = 1)

zx

  • [0] S. Visuri, V. Koivunen, H. Oja (2000). İşaret ve sıralama kovaryans matrisleri, İstatistiksel Planlama ve Çıkarım Dergisi Cilt 91, Sayı 2, 557-575.

4

Satır normalizasyonu gerçekleştirmek için alana özgü bazı nedenler vardır . Metin analizinde, bir metni içerdiği kelimelerin histogramıyla temsil etmek oldukça yaygındır. Her satır için sözcük sayımından başlayarak, ham standardizasyon onu bir histograma dönüştürür.

Ve hesaplama sebebi . Seyrek bir matrisle çalışıyorsanız, veri sütununu kolayca ortalayarak sütunlara göre ölçeklendiremezsiniz. Yoğun bir matrise gömerseniz, veriler belleğe sığmayacak kadar büyük olabilir. Ancak, satır satır ölçekleme, gereken toplam bellek miktarını etkilemez.


Hesaplama nedeni için, seyrek matrislerin temsil edilme şekli nedeniyle sadece devrik ve sıra normalleştirdiğimizi mi söylüyorsunuz? Moreso'ya sıra normalleşmesinin pratikte en yakın komşu sonuçlarını nasıl etkilediğini soruyorum.
curiosity_delivers

3

Satır normalleştirmesi, genellikle küme için maksimum değere bölünerek veya özelliklerin ortalamasını çıkararak bir dizi özelliğin yeniden ölçeklenmesini içeren bir ad - hassas ölçeklendirmeye sahiptir. Verileri dönüştürmek için bu yaklaşımı seçmek için birçok motivasyon vardır, ancak aralarında şef, özellikleri bireyin benzersiz özelliklerine (analiz sırası veya birim) göre şartlandırmasıdır.

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.