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*= A - bạn vT
Trong đó và 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*= A - UVT
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ờ:
- 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,
- Về việc học tập không gian con gia tăng và mạnh mẽ (2003) của Li et al.
- 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.
- 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.
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 (updown
từ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?