5

Ngay bây giờ tôi đang chạy một tìm kiếm lưới khá tích cực. Tôi có n=135 samples và tôi đang chạy 23 folds bằng danh sách kiểm tra/kiểm tra chéo xác thực tùy chỉnh. Tôi có số verbose=2.Làm thế nào để ước tính tiến độ của GridSearchCV từ đầu ra tiết trong Scikit-Learn?

Sau đây là những gì tôi chạy:

param_test = {"loss":["deviance"], 
      'learning_rate':[0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2], 
      "min_samples_split": np.linspace(0.1, 0.5, 12), 
      "min_samples_leaf": np.linspace(0.1, 0.5, 12), 
      "max_depth":[3,5,8], 
      "max_features":["log2","sqrt"], 
      "min_impurity_split":[5e-6, 1e-7, 5e-7], 
      "criterion": ["friedman_mse", "mae"], 
      "subsample":[0.5, 0.618, 0.8, 0.85, 0.9, 0.95, 1.0], 
      "n_estimators":[10]} 

Mod_gsearch = GridSearchCV(estimator = GradientBoostingClassifier(), 
          param_grid = param_test, scoring="accuracy",n_jobs=32, iid=False, cv=cv_indices, verbose=2) 

tôi đã xem xét kết quả tiết trong stdout:

$head gridsearch.o8475533 
Fitting 23 folds for each of 254016 candidates, totalling 5842368 fits 

Dựa trên điều này, có vẻ như có 5842368 hoán vị của chéo các cặp xác thực sử dụng tham số lưới của tôi.

$ grep -c "[CV]" gridsearch.o8475533 
7047332 

Dường như có khoảng 7 triệu chéo kiểm chứng thực đã được thực hiện cho đến nay nhưng đó là nhiều hơn 5842368 tổng phù hợp ...

7047332/5842368 = 1.2062458236 

Sau đó, khi tôi nhìn vào các tập tin stderr :

$ cat ./gridsearch.e8475533 
[Parallel(n_jobs=32)]: Done 132 tasks  | elapsed: 1.2s 
[Parallel(n_jobs=32)]: Done 538 tasks  | elapsed: 2.8s 
[Parallel(n_jobs=32)]: Done 1104 tasks  | elapsed: 4.8s 
[Parallel(n_jobs=32)]: Done 1834 tasks  | elapsed: 7.9s 
[Parallel(n_jobs=32)]: Done 2724 tasks  | elapsed: 11.6s 
... 
[Parallel(n_jobs=32)]: Done 3396203 tasks  | elapsed: 250.2min 
[Parallel(n_jobs=32)]: Done 3420769 tasks  | elapsed: 276.5min 
[Parallel(n_jobs=32)]: Done 3447309 tasks  | elapsed: 279.3min 
[Parallel(n_jobs=32)]: Done 3484240 tasks  | elapsed: 282.3min 
[Parallel(n_jobs=32)]: Done 3523550 tasks  | elapsed: 285.3min 

mục tiêu của tôi:

Làm cách nào để biết tiến trình tìm kiếm của tôi liên quan đến tổng thời gian có thể mất?

Những gì tôi đang bối rối về:

mối quan hệ giữa [CV] dòng trong stdout, tổng số viên phù hợp trong stdout, và nhiệm vụ trong stderr là gì?

Trả lời

1

Toán là đơn giản, nhưng một chút sai lệch ở cái nhìn đầu tiên:

  1. Khi mỗi công việc được bắt đầu đăng nhập cơ chế sản lượng một dòng '[CV] ...' để stdout lưu ý về starting thực hiện và sau nhiệm vụ ends - một dòng khác có thêm thời gian dành cho một tác vụ cụ thể (ở cuối dòng).

  2. Bên cạnh đó, với một số khoảng thời gian, đăng nhập cơ chế viết một thanh tiến trình để stderr (hoặc nếu bạn thiết lập verbose đến> 50-stdout) chỉ ra một số nhiệm vụ hoàn thành trên tổng số nhiệm vụ (phù hợp) và tổng hiện dành thời gian , tương tự như một:

    [Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s

Đối với trường hợp của bạn, bạn có 5842368 tổng phù hợp, ví dụ: nhiệm vụ.

Bạn đếm 7047332 của '[CV] ...' là around 7047332/2 = 3523666 nhiệm vụ đã hoàn thành và thanh tiến trình cho thấy exactly bao nhiêu nhiệm vụ được hoàn thành - 3.523.550 (khoảng - bởi vì một số nhiệm vụ có thể bắt đầu, nhưng không kết thúc tại thời điểm đếm).

-----------------------------------------------------------------------------------

Nếu một cái gì đó vẫn còn chưa rõ ràng - đừng ngần ngại hỏi trong các ý kiến ​​

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