Tìm kiếm có thông tin: Từ thô đến tinh

Tinh chỉnh siêu tham số trong Python

Alex Scriven

Data Scientist

Tìm kiếm có thông tin vs không có thông tin

 

Cho đến nay, tất cả đều là tìm kiếm không có thông tin:

Tìm kiếm không có thông tin: Mỗi lần lặp tinh chỉnh siêu tham số không học từ các lần trước.

Điều này cho phép chúng ta chạy song song. Nhưng có vẻ không hiệu quả?

Tinh chỉnh siêu tham số trong Python

Có thông tin vs Không có thông tin

Quy trình đến nay:

sơ đồ quy trình không có thông tin

Một cách khác:

sơ đồ quy trình có thông tin

Tinh chỉnh siêu tham số trong Python

Tinh chỉnh từ thô đến tinh

Một phương pháp cơ bản có thông tin:

Bắt đầu rộng và ngẫu nhiên, rồi tinh chỉnh dần.

Quy trình:

  1. Tìm kiếm ngẫu nhiên
  2. Tìm vùng hứa hẹn
  3. Tìm kiếm lưới trong vùng nhỏ hơn
  4. Lặp đến khi đạt điểm tối ưu

Bạn có thể thay (3) bằng các lần tìm kiếm ngẫu nhiên thêm trước khi tìm kiếm lưới

Tinh chỉnh siêu tham số trong Python

Vì sao từ thô đến tinh?

Tinh chỉnh từ thô đến tinh có lợi thế:

  • Kết hợp ưu điểm của tìm kiếm lưới và ngẫu nhiên.
    • Bắt đầu quét rộng
    • Đào sâu khi đã biết vùng tiềm năng
  • Phân bổ thời gian và tính toán tốt hơn giúp lặp nhanh hơn

Không lãng phí thời gian ở không gian tìm kiếm cho kết quả kém!

Lưu ý: Có thông tin theo lô, không phải theo từng mô hình

Tinh chỉnh siêu tham số trong Python

Thực hiện từ thô đến tinh

Hãy xem ví dụ với các phạm vi siêu tham số sau:

  • max_depth_list từ 1 đến 65
  • min_sample_list từ 3 đến 17
  • learn_rate_list 150 giá trị từ 0.01 đến 150

Chúng ta có bao nhiêu mô hình khả dĩ?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Tinh chỉnh siêu tham số trong Python

Trực quan hóa từ thô đến tinh

Hãy thực hiện tìm kiếm ngẫu nhiên trên 500 tổ hợp.

Đây là biểu đồ điểm chính xác:

biểu đồ mật độ độ chính xác của mô hình

Những mô hình nào tốt?

Tinh chỉnh siêu tham số trong Python

Trực quan hóa từ thô đến tinh

Kết quả hàng đầu:

max_depth min_samples_leaf learn_rate accuracy
10 7 0.01 96
19 7 0.023355705 96
30 6 1.038389262 93
27 7 1.11852349 91
16 7 0.597651007 91
Tinh chỉnh siêu tham số trong Python

Trực quan hóa từ thô đến tinh

Hãy trực quan hóa max_depth so với độ chính xác:

biểu đồ phân tán: độ sâu tối đa vs độ chính xác

Tinh chỉnh siêu tham số trong Python

Trực quan hóa từ thô đến tinh

min_samples_leaf tốt hơn khi dưới 8

biểu đồ phân tán: min samples leaf vs độ chính xác

learn_rate kém hơn khi trên 1.3

biểu đồ phân tán: learn rate vs độ chính xác

Tinh chỉnh siêu tham số trong Python

Bước tiếp theo

Những gì biết từ lần lặp đầu:

  • max_depth từ 8 đến 30
  • learn_rate nhỏ hơn 1.3
  • min_samples_leaf có lẽ nhỏ hơn 8

Tiếp theo là gì? Lại tìm kiếm ngẫu nhiên hoặc lưới dựa trên những gì đã biết!

Lưu ý: Đây chỉ là phân tích hai biến. Bạn có thể khám phá nhiều siêu tham số (3, 4+) trên một biểu đồ, nhưng ngoài phạm vi khóa học.

Tinh chỉnh siêu tham số trong Python

¡Vamos a practicar!

Tinh chỉnh siêu tham số trong Python

Preparing Video For Download...