SVD của ma trận dữ liệu sau khi chiếu trực giao lên không gian con


8

Giả sử tôi có thể biết SVD của một số ma trận :X = U S V TX

X=USVT

Nếu tôi có ma trận trực giao (nghĩa là là hình vuông và có các cột trực giao), thì SVD của làA X AAAXA

XA=USWT
trong đó .W=ATV

Nhưng có thể nói bất cứ điều gì về SVD của nếu có các cột trực giao nhưng không nhất thiết phải là hình vuông? Nói cách khác, nếu SVD của là , các ma trận , hoặc có thể được viết theo thuật ngữ SVD của và không?B X B X B = D E F T D E F X BXBBXBXB=DEFTDEFXB


Cập nhật: @whuber gợi ý rằng tôi có thể mở rộng thành trực giao bằng cách thêm vào các cột trực giao cho đến khi là hình vuông. Gọi đây là trực giao ma trận .B ~ BBBB~

B~=[B;B]

Tôi biết SVD của là (xem ở trên). Nhưng bây giờ tôi đang đấu tranh để xem nếu có một cách mà tôi có thể viết SVD của về SVD của . U S ( ~ B T V ) T X B X ~ BXB~US(B~TV)TXBXB~


Ví dụ, không phải trường hợp SVD của , đó là những gì chúng ta có nếu chúng ta biết là hình vuông. Điều này là do không phải là một ma trận vuông, điều này sẽ phải đúng với SVD. vẫn có các cột trực giao mặc dù. B B T V B T V V.XB=US(BTV)TBBTVBTV
áo choàng

3
B có thể được kéo dài bằng cách nối các cột trực giao bổ sung vào ma trận trực giao (ví dụ sử dụng quy trình Gram-Schmidt), do đó giảm câu hỏi của bạn sang trường hợp đầu tiên.
whuber

1
Thật tuyệt, cảm ơn @whuber. Vì vậy, nói là phiên bản orthogonalized của . Việc biết SVD của cho tôi biết điều gì về SVD của ? B X B X BBBXBXB
áo choàng

Viết nó ra và bạn sẽ thấy mối quan hệ đơn giản và rõ ràng như thế nào.
whuber

@whuber Tôi hoàn toàn không thể nhìn thấy nó ... Đây là những gì tôi đã thử: Đặt . Khi đó . X B ' = [ X B ; X B ] = U S ( B T V ) T = U S ( [ B T B T ] V ) T = U S [ B T V B T V ] TB=[B;B]XB=[XB;XB]=US(BTV)T=US([BTBT]V)T=US[BTVBTV]T
áo choàng

Câu trả lời:


3

Trong SVD , trong đó là ma trận , là ma trận trực giao . X n × p V p × pX=USVXn×pVp×p

Giả sử là ma trận trực giao : đó là . Để chop × q B B = 1 qBp×qBB=1q

(1)SVB=TDW

là một SVD của . Do đó, theo định nghĩa, là ma trận , là ma trận đường chéo có thứ nguyên và là ma trận trực giao .T p × q D q W q × qSVBTp×qDqWq×q

Tính toán

(2)XB=(USV)B=U(SVB)=U(TDW)=(UT)D(W).

Vì , có các cột trực giao. Vì và là một phần của SVD, nên theo định nghĩa là đường chéo với các mục không âm và là ma trận trực giao . Do đó, phương trình cho SVD là . Phương trình cho thấy cách SVD này có liên quan đến của và . U T D W D W q × q ( 2 ) X B ( 1 ) X B(UT)(UT)=T(UU)T=TT=1qUTDWDWq×q(2)XB(1)XB


1
Cảm ơn câu trả lời. Mặc dù nó có vẻ như đây là một cách để tìm SVD của qua tính toán SVD của , như trái ngược với chỉ sử dụng SVD của . Tôi đã hy vọng biết liệu có cách nào để tìm SVD của mà không phải tính toán các SVD bổ sung hay không, như có thể khi là hình vuông. S V B X X B BXBSVBXXBB
áo choàng

3

Đối với một ma trận với các cột trực giao (nhưng không phải hình vuông), tôi muốn có một cách để tìm một SVD của về SVD của .X B X = U S V TBXBX=USVT

Theo đề xuất của @whuber, bước đầu tiên hướng tới việc tìm kiếm SVD của là thêm các cột vào để làm cho nó vuông (và do đó trực giao). Gọi ma trận này và gọi là số cột của . Sau đó, vì là trực giao, nếu là một SVD của , sau đó là một SVD của .B ˜ B = [ B ; B ] k B ~ B X = U S V T X X ~ B = U S ( ~ B T V ) T X ~ BXBBB~=[B;B]kBB~X=USVTXXB~=US(B~TV)TXB~

Vì có thể nhận được từ bằng cách bỏ các cột cuối cùng , nên vấn đề ban đầu của tôi bây giờ giảm xuống như sau: Cho SVD của ma trận , có cách tìm SVD của , trong đó là ma trận kết quả từ việc thả các cột cuối cùng của ? (Ở đây tôi có và .)X ~ B k Y = D E F T Y ' = D ' E ' F ' T Y ' k Y Y = X ~ B Y ' = X BXBXB~kY=DEFTY=DEFTYkYY=XB~Y=XB

Vấn đề này được gọi là "hạ cấp SVD", và nói chung, dường như có nhiều cách tiếp cận để làm điều này. Một cách tiếp cận có liên quan được tìm thấy ở đây , và thảo luận thêm ở đây .

Nhưng nói chung, cho rằng các thuật toán để downdating SVD xuất hiện là một lĩnh vực nghiên cứu tích cực, tôi kết luận rằng không có một đơn giản cách để tìm SVD của đưa ra chỉ SVD của .XXBX


1
+1. Tôi nghĩ bạn xác định chính xác vấn đề: không có cách "đơn giản". Tôi thấy nó khá trực quan nếu bạn xem xét một ví dụ đồ chơi đơn giản: ví dụ: đám mây dữ liệu 2D kéo dài theo hướng chéo. Hai vectơ số ít ban đầu là đường chéo. Nhân ma trận dữ liệu với ma trận trực giao vuông chỉ đơn giản là xoay toàn bộ đám mây, do đó các vectơ số ít giữ nguyên, cho đến khi xoay. Nhưng chiếu đám mây dữ liệu, ví dụ như đường ngang (không gian con 1D) sẽ thay đổi hoàn toàn hình dạng của nó; bây giờ vectơ số ít duy nhất là ngang. Các vectơ số ít mới không liên quan đến những cái cũ.
amip

Đó là một lời giải thích trực quan tuyệt vời về sự khác biệt. Lúc đầu, tôi thấy khá khó chịu khi có thể có một mối quan hệ đơn giản như vậy đối với ma trận trực giao nhưng sau đó không còn một khi bạn xóa chỉ một cột của ma trận đó. Nhưng tất cả đều có ý nghĩa bây giờ. Cảm ơn!
áo choàng

Tôi đồng ý. Khi tôi lần đầu tiên đọc bài viết của bạn, tôi đã nghĩ: thật là một câu hỏi ngây thơ! :-) rõ ràng người ta chỉ cần xoay các vectơ số ít (với ma trận "mở rộng" thành ma trận xoay, như whuber đã viết) và sau đó thả một số trong số chúng (tương ứng với phần "mở rộng"). Nhưng điều này tất nhiên là sai.
amip
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.