Cách đào tạo dữ liệu hiệu quả nhất bằng cách sử dụng ít bộ nhớ nhất là gì?


10

Đây là dữ liệu đào tạo của tôi: 200.000 Ví dụ x 10.000 Tính năng. Vì vậy, ma trận dữ liệu đào tạo của tôi là - 200.000 x 10.000.

Tôi đã quản lý để lưu tệp này trong một tệp phẳng mà không gặp vấn đề về bộ nhớ bằng cách lưu từng bộ dữ liệu từng cái một (ví dụ này đến ví dụ khác) khi tôi tạo các tính năng cho mỗi ví dụ.

Nhưng, bây giờ khi tôi sử dụng Sữa , ánh sáng SVM hoặc bất kỳ Thuật toán học máy nào khác, mọi thứ đều cố gắng tải toàn bộ dữ liệu đào tạo vào bộ nhớ thay vì đào tạo từng cái một. Tuy nhiên tôi chỉ có 8 GB RAM, vì vậy tôi không thể tiến hành theo cách này.

Bạn có biết dù sao tôi cũng có thể huấn luyện thuật toán một tập dữ liệu theo một tập dữ liệu không? Tức là, bất cứ lúc nào tôi cũng có một bộ dữ liệu được tải vào bộ nhớ, trong khi đào tạo.


1
Bạn có ý nghĩa gì khi "lưu từng tập dữ liệu từng cái một?" Bạn có nghĩa là "mỗi dòng dữ liệu?" Nếu bạn có nhiều bộ dữ liệu, bạn lưu từng bộ một, tại sao không tải từng bộ một và phù hợp với thuật toán cho từng bộ?
Zach

1
"Một tập dữ liệu của một tập dữ liệu" có nghĩa là từng dòng một? Tức là một tập dữ liệu = 10000 tính năng? Nếu đó là trường hợp, thì thuật toán trực tuyến có thể là thứ bạn đang tìm kiếm, xem: en.wikipedia.org/wiki/Online_alacticmen.wikipedia.org/wiki/Online_machine_learning . Có tồn tại phiên bản trực tuyến cho nhiều thuật toán nghiêng máy, ví dụ SVM và rừng ngẫu nhiên.
Herra Hữu

Cảm ơn .. Zach và Herra. Tôi chỉnh sửa câu hỏi để xác định rõ hơn từng câu một. Và vâng, tôi đã nghĩ về Học trực tuyến nhưng chưa bao giờ nghĩ về các thuật toán trực tuyến, hãy để tôi đọc về điều đó và thử nó.
madCode

Câu trả lời:


4

Tôi tin rằng thuật ngữ cho loại hình học tập này là học tập bên ngoài . Một gợi ý là vowpal wợi , có thư viện R tiện lợi , cũng như thư viện cho nhiều ngôn ngữ khác.


Tôi đang gặp vấn đề phụ thuộc với boost trong khi cài đặt nó. Bạn có biết tại sao tôi nhận được điều này? bit.ly/L939DO
madCode

@madCode Tôi chưa bao giờ thực sự sử dụng vowpal wợi, vì vậy tôi không thể giúp bạn cài đặt nó. Tôi đã nghe danh sách gửi thư của họ là tuyệt vời và tôi chắc chắn bạn có thể tìm thấy sự giúp đỡ để thiết lập nó.
Zach

Này..Zach. Nó hoạt động tốt. Tôi đã cài đặt nó và thậm chí cho tôi dự đoán. cảm ơn :-)
madCode

1

Tôi chân thành đề nghị thứ hai của Zach. vowpal wợi là một lựa chọn tuyệt vời, và bạn sẽ bị bất ngờ bởi tốc độ của nó. Tập dữ liệu 200k x 10k không được coi là lớn theo định mức của vowpal w thôi.

vowpal_wợi (có sẵn ở dạng nguồn thông qua https://github.com/JohnLangford/vowpal_wợi , một phiên bản cũ hơn có sẵn dưới dạng gói tiêu chuẩn trong vũ trụ Ubuntu) là một trình học tuyến tính + song tuyến tính nhanh, với đầu vào rất linh hoạt. Bạn có thể kết hợp các tính năng nhị phân và giá trị số. Không cần đánh số các tính năng vì tên biến sẽ hoạt động "nguyên trạng". Nó có rất nhiều tùy chọn, thuật toán, mức giảm, hàm mất và tính linh hoạt tuyệt vời. Bạn có thể tham gia danh sách gửi thư (tìm nó qua github) và hỏi bất kỳ câu hỏi nào. Cộng đồng rất hiểu biết và hỗ trợ.


1

Tôi đã trả lời câu hỏi tương tự ở đây . Điểm là hầu hết các thuật toán khai thác dữ liệu / máy học là những người học theo lô mà họ tải tất cả dữ liệu vào bộ nhớ. Do đó, bạn cần các công cụ khác nhau cho các tập dữ liệu rất lớn như bạn có. Xem công cụ câu hỏi đó cũng.

Học trực tuyến là một cách để giảm dung lượng bộ nhớ của các thuật toán.

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.