기차와 테스트로 나누기 전이나 후에 전가?


18

N ~ 5000의 데이터 세트가 있고 적어도 하나의 중요한 변수에서 약 1/2이 누락되었습니다. 주요 분석 방법은 Cox 비례 위험입니다.

다중 대치를 사용할 계획입니다. 또한 기차와 테스트 세트로 나눌 것입니다.

데이터를 분할 한 다음 별도로 대치해야합니까?

중요하다면 PROC MI에서 사용할 것 입니다 SAS.


2
중요한 변수에 대한 50 % 결 측값? 어. 대담하지 않고 변수에 대해 '누락'범주를 작성하지 않겠습니까?
RobertF

하나의 변수에 50 % 누락이 없지만 적어도 하나에 약 50 %가 없습니다. 또한, 그들은 연속적이므로 "누락"은 일을 망칠 것입니다.
Peter Flom-Monica Monica 복원

아 대치로 긴장합니다. 나는 cont를 변환하는 것과 비교하여 50 % 값을 갖는 연속 변수를 갖는 장점이 궁금합니다. 결 측값이없는 동작을 캡처 할 수있는 충분한 구간과 '누락 된'범주를 사용하여 범주 형으로 변수를 변경 하시겠습니까?
RobertF

연속 변수를 비닝하는 것을 좋아하지 않습니다.
Peter Flom-Monica Monica 복원

답변:


20

사전 처리 또는 대치 전에 분할해야합니다.

훈련과 테스트 세트의 구분은 과거 정보가 있고 미래에 알려지지 않은 정보를 테스트 할 모델을 구축하려는 시도입니다. 훈련 세트는 과거를 대신하고 테스트 세트는 미래의 장소이므로 훈련 된 모델을 한 번만 테스트하면됩니다.

과거 / 미래 비유를 염두에두면 결 측값 대치와 같이 데이터를 사전 처리하거나 처리하기 위해 수행하는 모든 작업은 교육 세트에서만 수행해야합니다. 테스트 세트에 사전 처리 또는 대치가 필요한 경우 훈련 세트에서 수행 한 작업을 기억하여 두 세트에서 동일한 방식으로 수행 할 수 있습니다.

주석에서 추가 : 테스트 데이터를 사용하여 학습 데이터에 영향을주는 경우 테스트 데이터가 모델을 빌드하는 데 사용되므로 테스트 데이터가 중단되고 모델에 대한 공정한 테스트를 제공하지 않습니다. 과적 합의 위험이 있으므로 테스트 데이터를 처음에 분리하지 말 것을 권장하지 않았습니다.


"두 세트에서 동일한 방식으로 수행"이라고 말하면 "테스트 세트에서 누락 된 데이터를 대치하기 위해 동일한 방법을 사용하지만 동일한 데이터는 아닙니다"라는 의미입니까?
timwiz

@colorlace 과거 / 미래 비유를 사용하십시오. 과거에 훈련 세트를 사용했으며 일부 값을 대치했습니다. 이제 미래에 테스트 세트를 얻고 일부 값을 대치하려고합니다. 시험 데이터에 적용하기 전과 동일한 방법을 사용하게 될 것입니다 (훈련 데이터에서 배운 내용을 자유롭게 통합 할 수 있음)
Henry

"훈련 데이터에서 배운 내용을 자유롭게 통합 할 수있는"경우, 전가하기 전에 분할 하지 않는 것과 어떻게 다른가 ?
팀 위즈

1
@ colorlace : 그 마지막 요점은 내가 말하는 것입니다. 훈련 데이터로 수행하는 것은 테스트 데이터로 알려서는 안됩니다 (비유는 미래가 과거에 영향을 미치지 않아야한다는 것입니다).하지만 테스트 데이터로 수행하는 것은 훈련 데이터를 통해 정보를 얻을 수 있습니다 (비유는 과거를 사용하여 미래를 예측하는 데 도움을 줄 수 있음)
Henry

1
@colorlace-테스트 데이터를 사용하여 학습 데이터에 영향을주는 경우 테스트 데이터는 모델을 빌드하는 데 사용되므로 테스트 데이터가 중단되고 모델에 대한 공정한 테스트를 제공하지 않습니다. 과적 합의 위험이 있으므로 테스트 데이터를 처음에 분리하지
Henry

1

대치하기 전에 분할하는 것이 좋습니다. 예를 들어, 열 평균으로 결 측값을 대치 할 수 있습니다. 이 경우 train + valid 데이터 세트로 먼저 대치하고 다음으로 나누면 모델을 빌드하기 전에 유효성 검증 데이터 세트를 사용한 것입니다. 이는 데이터 누출 문제가 발생하는 방식입니다.

그러나 분할 후 음소거하면 교차 유효성 검사를 수행해야 할 때 너무 지루할 수 있습니다. 그것에 대한 제안은 sklearn 파이프 라인을 사용하는 것입니다. 실제로 코드를 단순화하고 실수 할 가능성을 줄입니다. 파이프 라인 참조


0

위의 내용을 추가하기 위해 전처리 또는 모든 유형의 전처리 전에 분할을 선호합니다. 교육 데이터로 수행하는 작업은 테스트 데이터로 알려서는 안됩니다 (비교는 미래가 과거에 영향을 미치지 않아야한다는 것입니다). 테스트 세트에 사전 처리 또는 대치가 필요한 경우 훈련 세트에서 수행 한 작업을 기억하여 두 세트에서 동일한 방식으로 수행 할 수 있습니다 (비유는 과거를 사용하여 미래를 예측할 수 있음). .

테스트 데이터를 사용하여 훈련 데이터에 어떤 식 으로든 영향을 미치는 경우 테스트 데이터는 모델을 빌드하는 데 사용되므로 테스트 데이터가 중단되고 모델에 대한 공정한 테스트를 제공하지 않습니다. 피팅이 위험 할 수 있으므로 테스트 데이터를 처음에 분리하지 말아야합니다.

r의 캐럿 패키지가 해당 설정에 매우 유용하다고 생각합니다. 특히 그 게시물이 매우 도움이된다는 것을 알았습니다 https://topepo.github.io/caret/model-training-and-tuning.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.