Lựa chọn tính năng chỉ nên được thực hiện trên dữ liệu đào tạo (hoặc tất cả dữ liệu)?


10

Nên lựa chọn tính năng chỉ được thực hiện trên dữ liệu đào tạo (hoặc tất cả dữ liệu)? Tôi đã trải qua một số cuộc thảo luận và bài báo như Guyon (2003)Singhi và Liu (2006) , nhưng vẫn không chắc chắn về câu trả lời đúng.

Thiết lập thử nghiệm của tôi như sau:

  • Bộ dữ liệu: Kiểm soát 50 bệnh nhân & 50 bệnh nhân mắc bệnh (cca 200 tính năng có thể liên quan đến dự đoán bệnh).
  • Nhiệm vụ là chẩn đoán bệnh dựa trên các tính năng có sẵn.

Những gì tôi làm là

  1. Lấy toàn bộ dữ liệu và thực hiện lựa chọn tính năng (FS). Tôi chỉ giữ các tính năng được chọn để xử lý thêm
  2. Chia để kiểm tra và đào tạo, phân loại đào tạo sử dụng dữ liệu đào tạo và các tính năng được chọn. Sau đó, áp dụng trình phân loại để kiểm tra dữ liệu (chỉ sử dụng các tính năng được chọn). Xác nhận bỏ qua một lần được sử dụng.
  3. đạt được độ chính xác phân loại
  4. Tính trung bình: lặp lại 1) -3) N lần. (100).N=50

Tôi đồng ý rằng việc thực hiện FS trên toàn bộ dữ liệu có thể đưa ra một số sai lệch, nhưng ý kiến ​​của tôi là nó được "tính trung bình" trong quá trình tính trung bình (bước 4). Đúng không? (Phương sai chính xác là )<2%

1 Guyon, I. (2003) "Giới thiệu về lựa chọn biến và tính năng", Tạp chí nghiên cứu máy học, số. 3, tr. 1157-1182
2 Singhi, SK và Liu, H. (2006) "Xu hướng lựa chọn tập hợp tính năng cho việc học phân loại", Tiến hành ICML '06 Kỷ yếu của hội nghị quốc tế lần thứ 23 về Học máy, trang 849-856

Câu trả lời:


12

Quy trình bạn đang sử dụng sẽ dẫn đến ước tính hiệu suất thiên vị lạc quan, bởi vì bạn sử dụng dữ liệu từ bộ kiểm tra được sử dụng trong bước 2 và 3 để quyết định các tính năng được sử dụng trong bước 1. Lặp lại bài tập làm giảm phương sai của ước tính hiệu suất, chứ không phải thiên vị, vì vậy sự thiên vị sẽ không trung bình ra. Để có được ước tính hiệu suất không thiên vị, dữ liệu thử nghiệm không được sử dụng theo bất kỳ cách nào để đưa ra lựa chọn về mô hình, bao gồm cả lựa chọn tính năng.

Cách tiếp cận tốt hơn là sử dụng xác thực chéo lồng nhau, để xác thực chéo bên ngoài cung cấp ước tính hiệu suất có thể đạt được bằng cách sử dụng phương pháp xây dựng mô hình (bao gồm lựa chọn tính năng) và xác thực chéo bên trong được sử dụng để chọn các tính năng một cách độc lập trong mỗi lần xác nhận chéo bên ngoài. Sau đó xây dựng mô hình dự đoán cuối cùng của bạn bằng cách sử dụng tất cả dữ liệu.

Vì bạn có nhiều tính năng hơn các trường hợp, bạn rất có thể phù hợp với dữ liệu chỉ bằng cách chọn tính năng. Có một chút lầm tưởng rằng lựa chọn tính năng cải thiện hiệu suất dự đoán, vì vậy nếu đó là điều bạn quan tâm (thay vì tự xác định các tính năng có liên quan) thì có lẽ bạn nên sử dụng hồi quy sườn và không thực hiện bất kỳ tính năng nào lựa chọn. Điều này có thể sẽ mang lại hiệu suất dự đoán tốt hơn so với lựa chọn tính năng, với điều kiện tham số sườn được chọn cẩn thận (Tôi sử dụng tối thiểu hóa thống kê PRESS của Allen - tức là ước tính bỏ qua lỗi bình phương trung bình).

Để biết thêm chi tiết, xem Ambroise và McLachlan , và câu trả lời của tôi cho câu hỏi này .


Cảm ơn bạn đã trả lời. Trong thực tế, tôi quan tâm đến cả hai, để tìm các tính năng có liên quan và cải thiện hiệu suất dự đoán. Trong các thử nghiệm của tôi (SVM để phân loại), lựa chọn tính năng đã cải thiện đáng kể độ chính xác dự đoán (tuy nhiên như bạn lưu ý, điều này có thể là kết quả của việc khớp dữ liệu quá mức). Tôi giả sử, bằng cách hồi quy sườn núi, ý bạn là đôi khi còn được gọi là chính quy Tikhonov?
pedro29

có, hồi quy sườn chỉ là hồi quy tuyến tính bình thường với một điều khoản phạt dựa trên định mức bình phương của các trọng số. Đối với hầu hết các vấn đề, nó hoạt động giống như SVM, nhưng dễ thực hiện hơn (và bạn có thể khắc phục lỗi xác thực chéo một lần về cơ bản miễn phí, có thể được sử dụng để điều chỉnh các tham số siêu).
Dikran Marsupial

Nhân tiện, sự khác biệt giữa chuẩn hóa sườn núi và lựa chọn tính năng là gì? Ý tôi là, vào cuối ngày, cả hai đều chỉ ra "tập hợp con tốt nhất" của các yếu tố dự đoán từ các bộ dự đoán đã cho.
pedro29

hồi quy sườn không xác định một tập hợp con các tính năng, dạng hồi quy LASSO hoặc LARS bị phạt. Đó sẽ là lựa chọn của tôi về phương pháp lựa chọn tính năng vì nó ít bị ảnh hưởng bởi sự phù hợp quá mức vì thời hạn phạt áp đặt một trật tự trong các tính năng nhập và rời khỏi mô hình, do đó, có ít mức độ tự do hơn là chỉ tìm kiếm một cách triệt để đặc trưng.
Dikran Marsupial

3

Cũng như phần phụ lục cho các câu trả lời ở đây, tôi đã có hai liên kết thực sự giúp tôi hiểu tại sao đây không phải là một quy trình tốt:

Chỉnh sửa: theo yêu cầu, giải thích ngắn gọn về nội dung của các liên kết:

Giả sử tôi đang đào tạo một trình phân loại và tôi có bộ dữ liệu gồm 1000 mẫu, với 1 triệu tính năng mỗi mẫu. Tôi không thể xử lý tất cả chúng, vì vậy tôi cần ít tính năng hơn (giả sử tôi có thể tính toán 300 tính năng). Tôi cũng có một bộ thử nghiệm gồm 100 mẫu để ước tính chính xác độ chính xác ngoài mẫu của tôi.

Nếu tôi lọc 1 triệu tính năng của mình xuống còn 300, bằng cách chọn các tính năng đó có tương quan cao nhất với các mục tiêu của toàn bộ tập dữ liệu của tôi, tôi sẽ phạm sai lầm (vì tôi đang giới thiệu quá mức không thể phát hiện được bởi Xác thực chéo sau này). Bộ cầm tay của tôi sẽ hiển thị điều này bằng cách nhổ lại một giá trị chính xác xấu.

Theo các liên kết ở trên, cách chính xác để thực hiện là chia tập dữ liệu của tôi thành tập huấn luyện và tập hợp xác thực chéo, sau đó điều chỉnh mô hình của tôi (lọc ra các tính năng, v.v.) dựa trên tập huấn luyện này và điểm CV liên quan. Nếu tôi đang sử dụng K-Folds, tôi phải điều chỉnh lại từ đầu mỗi lần tôi thực hiện chia / gập, và sau đó tính trung bình các kết quả.

Theo chương trình, bạn làm như sau:

  • Để dành một phần của tập dữ liệu của bạn dưới dạng tập hợp giữ.
  • Chia phần còn lại của tập dữ liệu của bạn (từ đó được gọi là T1) thành K-Folds.
  • Trong vòng lặp for từ i = 1 đến K, hãy làm như sau:
    • chọn lần thứ i làm tập CV của bạn và các mẫu còn lại làm tập huấn luyện của bạn (từ đó được gọi là Ti).
    • Làm bất cứ tính năng kỹ thuật và lựa chọn tính năng nào bạn muốn: tính năng lọc, kết hợp chúng, v.v.
    • Chuyển đổi cả bộ CV của bạn (gấp hiện tại, được gọi là CVi) và bộ đào tạo hiện tại của bạn Ti thành một với các tính năng phù hợp.
    • Huấn luyện mô hình của bạn trên tập huấn luyện Ti
    • Lấy số điểm từ lần hiện tại, CVi. Nối điểm này vào danh sách giữ tất cả các điểm.
  • Bây giờ, danh sách của bạn có số điểm của mỗi lần gấp, vì vậy bạn tính trung bình cho nó, lấy điểm K-Folds.

Điều thực sự quan trọng là bạn thực hiện kỹ thuật tính năng bên trong vòng lặp, trên tập huấn luyện phụ, Ti, thay vì trên tập huấn luyện đầy đủ, T1.

Lý do cho điều này là khi bạn phù hợp / kỹ sư tính năng cho Ti, bạn thử nghiệm trên CVi, điều chưa từng thấy đối với mô hình đó. Trong khi đó, nếu bạn phù hợp / kỹ sư tính năng trên T1, bất kỳ CV nào bạn chọn phải là một tập hợp con T1, và do đó bạn sẽ có xu hướng lạc quan, tức là bạn sẽ phù hợp hơn, bởi vì bạn đang đào tạo và thử nghiệm trên cùng một mẫu dữ liệu.

Một câu trả lời StackExchange thực sự tốt là câu trả lời này , điều này thực sự giải thích sâu hơn và với một ví dụ về mã. Cũng xem đây là một phụ lục.


1
Bạn có thể bao gồm một bản tóm tắt ngắn gọn về nội dung của các liên kết này? Chúng tôi thích câu trả lời độc lập, nếu không, chúng có thể rất dễ bị "linkrot" nếu liên kết thay đổi vị trí. Ngoài ra, chúng tôi có thể chuyển đổi điều này thành một nhận xét cho bạn.
Cá bạc

@Silverfish Xong
Abhishek Divekar

Vì vậy, bên trong vòng lặp for, người ta có thể có các tính năng được chọn khác nhau cho các nếp gấp khác nhau?
stackunderflow

2

Bootstrap "lạc quan" Efron-Gong rất tốt cho việc này. Ý tưởng là sử dụng tất cả dữ liệu có sẵn để phát triển mô hình dự đoán và sử dụng tất cả dữ liệu để ước tính hiệu suất trong tương lai của mô hình đó. Và kích thước mẫu của bạn quá nhỏ với hệ số 100 cho bất kỳ phương pháp phân tách mẫu nào hoạt động.

Để sử dụng bootstrap một cách chính xác, bạn phải lập trình tất cả các bước đã sử dụng và chúng được lặp lại một lần nữa ở mỗi mẫu. Ngoại trừ lựa chọn tính năng, đây là một ví dụ điển hình: Giải thích mô hình hồi quy logistic với nhiều yếu tố dự đoánY

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.