본문 바로가기
IT관련

R로 배우는 랜덤포레스트 교차검증 모델 – caret 패키지 실습

by aostory77 2025. 5. 19.

데이터 분석을 하다 보면 "정확한 모델인가?", "과적합된 아닐까?"라는 고민이 들곤 합니다.
이번에는 R대표적인 머신러닝 패키지인 caret활용해, 랜덤포레스트(Random Forest) 모델을 학습하고, 5-Fold 교차검증으로 모델 성능을 평가해보는 과정을 소개합니다.

 

🧑‍🏫 사용 데이터: iris

iris 데이터셋은 머신러닝 입문자들에게 가장 많이 사용되는 데이터입니다.

  • 150샘플
  • 4개의 독립 변수 (꽃잎 길이/너비, 꽃받침 길이/너비)
  • 3개의 품종 분류 (setosa, versicolor, virginica)

🛠️ 분석 과정 요약

  1. caret 패키지 설치 로드
  2. trainControl()이용한 5-Fold 교차검증 설정
  3. train() 함수로 랜덤포레스트 모델 훈련
  4. 최적의 하이퍼파라미터 mtry 자동 선택
  5. 모델 정확도 분류 성능 평가

# 패키지 설치
install.packages("caret")       # 처음 한 번만 설치
library(caret)

# 데이터 불러오기
data(iris)

str(iris)



# 5-Fold 교차검증 설정
control <- trainControl(method = "cv", number = 5)

# 모델 훈련(rondomforest) - Random Forest 
model <- train(Species ~ ., data = iris, method = "rf", trControl = control)

# 결과 출력
print(model)


📊 2. 모델 출력 해석하기

Random Forest 

150 samples  
4 predictor  
3 classes: 'setosa', 'versicolor', 'virginica'  

Resampling: Cross-Validated (5 fold)  
Summary of sample sizes: 120, 120, 120, 120, 120  
Resampling results across tuning parameters:

  mtry  Accuracy   Kappa
  2     0.9400000  0.91 
  3     0.9533333  0.93 
  4     0.9533333  0.93 

Accuracy was used to select the optimal model using the largest value.  
The final value used for the model was mtry = 3.

용어설명

mtry 트리에서 노드를 분할할 고려할 변수의
Accuracy 예측 정확도 (전체 예측 정답 비율)
Kappa 분류의 일치도를 측정하는 지표 (0~1 사이, 1가까울수록 완벽)
 

🔍 해석

  • 모델은 다양한 mtry 값(2, 3, 4)시도해본 결과, mtry = 3가장 높은 성능(정확도 95.33%)보였습니다.
  • Kappa = 0.93매우 우수한 수치로, 모델이 품종을 정확하게 분류하고 있다는 의미입니다.
  • 최종적으로 mtry = 3선택한 모델이 저장됩니다.

교차검증(Cross Validation)할까?

  • 번의 훈련/테스트 분할은 편향될 있습니다.
  • 5-Fold 교차검증데이터를 5개로 나눠 5훈련과 평가반복하고, 평균 성능으로 모델을 평가합니다.
  • 결과적으로 신뢰할 있는 모델 평가가능합니다.

결론 정리

항목결과
최적 mtry 3
최고 정확도 95.33%
최고 Kappa 0.93
모델 안정성 매우 우수 (고정된 데이터에도 견고한 성능)

💡 모델 시각화

plot(model)

🔍 설명

  • x: #Randomly Selected Predictors
    즉, mtry 값.
    트리 분할 고려할 무작위로 선택된 예측 변수 개수
  • y: Accuracy (Cross-Validation)
    5-Fold 교차검증을 통해 얻은 평균 예측 정확도

📈 그래프 읽기

mtry 값 교차검증 정확도
2 0.953
3 0.960
4 0.960
  • mtry = 3mtry = 4에서 정확도 최고치 (96.0%)
  • 하지만 일반적으로 caret간단한 모델선호하므로 mtry = 3최적값으로 선택됩니다.
  • mtry = 2경우 정확도가 상대적으로 낮은 것으로 나타남 (95.3%)
  • 그래프는 랜덤 포레스트 모델이 다양한 mtry 값에 대해 어떤 성능(정확도)보였는지 시각적으로 보여줍니다.
  • 정확도는 mtry = 3에서 최고치를 달성했으며, 값이 최적의 하이퍼파라미터자동 선택됩니다.
  • 모델 튜닝 결과를 직관적으로 확인있어서, 사용자 입장에서 설명하거나 리포트를 작성할 매우 유용합니다.

 

 


🏁 마무리

caret 패키지는 R에서 모델 학습과 검증을 매우 간단하고 강력하게 해주는 도구입니다.
단순한 분류를 넘어, 데이터 과학자처럼 교차검증으로 모델을 평가하는 방법에 대한 이야기를 다루었습니다.

 

2025.05.16 - [IT관련] - 미국 50개 주의 문맹률, 소득, 교육수준의 상관관계는?

 

미국 50개 주의 문맹률, 소득, 교육수준의 상관관계는?

R 내장 데이터셋 state.x77로 알아보는 기초 데이터 분석데이터 분석을 배우기 시작하면 누구나 한 번쯤 마주하게 되는 것이 바로 R의 내장 데이터셋입니다. 그중 오늘은 미국 50개 주의 사회경제

aostory.co.kr

 

2025.05.14 - [IT관련] - R로 분석한 미국 범죄 데이터 (USArrests)

 

R로 분석한 미국 범죄 데이터 (USArrests)

“도시화가 범죄를 유발한다”는 말, 들어본 적 있으신가요?이번 글에서는 R 내장 데이터셋인 USArrests를 활용하여,미국 각 주(State)의 도시화율(UrbanPop)과 범죄율 사이의 상관관계를 분석해보겠습

aostory.co.kr

 

2025.04.30 - [IT관련] - 메타 점수가 높은 게임들의 공통점은? ( 캐글 데이터로 보는 게임 공식 )

 

메타 점수가 높은 게임들의 공통점은? ( 캐글 데이터로 보는 게임 공식 )

메타 점수가 높은 게임들의 공통점은?( 캐글 데이터로 보는 게임 공식 ) [ 목차 ] 사용한 데이터 분석목표 R 코드: 데이터 로딩 및 전처리 시각화 분석 - 장르별 메타 점수 분포 - 플랫폼별 메타 점

aostory.co.kr