1. 학습
  2. /
  3. 강의
  4. /
  5. R로 하는 Supervised Learning: 회귀

Connected

연습 문제

새로운 범주 수준(Novel levels)

범주형 변수의 어떤 수준이 매우 드물면, 학습 데이터에 나타나지 않을 수 있습니다. 그 드문 수준이 이후 데이터에 등장하면, 이후 단계의 모델은 이를 어떻게 처리해야 할지 모를 수 있습니다. 이런 새로운 수준(novel levels) 이 나타날 때 model.matrix나 caret::dummyVars로 원-핫 인코딩을 하면 올바르게 동작하지 않을 수 있습니다.

vtreat은 새로운 수준을 안전하게 처리할 수 있기 때문에 원-핫 인코딩에서 model.matrix보다 더 "안전한" 대안입니다. vtreat은 데이터의 결측값(범주형과 연속형 모두)도 함께 처리합니다.

이 연습 문제에서는 학습 세트에 없던 범주형 값들을 vtreat이 어떻게 처리하는지 확인해 보겠습니다. 이전 연습 문제에서 만든 처리 계획 treatplan과 변수 집합 newvars가 여전히 준비되어 있습니다. dframe과 새로운 데이터 프레임 testframe이 미리 로드되어 있습니다.

지침

100 XP
  • dframe과 testframe을 출력하세요.
    • testframe에 dframe에는 없던 색상이 있나요?
  • prepare()를 호출해 testframe의 원-핫 인코딩 버전(결과 변수 제외)을 만드세요. 이름은 testframe.treat로 하고 출력하세요.
    • varRestriction 인수를 사용해 변수들을 newvars에 포함된 것만으로 제한하세요.
    • 노란색 행은 어떻게 인코딩되었나요?