Làm thế nào để áp dụng tiêu chuẩn hóa / chuẩn hóa cho đào tạo- và testset nếu dự đoán là mục tiêu?


47
  1. Tôi có chuyển đổi tất cả dữ liệu hoặc nếp gấp của mình (nếu CV được áp dụng) cùng một lúc không? ví dụ

    (allData - mean(allData)) / sd(allData)

  2. Tôi có biến đổi trainset và testset riêng không? ví dụ

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(testData)) / sd(testData)

  3. Hay tôi biến đổi trainset và sử dụng các phép tính trên testset? ví dụ

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(trainData)) / sd(trainData)

Tôi tin rằng 3 là đúng cách. Nếu 3 đúng, tôi phải lo lắng về giá trị không phải là 0 hoặc phạm vi không nằm trong khoảng [0; 1] hoặc [-1; 1] (bình thường hóa) của testset?


Có một cách bất hợp pháp để mã này trong R? Xem câu hỏi này: stackoverflow.com/questions/49260862/ từ
Boern

Câu trả lời:


41

Cách thứ ba là chính xác. Chính xác tại sao được đề cập chi tiết tuyệt vời trong Các yếu tố của học thống kê , xem phần "Sai và đúng cách để xác thực chéo", và trong chương cuối cùng của Học từ dữ liệu , trong ví dụ về thị trường chứng khoán.

Về cơ bản, quy trình 1 và 2 rò rỉ thông tin về phản hồi hoặc từ tương lai, từ dữ liệu giữ của bạn được thiết lập vào đào tạo hoặc đánh giá về mô hình của bạn. Điều này có thể gây ra sự thiên vị lạc quan đáng kể trong đánh giá mô hình của bạn.

Ý tưởng trong xác nhận mô hình là bắt chước tình huống bạn sẽ gặp phải khi mô hình của bạn đưa ra quyết định sản xuất, khi bạn không có quyền truy cập vào phản hồi thực sự. Hậu quả là bạn không thể sử dụng phản hồi trong bộ kiểm tra cho bất cứ điều gì ngoại trừ so với các giá trị dự đoán của bạn.

Một cách khác để tiếp cận nó là tưởng tượng rằng bạn chỉ có quyền truy cập vào một điểm dữ liệu từ tổ chức của bạn tại một thời điểm (một tình huống phổ biến cho các mô hình sản xuất). Bất cứ điều gì bạn không thể làm theo giả định này, bạn nên giữ sự nghi ngờ lớn. Rõ ràng, một điều bạn không thể làm là tổng hợp trên tất cả các điểm dữ liệu mới trong quá khứ và tương lai để bình thường hóa luồng dữ liệu sản xuất của bạn - do đó, làm như vậy để xác thực mô hình là không hợp lệ.

Bạn không phải lo lắng về giá trị trung bình của bộ kiểm tra của bạn là khác không, đó là một tình huống tốt hơn là làm sai lệch các ước tính hiệu suất của bạn. Mặc dù, tất nhiên, nếu bài kiểm tra thực sự được rút ra từ cùng một phân phối cơ bản như tàu của bạn (một giả định thiết yếu trong học tập thống kê), có nghĩa là trung bình sẽ xuất hiện ở mức xấp xỉ bằng không.


Đó là những gì tôi nghĩ. Cảm ơn bạn đã làm rõ điều này!
DerTom

Clearly, one thing you cannot do is aggregate over all new data-points past and future to normalize your production stream of data. Tại sao không?
Anmol Singh Jaggi

1
@AnmolSinghJaggi Đó là "và tương lai". Nếu bạn chưa thực sự thu thập dữ liệu, bạn không thể bình thường hóa bằng cách sử dụng nó.
Matthew Drury

4
@floodking Nếu bạn nghĩ dữ liệu đào tạo là dữ liệu "quá khứ" và dữ liệu thử nghiệm là "hiện tại hoặc tương lai", bằng cách tổng hợp dữ liệu thử nghiệm của bạn, bạn hoàn toàn sử dụng thông tin về tương lai của X. Rò rỉ dữ liệu không chỉ là rò rỉ vào dự đoán, nó cũng là về rò rỉ thông tin từ tương lai. Một nguyên tắc nhỏ là bạn sẽ có thể đưa ra dự đoán chỉ bằng một hàng hoặc dữ liệu thử nghiệm của mình, nếu không bạn sẽ sử dụng trong tương lai. y
Matthew Drury

1
@MatthewDrury. Cảm ơn lời giải thích rõ ràng của bạn. Tôi đồng ý với bạn bây giờ. Chỉ có cách thứ ba là chính xác.
lũ lụt
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.