Mam zestaw danych z N ~ 5000 i brakuje mi około 1/2 co najmniej jednej ważnej zmiennej. Główną metodą analityczną będą proporcjonalne zagrożenia Coxa.
Planuję zastosować wielokrotne przypisanie. Podzielę się również na pociąg i zestaw testowy.
Czy należy podzielić dane, a następnie przypisać osobno, czy przypisać, a następnie podzielić?
Jeżeli ma to znaczenie, będę używał PROC MI
w SAS
.
cross-validation
survival
multiple-imputation
train
Peter Flom - Przywróć Monikę
źródło
źródło
Odpowiedzi:
Powinieneś podzielić się przed przetwarzaniem wstępnym lub przypisaniem.
Podział między zestawem szkoleniowym a testowym jest próbą odtworzenia sytuacji, w której posiadasz informacje z przeszłości i budujesz model, który przetestujesz na przyszłych, jak dotąd nieznanych informacjach: zestaw treningowy zastępuje przeszłość, a zestaw testowy zajmuje miejsce przyszłości, więc możesz przetestować wyszkolony model tylko raz.
Mając na uwadze analogię z przeszłością / przyszłością, oznacza to wszystko, co robisz, aby wstępnie przetwarzać lub przetwarzać swoje dane, takie jak przypisywanie brakujących wartości, które powinieneś zrobić na samym zestawie szkoleniowym. Następnie możesz zapamiętać, co zrobiłeś ze swoim zestawem treningowym, jeśli twój zestaw testowy wymaga również wstępnego przetwarzania lub przypisania, abyś zrobił to tak samo na obu zestawach.
Dodane z komentarzy: jeśli użyjesz danych testowych do wpłynięcia na dane treningowe, wówczas dane testowe są wykorzystywane do budowy twojego modelu, więc przestają być danymi testowymi i nie zapewnią rzetelnego testu twojego modelu. Ryzykujesz nadmiernym dopasowaniem, a przede wszystkim po to, żeby oddzielić dane testowe
źródło
Myślę, że lepiej rozstać się przed dokonaniem imputacji. Na przykład możesz chcieć przypisać brakujące wartości średniej w kolumnie. W takim przypadku, jeśli najpierw przypisasz ciąg + prawidłowy zestaw danych, a następnie podzielisz, użyłeś zestawu danych sprawdzania poprawności przed zbudowaniem modelu, w ten sposób powstaje problem wycieku danych.
Ale możesz zapytać, jeśli przypisuję po podziale, może to być zbyt nużące, kiedy muszę dokonać krzyżowej weryfikacji. Proponuję do tego użyć potoku sklearn. To naprawdę upraszcza kod i zmniejsza ryzyko popełnienia błędu. Zobacz Rurociąg
źródło
Aby dodać powyższe, wolałbym również podział przed przypisaniem lub jakimkolwiek rodzajem wstępnego przetwarzania. Nic, co robisz z danymi treningowymi, nie powinno być informowane przez dane testowe (analogia jest taka, że przyszłość nie powinna wpływać na przeszłość). Następnie możesz zapamiętać, co zrobiłeś z zestawem treningowym, jeśli zestaw testowy wymaga również wstępnego przetwarzania lub przypisania, dzięki czemu możesz to zrobić w ten sam sposób na obu zestawach (analogia polega na tym, że możesz użyć przeszłości, aby przewidzieć przyszłość) .
Jeśli użyjesz danych testowych, aby w jakikolwiek sposób wpłynąć na dane treningowe, wówczas dane testowe są wykorzystywane do budowy modelu, więc przestają być danymi testowymi i nie zapewnią rzetelnego testu twojego modelu. Ryzykujesz nadmiernym dopasowaniem, a przede wszystkim po to, aby oddzielić dane testowe!
Myślę, że pakiet karetki wr jest bardzo przydatny w tym ustawieniu. W szczególności ten post okazał się niezwykle pomocny https://topepo.github.io/caret/model-training-and-tuning.html
źródło