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

Connected

연습 문제

작은 예제로 vtreat 사용하기

이 연습에서는 작은 예제를 통해 vtreat로 범주형 변수를 원-핫 인코딩해 보겠습니다. vtreat는 범주형 변수를 지시자 변수(코드 "lev")로 변환하고, 수치형 변수에서 이상값이나 결측값을 정리(코드 "clean")하기 위한 처리 계획(treatment plan)을 만듭니다.

처리 계획을 설계하려면 designTreatmentsZ() 함수를 사용하세요 (docs)

treatplan <- designTreatmentsZ(data, varlist)
  • data: 원본 학습 데이터 프레임
  • varlist: 처리할 입력 변수들의 벡터(문자열)

designTreatmentsZ()는 scoreFrame 요소를 포함한 리스트를 반환합니다. scoreFrame은 새로 생성될 변수들의 이름과 유형을 담은 데이터 프레임입니다:

scoreFrame <- treatplan %>% 
            magrittr::use_series(scoreFrame) %>% 
            select(varName, origName, code)
  • varName: 새로 생성된 처리 변수의 이름
  • origName: 처리 변수가 유래한 원래 변수의 이름
  • code: 새 변수의 유형
    • "clean": NA나 NaN이 없는 수치형 변수
    • "lev": 원본 범주형 변수의 특정 수준을 나타내는 지시자 변수

(magrittr::use_series() (docs)는 파이프에서 사용할 수 있는 $의 별칭입니다.)

이 연습에서는 code가 "clean" 또는 "lev"인 경우의 varName이 필요합니다:

newvarlist <- scoreFrame %>% 
             filter(code %in% c("clean", "lev") %>%
             magrittr::use_series(varName)

데이터셋을 전부 수치형 및 원-핫 인코딩된 변수로 변환하려면 prepare()를 사용하세요 (docs):

data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
  • treatplan: 처리 계획
  • data: 처리할 데이터 프레임
  • varRestrictions: 처리된 데이터에 포함할 변수들

dframe 데이터 프레임과 magrittr 패키지는 미리 로드되어 있습니다.

지침

100 XP
  • dframe을 출력하세요. 여기서 color와 size는 입력 변수이고, popularity는 예측할 결과 변수라고 가정합니다.
  • 입력 변수의 이름을 문자열로 담은 벡터 vars를 만드세요.
  • 패키지 vtreat를 로드하세요.
  • designTreatmentsZ()를 사용해 vars의 변수들에 대한 처리 계획을 만들고, 변수 treatplan에 저장하세요.
  • 처리 계획에서 scoreFrame을 가져와 살펴보고, 기존 변수에서 새 변수로의 매핑을 확인하세요.
    • varName, origName, code 열만 필요합니다.
    • 새로 생성된 지시자 변수의 이름은 무엇인가요? 연속형 변수는 무엇인가요?
  • code가 clean 또는 lev인 경우의 varName을 담은 벡터 newvars를 만들고, 이를 출력하세요.
  • prepare()를 사용해 결과 변수 열을 제외한 dframe의 원-핫 인코딩 버전인 새 데이터 프레임 dframe.treat를 만드세요.
    • 이를 출력하고 dframe과 비교해 보세요.