Việc sử dụng cùng một dữ liệu để lựa chọn tính năng và xác thực chéo có bị sai lệch hay không?


8

Chúng tôi có một bộ dữ liệu nhỏ (khoảng 250 mẫu * 100 tính năng) mà chúng tôi muốn xây dựng bộ phân loại nhị phân sau khi chọn tập hợp tính năng tốt nhất. Hãy nói rằng chúng tôi phân vùng dữ liệu thành:

Đào tạo, kiểm tra và kiểm tra

Để chọn tính năng, chúng tôi áp dụng mô hình trình bao bọc dựa trên việc chọn các tính năng tối ưu hóa hiệu suất của các phân loại X, Y và Z, riêng biệt. Trong bước tiền xử lý này, chúng tôi sử dụng dữ liệu đào tạo để đào tạo các trình phân loại và dữ liệu xác nhận để đánh giá mọi tập hợp tính năng ứng viên.

Cuối cùng, chúng tôi muốn so sánh các phân loại khác nhau (X, Y và Z). Tất nhiên, chúng ta có thể sử dụng phần kiểm tra dữ liệu để có sự so sánh và đánh giá công bằng. Tuy nhiên, trong trường hợp của tôi, dữ liệu thử nghiệm sẽ rất nhỏ (khoảng 10 đến 20 mẫu) và do đó, tôi muốn áp dụng xác thực chéo để đánh giá các mô hình.

Sự phân phối của các ví dụ tích cực và tiêu cực rất không cân bằng (khoảng 8: 2). Vì vậy, một xác nhận chéo có thể bỏ lỡ chúng tôi trong việc đánh giá hiệu suất. Để khắc phục điều này, chúng tôi dự định lấy phần thử nghiệm (10-20 mẫu) làm phương pháp so sánh thứ hai và để xác thực xác thực chéo.

Tóm lại, chúng tôi đang phân vùng dữ liệu thành đào tạo, xác nhận và thử nghiệm. Các bộ phận đào tạo và xác nhận sẽ được sử dụng để lựa chọn tính năng. Sau đó, xác nhận chéo trên cùng một dữ liệu sẽ được áp dụng để ước tính các mô hình. Cuối cùng, kiểm tra được sử dụng để xác nhận tính hợp lệ chéo cho sự mất cân bằng của dữ liệu.

Câu hỏi là: Nếu chúng ta sử dụng cùng một dữ liệu (đào tạo + xác thực) được sử dụng trong việc chọn các tính năng tối ưu hóa hiệu suất của phân loại X, Y và Z, chúng ta có thể áp dụng xác thực chéo trên cùng một dữ liệu (đào tạo + xác thực) được sử dụng cho lựa chọn tính năng để đo hiệu suất cuối cùng và so sánh các phân loại?

Tôi không biết liệu cài đặt này có thể dẫn đến một biện pháp xác thực chéo sai lệch và dẫn đến so sánh không chính đáng hay không.


4
Crossvalidated.com giải quyết chính xác các loại câu hỏi này. Tôi đề nghị Q này được chuyển đến đó.
Roman Luštrik

Một đề xuất là áp dụng bootstrapping (chỉ từ đào tạo + xác thực) trên dữ liệu thay vì xác thực chéo. Điều này sẽ giải quyết vấn đề sai lệch được nêu trong câu hỏi? Vẫn không chắc chắn !!
soufanom

3
Có, nó bị sai lệch - duyệt Qs trong thẻ lựa chọn tính năng trên trang web này, đặc biệt là trang này hoặc thậm chí trang Wikipedia về CV .

1
Đã đồng ý. Bạn có thể áp dụng thiết kế cho các tập dữ liệu mô phỏng ngẫu nhiên và ước tính mức độ sai lệch. Nhưng tôi muốn giới thiệu LOOCV như một câu trả lời cho thấy.
Steve P

Câu trả lời:


5

Tôi nghĩ rằng nó là thiên vị. Điều gì về việc áp dụng FS trong phân vùng N-1 và thử nghiệm trên phân vùng cuối cùng. và kết hợp các tính năng từ tất cả các lần theo một cách nào đó (liên kết / giao lộ / hoặc một số cách cụ thể vấn đề).


Để lại một phần để thử nghiệm đã được giải thích trong bài viết. Ngoài ra, như đã giải thích xác thực chéo là cần thiết để so sánh các mô hình. Vì vậy, không thể áp dụng nó cho lựa chọn tính năng trừ khi chúng tôi sử dụng ý tưởng xác thực chéo lồng nhau. Tuy nhiên, tập dữ liệu quá nhỏ và rất khó áp dụng xác thực chéo lồng nhau.
soufanom

6

Câu trả lời đơn giản là bạn nên thực hiện lựa chọn tính năng trên một tập dữ liệu khác với dữ liệu bạn đã đào tạo (bạn đã làm điều này rồi, vì vậy đừng thay đổi điều này) --- hiệu quả của việc không làm điều này là bạn sẽ vượt quá dữ liệu đào tạo của mình. Bạn cũng không được thực hiện lựa chọn tính năng trên bộ thử nghiệm của mình, vì điều này sẽ làm tăng các ước tính về hiệu suất của các mô hình của bạn (tôi nghĩ bạn cũng đã nhận ra điều này, nhưng tôi thấy hơi khó để hiểu chính xác câu hỏi).

Nếu bạn đã chia bộ kiểm tra của mình thành đào tạo, xác thực và kiểm tra, thì không có lý do cụ thể nào để thực hiện xác thực chéo trừ khi bạn có quá ít dữ liệu mà bộ kiểm tra của bạn quá nhỏ để đưa ra kết luận mạnh mẽ. Nhiều nhà nghiên cứu không thích xác thực chéo vì nếu được sử dụng để thúc đẩy phát triển mô hình (ý tôi là, bạn điều chỉnh mọi thứ, sau đó chạy xác thực chéo để xem cách họ thực hiện, sau đó điều chỉnh chúng thêm, v.v.) bạn có quyền truy cập vào thử nghiệm của mình dữ liệu và điều này có thể khiến bạn đánh giá quá cao hiệu suất của bạn trên dữ liệu thực sự không nhìn thấy. Nếu dữ liệu của bạn nhỏ đến mức bạn không có lựa chọn nào khác ngoài việc xác thực chéo, cách chính xác để thực hiện việc này với tập huấn luyện, dev và test là chia rõ ràng dữ liệu của bạn thành ba phần cho mỗi lần --- nên sử dụng phần lớn cho tập huấn, một số để phát triển (lựa chọn tính năng trong trường hợp của bạn, cộng với bất kỳ tham số miễn phí nào khác cần phù hợp) và cuối cùng bạn nên kiểm tra trên phần kiểm tra. Sau đó, bạn có thể tính điểm trung bình trên các phần kiểm tra này để có ước tính về hiệu suất của mô hình: tuy nhiên, như tôi đã nói, hãy cẩn thận rằng nếu những điểm số này được sử dụng để hướng dẫn bạn cách tiếp cận bạn muốn sử dụng cho vấn đề của mình, bạn không nên mong đợi cùng số điểm trên dữ liệu chưa thấy mà bạn đã thực hiện từ xác thực chéo của mình.


finally you should test on the test portion. You can then average scores across these test portions to get an estimate of model performance Để làm cho một số ý nghĩa của hiệu suất phân loại, nó nên được sử dụng trên dữ liệu thử nghiệm chưa được nhìn thấy hoặc sử dụng trước đây. Cách tôi nhìn thấy nếu bạn đưa ra bất kỳ quyết định nào dựa trên hiệu suất thuật toán trên một số tập dữ liệu thì tập dữ liệu này là đào tạo hoặc xác thực chéo, trong mọi trường hợp, nó không được gọi là tập dữ liệu thử nghiệm.
Ivan

Lưu ý rằng tôi không nói rằng bạn nên thực hiện lựa chọn tính năng trên dữ liệu thử nghiệm của mình --- cho mỗi lần gấp, bạn tạo các phần đào tạo, phát triển và thử nghiệm. Bạn đào tạo về đào tạo của mình, thiết lập các tham số miễn phí và thực hiện lựa chọn tính năng cho sự phát triển của mình và sau đó áp dụng các mô hình đã học cuối cùng vào dữ liệu thử nghiệm. Như tôi đã thảo luận ở trên, cách làm này không lý tưởng, nhưng bạn không sử dụng rõ ràng dữ liệu thử nghiệm để đặt tham số (đối với mỗi lần dữ liệu thử nghiệm bị mù cho đến khi các mô hình được cố định, bạn chỉ cần leo qua các nếp gấp)

Tôi nghĩ rằng chúng tôi đồng ý về cùng một điều, tôi chỉ muốn làm rõ sự khác biệt giữa dữ liệu thử nghiệm và C / V. Lựa chọn mô hình gần giống với lựa chọn tham số, vì vậy tốt nhất là nếu dữ liệu thử nghiệm được đặt sang một bên và hoàn toàn không được sử dụng. Làm xong việc đó bạn có thể báo cáo một cách an toàn về hiệu suất dự kiến ​​của mô hình đã chọn trên bất kỳ dữ liệu chưa xem mới nào.
Ivan

1

Bạn đã thử LOOCV? Tôi nghĩ rằng nó có thể đào tạo, khi bạn có rất ít dữ liệu đào tạo. Để trả lời câu hỏi của bạn, điều đó sẽ không mang lại cho bạn kết quả tốt nhất chỉ vì nó có thể phù hợp và cung cấp cho bạn kết quả sai lệch, do đó trình phân loại của bạn sẽ không hoạt động tốt trên các dữ liệu khác, mà nó đã không nhìn thấy.


LOOCV ở cuối chỉ là một loại xác nhận chéo. Chúng tôi cần một giải pháp cho vấn đề chúng tôi có một dữ liệu nhỏ, chúng tôi muốn chọn các tính năng tốt và cuối cùng có một thước đo đại diện để đánh giá hiệu suất.
soufanom

0

Bạn có thể làm như sau để so sánh hiệu suất của các trình phân loại

Lấy tập huấn luyện của bạn và huấn luyện nó trên mọi bộ tính năng có thể. Đối với mỗi bộ tính năng, giảm thiểu các tham số và xây dựng mô hình sao cho phù hợp với tập huấn luyện. Bây giờ, một khi các mô hình được xây dựng cho tất cả các bộ tính năng, tức là bạn có một mô hình cho mọi bộ tính năng, xác thực các mô hình (được xây dựng trên các bộ tính năng khác nhau) trên bộ xác thực và chọn mô hình đó (được xây dựng cho một tập hợp con cụ thể của bộ tính năng ) đưa ra lỗi tối thiểu trên bộ xác nhận. Bằng cách này, bạn đảm bảo rằng mô hình được xây dựng phù hợp tốt không chỉ với tập huấn luyện mà cả tập xác thực.

Bây giờ, lấy mô hình được xây dựng này và kiểm tra nó trên bộ thử nghiệm. Điều này sẽ cho bạn biết trình phân loại hoạt động tốt như thế nào khi nó chạy trên một tập dữ liệu không được sử dụng cho đào tạo cũng như để xác nhận. Ngoài ra, bạn đã chọn bộ tính năng phù hợp với tập huấn luyện và cả bộ xác nhận hợp lệ.


1
Đối với mô hình trình bao bọc của lựa chọn tính năng, cả bộ dữ liệu huấn luyện và xác nhận phải được hỗ trợ. Trong mô hình trình bao bọc, chúng tôi đang đào tạo và thử nghiệm một trình phân loại được cung cấp một tập hợp tính năng ứng cử viên. Vì vậy, chỉ đưa ra một tập huấn luyện cho mô hình này là không đủ. Câu hỏi là: nếu cùng một dữ liệu được sử dụng để lựa chọn tính năng được sử dụng để so sánh nhưng sử dụng CV, chúng ta vẫn bị sai lệch và ở mức độ nào?
soufanom

0

Nếu có thể, tốt nhất là giữ lại một số dữ liệu để xác nhận chéo bổ sung. Ví dụ, bạn có thể sử dụng nó để xác nhận các thuật toán của mình bằng cách xây dựng các đường cong học tập. Các đường cong này phải được xây dựng trên tập dữ liệu chưa được sử dụng trước đó.

Ngay cả khi bạn chỉ muốn chọn một thuật toán mang lại cho bạn điểm F1 cao nhất, bạn cần sử dụng thêm bộ dữ liệu xác thực chéo để thực hiện điều đó. Bộ kiểm tra phải được dành riêng để báo cáo độ chính xác cuối cùng của giải pháp của bạn (hiệu suất dự kiến ​​của trình phân loại đã chọn trên dữ liệu chưa xem).


Bạn trả lời được nêu trong câu hỏi của tôi như là một kỹ thuật tôi nhận thức được. Câu hỏi là về việc sử dụng cùng một dữ liệu để lựa chọn tính năng và xác thực chéo !!
soufanom

@soufanom Tôi đã viết rằng bạn cần một bộ dữ liệu xác thực chéo bổ sung để chọn phân loại hoạt động tốt nhất, nếu không kết quả của bạn sẽ không đáng tin cậy. Làm thế nào bạn có thể đánh giá hiệu suất của một mô hình bằng cách chạy nó trên một tập dữ liệu được sử dụng để huấn luyện mô hình hoặc chọn tham số. IMHO cách duy nhất đáng tin cậy để đánh giá hiệu suất của bất kỳ trình phân loại nào là chạy nó trên dữ liệu chưa từng thấy trước đây. Tôi hy vọng điều này trả lời câu hỏi của bạn, nếu không xin vui lòng tinh chỉnh nó và thêm thông tin.
Ivan

0

Nó có thể rất thiên vị, tham khảo chương xác thực mô hình trong "Các yếu tố của học thống kê", Nó có thể làm cho độ chính xác của mô hình cv trên 70% trong khi tỷ lệ lỗi thực sự của bất kỳ mô hình nào phải là 50% (các tính năng độc lập với lớp ).

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.