Tranh chấp trước hay sau khi tách thành tàu và kiểm tra?


18

Tôi có một bộ dữ liệu với N ~ 5000 và thiếu khoảng 1/2 trên ít nhất một biến quan trọng. Phương pháp phân tích chính sẽ là các mối nguy theo tỷ lệ Cox.

Tôi có kế hoạch sử dụng nhiều lần cắt cụt. Tôi cũng sẽ được chia thành một đoàn tàu và thử nghiệm.

Tôi có nên phân tách dữ liệu và sau đó tách riêng, hoặc phân tách và sau đó phân tách?

Nếu nó quan trọng, tôi sẽ được sử dụng PROC MItrong SAS.


2
50% giá trị thiếu cho một biến quan trọng? Ừ Thay vì bất lịch sự, tại sao không tạo một danh mục 'Mất tích' cho biến?
RobertF

Không có một biến nào bị thiếu 50%, nhưng khoảng 50% bị thiếu trên ít nhất một biến. Ngoài ra, chúng là liên tục, vì vậy "mất tích" sẽ làm mọi thứ rối tung lên.
Peter Flom - Tái lập Monica

Ah. Tôi cảm thấy lo lắng khi sử dụng. Tôi tự hỏi về giá trị của việc có một biến liên tục với 50% giá trị được tranh chấp so với chuyển đổi cont. biến thành phân loại với danh mục 'Mất tích' cộng với đủ số thùng để nắm bắt hành vi của các giá trị không thiếu?
RobertF

Tôi không thích biến các biến liên tục.
Peter Flom - Tái lập Monica

Câu trả lời:


20

Bạn nên tách trước khi xử lý trước hoặc xử lý.

Sự phân chia giữa tập huấn luyện và tập kiểm tra là một nỗ lực tái tạo tình huống bạn có thông tin trong quá khứ và đang xây dựng một mô hình mà bạn sẽ kiểm tra thông tin chưa biết trong tương lai: tập huấn diễn ra quá khứ và tập kiểm tra diễn ra nơi của tương lai, vì vậy bạn chỉ có thể kiểm tra mô hình được đào tạo của bạn một lần.

Hãy ghi nhớ sự tương tự trong quá khứ / tương lai, điều này có nghĩa là bất cứ điều gì bạn làm để xử lý trước hoặc xử lý dữ liệu của mình, chẳng hạn như đưa ra các giá trị bị thiếu, bạn nên làm một mình trong tập huấn luyện. Sau đó, bạn có thể nhớ những gì bạn đã làm với tập huấn luyện của mình nếu tập kiểm tra của bạn cũng cần xử lý trước hoặc xử lý, để bạn thực hiện theo cách tương tự trên cả hai tập.

Đã thêm từ nhận xét: nếu bạn sử dụng dữ liệu thử nghiệm để ảnh hưởng đến dữ liệu đào tạo, thì dữ liệu thử nghiệm đang được sử dụng để xây dựng mô hình của bạn, do đó, nó không còn là dữ liệu thử nghiệm và sẽ không cung cấp thử nghiệm công bằng cho mô hình của bạn. Bạn có nguy cơ bị thừa, và điều đó không khuyến khích việc bạn tách dữ liệu thử nghiệm ngay từ đầu


Khi bạn nói "bạn làm theo cùng một cách trên cả hai bộ", bạn có nghĩa là: "sử dụng cùng một phương pháp để áp đặt dữ liệu bị thiếu trong bộ kiểm tra, nhưng KHÔNG phải cùng một dữ liệu"?
timwiz

@colorlace Sử dụng sự tương tự trong quá khứ / tương lai. Bạn đã sử dụng tập huấn luyện trong quá khứ và đưa ra một số giá trị. Bây giờ bạn có được bộ kiểm tra trong tương lai và muốn áp đặt một số giá trị của nó; bạn có thể sẽ sử dụng phương pháp tương tự như trước khi áp dụng cho dữ liệu thử nghiệm (mặc dù bạn có thể tự do kết hợp những gì bạn học được từ dữ liệu đào tạo)
Henry

Nếu bạn "được tự do kết hợp những gì bạn đã học được từ dữ liệu đào tạo", thì nó khác với việc không tách ra như thế nào trước khi đưa ra.
timwiz

1
@colorlace: điểm cuối cùng đó chính xác là những gì tôi đang nói: không có gì bạn làm với dữ liệu đào tạo nên được thông báo bằng dữ liệu kiểm tra (tương tự là tương lai sẽ không ảnh hưởng đến quá khứ), nhưng bạn sẽ làm gì với dữ liệu kiểm tra có thể được thông báo bằng dữ liệu đào tạo (tương tự là bạn có thể sử dụng quá khứ để giúp dự đoán tương lai)
Henry

1
@colorlace - nếu bạn sử dụng dữ liệu thử nghiệm để ảnh hưởng đến dữ liệu đào tạo, thì dữ liệu thử nghiệm đang được sử dụng để xây dựng mô hình của bạn, vì vậy nó không còn là dữ liệu thử nghiệm và sẽ không cung cấp thử nghiệm công bằng cho mô hình của bạn. Bạn có nguy cơ bị thừa, và điều đó làm nản lòng rằng bạn đã tách dữ liệu thử nghiệm ở vị trí đầu tiên
Henry

1

Tôi nghĩ rằng bạn tốt hơn nên chia tay trước khi bạn buộc tội. Ví dụ, bạn có thể muốn áp đặt các giá trị bị thiếu với giá trị trung bình của cột. Trong trường hợp này, nếu bạn áp đặt đầu tiên với tập dữ liệu + tập hợp và phân tách tiếp theo, thì bạn đã sử dụng tập dữ liệu xác thực trước khi bạn xây dựng mô hình của mình, đó là cách xảy ra sự cố rò rỉ dữ liệu.

Nhưng bạn có thể hỏi, nếu tôi buộc tội sau khi chia tách, nó có thể quá tẻ nhạt khi tôi cần thực hiện xác nhận chéo. Đề nghị của tôi cho điều đó là sử dụng đường ống sklearn. Nó thực sự đơn giản hóa mã của bạn và giảm khả năng mắc lỗi. Xem đường ống


0

Chỉ cần thêm vào ở trên, tôi cũng sẽ thích chia tách trước khi xử lý hoặc bất kỳ loại tiền xử lý nào. Không có gì bạn làm với dữ liệu đào tạo nên được thông báo bằng dữ liệu thử nghiệm (điều tương tự là tương lai sẽ không ảnh hưởng đến quá khứ). Sau đó, bạn có thể nhớ những gì bạn đã làm với tập huấn luyện của mình nếu bộ kiểm tra của bạn cũng cần xử lý trước hoặc xử lý, để bạn thực hiện theo cách tương tự trên cả hai bộ (tương tự là bạn có thể sử dụng quá khứ để giúp dự đoán tương lai) .

Nếu bạn sử dụng dữ liệu thử nghiệm để ảnh hưởng đến dữ liệu đào tạo theo bất kỳ cách nào, thì dữ liệu thử nghiệm đang được sử dụng để xây dựng mô hình của bạn, do đó, nó không còn là dữ liệu thử nghiệm và sẽ không cung cấp thử nghiệm công bằng cho mô hình của bạn. Bạn có nguy cơ quá phù hợp, và đó là để ngăn chặn điều này khi bạn tách dữ liệu thử nghiệm ngay từ đầu!

Tôi nghĩ rằng gói caret trong r rất hữu ích trong cài đặt đó. Tôi thấy cụ thể bài đăng đó cực kỳ hữu ích https://topepo.github.io/caret/model-training-and-tuning.html

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.