Dự đoán thời gian thực hiện nhiệm vụ


9

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à:

  1. Một mã hóa nóng các tính năng phân loại
  2. Ngày chuyển đổi thành dấu thời gian unix
  3. Bình thường hóa tất cả các tính năng chưa có từ 0 đến 1
  4. Chia dữ liệu trong 80/20 bộ tìm hiểu và kiểm tra.
  5. 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.
  6. Dự đoán với bộ thử nghiệm
  7. 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?


Có lẽ hơi lạc đề, nhưng chúng tôi quan tâm đến việc xây dựng một bản hòa tấu để ước tính thời lượng nhiệm vụ, do đó tự hỏi, có cơ hội nào bạn có thể chia sẻ tập dữ liệu của mình (và mô hình bạn kết thúc xây dựng) không?
vào

1
Thật không may sau một giai đoạn thăm dò ngắn, dự án đã đóng hộp. Không thể chia sẻ tập dữ liệu. Tôi thậm chí không chắc chắn tôi vẫn có thể truy cập nó để trung thực. Nhưng may mắn nhất! Tôi đã nhìn thấy và học được rất nhiều về khoa học dữ liệu nói chung kể từ đó nhưng tôi chưa thấy một kiến ​​trúc phù hợp cho nhiệm vụ này.
Phụng vụ

1
Cám ơn vì đã giải thích! microsoft.com/en-us/research/uploads/prod/2019/01/ trên dường như đã xây dựng các kiến ​​trúc thành công.
vào

Thật sự thú vị! Các tính năng họ sử dụng rất gần với những gì tôi có thể sử dụng. Mặc dù nhiệm vụ của họ chỉ được thực hiện trong bốn thùng khá nhỏ: <30m, 30m, 1h và> 1h. Tôi tự hỏi làm thế nào nó sẽ thực hiện trong trường hợp của tôi trong đó một số nhiệm vụ là khoảng 1-4 giờ và những nhiệm vụ khác có thể là một vài tuần. Nếu vẫn có thể, hãy cho tôi biết nếu bạn thành công với dự án của mình!
Phụng vụ

Câu trả lời:


6

Tôi nghĩ rằng các phân tích mà bạn đã làm là tốt.

Về thủ tục Phân tích sống còn, tôi nghĩ sử dụng nó trong kịch bản của bạn là đủ tốt. Thậm chí có thể mất thời gian nhưng kết quả từ đó là tốt và rất sâu sắc.

Vì bạn đã áp dụng phân tích sinh tồn trên dữ liệu, bạn cần đảm bảo rằng những giả định này được đáp ứng:

  1. Có một số cách khác nhau để ước tính hàm sinh tồn hoặc đường cong sinh tồn. Có một số phương pháp tham số phổ biến được sử dụng để mô hình hóa dữ liệu sinh tồn và chúng khác nhau về các giả định được đưa ra về sự phân bố thời gian sống sót trong dân số. Một số phân phối phổ biến bao gồm phân phối theo cấp số nhân, Weibull, Gompertz và log-normal.

  2. Có lẽ phổ biến nhất là phân phối theo cấp số nhân, giả định rằng khả năng người tham gia chịu đựng sự kiện quan tâm là độc lập với thời gian người đó không có sự kiện. Các bản phân phối khác đưa ra các giả định khác nhau về xác suất của một cá nhân phát triển một sự kiện (nghĩa là nó có thể tăng, giảm hoặc thay đổi theo thời gian). Thông tin chi tiết về các phương pháp tham số để phân tích sinh tồn có thể được tìm thấy trong Hosmer và Lemeshow và Lee và Wang1.

  3. Ở đây trên hai phương pháp không tham số, không đưa ra giả định nào về khả năng một người phát triển sự kiện thay đổi theo thời gian. Sử dụng các phương pháp không tham số, chúng tôi ước tính và vẽ sơ đồ phân bố tỷ lệ sống hoặc đường cong sinh tồn. Đường cong sống sót thường được vẽ như các chức năng bước, như thể hiện trong hình dưới đây. Thời gian được hiển thị trên trục X và tỷ lệ sống (tỷ lệ người có nguy cơ) được hiển thị trên trục Y. Lưu ý rằng tỷ lệ người tham gia sống sót không phải lúc nào cũng đại diện cho tỷ lệ phần trăm còn sống (giả định rằng kết quả của sự quan tâm là cái chết). "Sống sót" cũng có thể đề cập đến tỷ lệ không có sự kiện kết quả khác (ví dụ: phần trăm không mắc bệnh MI hoặc bệnh tim mạch), hoặc nó cũng có thể đại diện cho tỷ lệ phần trăm không trải qua kết quả lành mạnh (ví dụ: thuyên giảm ung thư).

Bạn có thể đi qua liên kết này để hiểu rõ hơn.

Liên quan đến Phân phối Poisson , Bạn có vẽ sơ đồ và kiểm tra xem dữ liệu có tuân theo Phân phối Poisson không:

nhập mô tả hình ảnh ở đây

Phân phối Poisson là một mô hình thích hợp nếu các giả định sau là đúng.

  • k là số lần một sự kiện xảy ra trong một khoảng và k có thể lấy các giá trị 0, 1, 2, Nhẫn.
  • Sự xuất hiện của một sự kiện không ảnh hưởng đến xác suất xảy ra sự kiện thứ hai. Đó là, các sự kiện xảy ra độc lập.
  • Tốc độ xảy ra sự kiện là không đổi. Tỷ lệ không thể cao hơn trong một số khoảng thời gian và thấp hơn trong các khoảng thời gian khác.
  • Hai sự kiện không thể xảy ra cùng một lúc; thay vào đó, tại mỗi khoảng phụ rất nhỏ, chính xác một sự kiện xảy ra hoặc không xảy ra.
  • Xác suất của một sự kiện trong một khoảng nhỏ phụ tỷ lệ thuận với độ dài của khoảng thời gian phụ.

Hoặc là

  • Phân phối xác suất thực tế được đưa ra bởi phân phối nhị thức và số lượng thử nghiệm đủ lớn hơn số lượng thành công mà người ta đang hỏi về

Nếu các điều kiện này được đáp ứng thì bạn có thể sử dụng Mô hình Poisson, đi qua liên kết này

Thực hiện điều này trong R , Python .

Cuối cùng, để giải quyết 2 câu hỏi của bạn:

  1. Cách tiếp cận của bạn là Đúng, không có vấn đề gì khi sử dụng phương pháp đó, để cải thiện kết quả của bạn, bạn cần phải làm việc trên tính năng engg (lấy các biến mới). Vì vậy, bạn đang xem xét thời lượng là một biến liên tục (bạn đã thực hiện chuyển đổi nhật ký đó chưa bạn đã nêu ở đầu?)

  2. Trong kịch bản của bạn, tôi nghĩ Survival và Poisson mang lại cho bạn kết quả tốt hơn, nếu bạn nghĩ rằng việc này mất nhiều thời gian hơn thì hãy thử lấy mẫu dữ liệu và hoàn thành công việc của bạn. Nếu bạn đang xem xét sự xuất hiện như một biến liên tục thì bạn có thể sử dụng Random Forest, XGBoost, tất cả các phương pháp được sử dụng để dự đoán một biến liên tục (nhưng nếu là bạn, tôi sẽ dành nhiều thời gian hơn để điều chỉnh Survival và Poisson và sau đó chuyển sang kỹ thuật dự đoán khác)

Nói với tôi nếu bạn có bất cứ vấn đề nào!


1

Nhiều khả năng, SGD không phải là yếu tố hạn chế đối với bạn. Nhưng, bạn đã xem xét việc phân loại hơn là phương pháp hồi quy chưa? (Có vẻ như bạn dự đoán các giá trị thực trái ngược với các lớp). Vì bạn nói rằng dự đoán không nhất thiết phải hoàn hảo, tại sao bạn không thử nhóm biến kết quả của bạn vào các thùng, sau đó dự đoán các thùng? Bạn sẽ có một giải pháp ít chi tiết hơn, nhưng bạn có thể thấy nó hoạt động.


Mục tiêu chính là cải thiện các ước tính vì một số người thường đánh giá quá cao, trong khi những người khác thường đánh giá thấp thời lượng. Thay đổi nó thành một vấn đề phân loại binned sẽ không đạt được mục tiêu này.
Phụng vụ

Bằng cách chuyển đổi các phân loại thành ước tính thời lượng nhiệm vụ thông qua nhân với số vô hướng / số / hệ số trên mỗi lớp, thời lượng có thể được ước tính thô. Hơn nữa, việc phân loại có thể được sử dụng để chọn các mô hình ml khác nhau dành riêng cho loại nhiệm vụ cụ thể đó để có được ước tính chính xác hơn. (nhưng 2 bước này thực sự không được liệt kê trong câu trả lời)
vào
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.