Cập nhật phân tách SVD sau khi thêm một hàng mới vào ma trận


17

Giả sử rằng tôi có một ma trận dày đặc có kích thước , với phân tách SVDTrong tôi có thể tính toán SVD như sau : .Am×n

A=USV.
Rsvd(A)

Nếu một hàng mới được thêm vào , người ta có thể tính toán phân tách SVD mới dựa trên hàng cũ (tức là bằng cách sử dụng , và ), mà không cần tính toán lại SVD từ đầu?(m+1)AUSV


3
Kiểm tra tài liệu của rank 1 updates. Bản sửa đổi SVD trực tuyến nhanh cho các hệ thống đề xuất nhẹ của Brand là bài báo đầu tiên có thể truy cập. Tôi đã không thấy một cái gì đó cho SVD đã được thực hiện trong R không may. Cập nhật Cholesky tồn tại ( updowntừ Matrix) nhờ CHOLMOD. Độ thưa thớt của ma trận của bạn sẽ thực sự tạo ra sự khác biệt cho giải pháp cuối cùng của bạn; Bạn giả sử một ma trận dày đặc hay thưa thớt? Một
usεr11852 nói Phục hồi Monic

2
+1 đến @ usεr11852. Cũng lưu ý rằng việc cập nhật QR dễ dàng hơn và chuẩn hơn nhiều và trong một số ứng dụng, QR là đủ và người ta không thực sự cần SVD. Vì vậy, hãy suy nghĩ về ứng dụng của bạn quá.
amip nói rằng Phục hồi lại

Vâng, ma trận dày đặc.
dùng1436187

1
'Bỏ' tài liệu giới thiệu sau đó và tập trung vào xử lý hình ảnh. Các câu hỏi tương tự với các tour du lịch đã được đăng dưới dạng "hình ảnh mới" trong cơ sở dữ liệu. Ví dụ, linh cảm của tôi là ai đó phải có một thuật toán để cập nhật trực tuyến các mục nhập của eigenfaces. Những kẻ này làm việc với các đại diện ma trận dày đặc.
usεr11852 nói Phục hồi Monic

Câu trả lời:


14

Có, người ta có thể cập nhật phân tách SVD sau khi thêm một hàng mới vào ma trận hiện có.

Nói chung, công thức vấn đề " thêm một vào " này được gọi là cập nhật xếp hạng một . Liên kết MathOverflow do @amoeba cung cấp về " cập nhật thứ hạng hai hiệu quả của phân tách eigenvalue " là bước đầu tiên tuyệt vời nếu bạn muốn bắt đầu tìm hiểu sâu hơn về vấn đề này; bài báo đầu tiên cung cấp một giải pháp rõ ràng cho câu hỏi cụ thể của bạn. Chỉ cần làm rõ những gì cấp bậc một và bậc hai trung bình, do đó bạn không bị nhầm lẫn, nếu mới của bạn là như vậy mà:Một*

Một*= =Một-bạnvT

Trong đó v là các vectơ thì bạn coi đây là bản cập nhật cấp một (hay nhiễu loạn ). Cơ bản của bản cập nhật này được quyết định bởi công thức Sherman-Morrison. . Nếu nhiễu loạn là nhiều hơn một cấp tức là. Một * = Một - U V Tbạnv

Một*= =Một-BạnVT

các công thức Woodbury đến chơi. Nếu bạn thấy những công thức này, bạn sẽ nhận thấy rằng có rất nhiều nghịch đảo liên quan. Bạn không giải quyết chúng trực tiếp. Vì bạn đã giải quyết được rất nhiều hệ thống con của họ (ví dụ: bạn đã có một số phân tách đã được tính toán), bạn sử dụng chúng để có được ước tính nhanh hơn và / hoặc ổn định hơn. (Đó là lý do tại sao mọi người vẫn nghiên cứu lĩnh vực này.) Tôi đã sử dụng cuốn sách " Thống kê tính toán " của JE Gentle rất nhiều làm tài liệu tham khảo; Tôi nghĩ rằng Chapt. 5 Đại số tuyến tính số sẽ thiết lập cho bạn đúng. (Kinh điển uber: " Đại số ma trận từ quan điểm của một nhà thống kê " của Harville không may mắn không chạm vào cập nhật thứ hạng nào cả.)

Nhìn vào khía cạnh thống kê / ứng dụng của mọi thứ, xếp hạng một bản cập nhật là phổ biến trong các hệ thống đề xuất bởi vì một trong số đó có thể có hàng ngàn mục nhập của khách hàng và tính toán lại SVD (hoặc bất kỳ phân tách cụ thể nào cho vấn đề đó) mỗi khi người dùng mới đăng ký hoặc sản phẩm mới thêm hoặc loại bỏ là khá lãng phí (nếu không thể đạt được). Thông thường ma trận hệ thống đề xuất rất thưa thớt và điều này làm cho các thuật toán thậm chí còn hiệu quả hơn. Một bài báo đầu tiên có thể truy cập là bản thảo "Bản sửa đổi SVD trực tuyến nhanh cho các hệ thống đề xuất nhẹ " của M. Brand. Đi đến ma trận dày đặc Tôi nghĩ rằng việc xem xét các bài báo từ Nhận dạng mẫu và Xử lý hình ảnh có thể giúp bạn sử dụng thuật toán thực tế khá xa. Ví dụ: các giấy tờ:

  1. Việc học tăng dần các thành phần chính hai chiều để nhận dạng khuôn mặt (2009) của Ren và Dai,
  2. Về việc học tập không gian con gia tăng và mạnh mẽ (2003) của Li et al.
  3. Trích xuất cơ sở Karhunen-Loeve tuần tự và ứng dụng vào hình ảnh (2000) của Levey và Lindenbaum.
  4. Học tập tăng dần để theo dõi trực quan mạnh mẽ (2007) của Ross et al.

tất cả dường như đang giải quyết cùng một vấn đề trong cốt lõi của họ; các tính năng mới đang xuất hiện và chúng tôi cần cập nhật đại diện cho phù hợp nhanh chóng . Lưu ý rằng các ma trận này không đối xứng hoặc thậm chí vuông. Một tác phẩm khác của M. Brand cũng có thể giải quyết vấn đề này (xem bài viết " Sửa đổi thứ hạng thấp nhanh của phân rã giá trị số ít (2006) " - điều này cũng được đề cập trong liên kết MO được đưa ra ở đầu bài.) rất nhiều bài báo hay về chủ đề này nhưng hầu hết có xu hướng toán học nặng nề (ví dụ, bài báo Benaych-Georgesa và Nadakuditi về " Các giá trị đơn lẻ và vectơ của nhiễu loạn bậc thấp của ma trận ngẫu nhiên hình chữ nhật lớn (2012)") và tôi không nghĩ họ sẽ sớm nhận được giải pháp. Tôi sẽ đề nghị bạn tập trung vào tài liệu Xử lý hình ảnh.

Thật không may, tôi đã không bắt gặp bất kỳ triển khai R nào cho các thói quen cập nhật cấp một. Câu trả lời về " Triển khai SVD có thể cập nhật bằng Python, C hoặc Fortran? " Từ Khoa học tính toán SE đưa ra một số triển khai MATLAB và C ++ mà bạn có thể muốn xem xét. Thông thường triển khai R, Python, v.v. là các hàm bao quanh các triển khai C, C ++ hoặc FORTRAN.


6
Đây là một bình luận tốt đẹp, nhưng tôi đã thất vọng khi không tìm thấy câu trả lời cho câu hỏi. Nó chỉ ra rằng một bài báo khác của Matthew Brand , được liên kết đến từ câu trả lời MO, chứa một giải pháp rõ ràng.
whuber

5
+1 cho cả bạn và @whuber (và tôi không nghĩ rằng việc "sao chép" bất kỳ thông tin nào được cung cấp trên một trang SE khác là phải tránh! Tôi cho rằng chúng ta nên cố gắng làm cho thông tin được cung cấp trên trang này là tự duy trì Thật vậy, hầu như tất cả các thông tin trong đây đều có nghĩa là sao chép sách giáo khoa, tài nguyên trực tuyến hoặc tài liệu nghiên cứu hiện có. Một câu hỏi: bạn đã đề cập đến các công thức của Sherman-Morrison và Woodbury mô tả mức độ nghịch đảo của ma trận thay đổi sau khi cập nhật cấp một hoặc cấp cao hơn; họ phải làm gì với SVD?
amip nói rằng Phục hồi lại

1
Tôi hiểu lý do tại sao bạn có thể muốn hướng mọi người đến các trang MO cho liên kết đó, nhưng bạn có thể xem xét trực tiếp rằng nó giải quyết được vấn đề! ("Bước đầu tiên tốt" là một cách đánh giá thấp.) Phần lớn bình luận của bạn có thể bị hiểu nhầm là chỉ ra rằng bạn chưa tìm thấy giải pháp tốt.
whuber

1
@whuber: "Tốt" trở thành "tuyệt vời" và bây giờ tôi cũng đề cập đến bài báo, tốt hơn? :) (Cảm ơn bạn đã phản hồi bằng cách này.)
usεr11852 nói Phục hồi Monic

2
Chỉ vì lợi ích của lịch sử: Bunch và Nielsen là những người đầu tiên thể hiện cách cập nhật và hạ cấp SVD. Phương pháp của thương hiệu có hiệu lực khái quát các phương pháp của bài báo cũ này.
JM không phải là một nhà thống kê
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.