Giống như bạn đã tự quan sát, sự lựa chọn các tính năng của bạn (lựa chọn tính năng) có thể có tác động đến việc siêu đường kính cho thuật toán của bạn là tối ưu và siêu âm nào bạn chọn cho thuật toán của mình có thể có tác động đến lựa chọn tính năng nào là tối ưu.
Vì vậy, vâng, nếu bạn thực sự quan tâm đến việc ép từng phần trăm hiệu suất ra khỏi mô hình của mình và bạn có thể đủ khả năng tính toán cần thiết, giải pháp tốt nhất có lẽ là thực hiện lựa chọn tính năng và điều chỉnh hyperparamter "cùng một lúc". Điều đó có lẽ không dễ dàng (tùy thuộc vào cách bạn thực hiện lựa chọn tính năng). Cách tôi tưởng tượng nó hoạt động sẽ giống như có các bộ tính năng khác nhau như các ứng cử viên và coi việc lựa chọn một bộ tính năng trong số tất cả các bộ ứng viên đó là một siêu tham số bổ sung.
Trong thực tế có thể không thực sự khả thi mặc dù. Nói chung, nếu bạn không đủ khả năng để đánh giá tất cả các kết hợp có thể, tôi khuyên bạn nên:
Tối ưu hóa rất lỏng lẻo các siêu đường kính, chỉ để đảm bảo rằng bạn không gán các giá trị cực kỳ xấu cho một số siêu đường kính. Điều này thường chỉ có thể được thực hiện bằng tay nếu bạn có hiểu biết trực quan tốt về siêu âm của bạn hoặc thực hiện với quy trình tối ưu hóa siêu tham số rất ngắn bằng cách sử dụng chỉ một loạt các tính năng mà bạn biết là tốt.
Lựa chọn tính năng, với các siêu âm có thể không được tối ưu hóa 100% nhưng ít nhất cũng không phải là cực kỳ khủng khiếp. Nếu bạn đã có ít nhất một thuật toán học máy được cấu hình hơi rõ ràng, việc có các tính năng tốt sẽ quan trọng hơn đáng kể đối với hiệu suất của bạn so với siêu âm tối ưu hóa vi mô. Ví dụ cực đoan: Nếu bạn không có tính năng, bạn không thể dự đoán bất cứ điều gì. Nếu bạn có một tính năng gian lận có chứa nhãn lớp, bạn hoàn toàn có thể phân loại mọi thứ.
Tối ưu hóa siêu âm với các tính năng được chọn trong bước trên. Đây phải là một tính năng tốt được thiết lập ngay bây giờ, nơi nó thực sự có thể đáng để tối ưu hóa hyperparams một chút.
Để giải quyết câu hỏi bổ sung mà Nikolas đã đăng trong các bình luận, đồng ý cách tất cả những điều này (lựa chọn tính năng, tối ưu hóa siêu tham số) tương tác với xác thực chéo k-Fold: Tôi muốn nói điều đó phụ thuộc.
Bất cứ khi nào bạn sử dụng dữ liệu ở một trong các nếp gấp cho bất kỳ thứ gì, và sau đó đánh giá hiệu suất trên cùng một nếp gấp đó, bạn sẽ có được ước tính sai lệch về hiệu suất của mình (bạn sẽ đánh giá quá cao hiệu suất). Vì vậy, nếu bạn sử dụng dữ liệu trong tất cả các nếp gấp cho bước chọn tính năng và sau đó đánh giá hiệu suất trên từng nếp gấp đó, bạn sẽ nhận được ước tính sai lệch về hiệu suất cho từng nếp gấp (không tốt). Tương tự, nếu bạn có tối ưu hóa siêu tham số dựa trên dữ liệu và sử dụng dữ liệu từ các nếp gấp nhất định (hoặc tất cả các nếp gấp), sau đó đánh giá trên các nếp gấp đó, bạn sẽ lại nhận được các ước tính sai lệch về hiệu suất. Các giải pháp có thể là:
Lặp lại đường ống hoàn chỉnh trong mỗi lần riêng biệt (ví dụ trong mỗi lần gấp, thực hiện lựa chọn tính năng + mô hình đào tạo và tối ưu hóa siêu tham số). Làm điều này có nghĩa là xác thực chéo k-cung cấp cho bạn các ước tính không thiên vị về hiệu suất của đường ống hoàn chỉnh này .
Tách tập dữ liệu ban đầu của bạn thành '' tập dữ liệu tiền xử lý '' và '' tập dữ liệu / bài kiểm tra ''. Bạn có thể thực hiện lựa chọn tính năng + tối ưu hóa siêu tham số trên '' bộ dữ liệu tiền xử lý ''. Sau đó, bạn sửa các tính năng và siêu đường kính đã chọn của mình và thực hiện xác thực chéo k lần trên '' tập dữ liệu / kiểm tra ''. Làm điều này có nghĩa là xác thực chéo k lần cung cấp cho bạn các ước tính không thiên vị về hiệu suất của thuật toán ML của bạn với các giá trị tập hợp tính năng và siêu tham số cố định .
Lưu ý làm thế nào hai giải pháp dẫn đến ước tính hiệu suất hơi khác nhau. Cái nào thú vị hơn phụ thuộc vào trường hợp sử dụng của bạn, phụ thuộc vào cách bạn lên kế hoạch triển khai các giải pháp học máy của mình trong thực tế. Ví dụ, nếu bạn là một công ty dự định có toàn bộ lựa chọn tính năng + tối ưu hóa siêu tham số + đào tạo chạy tự động mỗi ngày / tuần / tháng / năm / bất cứ điều gì, bạn cũng sẽ quan tâm đến hiệu suất của việc hoàn thành đó đường ống dẫn, và bạn sẽ muốn giải pháp đầu tiên.
Mặt khác, nếu bạn chỉ có thể đủ khả năng thực hiện lựa chọn tính năng + tối ưu hóa siêu tham số một lần trong đời và sau đó chỉ thường xuyên đào tạo lại thuật toán của bạn (với các giá trị tập hợp tính năng và hyperparam cố định), thì hiệu suất chỉ bước đó sẽ là điều bạn quan tâm và bạn nên tìm giải pháp thứ hai