이득:
- 작업의 실제 비용에 따라 문제 유형(분류, 회귀, 클러스터링) 및 성공 기준을 정의하는 기능
- 데이터를 정직하게(테스트 세트를 건드리지 않고, 시계열에 따라 시간순으로) 나누고 누출 없는 평가 기반을 구축하는 능력
- 간단한 기준으로 시작하고 적절한 경우에만 복잡성을 추가하여 해석 가능한 모델을 선택할 수 있는 능력.
지금까지 우리는 데이터를 수집하고, 정리하고, 탐색하고, 기능을 제작해왔습니다. 이제 실제 작업인 모델 구축에 들어갑니다. 모델은 데이터로부터 패턴을 학습하고 새로운 상황에 대한 예측을 생성하는 수학적 구조입니다. 그러나 모델 구축에서 가장 중요한 부분은 코드 자체가 아니라 그에 앞서는 두 가지 결정, 즉 올바른 문제를 정의하고 데이터를 올바르게 분할하는 것입니다. AI는 알고리즘 선택, 코드 작성 및 매개변수 조정에 대한 강력한 조언자입니다. 그러나 무엇을 예측하고 성공이 무엇을 의미하는지 결정하는 것은 사람에게 달려 있습니다. 잘못 정의된 문제는 완벽하게 작성된 모델에서도 작동하지 않습니다.
문제 정의 먼저: 무엇을 예측합니까?
모든 모델링 작업은 질문으로 시작되며, 이 질문이 모델 유형을 결정합니다. 분류 - 출력은 "이 고객이 떠날 것인가 아니면 머무를 것인가?", "이 거래가 가짜인가?"라는 범주입니다. 회귀(영어 회귀 - 출력은 숫자임): "이 집의 가치는 얼마입니까?", "다음 달에 주문이 몇 건이나 올까요?" 클러스터링(레이블이 지정되지 않은 데이터를 자연 그룹으로 나누기): "내 고객은 몇 개의 자연 세그먼트로 나누어져 있습니까?"
문제 설명의 두 번째 부분은 성공 기준입니다. 이 모델이 "좋다"는 것은 무엇을 의미합니까? 사기 모델에서 사기꾼을 놓치는 것은 실수로 정직한 고객을 차단하는 것보다 훨씬 더 많은 비용이 듭니다. 따라서 '일반적인 정확성'이 아니라 '사기꾼 검거율'이 중요하다. 비즈니스 소유자와 함께 처음부터 이 기준을 정의하지 않으면 작동하지 않는 "매우 정확한" 모델이 됩니다(단위 7에서 측정항목에 대해 자세히 설명합니다).
주의: "정확성"은 오해의 소지가 있을 수 있습니다. 1000개의 거래 중 10개가 사기라면 "아무도 사기가 아니다"라고 말하는 어리석은 모델은 99%의 정확도를 제공하지만 단 한 명의 사기꾼도 잡을 수 없습니다. 문제의 실제 비용을 기반으로 성공 기준을 선택하십시오.
학습/테스트 분할: 모델에 대한 정직한 조사
학습한 데이터로 모델을 테스트하는 것은 학생에게 시험에서 공부한 것과 동일한 질문을 하는 것과 같습니다. 그는 높은 점수를 받았지만 실제로 알고 있는 것을 보여주지는 않습니다. 따라서 우리는 데이터를 두 개(종종 세 개)로 나눕니다.
- 훈련 세트(영어로 된 훈련 세트, 일반적으로 70-80%): 모델은 이에 대해 학습합니다.
- 테스트 세트(테스트 세트, 일반적으로 20-30%): 모델은 이를 전혀 인식하지 못합니다. 실제 성능은 여기에서 측정됩니다.
- 검증 세트: 모델 설정에 사용되는 중간 세트(어떤 매개변수가 더 나은지). 테스트 세트를 "깨끗하게" 유지합니다.
가장 기본적인 규칙은 훈련 중에 테스트 세트를 건드리지 않는다는 것입니다. 스케일링, 코딩, 기능 선택 — 모두 훈련 세트에서 간단히 학습한 다음 테스트에 적용합니다(유닛 5의 누출 원리). 테스트 세트는 모델이 실제 세계를 처음 보는 것입니다. 너무 일찍 켜면 진정한 성능을 결코 알 수 없습니다.
시계열 예외: 데이터가 시간 종속적(판매, 주식 시장, 수요)인 경우 무작위 분할이 수행되지 않습니다. 무작위 분할로 인해 모델이 미래를 보고 과거를 예측하게 되므로 이것이 누출입니다. 대신, 연대순으로 나누세요. 이전 기간으로 훈련하고 새 기간으로 테스트하세요.
알고리즘 선택: 단순한 것부터 복잡한 것까지
초보자가 저지르는 가장 흔한 실수는 가장 복잡한 모델부터 시작하는 것입니다. 올바른 접근 방식은 그 반대입니다. 먼저 간단한 기준선을 설정합니다. 분류에서 "항상 다수 클래스를 추측합니다"; 회귀에서 "항상 평균을 추정합니다". 이 어리석은 모델은 기준선을 제공합니다. 실제 모델이 이를 통과하지 못한다면 문제가 있는 것입니다. 그런 다음 간단하고 해석 가능한 모델로 넘어갑니다.
모델
문제 유형
장점
약점
기준선(다수/평균)
둘 다
벤치마크 제공
배우지 않는다
로지스틱 회귀
분류
간단하고 해석 가능
선형 관계만
선형 회귀
회귀
간단하고 빠르다
선형 가정
결정 트리
둘 다
해석 가능
쉬운 암기
랜덤 포레스트
둘 다
강력하고 내구성이 있음
해석하기가 쉽지 않음
그래디언트 부스팅(XGBoost 등)
둘 다
매우 강하다
조정이 어렵고 암기 위험이 있음
규칙: 가장 단순한 "충분히 좋은" 모델을 선택하십시오. 해석 가능성은 대부분의 비즈니스 상황에서 힘보다 더 가치가 있습니다. 대출 거절은 "블랙박스에 그렇게 되어 있어서"보다는 "소득 대비 부채 비율이 높아서"라고 설명하는 것이 더 좋습니다.
세 개의 미니 케이스
사례 1 — 잘못된 문제 정의. 한 팀은 '고객 만족'을 기반으로 분류 모델을 구축했지만 성공 기준으로 '정확성'을 선택했습니다. 데이터에 따르면 고객의 88%가 만족했습니다. 이 모델은 모든 사람을 "만족"이라고 부름으로써 88%의 정확도를 얻었고 실제 목표는 불만족한 사람들을 찾는 것이었지만 결코 불만족한 사람들을 포착하지 못했습니다. 교훈: 실제 목적에 따라 성공 기준을 선택하십시오.
사례 2 - 구획 내 시간 누출. 수요 예측 프로젝트에서 데이터가 무작위로 분할되었습니다. 모델은 93%의 정확도를 제공했지만 교육 과정에서 12월 데이터를 사용하여 1월, 11월을 예측하고 미래를 보았기 때문에 프로덕션에서 충돌이 발생했습니다. 연대순으로 전환했을 때 실제 성능은 74%까지 증가했습니다. 교훈: 시계열의 연대순 구분.
사례 3 - 불필요한 복잡성. 한 분석가는 심층 신경망으로 직접 시작하여 몇 주 동안 조정한 결과 81%의 정확도를 얻었습니다. 그런 다음 동료는 20줄의 로지스틱 회귀 분석을 통해 80%를 얻었습니다. 훨씬 빠르고 해석 가능하며 유지 관리가 더 쉽습니다. 교훈: 기준선과 간단한 모델로 시작하고, 필요할 때 복잡성을 추가하세요.
복사 가능한 템플릿 4개
1) 문제 정의를 명확히 하기:
귀하의 역할: 모델링 컨설턴트. 이 직업을 정의하는 데 도움을 주세요. "고객 이탈을 줄이고 싶습니다." 나에게 물어보고 명확히 하십시오. (1) 이것이 분류인지 회귀인지, (2) 목표 변수가 정확히 무엇이고 어떻게 정의해야 하는지, (3) 성공 기준이 무엇이어야 하며 그 이유는 무엇입니까? 결정은 내 것입니다. 질문과 옵션을 제시합니다.
2) 안전한 훈련/테스트 구획:
내 df를 훈련/테스트 80%/20%로 나눕니다. 클래스 분포(stratify).random_state=42를 유지합니다. 이것은 시계열(독립적인 관찰)이 아닙니다. 분할 후 각 집합의 학급 비율을 출력합니다. 변환을 적용하지 않고 테스트 세트에 분할 코드를 제공하기만 하면 됩니다.
3) 시계열 연대순 구분:
데이터는 시간에 따라 다릅니다(날짜 열: order_date). 무작위가 아닌 시간순으로 나눕니다. 가장 오래된 80% 훈련, 최신 20% 테스트. 미래가 유출되지 않았는지 확인할 수 있도록 교육 및 테스트 날짜 범위를 인쇄하세요.
4) 기준 설정:
분류 문제가 있습니다(목표: 이탈 0/1). 먼저 기준선을 설정합니다. 항상 다수 클래스를 예측하는 DummyClassifier를 사용하여 훈련/테스트 정확도를 측정합니다. 그런 다음 간단한 로지스틱 회귀를 훈련하고 기준선을 초과하는지 비교합니다. 두 측정항목을 나란히 표시합니다.
약한 프롬프트 / 강한 프롬프트
약한 프롬프트:
이 데이터를 사용하여 최고의 모델을 구축하세요.
"최고"는 정의되지 않았습니다. 문제 유형도 없고, 목표도 없고, 성공 기준도 없고, 분할 전략도 없습니다. AI는 누출 가능성이 있는 무작위 패턴을 생성합니다.
강력한 프롬프트:
귀하의 역할: 모델링 보조원. 문제: 분류, 목표 "이탈"(0/1), 클래스 불균형(~12% 이탈)이 있습니다. 성공 기준: 이탈한 고객을 리콜하는 것이 최우선입니다. 데이터 독립적 관찰(시계열 아님). 작업: (1) 80/20% 계층화된 분할, (2) DummyClassifier 기준, (3) 로지스틱 회귀, 파이프라인의 모든 변환 및 훈련을 통해서만 학습되었습니다. 분할하기 전에 테스트 세트를 만지지 마십시오.
여기에서는 문제 유형, 불균형, 기준 및 누출 측정이 명확합니다.
일반적인 실수
- 실제 목적에 따라 성공 기준을 선택하지 않습니다. 불균형 데이터의 "정확성"은 오해의 소지가 있습니다. 소수계층을 사로잡으려면 리콜이 먼저다.
- 훈련 중에 테스트 세트를 터치합니다. 분할하기 전에 스케일링/인코딩을 수행하면 누출이 발생하고 실제 성능이 숨겨집니다.
- 시계열의 무작위 분할. 모델은 미래를 보고 생산이 붕괴됩니다. 연대순 구분이 필수적입니다.
- 기준선을 설정하지 않고 복잡한 모델에 뛰어들었습니다. 벤치마크가 없으면 모델이 정말 좋은지 아닌지 알 수 없습니다.
- 해석 가능성을 무시합니다. 비즈니스 결정에서 간단하게 설명 가능한 모델이 블랙박스보다 더 가치 있는 경우가 많습니다.
팁: 모델 구축을 시작하기 전에 "이 모델은 _____을(를) 예측할 것이며, 작업의 실제 비용은 _____이기 때문에 성공 여부는 _____ 측정항목으로 측정됩니다."라는 한 문장을 작성해 보세요. 이 문장을 채울 수 없다면 아직 코드를 작성할 준비가 되지 않은 것입니다.
요약하면
모델 구축에서 가장 중요한 부분은 코드가 아니라 그에 앞서는 결정입니다. 올바른 문제를 정의하고(분류 또는 회귀, 목표가 무엇인지, 성공 기준이 무엇인지) 데이터를 공정하게 분할합니다(테스트 세트를 건드리지 않고, 시계열의 연대순). 항상 간단한 기준으로 시작하고, 그럴 만한 가치가 있는 경우에만 복잡성을 추가하십시오. 대부분의 비즈니스 상황에서는 해석 가능성이 힘보다 더 중요합니다. AI는 알고리즘 선택 및 코드에 대한 강력한 조언자이지만 예측 내용과 이유는 인간이 결정합니다.
응용과제
예측 문제를 정의하고 다음 문장을 서면으로 완성합니다. "이 모델은 ___(분류/회귀)을 예측하고 목표는 ___이며 성공 기준은 ___이기 때문에 ___입니다." 그런 다음 올바른 전략(시계열인 경우 시간순)으로 데이터를 분할하고 기준선을 설정하고 간단한 패턴이 해당 기준선을 위반하는지 여부를 측정합니다.
체크리스트
- [ ] 문제 유형(분류/회귀)과 대상을 명확하게 정의했는가?
- [ ] 실제 작업 비용을 기준으로 성공 기준을 선택했습니까?
- [ ] 훈련 중에 테스트 세트를 그대로 두었나요?
- [ ] 시계열이라면 연대순으로 나누었나요?
- [ ] 복잡한 모델로 넘어가기 전에 기준선을 설정했습니까?