의사결정 나무(Decision Trees)는 훈련되는 것이 아니라 성장하는 것이다
요약
의사결정 나무(Decision Trees)의 작동 원리를 경사 하강법 기반의 최적화가 아닌 국소적 분할을 통한 '성장'의 관점에서 설명합니다. 데이터에 대한 가정이 적어 유연하지만, 높은 분산으로 인해 데이터 변화에 민감하고 불안정할 수 있다는 특성을 다룹니다.
핵심 포인트
- 의사결정 나무는 전역 최적화 대신 국소적 불순도 최소화를 통해 성장함
- 세상을 연속적인 관계가 아닌 불연속적인 '상자(Box)'의 집합으로 가정함
- 데이터에 대한 가정이 적을수록 유연성은 높아지나 모델의 불안정성(높은 분산)이 증가함
- SRE의 운영 정책(라우팅, 에스컬레이션 등)과 의사결정 구조가 유사함
SRE의 관점에서 본 클래식 머신러닝 (Classic Machine Learning) — 파트 2
내가 공부한 두 번째 알고리즘은 첫 번째 알고리즘을 통해 방금 배운 모든 것을 깨뜨려 버렸다.
로지스틱 회귀 (Logistic regression)는 훈련이란 경사 하강법 (Gradient descent)을 의미한다는 것을 가르쳐 주었다. 즉, 추측하고, 오차를 측정하고, 가중치 (Weights)를 조정하며, 수렴할 때까지 반복하는 것이다. 그래서 의사결정 나무 (Decision trees)를 접했을 때, 나는 최적화 도구 (Optimizer)를 찾으려 했다.
하지만 그런 것은 없었다.
의사결정 나무는 내가 예상했던 방식으로 최적화되지 않는다. 그것은 성장한다.
각 단계에서 나무는 국소적으로 최선인 분할 (Split)을 찾아내고, 이를 확정하며, 이 과정을 재귀적으로 반복한다. 되돌아가기 (Backtracking)는 없다. 두 번째 기회도 없다. 최적화가 일어나고 있기는 하지만 — 각 분할이 불순도 (Impurity)를 최소화하긴 하지만 — 오직 국소적으로, 한 번에 한 단계씩만 일어난다. 전역적으로 최적인 나무 (Globally optimal tree)를 찾는 것은 NP-hard 문제이므로, 알고리즘은 시도조차 하지 않는다.
이것은 놀라울 정도로 익숙하게 느껴졌다.
장애 대응 (Incident response)이나 용량 계획 (Capacity planning)에서 우리는 완벽한 정답을 아는 경우가 거의 없다. 우리는 우리가 가진 정보로 최선의 결정을 내리며, 다른 첫 번째 선택이 다른 결과를 가져왔을 수도 있음을 알고 있다. 의사결정 나무는 단순히 그 아이디어를 알고리즘으로 구현한 것이다.
나무가 거는 도박
모든 머신러닝 (Machine learning) 알고리즘은 세상에 대해 서로 다른 가설을 세운다.
로지스틱 회귀 (Logistic regression)는 관계가 매끄럽다고 가정한다. 신호가 변함에 따라 위험은 점진적으로 증가한다.
의사결정 나무 (Decision trees)는 정반대의 가설을 세운다. 그들은 세상이 상자들로 이루어져 있다고 가정한다.
프로젝트가 단순히 속도가 떨어진다고 해서 약간 더 위험해지는 것이 아니다. 고정 가격 계약, 새로운 어카운트 매니저, 그리고 월말 납품과 같은 여러 조건이 동시에 발생할 때 위험해진다. 그 상자 안에서 프로젝트는 실패한다. 상자 밖에서는 대개 괜찮다.
이것은 많은 운영 시스템 (Operational systems)이 작동하는 방식과 정확히 일치한다. 심각도 매트릭스 (Severity matrices), 라우팅 규칙 (Routing rules), 에스컬레이션 정책 (Escalation policies), 승인 워크플로우 (Approval workflows) — 이 모든 것들은 의사결정 상자들의 집합이다.
그것이 나무가 나에게 즉각적으로 직관적으로 느껴진 이유다.
유연성의 숨겨진 비용
나무는 데이터에 대해 매우 적은 가정을 한다. 이는 장점처럼 들린다.
그 대가는 불안정성 (Instability)이다.
훈련 데이터의 작은 부분을 변경하면 첫 번째 분할 (split)이 바뀔 수 있습니다. 이후의 모든 분할은 그 첫 번째 결정에 의존하기 때문에, 재훈련 (retraining) 후에는 전체 나무가 완전히 달라질 수 있습니다.
동일한 데이터. 다른 설명.
저는 실제로 학습할 때 이 실수를 했습니다. 제 첫 노트에는 나무가 가정을 적게 하기 때문에 더 안정적(stable)이어야 한다고 적혀 있었습니다.
정반대였습니다.
가정이 적다는 것은 샘플이 포함하고 있는 무엇이든 맞추기 위한 더 많은 자유도를 의미합니다. 더 많은 자유도는 더 높은 분산 (variance)을 의미합니다. 저는 유연성 (flexibility)과 신뢰성 (reliability)을 혼동했습니다.
실제 운영 환경에서의 모습
매달 이탈 예측 모델 (churn model)을 재훈련한다고 가정해 봅시다.
지난달 첫 번째 분할은 티켓 발생량이 가장 큰 예측 변수 (predictor)라고 말했습니다. 이번 달에는 응답 시간이 가장 큰 변수라고 말합니다.
모델의 성능은 동일하게 좋을 수 있습니다. 하지만 사람들이 나무를 단순한 예측 도구가 아닌 설명 도구로 취급한다면, 당신은 조직이 현실을 이해하는 방식을 방금 바꿔버린 것입니다.
그렇기 때문에 저는 설정 (configuration)을 버전 관리하는 것과 동일한 방식으로 의사결정 나무 (decision trees)의 버전을 관리할 것입니다.
단순히 정확도 (accuracy)만 모니터링하지 마세요. 구조를 차이 분석 (diff) 하세요. 재훈련 사이에 설명이 급격하게 변한다면, 누군가는 그 이유를 알아야 합니다.
전략은 전이되지만, 메커니즘은 그렇지 않다
이 알고리즘은 저에게 의사결정 나무보다 더 유용한 것을 가르쳐 주었습니다.
로지스틱 회귀 (logistic regression)에서 직접적으로 전이된 것들이 있습니다: 먼저 비즈니스 문제를 정의하고, 거짓 양성 (false positives)과 거짓 음성 (false negatives)의 비용을 이해하며, 데이터 누수 (data leakage)를 주의하고, 예측을 행동으로 전환하는 것을 비즈니스 결정으로 취급하는 것입니다. 이것들은 전략입니다.
전혀 전이되지 않은 것들도 있습니다 — 경사 하강법 (gradient descent), 미분 가능한 손실 (differentiable loss), 모델 계수 (model coefficients). 이것들은 메커니즘입니다.
그 이후로 새로운 알고리즘을 배울 때마다 저의 첫 번째 질문은 이것입니다: 이 알고리즘은 세상에 대해 어떤 가정을 하고 있는가?
그 답변은 대개 이 알고리즘이 어떻게 학습하는지, 그리고 결국 어떻게 실패할지를 예측해 줍니다.
SRE 팀에게 해주고 싶은 말
모델이 실행 지침서 (runbook) 역할을 할 때는 단일 의사결정 나무를 사용하세요.
만약 누군가가 고객, 감사인(auditor), 또는 컴플라이언스 검토자(compliance reviewer)에게 모든 결정을 설명해야 한다면, 의사결정 나무(Decision Tree)를 이길 수 있는 모델은 없습니다.
다만, 설명 그 자체는 불안정할 수 있다는 점을 기억하세요. 버전을 관리(Version)하고, 차이점을 비교(Diff)하세요. 변경 사항을 구성 변경(configuration changes)처럼 취급하세요.
운영(Production) 측면의 시사점
의사결정 나무는 실행 지침서(runbook) 역할을 하는 모델입니다. 인간이 모든 결정 경로를 읽고, 감사하고, 방어해야 할 때 이 모델을 사용하세요. 정확도(accuracy)뿐만 아니라 구조(structure)를 모니터링하세요.
흔한 면접 실수
제가 이제는 틀렸다는 것을 아는 두 가지 답변이 있습니다: "의사결정 나무는 경사 하강법 (gradient descent)을 사용하여 훈련된다"와 "의사결정 나무는 가정이 적기 때문에 더 안정적이다"입니다. 둘 다 사실이 아닙니다. 나무는 탐욕적 방식 (greedily)으로 성장하며, 가정이 적다는 것은 보통 더 높은 분산 (variance)을 의미하지, 더 큰 안정성을 의미하지 않습니다.
활용 사례
티켓 분류 (Ticket triage) · 에스컬레이션 라우팅 (escalation routing) · 고객 이탈 설명 (customer churn explanations) · 컴플라이언스 워크플로우 (compliance workflows) · 비즈니스 측면에서 모델이 왜 그런 결정을 내렸는지 이해해야 하는 모든 시스템.
"Classic Machine Learning Through the Eyes of an SRE"의 파트 2 — 10년간의 운영 경험을 바탕으로, 현재 AI 플랫폼 엔지니어링으로 전환하며 공개적으로 기록 중입니다. 다음 편: 머신러닝으로 위장한 분산 시스템처럼 느껴졌던 첫 번째 알고리즘, 랜덤 포레스트 (random forests).
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기