SVD của một ma trận có các giá trị bị thiếu


12

Giả sử tôi có ma trận đề xuất theo kiểu Netflix và tôi muốn xây dựng một mô hình dự đoán xếp hạng phim tiềm năng trong tương lai cho một người dùng nhất định. Sử dụng phương pháp của Simon Funk, người ta sẽ sử dụng độ dốc dốc ngẫu nhiên để giảm thiểu định mức Frobenius giữa ma trận đầy đủ và ma trận từng người dùng * theo từng mục kết hợp với thuật ngữ chính quy L2.

Trong thực tế, mọi người làm gì với các giá trị còn thiếu từ ma trận đề xuất, đó là toàn bộ điểm thực hiện phép tính? Tôi đoán từ việc đọc bài đăng trên blog của Simon là anh ấy CHỈ sử dụng các thuật ngữ không thiếu (bao gồm (nói) ~ 1% ma trận đề xuất) để xây dựng một mô hình (với một số lựa chọn hợp lý về siêu tham số và chính quy) để dự đoán 99% còn lại của ma trận?

Trong thực tế, bạn có thực sự bỏ qua tất cả những giá trị đó? Hay bạn suy luận càng nhiều càng tốt TRƯỚC KHI thực hiện giảm độ dốc ngẫu nhiên? Một số thực tiễn tốt nhất tiêu chuẩn để xử lý các giá trị còn thiếu là gì?


1
Có vẻ như một câu hỏi tương tự cho điều này . Tôi đã trả lời câu hỏi đó.
d_ijk_stra


2
@d_ijk_stra "đã trả lời" sẽ đưa ra một chút hào phóng cho số tiền liên kết đến một tệp PDF
ali_m

Câu trả lời:


6

Vâng, trong thực tế những giá trị được bỏ qua. Trong mô tả của bạn về mặt định mức Frobenius, điều này tương ứng với việc giảm thiểu các thành phần của định mức có thể đo được, tức là những thành phần đã biết xếp hạng. Thuật ngữ chính quy có thể được xem như là một Bayes trước trên các thành phần của vectơ đặc trưng, ​​với SVD tính toán ước tính khả năng tối đa, tuân theo giá trị trước và các giá trị đã biết này.

Có lẽ tốt nhất để nghĩ về SVD như là một phương pháp để suy ra các giá trị còn thiếu. Nếu bạn đã có một cách tốt hơn để làm điều này, tại sao bạn cần SVD? Nếu bạn không, thì SVD sẽ vui vẻ điền vào chỗ trống cho bạn.


1
Làm thế nào để bạn sử dụng SVD để suy ra những giá trị còn thiếu? Bạn đã thử các phương pháp khác để suy ra các giá trị bị thiếu, giả sử sử dụng các giá trị không bị thiếu để huấn luyện bộ phân loại rừng ngẫu nhiên, sau đó có thể được sử dụng để đoán các giá trị bị thiếu của bạn? Bạn có nhận được kết quả tốt hơn, hoặc nó thực sự phụ thuộc vào vấn đề?
Vishal

1
Bạn suy ra các giá trị bị thiếu giống như cách bạn dự đoán các giá trị trong tương lai, bằng cách sử dụng các thành phần có liên quan của phân tách SVD. Dự đoán xếp hạng trong tương lai chính xác là vấn đề tương tự như suy ra các giá trị còn thiếu. Nếu bạn có một cách hay để suy ra các giá trị bị thiếu, chỉ cần sử dụng nó để dự đoán xếp hạng trong tương lai. Nếu bạn không, thì đó là những gì SVD dành cho.
Martin O'Leary

"Có lẽ tốt nhất để nghĩ về SVD như là một phương pháp để suy ra các giá trị còn thiếu". À, không, thực ra SVD phụ thuộc vào người dùng suy ra trước tất cả các giá trị bị thiếu theo cách khác, trước khi chạy SVD. SVD không áp đặt gì cả.
Geoffrey Anderson

1

Trong thực tế, mọi người làm gì với các giá trị còn thiếu từ ma trận đề xuất, đó là toàn bộ điểm thực hiện phép tính? Tôi đoán từ việc đọc bài đăng trên blog của Simon là anh ấy CHỈ sử dụng các thuật ngữ không thiếu để xây dựng một mô hình.

Điều đó đúng - đó là quan điểm của mô hình của anh ấy và của bạn, để dự đoán các điều khoản còn thiếu, phải không? Đó là một điểm rất quan trọng mà nhiều người thực sự quên. Họ nghĩ rằng họ chỉ có thể "giả sử" gán trước một dữ liệu bị thiếu mà không cần quan tâm trên thế giới và mọi thứ sẽ hoạt động một cách kỳ diệu đủ từ một SVD. Rác vào, đổ rác: Đó là sự thật, và bạn nên xem nó tốt hơn. Tốt hơn hết là bạn không nên cung cấp dữ liệu rác cho một mô hình nếu bạn muốn kết quả nào đó hữu ích.

Chắc chắn KHÔNG "tốt nhất để suy ra bất kỳ giá trị bị thiếu" nào trên bộ dữ liệu thưa thớt đa số và sau đó chạy SVD với điều đó với hy vọng sẽ áp đặt các giá trị cho bạn (mà bạn đã tranh luận trước khi bạn chạy SVD, phải không?). Bạn nghĩ gì, một mô hình là ma thuật? Đây không phải là phép thuật cũng như công nghệ để vượt qua phần lớn dữ liệu rác. Bạn không thể nói dối với một mô hình rằng dữ liệu là dữ liệu thực khi nó hoàn toàn không có thật, nhưng thực sự chỉ là một số thứ linh tinh mà bạn tạo ra từ không khí mỏng.

SVD làm những việc hữu ích khác vì vậy tôi chắc chắn không nói rằng SVD là vô giá trị. Hãy tiếp tục và chỉ sử dụng SVD trên các bộ dữ liệu hoàn chỉnh, có lẽ bạn đã đưa ra các giá trị bị thiếu một cách thông minh khi đã sử dụng mô hình học máy với tất cả sự chú ý do lỗi sai lệch và sai lệch trong quá trình phát triển.

Học máy là cách. Vì vậy, nếu bạn vẫn muốn biết cách áp đặt các giá trị bằng cách sử dụng thiết kế nhân tố ma trận, chắc chắn có những cách tốt để thực hiện chính xác điều này bằng cách sử dụng máy học và quan trọng là chúng không cung cấp bất kỳ dữ liệu rác nào cho mô hình để cố gắng học hỏi cách vô nghĩa.

Chính xác là một mô hình nhân tố ma trận học máy như vậy được trình bày khá tốt bởi các giảng viên của khóa học trực tuyến Khai thác dữ liệu tập hợp trực tuyến Stanford, trong mô-đun 5. Họ chỉ cho bạn toán học và giải thích mô hình. Họ không mã hóa nó cho bạn mặc dù.

Không sao vì bạn có thể tự viết mã, nếu bạn hiểu về máy học cơ bản. Bạn có biết hàm mất và hàm chi phí là gì không? Chính quy? Xuống dốc? ARe bạn OK với phép nhân và phép cộng? Lỗi thiên vị và lỗi phương sai? Nếu vậy thì bạn tốt. Nếu không thì bạn nên cân nhắc tham gia khóa học trực tuyến Machine Learning của Andrew Ng tại Coursera, một trong nhiều nơi khởi đầu tốt. Sau đó, hãy tham gia khóa học trực tuyến Bộ dữ liệu khổng lồ khai thác nói chính xác về nhân tố ma trận và học máy để tạo ra các mô hình đề xuất.

Có thể nói, bạn hoàn toàn có thể thiết kế cũng như mã hóa mô hình nhân tố của riêng bạn xử lý dữ liệu bị thiếu rất tốt, giống như Simon Funk đã làm, và bạn có thể làm điều đó từ đầu nhưng không khó chút nào như nó đã trở lại vào thời của anh ấy, bởi vì bây giờ bạn có thể sử dụng một công cụ như TensorFlow hoặc Microsoft CNTK, điều này giúp ích rất nhiều cho bạn. Xác định hàm mất và hàm chi phí, chọn trình tối ưu hóa, phân vùng tập dữ liệu của bạn thành đào tạo, dev, kiểm tra từ dữ liệu thực sự có sẵn (dữ liệu được gắn nhãn) và để nó chạy. Nghiêm túc, nó hoạt động. Việc gỡ lỗi TF không dễ dàng và các lỗi xây dựng biểu đồ của nó, nhưng cuối cùng nó có thể hoạt động tốt và mất ít hơn một trang mã.

Cụ thể, một cách để không cung cấp dữ liệu giả cho mô hình học máy nhân tố ma trận, là bỏ qua các yếu tố ma trận của dữ liệu bị thiếu trong các hàm mất mát và chi phí của bạn .


0

Có một luận án đánh giá nhiều hệ thống khuyến nghị và so sánh chúng, nhưng không nói về việc theo dõi lâu dài các mục bị thiếu, ví dụ, để kiểm tra dự đoán. Đó là một phần câu hỏi của bạn? Sử dụng thành phần thời gian theo cách đó? Trong số nhiều bài báo và phương pháp đánh giá luận án là các hệ thống nhận biết / nhạy cảm về thời gian, chẳng hạn như nghiên cứu trong các bài báo Rendle. Nếu câu hỏi của bạn cũng là về việc xử lý sự thưa thớt của dữ liệu, điều đó cũng được thảo luận chi tiết trong suốt luận án và có nhiều phương pháp. ma trận thưa thớt và cắt ngang với số 0 hoặc hệ số ma trận có thêm ma trận liên kết phân cụm người dùng (người dùng xếp hạng các mục tương tự) hoặc ma trận liên kết phân cụm các mục.

Tiêu đề luận án là "Mô hình xếp hạng thấp cho các hệ thống đề xuất với thông tin ưu tiên hạn chế" của Evgeny Frolov https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf

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.