더북(TheBook)

08 | caret 패키지

9장과 10장에서 교차 분석, 모델 성능 평가, 시각화 등을 설명하면서 caret 패키지를 언급했다. 이처럼 caret이 자주 언급된 이유는 그만큼 caret 패키지가 지원하는 기능이 기계 학습 전반에 걸쳐 있고 사용이 편리하기 때문이다. 이 절에서는 caret을 사용한 간단한 기계 학습 예제를 수행해보면서 그 편리함의 의미를 살펴보자. 다음에 이 절에서 처음 사용할 함수를 보였다.

표 10-20 caret을 사용한 모델 훈련

caret::train : caret을 사용해 기계 학습 모델을 훈련한다.

caret::train(
  form,    # 모델 포뮬러
  data,    # 포뮬러를 적용할 데이터
  ...,     # 분류 또는 회귀 모델에 전달할 추가 파라미터
  weights  # 데이터의 가중치
)
caret::train(
  x, y,  # 예측 변수를 저장한 데이터 프레임 x와 분류 y
  # 사용할 기계 학습 모델. 기본값은 rf(랜덤 포레스트),
  # names(getModelInfo())로 지원되는 전체 모델 목록을 볼 수 있다.
  method="rf",
  # 수행할 데이터 전처리. center(평균이 0이 되게 함), scale(분산이 1이 되게 함),
  # pca(주성분 분석) 등을 지정할 수 있다.
  preProcess=NULL,
  weights=NULL,  # 데이터의 가중치
  # 평가 메트릭. 분류 문제의 경우 정확도(accuracy), 회귀 문제일 경우 RMSE7로 자동 지정된다.
  metric,
  trControl=trainControl(),  # 훈련 파라미터
  ... # 분류 또는 회귀 모델에 전달할 추가 파라미터
)

반환 값은 train 객체다.

caret::trainControl : train( )의 trControl에 지정할 훈련 파라미터를 생성한다.

caret::trainControl(
  # 데이터 샘플링 기법. boot(부트스트래핑), boot632(부트스트래핑의 개선된 버전),
  # cv(교차 검증), repeatedcv(교차 검증의 반복), LOOCV(Leave One Out Cross Validation)
  # (한 개의 데이터만 테스트 데이터로 하고 나머지 데이터를 훈련 데이터로 하는 방법.
  # 데이터의 크기가 N일 때 N겹 교차 검증이 이에 해당한다) 등을 지정할 수 있다.
  method="boot",
  # 교차 검증을 몇 겹으로 할 것인지 또는 부트스트래핑을 몇 회 수행할 것인지 지정
  number,
  repeats,  # 데이터 샘플링 반복 횟수
  p=0.75
)

반환 값은 train( )의 trControl에 지정할 값이다.


7 Root Mean Squared Error의 약어로 평균 제곱근 편차를 뜻한다. 총 n개 데이터 중 i번째 데이터에 대한 추정값이 , 실제 값이 일 때 RMSE는 이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.