PART 08. 프로젝트 3 _ ML 실험 추적 노트북
PART 06에서 EDA 노트북을 만들었고, PART 07에서는 그것을 사용자를 위한 데이터 앱으로 변환했습니다. 이 파트는 세 번째 프로젝트입니다. 주제는 머신러닝 실험입니다.
ML 실험에는 반복이 따릅니다. 트리 깊이를 3으로 줬더니 과소적합입니다. 10으로 올렸더니 이번엔 과적합입니다. 5로 다시 내려보고, 추정기 자체를 바꿔보고, 학습률을 절반으로 줄여봅니다. 이 과정은 지루할 뿐 아니라 결과를 잊기 쉽습니다. 어떤 조합에서 가장 좋은 정확도가 나왔는지 기억하기 어렵습니다.
marimo의 반응형 셀과 UI 위젯은 이 문제에 잘 맞습니다. 슬라이더를 옮기면 학습이 다시 돌고 정확도가 즉시 갱신됩니다. 드롭다운으로 모델을 바꾸면 그 모델의 파라미터 셋으로 전환됩니다. 실험 결과를 누적 테이블에 기록해 조합별 성능을 나란히 비교할 수 있습니다.
그러나 위젯 조작마다 즉시 재학습이 일어나면 부담이 생깁니다. 특히 트리 수가 많거나 데이터가 크면 슬라이더를 드래그하는 동안 학습이 계속 실행됩니다. 이 파트는 그 문제를 해결하는 세 가지 패턴도 함께 다룹니다. mo.ui.run_button으로 수동 트리거하거나, lazy 모드로 노트북 전체를 수동 제어 방식으로 전환하거나, @mo.cache로 동일 파라미터 조합의 재계산을 막는 방법입니다.
프로젝트 파일은 ml_experiment.py입니다. Ch 01에서 하이퍼파라미터 위젯과 데이터 준비를 구성하고, Ch 02에서 반응형 학습·평가 파이프라인을 완성합니다. Ch 03에서 실험 결과를 기록하고 비교하며 재현성을 확보합니다. Ch 04에서 학습된 모델을 저장하고, 예측 위젯을 갖춘 데모 앱으로 공유합니다.
선행 지식: PART 02 (반응형 데이터플로우의 원리, 특히 Ch 04 lazy 모드), PART 03 (인터랙티브 UI 만들기), PART 04 (캐싱, Ch 05), scikit-learn 기초(fit, predict, accuracy_score 수준).
이 파트를 마치면
mo.ui.slider와mo.ui.dropdown으로 모델 종류와 하이퍼파라미터를 선택하는 위젯 패널을 구성할 수 있습니다.- 위젯 값을 직접 참조하는 반응형 학습 파이프라인을 작성하고, 파라미터가 바뀔 때마다 평가 결과가 자동으로 갱신되는 흐름을 만들 수 있습니다.
mo.ui.run_button과mo.stop을 조합해 학습을 수동으로 트리거하는 패턴을 구현할 수 있습니다.- lazy 모드(
pyproject.toml설정)와@mo.cache를 ML 실험 노트북에 적용해 비싼 재학습 비용을 줄일 수 있습니다. - 실험 결과(파라미터 조합과 정확도)를 데이터프레임에 누적하고 차트로 비교할 수 있습니다.
random_state를 고정해 결과 재현성을 보장하는 이유를 설명하고 코드에 적용할 수 있습니다.joblib로 모델을 저장하고,mo.ui입력 위젯으로 단일 샘플 예측을 시연하는 데모 앱을marimo run으로 실행할 수 있습니다.