2016-02-02 21 views
9

Tôi đang cố gắng sử dụng rừng ngẫu nhiên cho vấn đề của tôi (dưới đây là mã mẫu cho bộ dữ liệu boston, không phải cho dữ liệu của tôi). Tôi đang lập kế hoạch sử dụng GridSearchCV để điều chỉnh siêu tham số nhưng điều gì sẽ là phạm vi giá trị cho các thông số khác nhau? Làm cách nào để biết rằng phạm vi tôi chọn là đúng?Điều chỉnh siêu tham số rừng ngẫu nhiên bằng cách sử dụng GridSearchCV

Tôi đã đọc về nó trên internet và ai đó đã đề xuất thử "phóng to" trên mức tối ưu trong tìm kiếm lưới thứ hai (ví dụ: nếu đã 10 thì hãy thử [5, 20, 50]).

Đây có phải là phương pháp phù hợp không? Tôi có nên sử dụng phương pháp này cho TẤT CẢ các tham số cần thiết cho rừng ngẫu nhiên không? Cách tiếp cận này có thể bỏ lỡ một sự kết hợp "tốt", phải không?

import numpy as np 
from sklearn.grid_search import GridSearchCV 
from sklearn.datasets import load_digits 
from sklearn.ensemble import RandomForestRegressor 
digits = load_boston() 
X, y = dataset.data, dataset.target 
model = RandomForestRegressor(random_state=30) 
param_grid = { "n_estimators"  : [250, 300], 
      "criterion"   : ["gini", "entropy"], 
      "max_features"  : [3, 5], 
      "max_depth"   : [10, 20], 
      "min_samples_split" : [2, 4] , 
      "bootstrap": [True, False]} 
grid_search = GridSearchCV(clf, param_grid, n_jobs=-1, cv=2) 
grid_search.fit(X, y) 
print grid_search.best_params_ 

Trả lời

3

Thực tế thường được sử dụng để tìm các thông số tốt nhất. Trước tiên, bạn bắt đầu với một loạt các thông số và tinh chỉnh chúng khi bạn tiến gần hơn đến kết quả tốt nhất.

Tôi đã tìm thấy một thư viện tuyệt vời có tối ưu hóa siêu tham số để tìm hiểu, hyperopt-sklearn. Nó có thể tự động điều chỉnh RandomForest của bạn hoặc bất kỳ bộ phân loại chuẩn nào khác. Bạn thậm chí có thể tự động điều chỉnh và đánh giá các trình phân loại khác nhau cùng một lúc.

Tôi đề nghị bạn bắt đầu với điều đó bởi vì nó thực hiện các chương trình khác nhau để có được các thông số tốt nhất:

Random Tìm kiếm

Cây Parzen ước lượng (TPE)

luyện kim

Tree

Cây quy trình Gaussian

EDIT:

Trong trường hợp hồi quy, bạn vẫn cần phải khẳng định nếu dự đoán của bạn là tốt. Tôi đoán là bạn có thể quấn Regressor vào một phân loại nhị phân thực hiện các scikit-learn estimator interface. với một hàm số điểm để sử dụng nó với thư viện hyperopt ...

Dù sao, cách tiếp cận thô tục vẫn giữ và có giá trị cho bất kỳ người ước tính.

+0

Điều này không hỗ trợ hồi quy và nhiều thuật toán, phải không? Trên thực tế, vấn đề của tôi là hồi quy không phân loại. Tôi đã chỉnh sửa câu hỏi của mình. – Muhammad

+0

Mã của bạn hiển thị một RandomForestClassifier ... – Kikohs

+0

Tôi đã chỉnh sửa câu hỏi của mình, xin lỗi vì sự nhầm lẫn. – Muhammad

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