Chuẩn hóa các biến số cho các biến SVD / PCA


17

Giả sử chúng ta có biến số có thể đo được, , chúng tôi thực hiện một số của phép đo và sau đó muốn thực hiện phân tách giá trị số ít trên các kết quả để tìm ra trục có phương sai cao nhất cho các điểm trong không gian chiều. ( Lưu ý: giả sử rằng phương tiện của đã bị trừ, vì vậy cho tất cả .)( một 1 , một 2 , ... , một N ) M > N M N một imột i= 0 iN(a1,a2,,aN)M>NMNaiai=0i

Bây giờ giả sử rằng một (hoặc nhiều) biến có độ lớn đặc trưng khác biệt đáng kể so với phần còn lại. Ví dụ: có thể có các giá trị trong phạm vi trong khi phần còn lại có thể ở khoảng . Điều này sẽ làm lệch trục của phương sai cao nhất đối với trục của rất nhiều. 10 - 100 0,1 - 1 a 1a1101000.11a1

Sự khác biệt về cường độ có thể đơn giản là do sự lựa chọn đơn vị đo lường không may (nếu chúng ta đang nói về dữ liệu vật lý, ví dụ như km so với mét), nhưng thực tế các biến khác nhau có thể có các kích thước hoàn toàn khác nhau (ví dụ: trọng lượng so với khối lượng), vì vậy có thể không có cách rõ ràng nào để chọn đơn vị "so sánh" cho chúng.

Câu hỏi: Tôi muốn biết liệu có tồn tại bất kỳ cách tiêu chuẩn / phổ biến nào để bình thường hóa dữ liệu để tránh vấn đề này không. Tôi quan tâm nhiều hơn đến các kỹ thuật tiêu chuẩn tạo ra cường độ tương đương cho cho mục đích này hơn là đưa ra một cái gì đó mới.a1aN

EDIT: Một khả năng là bình thường hóa từng biến bằng độ lệch chuẩn của nó hoặc một cái gì đó tương tự. Tuy nhiên, vấn đề sau sẽ xuất hiện sau đó: chúng ta hãy giải thích các dữ liệu như một đám mây điểm trong không gian ba chiều. Đám mây điểm này có thể được xoay và loại chuẩn hóa này sẽ cho kết quả cuối cùng khác nhau (sau SVD) tùy thuộc vào vòng quay. (Ví dụ, trong trường hợp cực đoan nhất, hãy tưởng tượng xoay chính xác dữ liệu để căn chỉnh các trục chính với các trục chính.)N

Tôi hy vọng sẽ không có bất kỳ cách xoay vòng nào để làm điều này, nhưng tôi đánh giá cao nếu ai đó có thể chỉ cho tôi một số thảo luận về vấn đề này trong tài liệu, đặc biệt là về việc giải thích kết quả.


4
Vấn đề thường không phải là bất biến xoay vòng, bởi vì mỗi biến được ghi lại với một đơn vị đo lường thông thường phù hợp với nó. Ví dụ: có thể tính bằng feet, bằng micron, bằng lít, v.v. : một lần nữa, đây không phải là bất biến xoay vòng. Do đó, bạn nên từ bỏ bất biến xoay vòng như một nguyên tắc hướng dẫn hoặc xem xét. a 2 a 3a1a2a3
whuber

Câu trả lời:


11

Ba chuẩn hóa phổ biến là định tâm, chia tỷ lệ và chuẩn hóa.

Đặt là biến ngẫu nhiên.X

Định tâm là

xi=xix¯.

Kết quả sẽ có ¯ x = 0 .xx¯=0

Chia tỷ lệ là

xi=xi(ixi2).

xixi2=1

xx¯=0ixi2=1


Bạn có thể định nghĩa "SS" không?
Szabolcs

Tổng bình phương. Tổng bình phương Xi.
ttnphns

Lý do đặt tổng bình phương thành 1, chứ không phải phương sai, là khi đó các giá trị số ít sẽ tương ứng với độ lệch chuẩn dọc theo các trục chính (trừ khi tôi nhầm)?
Szabolcs

Xin vui lòng xem chỉnh sửa của tôi cho câu hỏi.
Szabolcs

@Szabolcs, tôi thực sự có thể bỏ lỡ một điểm chỉnh sửa của bạn. Nhưng PCA (hoặc SVD) chỉ là một vòng quay (một trường hợp đặc biệt của phép quay trực giao của các trục). Bất kỳ bản dịch nào (như định tâm) hoặc thu nhỏ / giãn nở (như chia tỷ lệ) của đám mây sẽ ảnh hưởng đến kết quả của phép quay này.
ttnphns

6

Bạn hoàn toàn đúng khi có các biến riêng lẻ với các phương sai rất khác nhau có thể gây rắc rối cho PCA, đặc biệt nếu sự khác biệt này là do các đơn vị khác nhau hoặc kích thước vật lý khác nhau. Vì lý do đó, trừ khi tất cả các biến đều có thể so sánh (cùng số lượng vật lý, cùng đơn vị), nên thực hiện PCA trên ma trận tương quan thay vì ma trận hiệp phương sai. Xem tại đây:

Làm PCA trên ma trận tương quan tương đương với việc chuẩn hóa tất cả các biến trước khi phân tích (và sau đó thực hiện PCA trên ma trận hiệp phương sai). Tiêu chuẩn hóa có nghĩa là định tâm và sau đó chia mỗi biến cho độ lệch chuẩn của nó, để tất cả chúng trở thành phương sai đơn vị. Đây có thể được coi là một "sự thay đổi đơn vị" thuận tiện, để làm cho tất cả các đơn vị có thể so sánh được.

Người ta có thể hỏi liệu đôi khi có thể có một cách tốt hơn để "bình thường hóa" các biến; ví dụ, người ta có thể chọn chia cho một số ước lượng phương sai mạnh mẽ, thay vì phương sai thô. Điều này đã được hỏi trong chuỗi sau đây và xem cuộc thảo luận tiếp theo (mặc dù không có câu trả lời chắc chắn nào được đưa ra ở đó):

Cuối cùng, bạn đã lo lắng rằng bình thường hóa bằng độ lệch chuẩn (hoặc một cái gì đó tương tự) không phải là bất biến xoay vòng. Vâng, vâng, nó không phải là. Nhưng, như @whuber đã nhận xét trong nhận xét ở trên, không có cách thực hiện bất biến xoay vòng nào: thay đổi đơn vị của các biến riêng lẻ không phải là một hoạt động bất biến xoay vòng ! Không có gì phải lo lắng ở đây.


4

Một kỹ thuật phổ biến trước khi áp dụng PCA là trừ giá trị trung bình từ các mẫu. Nếu bạn không làm điều đó, eigenvector đầu tiên sẽ là trung bình. Tôi không chắc liệu bạn đã làm nó chưa nhưng hãy để tôi nói về nó. Nếu chúng ta nói bằng mã MATLAB: đây là

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

Như có thể thấy trong hình, tôi nghĩ bạn nên trừ giá trị trung bình khỏi dữ liệu nếu bạn muốn phân tích phương sai (co) tốt hơn. Sau đó, các giá trị sẽ không nằm trong khoảng từ 10 đến 100 và 0,1-1, nhưng giá trị trung bình của chúng sẽ bằng không. Phương sai sẽ được tìm thấy dưới dạng giá trị riêng (hoặc bình phương của các giá trị số ít). Các hàm riêng được tìm thấy không bị ảnh hưởng bởi thang đo kích thước cho trường hợp khi chúng ta trừ đi giá trị trung bình nhiều như trường hợp khi chúng ta không. Chẳng hạn, tôi đã kiểm tra và quan sát những điều sau đây để trừ đi giá trị trung bình có thể quan trọng đối với trường hợp của bạn. Vì vậy, vấn đề có thể không phải do phương sai mà do sự khác biệt về dịch thuật.

% 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

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


1
Tôi nên đã đề cập trong câu hỏi rằng giá trị trung bình đã bị trừ đi. Tôi sẽ chỉnh sửa nó cho phù hợp.
Szabolcs

1
NN

1
Tôi nhận ra rằng có thể không có cách xoay vòng bất biến để làm điều đó, nhưng ít nhất tôi cũng muốn đọc một số thảo luận về những vấn đề này ... bất kỳ con trỏ nào đều được chào đón. Lưu ý: Tôi không được đào tạo về chỉ số ứng dụng (chỉ có toán học, chẳng hạn như linalg, lý thuyết thăm dò), vì vậy tôi đang học những thứ này khi tôi đang đi.
Szabolcs

1
Khi bạn không căn giữa các mẫu (trừ phương tiện khỏi các cột), hàm riêng đầu tiên thường không phải là vectơ của phương tiện.
whuber

-1 Downvote, bởi vì câu trả lời này chỉ là về định tâm, trong khi câu hỏi là về tỷ lệ. Ngoài ra, tuyên bố rằng trình xác định đầu tiên nhất thiết phải là vectơ của phương tiện là sai, như đã lưu ý bởi @whuber.
amip nói phục hồi Monica

-5

Để chuẩn hóa dữ liệu cho PCA, công thức sau đây cũng được sử dụng

SC=100Xmin(X)max(X)min(X)

XctX


7
Ai nói bất cứ điều gì về các quốc gia hoặc năm?
Nick Stauner
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.