Ma trận ngẫu nhiên với các ràng buộc về chiều dài hàng và cột


25

Tôi cần phải tạo ra các ma trận không vuông ngẫu nhiên với dòng và C cột, các yếu tố phân phối ngẫu nhiên với trung bình = 0, và hạn chế như vậy mà chiều dài (mức L2) của mỗi hàng là 1 và độ dài của mỗi cột là RC1 . Tương đương, tổng giá trị bình phương là 1 cho mỗi hàng vàRRC cho mỗi cột.RC

Cho đến nay tôi đã tìm thấy một cách để đạt được điều này: chỉ cần khởi tạo ngẫu nhiên các phần tử ma trận (ví dụ: từ phân phối đồng nhất, bình thường hoặc laplace với phương sai không trung bình và tùy ý), sau đó luân phiên chuẩn hóa các hàng và cột thành , kết thúc với bình thường hóa hàng. Điều này dường như hội tụ đến kết quả mong muốn khá nhanh (ví dụ: R = 40C = 80 , phương sai của chiều dài cột thường là ~ 0,00001 sau 2 lần lặp), nhưng tôi không chắc liệu mình có thể phụ thuộc vào tốc độ hội tụ nhanh này không chung (cho các kích thước ma trận khác nhau và phân phối phần tử ban đầu).length=1R=40C=80 0.000012

Câu hỏi của tôi là thế này: có cách nào để đạt được kết quả mong muốn ( , c o l u m n l đ n g t h s = row lengths=1 ) trực tiếp mà không lặp lại giữa chuẩn hóa hàng / cột? Ví dụ, một cái gì đó giống như thuật toán để chuẩn hóa một vectơ ngẫu nhiên (khởi tạo ngẫu nhiên các phần tử, đo tổng các giá trị bình phương, sau đó chia tỷ lệ cho mỗi phần tử theo một vô hướng chung). Nếu không, có một đặc tính đơn giản cho tốc độ hội tụ (ví dụ: lặp num cho đến khi lỗi<ϵ) của phương pháp lặp được mô tả ở trên không?column lengths=RC<ϵ


1
Điều này khá giống với thuật toán Sinkhorn-Knopp, còn được gọi là sự phù hợp theo tỷ lệ lặp.
hồng y

6
Ngoài ra, bạn nên xác định những gì bạn có nghĩa là ma trận "ngẫu nhiên". Ví dụ, quy trình bạn mô tả sẽ (gần như chắc chắn) không tạo ra ma trận ngẫu nhiên đồng nhất trên không gian mong muốn.
hồng y

1
@cardinal Điểm tốt. Nhưng lưu ý rằng ít nhất bạn có thể đạt được các phân phối (cận biên) giống hệt nhau cho tất cả các thành phần bằng cách nhân lên sau một cặp ma trận hoán vị ngẫu nhiên (để sắp xếp ngẫu nhiên cả hàng và cột).
whuber

1
@whuber: Vâng, mặc dù phân phối chung vẫn có thể khá lạ. Bằng cách "nhân bài" Tôi giả sử bạn có nghĩa là nhân lên ở bên trái và bên phải "hậu hội tụ" (chứ không phải, ví dụ, nhân lên ở bên phải).
hồng y

9
Trên thực tế, sau một chút suy nghĩ, tôi nghĩ thuật toán của bạn chính xác là thuật toán Sinkhorn-Knopp với một sửa đổi rất nhỏ. Đặt là ma trận gốc của bạn và đặt Y là ma trận có cùng kích thước sao cho Y i j = X 2 i j . Sau đó, thuật toán của bạn là tương đương với việc áp dụng Sinkhorn-Knopp đến Y , nơi ở bước cuối cùng bạn khôi phục hình thức mong muốn của bạn bằng cách tham gia X i j = s g n ( X i j ) XYYij=Xij2Y . Sinkhorn-Knopp được đảm bảo hội tụ ngoại trừ trong hoàn cảnh khá bệnh lý. Đọc lên nó sẽ rất hữu ích. X^ij=sgn(Xij)Yij
Đức hồng y

Câu trả lời:


6

Như @cardinal đã nói trong một bình luận:

Trên thực tế, sau một chút suy nghĩ, tôi nghĩ thuật toán của bạn chính xác là thuật toán Sinkhorn-Knopp với một sửa đổi rất nhỏ. Đặt X là ma trận gốc của bạn và đặt Y là ma trận có cùng kích thước sao cho Y i j = X 2 i j . Sau đó, thuật toán của bạn là tương đương với việc áp dụng Sinkhorn-Knopp đến Y , nơi ở bước cuối cùng bạn khôi phục hình thức mong muốn của bạn bằng cách tham gia X i j = s g n ( X i j ) XYYij=Xij2YX^ij=sgn(Xij)Yij

... có vẻ như thuật toán lặp mà tôi đề xuất trong câu hỏi ban đầu rất giống với thuật toán Sinkhorn-Knopp. Thật thú vị, nó cũng có vẻ rất giống với điều chỉnh tỷ lệ lặp (IPF), như được mô tả trên trang wikipedia của IPF, có liên quan đến phương pháp tối đa hóa và kỳ vọng của Newton (tất cả đều có cùng giới hạn).

Các phương pháp lặp này thường được áp dụng cho các vấn đề thiếu giải pháp dạng đóng, vì vậy tôi sẽ tạm thời cho rằng câu trả lời cho câu hỏi là tiêu cực: không có cách nào để đạt được giải pháp mong muốn mà không lặp lại hàng / cột.


(+1) Để bạn tiếp tục quan tâm đến câu hỏi này và theo dõi độc lập của bạn. :-)
hồng y
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.