Tinh chỉnh siêu tham số trong Python
Alex Scriven
Data Scientist
Rất giống grid search:
NHƯNG ta chọn ô của grid một cách ngẫu nhiên.
Bengio & Bergstra (2012):
Bài báo này chỉ ra bằng thực nghiệm và lý thuyết rằng chọn thử ngẫu nhiên hiệu quả hơn grid cho tối ưu siêu tham số.
Hai lý do chính:
Grid search:

Chạy bao nhiêu mô hình để có 95% cơ hội trúng một ô xanh lá?
Mô hình tốt nhất của ta:

Nếu ta chọn đều ngẫu nhiên các tổ hợp siêu tham số, hãy xét xác suất BỎ LỠ mọi lần thử để thấy điều đó hiếm thế nào
Thử 1 = xác suất thành công 0.05 và bỏ lỡ là (1 - 0.05)
Với n lần thử, xác suất mọi lần đều bỏ lỡ điểm mong muốn là (1-0.05)^n.
Vậy cần bao nhiêu lần thử để có xác suất cao (95%) rơi vào vùng đó?
Ý nghĩa là gì?
Ghi nhớ:
Giá trị cực đại vẫn chỉ tốt bằng chính cái grid bạn đặt!
Để so sánh công bằng với grid search, cần cùng “ngân sách” mô hình hóa.
Ta có thể tự tạo mẫu ngẫu nhiên các tổ hợp siêu tham số:
# Set some hyperparameter lists
learn_rate_list = np.linspace(0.001,2,150)
min_samples_leaf_list = list(range(1,51))
# Create list of combinations
from itertools import product
combinations_list = [list(x) for x in
product(learn_rate_list, min_samples_leaf_list)]
# Select 100 models from our larger set
random_combinations_index = np.random.choice(
range(0,len(combinations_list)), 100,
replace=False)
combinations_random_chosen = [combinations_list[x] for x in
random_combinations_index]
Ta cũng có thể trực quan hóa phạm vi random search bằng cách vẽ các lựa chọn siêu tham số trên trục X và Y.

Hãy để ý: phân tán rộng nhưng không phủ sâu.
Tinh chỉnh siêu tham số trong Python