N ~ 5000의 데이터 세트가 있고 적어도 하나의 중요한 변수에서 약 1/2이 누락되었습니다. 주요 분석 방법은 Cox 비례 위험입니다.
다중 대치를 사용할 계획입니다. 또한 기차와 테스트 세트로 나눌 것입니다.
데이터를 분할 한 다음 별도로 대치해야합니까?
중요하다면 PROC MI
에서 사용할 것 입니다 SAS
.
N ~ 5000의 데이터 세트가 있고 적어도 하나의 중요한 변수에서 약 1/2이 누락되었습니다. 주요 분석 방법은 Cox 비례 위험입니다.
다중 대치를 사용할 계획입니다. 또한 기차와 테스트 세트로 나눌 것입니다.
데이터를 분할 한 다음 별도로 대치해야합니까?
중요하다면 PROC MI
에서 사용할 것 입니다 SAS
.
답변:
사전 처리 또는 대치 전에 분할해야합니다.
훈련과 테스트 세트의 구분은 과거 정보가 있고 미래에 알려지지 않은 정보를 테스트 할 모델을 구축하려는 시도입니다. 훈련 세트는 과거를 대신하고 테스트 세트는 미래의 장소이므로 훈련 된 모델을 한 번만 테스트하면됩니다.
과거 / 미래 비유를 염두에두면 결 측값 대치와 같이 데이터를 사전 처리하거나 처리하기 위해 수행하는 모든 작업은 교육 세트에서만 수행해야합니다. 테스트 세트에 사전 처리 또는 대치가 필요한 경우 훈련 세트에서 수행 한 작업을 기억하여 두 세트에서 동일한 방식으로 수행 할 수 있습니다.
주석에서 추가 : 테스트 데이터를 사용하여 학습 데이터에 영향을주는 경우 테스트 데이터가 모델을 빌드하는 데 사용되므로 테스트 데이터가 중단되고 모델에 대한 공정한 테스트를 제공하지 않습니다. 과적 합의 위험이 있으므로 테스트 데이터를 처음에 분리하지 말 것을 권장하지 않았습니다.
대치하기 전에 분할하는 것이 좋습니다. 예를 들어, 열 평균으로 결 측값을 대치 할 수 있습니다. 이 경우 train + valid 데이터 세트로 먼저 대치하고 다음으로 나누면 모델을 빌드하기 전에 유효성 검증 데이터 세트를 사용한 것입니다. 이는 데이터 누출 문제가 발생하는 방식입니다.
그러나 분할 후 음소거하면 교차 유효성 검사를 수행해야 할 때 너무 지루할 수 있습니다. 그것에 대한 제안은 sklearn 파이프 라인을 사용하는 것입니다. 실제로 코드를 단순화하고 실수 할 가능성을 줄입니다. 파이프 라인 참조
위의 내용을 추가하기 위해 전처리 또는 모든 유형의 전처리 전에 분할을 선호합니다. 교육 데이터로 수행하는 작업은 테스트 데이터로 알려서는 안됩니다 (비교는 미래가 과거에 영향을 미치지 않아야한다는 것입니다). 테스트 세트에 사전 처리 또는 대치가 필요한 경우 훈련 세트에서 수행 한 작업을 기억하여 두 세트에서 동일한 방식으로 수행 할 수 있습니다 (비유는 과거를 사용하여 미래를 예측할 수 있음). .
테스트 데이터를 사용하여 훈련 데이터에 어떤 식 으로든 영향을 미치는 경우 테스트 데이터는 모델을 빌드하는 데 사용되므로 테스트 데이터가 중단되고 모델에 대한 공정한 테스트를 제공하지 않습니다. 피팅이 위험 할 수 있으므로 테스트 데이터를 처음에 분리하지 말아야합니다.
r의 캐럿 패키지가 해당 설정에 매우 유용하다고 생각합니다. 특히 그 게시물이 매우 도움이된다는 것을 알았습니다 https://topepo.github.io/caret/model-training-and-tuning.html