Mục đích của bình thường hóa hàng là gì


12

Tôi hiểu lý do đằng sau chuẩn hóa cột, vì nó làm cho các tính năng có trọng số như nhau, ngay cả khi chúng không được đo trên cùng một tỷ lệ - tuy nhiên, thường trong tài liệu lân cận gần nhất, cả cột và hàng đều được chuẩn hóa. Chuẩn hóa hàng cho / tại sao bình thường hóa hàng? Cụ thể, kết quả của việc chuẩn hóa hàng ảnh hưởng như thế nào đến sự giống nhau / khoảng cách giữa các vectơ hàng?


bạn có thể vui lòng trích dẫn các tài liệu bình thường hóa các hàng? Tôi nhận ra rằng đây là một cuộc thảo luận tương đối cũ nhưng gần đây tôi đã gặp một vấn đề tương tự và đang cố gắng tìm ra sự khác biệt. Tôi sẽ đăng bài của tôi về nó như là một câu trả lời.
DataD'oh

Câu trả lời:


4

Đây là một chủ đề tương đối cũ nhưng gần đây tôi đã gặp phải vấn đề này trong công việc của tôi và tình cờ thấy cuộc thảo luận này. Câu hỏi đã được trả lời nhưng tôi cảm thấy rằng sự nguy hiểm của việc bình thường hóa các hàng khi nó không phải là đơn vị phân tích (xem câu trả lời của @ DJohnson ở trên) chưa được giải quyết.

Điểm chính là các hàng bình thường hóa có thể gây bất lợi cho bất kỳ phân tích tiếp theo nào, chẳng hạn như hàng xóm gần nhất hoặc phương tiện k. Để đơn giản, tôi sẽ giữ câu trả lời cụ thể cho việc định tâm trung bình các hàng.

Để minh họa nó, tôi sẽ sử dụng dữ liệu Gaussian mô phỏng ở các góc của hypercube. May mắn thay trong Rđó có một chức năng thuận tiện cho việc đó (mã ở cuối câu trả lời). Trong trường hợp 2D, điều đơn giản là dữ liệu tập trung vào hàng sẽ nằm trên một đường đi qua gốc tọa độ ở 135 độ. Dữ liệu mô phỏng sau đó được phân cụm bằng cách sử dụng phương tiện k với số cụm chính xác. Dữ liệu và kết quả phân cụm (được hiển thị trong 2D bằng PCA trên dữ liệu gốc) trông như thế này (các trục cho âm mưu ngoài cùng bên trái là khác nhau). Các hình dạng khác nhau của các điểm trong các ô phân cụm đề cập đến việc gán cụm mặt đất và màu sắc là kết quả của phân cụm k-mean.

nhập mô tả hình ảnh ở đây

Các cụm trên cùng bên trái và dưới cùng bên phải bị cắt làm đôi khi dữ liệu được định tâm theo hàng. Vì vậy, khoảng cách sau khi định tâm trung bình hàng bị biến dạng và không có ý nghĩa lắm (ít nhất là dựa trên kiến ​​thức về dữ liệu).

Không quá ngạc nhiên trong 2D, nếu chúng ta sử dụng nhiều kích thước thì sao? Đây là những gì xảy ra với dữ liệu 3D. Giải pháp phân cụm sau định tâm trung bình hàng là "xấu".

nhập mô tả hình ảnh ở đây

Và tương tự với dữ liệu 4D (hiện được hiển thị cho ngắn gọn).

Tại sao chuyện này đang xảy ra? Định tâm trung bình hàng đẩy dữ liệu vào một không gian nơi một số tính năng đến gần hơn so với thực tế. Điều này cần được phản ánh trong mối tương quan giữa các tính năng. Chúng ta hãy xem xét điều đó (đầu tiên trên dữ liệu gốc và sau đó là dữ liệu tập trung vào hàng cho các trường hợp 2D và 3D).

[,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 Vì vậy, có vẻ như trung tâm hàng có nghĩa là giới thiệu mối tương quan giữa các tính năng. Làm thế nào điều này bị ảnh hưởng bởi số lượng các tính năng? Chúng ta có thể làm một mô phỏng đơn giản để tìm ra điều đó. Kết quả mô phỏng được hiển thị bên dưới (một lần nữa mã ở cuối).

nhập mô tả hình ảnh ở đây

Vì vậy, khi số lượng các tính năng làm tăng hiệu ứng của định tâm trung bình hàng dường như giảm đi, ít nhất là về các mối tương quan được giới thiệu. Nhưng chúng tôi chỉ sử dụng dữ liệu ngẫu nhiên được phân phối đồng đều cho mô phỏng này (như thường thấy khi nghiên cứu về lời nguyền của chiều ).

Vậy điều gì xảy ra khi chúng ta sử dụng dữ liệu thực? Vì nhiều lần chiều kích nội tại của dữ liệu thấp hơn nên lời nguyền có thể không được áp dụng . Trong trường hợp như vậy, tôi đoán rằng việc định tâm theo hàng có thể là một lựa chọn "xấu" như được hiển thị ở trên. Tất nhiên, phân tích chặt chẽ hơn là cần thiết để đưa ra bất kỳ tuyên bố dứt khoát.

Mã mô phỏng phân cụm

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)
}

Mã để tăng tính năng mô phỏng

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)

BIÊN TẬP

1/(p1)


5

Có nhiều hình thức bình thường hóa hàng khác nhau và OP không nêu rõ anh / cô ấy có ý định gì.

Một hình thức cụ thể của chuẩn hóa hàng (bình thường hóa chuẩn Eucledian) trong đó mỗi hàng được định mức (chia cho định mức Eucledian của nó) là phổ biến yên tĩnh.

3.2

xxp

(0)r(xx)=||xx||21xx

p>1p

Ví dụ: nếu dữ liệu gốc của bạn được căn giữa (như các chấm đen trong hình ảnh này) và bạn áp dụng chuẩn hóa hàng cho nó, bạn sẽ có được các ngôi sao đỏ.

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')

Các chấm màu xanh lá cây đại diện cho một số lượng nhỏ các ngoại lệ trong dữ liệu gốc. Nếu bạn áp dụng phép biến đổi chuẩn hóa hàng cho chúng, bạn sẽ có được các ngôi sao màu xanh.

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')

nhập mô tả hình ảnh ở đây

xFx

z

Bạn có thể thấy điều này rõ nhất bằng cách so sánh các ma trận hình dạng (hoặc các hình elip đường viền) được trang bị lần lượt với dữ liệu, phiên bản bị ô nhiễm của chúng và biến đổi hàng được chuẩn hóa của chúng:

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). Ký hiệu và xếp hạng ma trận hiệp phương sai, Tạp chí lập kế hoạch và suy luận thống kê Tập 91, Số 2, 557 Điện575.

4

Có một số lý do cụ thể theo trường để thực hiện chuẩn hóa hàng. Trong phân tích văn bản, việc thể hiện một văn bản với biểu đồ của các từ mà nó chứa là khá phổ biến. Bắt đầu từ số lượng từ cho mỗi dòng, tiêu chuẩn hóa thô biến nó thành biểu đồ.

lý do tính toán . Nếu bạn đang làm việc với một ma trận thưa thớt, bạn không thể căn giữa và chia tỷ lệ cột dữ liệu theo cột một cách dễ dàng. Nếu bạn nhúng nó vào một ma trận dày đặc, dữ liệu có thể trở nên quá lớn để phù hợp với bộ nhớ. Tuy nhiên, tỷ lệ theo từng hàng không ảnh hưởng đến tổng số lượng bộ nhớ cần thiết.


Vì lý do tính toán, bạn có nói rằng chúng ta chỉ lấy chuyển vị và hàng hóa bình thường hóa bởi vì cách các ma trận thưa thớt được thể hiện? Tôi đang hỏi moreso cách bình thường hóa hàng ảnh hưởng đến kết quả hàng xóm gần nhất trong thực tế.
curiosity_delivers

3

Chuẩn hóa hàng có một tên - tỷ lệ lặp - thường bao gồm việc định cỡ lại một tập hợp các tính năng bằng cách chia cho giá trị tối đa cho tập hợp hoặc trừ đi giá trị trung bình của các tính năng. Có nhiều động lực để lựa chọn phương pháp này để chuyển đổi dữ liệu, nhưng chủ yếu trong số đó là điều kiện các tính năng liên quan đến các đặc điểm duy nhất của cá nhân (hàng hoặc đơn vị phân tích).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.