R-Blogger블로그·해설한국어2025-05-22
중첩 재표본추출
Nested Resampling이 글은 R을 활용한 nested resampling 기법에 대해 설명합니다.목표연습을 마치면 ML 알고리즘을 튜닝할 때 과적합을 피하고 nested resampling이 왜 필요한지, 어떻게 적용하는지 이해할 수 있습니다.연습 내용German Credit Task (tsk("german_credit"))를 사용해 k‑NN 모델을 nested resampling으로 평가합니다. 이렇게 하면 튜닝 없이 발생할 수 있는 낙관적 편향 없이 일반화 오차를 정확히 추정할 수 있습니다.Nested Resampling이란?튜닝 전략과 학습기를 결합해 일반화 오차를 올바르게 추정합니다. 같은 데이터를 성능 추정에 사용하면, 우연히 특정 하이퍼파라미터 구성이 편향될 수 있어 과적합이 발생합니다.AutoTuner 설정3‑fold CV, msr("classif.ce") 성능 측정, 랜덤 서치, 40회 평가를 사용합니다. 다음과 같이 AutoTuner를 정의하고 German Credit Task에 학습시킵니다.library(mlr3verse) task = tsk("german_credit")AutoTuner 클래스 mlr3tuning의 AutoTuner는 학습기와 HPO를 하나로 묶어 학습기 자체를 하이퍼파라미터에서 분리합니다. 훈련 시 두 단계가 수행됩니다.정의된 튜닝 전략에 따라 튜닝 수행최적 HPC를 사용해 전체 데이터에 모델 적합AutoTuner 정의 예시 library(mlr3) library(mlr3learners) library(mlr3tuning) task = tsk("german_credit") lrn_knn = lrn("classif.kknn") search_space = ps( k = p_int(1, 100), scale = p_lgl() ) resampling = rsmp("cv", folds = 3L) terminator = trm("evals", n_evals = 40L) tuner = tnr("random_search", batch_size = 4L) at = auto_tuner( learner = lrn_knn, resampling = resampling, measure = msr("classif.ce"), terminator = terminator, search_space = search_space, tuner = tuner ) at$train(task)Nested Resampling 수행AutoTuner 내부의 resampling은 inner resampling이고, 외부 resampling은 outer resampling이라고 합니다. 외부 3‑fold CV를 수행하려면 다음과 같이 합니다.outer = rsmp("cv", folds = 3L) res = resample(task = task, learner = at, resampling = outer)벤치마크 비교기본 튜닝되지 않은 k‑NN과 다른 두 학습기(예: 결정 트리, 랜덤 포레스트)의 성능을 비교합니다. 벤치마크는 outer resampling(예: 4‑fold CV)을 사용해 nested resampling을 적용합니다.lrn_decision_tree = lrn("classif.rpart") lrn_rf = lrn("classif.ranger") bmr = benchmark( tasks = list(task), learners = list(at, lrn_decision_tree, lrn_rf), resamplings = list(rsmp("cv", folds = 4L)) )요약AutoTuner는 내부 inner resampling을 통해 하이퍼파라미터를 자동으로 찾습니다. 외부
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2025-05-22