5

Tôi đang cố gắng áp dụng NMF trên tập dữ liệu của tôi, sử dụng python scikit-learn. Tập dữ liệu của tôi chứa 0 giá trị và giá trị bị thiếu. Nhưng scikit-learning không cho phép giá trị NaN trong ma trận dữ liệu. Một số bài viết nói rằng thay thế các giá trị bị thiếu bằng số không.Làm thế nào để đối phó với các giá trị bị thiếu trong python scikit NMF

câu hỏi của tôi là:

  • nếu tôi thay thế thiếu giá trị với số không, làm thế nào các thuật toán có thể nói với các giá trị bị mất và không giá trị thực?

  • Có bất kỳ triển khai NMF nào khác có thể xử lý các giá trị bị thiếu không?

  • Hoặc nếu có bất kỳ thuật toán nhân tố ma trận nào khác có thể thực hiện dự đoán giá trị thiếu?

+0

Việc thay thế của thiếu-giá trị với zero (hoặc cột trung bình, hoặc hàng-trung bình hoặc ...) không được gọi bằng cái phân loại. Nó sẽ xử lý những con số này như bất kỳ số nào khác có thể không sao (chúng tôi luôn giả sử một mô hình xếp hạng thấp tồn tại với các phương thức này)./Nói chung tôi sẽ nói, dự đoán giá trị thiếu là một vấn đề khó khăn hơn (cần các giả định mạnh hơn) so với việc tìm ra một hệ số hạng thấp của ma trận mà không thiếu giá trị. Thay vào đó: viết trình tối ưu hóa dựa trên SGD cho một số vấn đề phổ biến nmf (và bạn có thể lấy mẫu từ các giá trị đã biết) – sascha

+1

Cảm ơn, dường như bỏ qua các giá trị thiếu khi áp dụng SGD là giải pháp. –

+0

Đối mặt với cùng một vấn đề. Bạn đã viết bản thực hiện SGD của riêng mình chưa? Nếu có, nó hoạt động như thế nào? Cho đến nay tôi đã không thể đạt được bất cứ điều gì thực hiện tương tự như NMF. – silentser

Trả lời

1

SGD sẽ thực hiện công việc tại đây, nhưng tìm hiểu scikit không có công việc có thể áp dụng cho tác vụ. Viết một của riêng bạn sẽ làm công việc, nhưng sẽ là thực sự chậm kể từ khi người ta không thể trực tiếp song song SGD hệ số ma trận hóa. Kiểm tra Phân bổ SGD thuật toán được mô tả here. Nó không phải là khó khăn như vậy để thực hiện và nó tăng tốc độ những điều đáng kể.

+0

Điểm tốt, cảm ơn :) –

Các vấn đề liên quan