Gần đây tôi gặp phải một vấn đề tương tự: Làm thế nào để quản lý trích xuất nhiều tính năng từ một tập dữ liệu lớn, mà không biết trước tất cả chúng sẽ là gì. (Ngay cả việc tính toán giá trị trung bình nhiều lần sẽ tốn kém về mặt tính toán.) Hơn nữa, tôi sẽ quản lý dự đoán dựa trên các bộ tính năng khác nhau như thế nào? Có nghĩa là, nếu tôi đã thêm một tính năng mới, làm thế nào tôi biết mô hình nào sẽ đào tạo về các tính năng mới? Nó có thể nhanh chóng ném tuyết thành một mớ hỗn độn lớn.
Giải pháp hiện tại của tôi là theo dõi tất cả trong cơ sở dữ liệu NoQuery cục bộ (MongoDB). Ví dụ: tôi có thể có một bộ sưu tập features
, mỗi mục trong đó có một tên, mô tả về cách tính năng được tính toán, tệp python chạy trích xuất, v.v.
Tương tự như vậy, một bộ sưu tập models
bao gồm các mô hình chạy trên dữ liệu. Mỗi mục có thể có một tên, một danh sách các tính năng được sử dụng để huấn luyện mô hình, các tham số cuối cùng của nó, các giá trị dự đoán trên tập kiểm tra được tổ chức, các số liệu về cách thức hoạt động của mô hình, v.v.
Từ quan điểm thuận lợi của tôi, điều này có một số lợi ích:
- Bằng cách lưu dự đoán, tôi có thể sử dụng chúng sau này trong các dự đoán.
- Bởi vì tôi theo dõi những tính năng nào đã được sử dụng, tôi biết những tính năng nào cần đào tạo lại khi tôi trích xuất nhiều tính năng hơn.
- Bằng cách lưu mô tả mô hình, tôi đảm bảo rằng tôi luôn biết những gì tôi đã thử. Tôi không bao giờ phải tự hỏi, "Tôi đã thử LASSO với các tham số chính quy được đặt bởi CV tìm kiếm dạng lưới chưa?" Tôi luôn có thể tìm kiếm nó, và xem nó đã thành công như thế nào.
Từ câu hỏi của bạn, có vẻ như bạn có thể điều chỉnh cách tiếp cận này với quy trình làm việc của vấn đề. Cài đặt Mongo hoặc cơ sở dữ liệu khác về lựa chọn, sau đó lưu từng lần chạy thử nghiệm, đầu vào của nó, kết quả của nó và bất cứ điều gì khác mà bạn có thể muốn theo dõi trong suốt quá trình của dự án. Điều này sẽ dễ dàng truy vấn hơn nhiều so với một bảng tính, ít nhất.