Tôi đang cố gắng tạo một mô hình hồi quy dự đoán thời lượng của một nhiệm vụ. Dữ liệu đào tạo tôi có bao gồm khoảng 40 nghìn nhiệm vụ đã hoàn thành với các biến sau:
- Ai thực hiện nhiệm vụ (~ 250 người khác nhau)
- Phần nào (tiểu dự án) của dự án nhiệm vụ được thực hiện trên (~ 20 phần khác nhau)
- Loại nhiệm vụ
- Ngày bắt đầu của nhiệm vụ (giá trị dữ liệu 10 năm)
- Người phải thực hiện nhiệm vụ ước tính mất bao lâu
- Thời gian thực tế nhiệm vụ này đã hoàn thành
Thời lượng có thể thay đổi từ nửa giờ đến vài trăm giờ, nhưng bị lệch rất nhiều (hầu hết các nhiệm vụ được hoàn thành trong vòng 10 giờ). Trên quy mô log, phân phối vẫn hơi lệch phải.
Dự đoán không phải là hoàn hảo, nhưng tôi đang cố gắng cải thiện ước tính của mọi người. Một câu hỏi được đặt ra là "Chúng ta có thể sử dụng biện pháp nào để xác định beter ?" Tôi nghĩ rằng biện pháp tốt nhất sẽ là Lỗi bình phương trung bình (MSE) vì nó có các lỗi lớn nặng hơn nhiều so với các lỗi nhỏ.
Trước khi tôi chuyển sang học máy, tôi đã thử một số cách tiếp cận đơn giản như điều chỉnh ước lượng theo sai số trung bình hoặc trung bình, điều chỉnh nó theo sai số trung bình / trung bình được nhóm theo người, được nhóm theo tiểu dự án nhưng mỗi phương pháp đều xảy ra tồi tệ hơn.
Với học máy, một trong những vấn đề đầu tiên tôi gặp phải là số lượng biến phân loại vì đối với hầu hết các mô hình, chúng phải được mã hóa bằng cách nào đó (ví dụ: một nóng). Dù sao, tôi đã thử áp dụng một số mô hình tuyến tính, ví dụ với Stochastic Gradient Descent, cách tiếp cận của tôi sẽ là:
- Một mã hóa nóng các tính năng phân loại
- Ngày chuyển đổi thành dấu thời gian unix
- Bình thường hóa tất cả các tính năng chưa có từ 0 đến 1
- Chia dữ liệu trong 80/20 bộ tìm hiểu và kiểm tra.
- Với xác thực chéo Tìm kiếm lưới và bộ tìm hiểu cố gắng tìm các tham số siêu tốt nhất và phù hợp với mô hình.
- Dự đoán với bộ thử nghiệm
- Tính sai số / điểm
Bây giờ một điều tôi nhận thấy là kết quả thay đổi khá nhiều: Trong một lần chạy, MSE gần gấp đôi so với lần chạy khác (150 và 280). Một điều nữa là ước tính MSE của mọi người là khoảng 80, vì vậy mô hình của tôi hoạt động kém hơn một chút.
Trong những nỗ lực của tôi để cải thiện hiệu suất, tôi tình cờ gặp câu hỏi này , nơi ai đó đề nghị sử dụng các mô hình sinh tồn. Bây giờ tôi không hài lòng với các loại mô hình này nhưng nghe có vẻ đầy hứa hẹn nhưng trong các thử nghiệm ban đầu của tôi với nó, nó hóa ra quá chậm so với mục đích của tôi (quá lớn của một tập dữ liệu).
Trong cùng một câu trả lời Datascience đã đề xuất sử dụng các mô hình sinh tồn (và trang Wikipedia ), họ cũng đã đề cập đến hồi quy Poisson, nhưng tôi không chắc mình sẽ áp dụng điều này cho trường hợp của mình như thế nào.
Vì vậy, một câu chuyện dài ngắn: Tôi chỉ có hai câu hỏi: 1. Cách tiếp cận của tôi về việc sử dụng SGD là "chính xác" và bạn có nghĩ rằng tôi có thể cải thiện kết quả với điều đó không? 2. Các mô hình khác có phù hợp hơn với loại dự đoán này không và nếu có, bạn có thể giải thích một chút về cách tôi sẽ sử dụng chúng không?