Đây không phải là một lỗi.
Như chúng ta đã khám phá (rộng rãi) trong các ý kiến, có hai điều xảy ra. Đầu tiên là các cột của Bạn bị ràng buộc để đáp ứng các yêu cầu SVD: mỗi cột phải có độ dài đơn vị và trực giao với tất cả các cột khác. Xem Bạn như là một biến ngẫu nhiên được tạo ra từ một ma trận ngẫu nhiên X thông qua một thuật toán SVD Đặc biệt, chúng ta qua đó lưu ý rằng những k(k+1)/2 trở ngại về mặt chức năng độc lập tạo ra phụ thuộc thống kê trong các cột của U .
Những phụ thuộc này có thể được tiết lộ ở mức độ lớn hơn hoặc thấp hơn bằng cách nghiên cứu mối tương quan giữa các thành phần của U , nhưng một hiện tượng thứ hai xuất hiện : giải pháp SVD không phải là duy nhất. Tối thiểu, mỗi cột của U có thể được phủ định độc lập, đưa ra ít nhất 2k giải pháp riêng biệt với k cột. Mối tương quan mạnh (vượt quá 1/2 ) có thể được gây ra bằng cách thay đổi các dấu hiệu của các cột một cách thích hợp. (Một cách để làm điều này được đưa ra trong bình luận đầu tiên của tôi vào câu trả lời Amoeba trong chủ đề này: Tôi buộc tất cả các uii,i=1,…,k có dấu hiệu tương tự, làm cho chúng tất cả tiêu cực hoặc tích cực tất cả với xác suất bằng nhau.) Mặt khác, tất cả các mối tương quan có thể được thực hiện để biến mất bằng cách chọn những dấu hiệu một cách ngẫu nhiên, một cách độc lập, với xác suất bằng nhau. (Tôi đưa ra một ví dụ dưới đây trong phần "Chỉnh sửa".)
Với sự chăm sóc, chúng tôi phần nào có thể phân biệt cả những hiện tượng khi đọc ma trận phân tán của các thành phần của U . Một số đặc điểm - chẳng hạn như sự xuất hiện của các điểm gần như phân bố đồng đều trong các khu vực hình tròn được xác định rõ - tin rằng sự thiếu độc lập. Những người khác, chẳng hạn như các biểu đồ tán xạ thể hiện mối tương quan khác không rõ ràng, rõ ràng phụ thuộc vào các lựa chọn được thực hiện trong thuật toán - nhưng những lựa chọn như vậy chỉ có thể vì sự thiếu độc lập ở nơi đầu tiên.
Thử nghiệm cuối cùng của một thuật toán phân rã như SVD (hoặc Cholesky, LR, LU, v.v.) là liệu nó có làm những gì nó tuyên bố hay không. Trong trường hợp này nó cũng đủ để kiểm tra xem khi SVD trả về ba của ma trận (U,D,V) , rằng X bị thu hồi, đến dự đoán lỗi dấu chấm động, bởi sản phẩm UDV′ ; rằng các cột của U và của V là trực giao; và D là đường chéo, các phần tử đường chéo của nó không âm và được sắp xếp theo thứ tự giảm dần. Tôi đã áp dụng các thử nghiệm như vậy cho svd
thuật toán trongR
và chưa bao giờ thấy nó bị lỗi. Mặc dù điều đó không đảm bảo nó hoàn toàn chính xác, nhưng trải nghiệm như vậy - mà tôi tin rằng được chia sẻ bởi rất nhiều người - cho thấy rằng bất kỳ lỗi nào cũng sẽ yêu cầu một số loại đầu vào phi thường để được hiển thị.
Điều gì sau đây là một phân tích chi tiết hơn về các điểm cụ thể được nêu ra trong câu hỏi.
Sử dụng R
's svd
thủ tục, trước tiên bạn có thể kiểm tra xem như k tăng, mối tương quan giữa các hệ số của U phát triển yếu hơn, nhưng họ vẫn là khác không. Nếu bạn chỉ đơn giản là thực hiện một mô phỏng lớn hơn, bạn sẽ thấy chúng có ý nghĩa. (Khi k=3 , 50000 lần lặp nên đủ.) Trái với khẳng định trong câu hỏi, các mối tương quan không "biến mất hoàn toàn".
Thứ hai, một cách tốt hơn để nghiên cứu hiện tượng này là quay trở lại câu hỏi cơ bản về tính độc lập của các hệ số. Mặc dù các mối tương quan có xu hướng gần bằng 0 trong hầu hết các trường hợp, sự thiếu độc lập rõ ràng là rõ ràng. Này được thực hiện rõ ràng nhất bằng cách nghiên cứu sự phân bố đa biến đầy đủ các hệ số của U . Bản chất của phân phối xuất hiện ngay cả trong các mô phỏng nhỏ trong đó các mối tương quan khác không thể (chưa) được phát hiện. Ví dụ, kiểm tra một ma trận phân tán của các hệ số. Để thực hiện điều này, tôi đặt kích thước của mỗi tập dữ liệu mô phỏng thành 4 và giữ k=2 , từ đó vẽ 1000hiện thực hóa ma trận 4×2U , tạo ma trận 1000×8 . Dưới đây là ma trận phân tán đầy đủ của nó, với các biến được liệt kê theo vị trí của chúng trong U :
Quét xuống cột đầu tiên cho thấy sự thiếu độc lập thú vị giữa u11 và uij : xem xét góc phần tư phía trên của biểu đồ tán xạ với u21 gần như bị bỏ trống; hoặc kiểm tra đám mây dốc lên hình elip mô tả mối quan hệ (u11,u22) và đám mây dốc xuống cho cặp (u21,u12) . Một cái nhìn cận cảnh cho thấy sự thiếu độc lập rõ ràng trong hầu hết các hệ số này: rất ít trong số chúng trông độc lập từ xa, mặc dù hầu hết trong số chúng thể hiện mối tương quan gần như bằng không.
(NB: Hầu hết các đám mây tròn là các hình chiếu từ một siêu cầu được tạo bởi điều kiện chuẩn hóa buộc tổng bình phương của tất cả các thành phần của mỗi cột là thống nhất.)
Ma trận Scatterplot với k=3 và k=4 thể hiện các mẫu tương tự nhau: những hiện tượng này không bị giới hạn ở k=2 , cũng không phụ thuộc vào kích thước của mỗi tập dữ liệu mô phỏng: chúng khó tạo ra và kiểm tra hơn.
Các giải thích cho các mẫu này đi đến thuật toán được sử dụng để thu được U trong phân tách giá trị số ít, nhưng chúng ta biết các mẫu không độc lập đó phải tồn tại bởi các thuộc tính rất xác định của U : vì mỗi cột liên tiếp là (trực quan) trực giao với trước đó những điều kiện này, các điều kiện trực giao áp đặt các phụ thuộc chức năng giữa các hệ số, từ đó chuyển thành các phụ thuộc thống kê giữa các biến ngẫu nhiên tương ứng.
Chỉnh sửa
Đáp lại các bình luận, có thể đáng để nhận xét về mức độ mà các hiện tượng phụ thuộc này phản ánh thuật toán cơ bản (để tính toán một SVD) và mức độ chúng vốn có trong bản chất của quá trình.
Các mô hình tương quan cụ thể giữa các hệ số phụ thuộc rất nhiều vào các lựa chọn tùy ý được thực hiện bởi thuật toán SVD, bởi vì giải pháp không phải là duy nhất: các cột của U có thể luôn được nhân độc lập với −1 hoặc 1 . Không có cách nội tại để chọn dấu hiệu. Do đó, khi hai thuật toán SVD đưa ra các lựa chọn ký hiệu khác nhau (tùy ý hoặc thậm chí là ngẫu nhiên), chúng có thể dẫn đến các mẫu phân tán khác nhau của các giá trị (uij,ui′j′) . Nếu bạn muốn thấy điều này, hãy thay thế stat
hàm trong mã bên dưới bằng
stat <- function(x) {
i <- sample.int(dim(x)[1]) # Make a random permutation of the rows of x
u <- svd(x[i, ])$u # Perform SVD
as.vector(u[order(i), ]) # Unpermute the rows of u
}
Điều này đầu tiên ngẫu nhiên sắp xếp lại các quan sát x
, thực hiện SVD, sau đó áp dụng thứ tự nghịch đảo u
để phù hợp với trình tự quan sát ban đầu. Bởi vì hiệu ứng là tạo thành hỗn hợp của các phiên bản phản xạ và xoay của các phân tán ban đầu, các phân tán trong ma trận sẽ trông đồng nhất hơn nhiều. Tất cả các tương quan mẫu sẽ cực kỳ gần với 0 (bằng cách xây dựng: các tương quan cơ bản là chính xác bằng không). Tuy nhiên, sự thiếu độc lập vẫn sẽ rõ ràng (trong các hình tròn đồng nhất xuất hiện, đặc biệt là giữa ui,j và ui,j′ ).
Việc thiếu dữ liệu trong một số góc phần tư của một số biểu đồ phân tán ban đầu (được hiển thị trong hình trên) phát sinh từ cách R
thuật toán SVD chọn các dấu hiệu cho các cột.
Không có gì thay đổi về kết luận. Do cột thứ hai của U là trực giao với cột thứ nhất, nên nó (được coi là biến ngẫu nhiên đa biến) phụ thuộc vào biến thứ nhất (cũng được coi là biến ngẫu nhiên đa biến). Bạn không thể có tất cả các thành phần của một cột độc lập với tất cả các thành phần của cột khác; tất cả những gì bạn có thể làm là xem xét dữ liệu theo cách che khuất các phụ thuộc - nhưng sự phụ thuộc sẽ tồn tại.
Dưới đây là R
mã cập nhật để xử lý các trường hợp k>2 và vẽ một phần của ma trận phân tán.
k <- 2 # Number of variables
p <- 4 # Number of observations
n <- 1e3 # Number of iterations
stat <- function(x) as.vector(svd(x)$u)
Sigma <- diag(1, k, k); Mu <- rep(0, k)
set.seed(17)
sim <- t(replicate(n, stat(MASS::mvrnorm(p, Mu, Sigma))))
colnames(sim) <- as.vector(outer(1:p, 1:k, function(i,j) paste0(i,",",j)))
pairs(sim[, 1:min(11, p*k)], pch=".")