Làm thế nào nên lựa chọn tính năng và tối ưu hóa siêu tham số trong đường ống máy học?


14

Mục tiêu của tôi là phân loại tín hiệu cảm biến. Khái niệm về giải pháp của tôi cho đến nay là: i) Các tính năng kỹ thuật từ tín hiệu thô ii) Chọn các tính năng có liên quan với SavingF và cách tiếp cận phân cụm iii) Áp dụng NN, Rừng ngẫu nhiên và SVM

Tuy nhiên tôi bị mắc kẹt trong một tình huống khó xử. Trong ii) và iii), có các siêu âm như k-Neigbours gần nhất cho SavingF hoặc độ dài cửa sổ, theo đó tín hiệu cảm biến được ước tính hoặc số đơn vị ẩn trong mỗi lớp NN

Có 3 vấn đề tôi thấy ở đây: 1) Các tham số lựa chọn tính năng điều chỉnh sẽ ảnh hưởng đến hiệu suất phân loại 2) Tối ưu hóa siêu âm của phân loại sẽ ảnh hưởng đến việc lựa chọn các tính năng. 3) Đánh giá từng sự kết hợp có thể có của cấu hình là không thể tìm thấy.

Vì vậy, câu hỏi của tôi là: a) Tôi có thể thực hiện một giả định đơn giản hóa, các tham số lựa chọn tính năng điều chỉnh st có thể được tách rời khỏi các tham số phân loại điều chỉnh không? b) Có giải pháp nào khả thi khác không?


Tôi nghĩ rằng điều chỉnh lựa chọn tính năng tách rời và điều chỉnh phân loại là hợp lệ, vì heuritsic cho cứu trợF nhằm mục đích tối đa hóa phương sai giữa các lớp và giảm thiểu phương sai trong lớp cũng cho thấy một phân loại tốt. Do đó, việc điều chỉnh các tham số tối ưu cho cứu trợF cũng làm cho một lớp tốt hơn 'có khả năng' hơn. Tuy nhiên, có một công thức toán học để sao lưu ý tưởng này, sẽ rất tốt đẹp.
Grunwalski

Một biến thể cụ thể của câu hỏi này: Nên chọn tính năng là một phần của thói quen xác định giá trị chéo (như trong: #cho mỗi bộ siêu phân lớp: #cho mỗi lần chạy CV k: 1) lựa chọn tính năng, 2) chia tỷ lệ, 3) phù hợp với trình phân loại 4) dự đoán về bộ thử nghiệm?
Nikolas Rieble

1
@NikolasRieble Tôi vừa viết một câu trả lời cho câu hỏi ban đầu, và cũng bao gồm câu hỏi của bạn trong câu trả lời
Dennis Soemers

Câu trả lời:


14

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:

  1. 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.

  2. 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ứ.

  3. 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à:

  1. 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 .

  2. 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


Bạn có thể cung cấp tài liệu tham khảo là tốt?
Nikolas Rieble

1
Có một số hình ảnh của một cuốn sách nổi tiếng trong bài viết này: gậtalpoint.com/not-perform-feature-selection . Những người này dường như đồng ý với '' giải pháp khả thi 1 '' của tôi. Tôi không có tài liệu tham khảo nhất thiết cho trường hợp khác, ngoài ... bản thân mình? Tôi đã cung cấp lý do / động lực của tôi ở đó, mà theo ý kiến ​​của tôi kiểm tra, vì vậy đó là tài liệu tham khảo: D
Dennis Soemers

1
Chương đó của ESL nên được đọc 100% cho bất kỳ người lập mô hình dự đoán nào.
Matthew Drury

Vì vậy, liên quan đến soln 1, làm thế nào để bạn có được bộ tính năng cuối cùng và siêu mô hình mô hình sau khi chạy lựa chọn tính năng (fs) và tối ưu hóa hyperparam (ho) trong một số ứng dụng của cv? Đồng thời, khi chúng tôi thực hiện những điều này trong một lần lặp của cv, chúng tôi có chạy fs trước không, sau đó ho sử dụng các tính năng đó?
đọc lướt

1
K1

4

Không ai đề cập đến các cách tiếp cận làm cho điều chỉnh siêu tham số và lựa chọn tính năng giống nhau vì vậy tôi sẽ nói về nó. Trong trường hợp này, bạn nên thiết kế tất cả các tính năng bạn muốn lúc đầu và bao gồm tất cả các tính năng.

Nghiên cứu hiện nay trong cộng đồng thống kê đã cố gắng làm cho lựa chọn tính năng trở thành một tiêu chí điều chỉnh. Về cơ bản, bạn xử phạt một mô hình theo cách nó được khuyến khích chỉ chọn một vài tính năng giúp nó đưa ra dự đoán tốt nhất. Nhưng bạn thêm một tham số điều chỉnh để xác định mức phạt mà bạn phải chịu.

Nói cách khác, bạn cho phép mô hình chọn các tính năng cho bạn và bạn ít nhiều có quyền kiểm soát số lượng tính năng. Điều này thực sự làm giảm tính toán vì bạn không còn phải quyết định các tính năng nào mà chỉ có bao nhiêu tính năng và mô hình làm phần còn lại.

Vì vậy, khi bạn thực hiện xác thực chéo trên tham số thì bạn cũng đang thực hiện xác thực chéo về lựa chọn tính năng.

Đã có nhiều mô hình ML kết hợp lựa chọn tính năng này theo cách này hay cách khác.

  • Các máy vectơ hỗ trợ được chuẩn hóa gấp đôi giống như SVM bình thường nhưng có tính năng chọn
  • Mạng đàn hồi liên quan đến hồi quy tuyến tính
  • Chuẩn hóa bỏ học trong các mạng thần kinh (không có tài liệu tham khảo cho cái này)
  • Rừng ngẫu nhiên thường có các tập hợp con ngẫu nhiên của các tính năng để loại xử lý lựa chọn tính năng cho bạn

Nói tóm lại, mọi người đã cố gắng kết hợp điều chỉnh tham số và lựa chọn tính năng cùng một lúc để giảm độ phức tạp và có thể thực hiện xác thực chéo


0

Tôi nghĩ rằng bạn đang suy nghĩ khá nhiều ở đó. Lựa chọn tính năng, là một phần của kỹ thuật tính năng, thường hữu ích nhưng một số tính năng dư thừa không gây hại nhiều trong giai đoạn đầu của hệ thống máy học. Vì vậy, cách tốt nhất là trước tiên bạn tạo tất cả các tính năng có ý nghĩa, sau đó sử dụng chúng để chọn thuật toán và điều chỉnh mô hình, sau khi điều chỉnh mô hình, bạn có thể cắt bộ tính năng hoặc quyết định sử dụng các tính năng mới.

Quy trình học máy thực sự là một quá trình lặp, trong đó bạn thực hiện tính năng kỹ thuật, sau đó thử với một số thuật toán, sau đó điều chỉnh các mô hình và quay lại cho đến khi bạn hài lòng với kết quả.


Bạn có nghĩa là nó đang cố gắng cho đến khi nó hoạt động: D
Grunwalski

Cố gắng trong một thủ tục ML, không phải ngẫu nhiên. Trên thực tế ML thực sự là một chút hack mỗi se.
THN
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.