훈련 데이터에서 정확도 99퍼센트가 나왔다면 기뻐할 일이 아니라 의심할 일입니다. 모델이 배운 것이 규칙인지 답안지인지는 처음 보는 데이터로만 알 수 있습니다.
풀고 시작
문제 1. 어떤 분류 모델의 정확도가 훈련 데이터에서 99퍼센트, 평가 데이터에서 70퍼센트로 나왔습니다. 가장 알맞은 진단은 무엇입니까?
훈련 성능은 높은데 처음 보는 데이터에서 크게 떨어지는 것이 과대적합의 전형입니다. 과소적합이라면 훈련 데이터에서도 성능이 낮게 나옵니다.
데이터 마이닝은 무엇을 하나
데이터 마이닝(data mining)은 대량의 데이터에서 쓸모 있는 패턴과 규칙을 찾아 의사결정에 쓰는 일입니다. 앞의 통계분석이 "이 가설이 맞는가"를 검정하는 데 무게를 둔다면, 데이터 마이닝은 가설을 미리 세우지 않고 패턴을 찾아내거나 새 데이터를 얼마나 잘 예측하는지에 무게를 둡니다. 두 분야는 경쟁 관계가 아니라 같은 도구를 다른 목적으로 쓰는 사이입니다.
기법은 목표변수가 있느냐로 크게 둘로 나뉩니다. 이탈 여부나 매출처럼 맞혀야 할 답이 있는 자료로 배우는 것이 지도학습(supervised learning)입니다. 답이 범주면 분류(classification), 숫자면 예측(회귀)이라고 부릅니다. 답 없이 자료의 구조만 찾는 것이 비지도학습(unsupervised learning)이고, 비슷한 것끼리 묶는 군집분석, 함께 일어나는 항목을 찾는 연관분석, 9강의 주성분분석 같은 차원 축소가 여기에 속합니다.
구분
목표변수
대표 기법
이 서가의 강
지도학습
있음
로지스틱 회귀, 의사결정나무, 앙상블, 인공신경망
12~14강
비지도학습
없음
군집분석, 연관분석, 주성분분석
9강, 15~16강
데이터를 나누는 이유
모델을 평가할 때 배운 데이터로 시험을 보면 점수가 부풀려집니다. 그래서 데이터를 나눕니다. 훈련 데이터(training)로 모델을 만들고, 검증 데이터(validation)로 여러 모델이나 설정 가운데 무엇이 나은지 고르고, 마지막에 한 번도 쓰지 않은 평가 데이터(test)로 최종 성능을 잽니다. 평가 데이터를 보고 모델을 고치기 시작하면 평가 데이터도 사실상 훈련에 쓰인 셈이 되어 성능이 다시 부풀려집니다.
데이터가 넉넉하지 않을 때는 다른 방법을 씁니다. 홀드아웃(hold-out)은 한 번만 무작위로 나누는 가장 단순한 방법입니다. k겹 교차검증(k-fold cross validation)은 데이터를 k개로 나눠 하나씩 돌아가며 평가에 쓰고 나머지로 훈련해 k번의 성능을 평균 냅니다. 모든 데이터가 한 번씩은 평가에 쓰이므로 한 번 나눌 때의 운에 덜 흔들립니다. k를 관측치 수만큼 키워 하나씩만 빼는 것이 LOOCV(leave-one-out)입니다.
부트스트랩(bootstrap)은 원래 데이터에서 같은 크기만큼 복원추출해 훈련 데이터를 만듭니다. 같은 관측치가 여러 번 뽑히기도 하고, 한 번도 뽑히지 않는 관측치도 생기죠. 데이터가 충분히 크면 어떤 관측치가 한 번도 뽑히지 않을 확률은 약 36.8퍼센트로 수렴하고, 이렇게 빠진 관측치를 평가에 쓸 수 있습니다.
과대적합과 과소적합
과대적합(overfitting)은 모델이 훈련 데이터의 우연한 잡음까지 외워, 훈련 성능은 높지만 새 데이터에서 성능이 떨어지는 상태입니다. 모델이 지나치게 복잡할 때 생깁니다. 과소적합(underfitting)은 반대로 모델이 너무 단순해 훈련 데이터의 패턴조차 잡지 못하는 상태입니다. 모델이 복잡해질수록 편향은 줄고 분산은 커지므로, 그 사이 어딘가에서 새 데이터 성능이 가장 좋아집니다. 과대적합은 데이터를 늘리거나, 모델을 단순하게 하거나, 8강의 라쏘와 릿지 같은 규제를 주거나, 교차검증으로 복잡도를 골라 막습니다.
현실의 데이터는 계층 불균형이 흔합니다. 부정 거래가 전체의 1퍼센트라면 모든 거래를 정상이라고만 답해도 정확도가 99퍼센트입니다. 이럴 때는 적은 쪽을 늘리는 오버샘플링, 많은 쪽을 줄이는 언더샘플링을 씁니다. 적은 쪽의 이웃한 관측치 사이에 새 관측치를 합성해 늘리는 SMOTE가 대표적인 오버샘플링 기법입니다. 불균형을 평가하는 지표는 14강에서 봅니다.
인출 문제
문제 1. 지도학습과 비지도학습을 가르는 기준으로 옳은 것은?
목표변수가 있는 자료로 배우면 지도학습, 목표변수 없이 구조를 찾으면 비지도학습입니다. 분류와 예측은 지도학습, 군집과 연관분석은 비지도학습입니다.
문제 2. 검증 데이터와 평가 데이터의 역할을 옳게 짝지은 것은?
검증 데이터는 여러 후보 가운데 무엇이 나은지 고르는 데 쓰고, 평가 데이터는 끝까지 아껴 두었다가 최종 성능을 한 번만 잽니다.
문제 3. 5겹 교차검증에 관한 설명으로 옳은 것은?
k겹 교차검증은 모든 조각이 한 번씩 평가에 쓰이게 해 한 번 나눌 때의 운에 덜 흔들리는 성능 추정을 줍니다.
문제 4. 부트스트랩으로 훈련 데이터를 만들 때 한 관측치가 한 번도 뽑히지 않을 확률은 데이터가 클 때 약 얼마로 수렴합니까?
크기 n인 데이터에서 n번 복원추출할 때 한 관측치가 매번 빠질 확률은 n이 커지면 약 36.8퍼센트로 수렴합니다. 거꾸로 적어도 한 번 뽑힐 확률은 약 63.2퍼센트입니다.
더 풀기
출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.
묶음 1
문제 1. 데이터 마이닝의 뜻으로 가장 알맞은 것은?
데이터 마이닝은 가설을 미리 정하지 않고 데이터에서 패턴을 찾거나 예측 모델을 만드는 데 무게를 둡니다.
문제 2. 전통적인 통계분석과 비교한 데이터 마이닝의 무게중심으로 가장 알맞은 것은?
통계분석이 가설 검정과 모수 추론에 무게를 둔다면, 데이터 마이닝은 예측 성능과 패턴 발견에 무게를 둡니다. 두 분야는 같은 도구를 공유합니다.
문제 3. 고객이 다음 달 이탈할지 여부를 맞히는 과업은 무엇입니까?
이탈한다와 이탈하지 않는다는 범주를 맞히는 것이므로 분류이며, 목표변수가 있으니 지도학습입니다.
문제 4. 다음 달 매출액을 숫자로 맞히는 과업은 무엇입니까?
목표변수가 숫자이면 예측 또는 회귀라고 부릅니다. 범주를 맞히면 분류입니다.
문제 5. 구매 패턴이 비슷한 고객끼리 묶되 미리 정해 둔 고객 유형은 없습니다. 알맞은 기법은 무엇입니까?
정답 유형 없이 비슷한 것끼리 묶는 것은 비지도학습인 군집분석입니다. 유형이 미리 정해져 있고 그 유형을 맞히는 것이라면 분류입니다.
문제 6. 기저귀를 사는 고객이 맥주도 함께 사는지처럼 함께 일어나는 항목을 찾는 기법은 무엇입니까?
연관분석은 장바구니 속 항목들이 함께 나타나는 규칙을 찾는 비지도학습 기법으로, 16강에서 자세히 다룹니다.
문제 7. 다음 가운데 비지도학습 기법으로만 짝지은 것은?
군집분석과 연관분석은 목표변수 없이 구조를 찾습니다. 나머지는 모두 목표변수가 있는 지도학습 기법입니다.
문제 8. 모델을 배운 데이터로 성능을 재면 생기는 문제로 가장 알맞은 것은?
모델은 훈련 데이터에 맞춰져 있으므로 같은 데이터로 재면 새 데이터에서의 성능보다 좋게 나옵니다. 그래서 처음 보는 데이터로 평가합니다.
문제 9. 평가 데이터로 성능을 보고 모델을 여러 번 고쳤습니다. 이때 생기는 문제로 가장 알맞은 것은?
평가 데이터를 보며 모델을 고치면 그 데이터에 맞춰지게 됩니다. 그래서 모델을 고르는 일은 검증 데이터로 하고 평가 데이터는 마지막에 한 번만 씁니다.
문제 10. 데이터를 한 번만 무작위로 훈련용과 평가용으로 나누는 방법은 무엇입니까?
홀드아웃은 가장 단순한 분할 방법이지만, 한 번 나눌 때의 운에 따라 성능 추정이 흔들릴 수 있습니다.
묶음 2
문제 1. k겹 교차검증이 홀드아웃보다 나은 점으로 가장 알맞은 것은?
여러 번 나눠 평균을 내므로 성능 추정이 안정됩니다. 대신 모델을 k번 만들어야 해 계산은 더 오래 걸립니다.
문제 2. 관측치가 100개일 때 LOOCV는 모델을 몇 번 만듭니까?
LOOCV는 관측치 하나씩을 빼서 평가에 쓰므로 관측치 수만큼 모델을 만듭니다. k를 n으로 둔 k겹 교차검증과 같습니다.
문제 3. 부트스트랩의 추출 방식으로 옳은 것은?
복원추출이라 같은 관측치가 여러 번 뽑히거나 한 번도 안 뽑힐 수 있습니다. 뽑히지 않은 관측치는 평가에 쓸 수 있습니다.
문제 4. 부트스트랩에서 한 번도 뽑히지 않은 관측치를 무엇에 쓸 수 있습니까?
훈련에 쓰이지 않은 관측치는 그 모델에 처음 보는 데이터이므로 평가용으로 쓸 수 있습니다. 13강의 랜덤포레스트가 이를 활용합니다.
문제 5. 과소적합의 모습으로 가장 알맞은 것은?
모델이 너무 단순하면 훈련 데이터의 패턴조차 잡지 못해 둘 다 낮게 나옵니다. 훈련만 높고 평가가 낮으면 과대적합입니다.
문제 6. 과대적합이 생기기 쉬운 상황으로 가장 알맞은 것은?
복잡한 모델은 적은 데이터의 우연한 잡음까지 외울 수 있습니다. 데이터가 많을수록 잡음을 외우기 어려워집니다.
문제 7. 과대적합을 막는 방법이 아닌 것은?
훈련 성능만 보고 고르면 오히려 가장 많이 외운 모델을 고르게 됩니다. 나머지 셋은 과대적합을 줄이는 방법입니다.
문제 8. 모델의 복잡도를 높여 갈 때 일어나는 일로 옳은 것은?
단순한 모델은 체계적으로 빗나가는 편향이 크고, 복잡한 모델은 데이터에 따라 크게 흔들리는 분산이 큽니다. 둘의 균형점에서 일반화 성능이 가장 좋습니다.
문제 9. 부정 거래가 전체의 1퍼센트인 데이터에서 모든 거래를 정상이라고 답하는 모델의 정확도는 얼마입니까?
정상 거래 99퍼센트를 모두 맞히므로 정확도는 99퍼센트입니다. 하지만 부정 거래는 하나도 잡지 못하므로 쓸모없는 모델입니다. 불균형 데이터에서 정확도만 보면 안 되는 이유입니다.
문제 10. 적은 쪽 계층의 이웃한 관측치 사이에 새 관측치를 합성해 늘리는 기법은 무엇입니까?
SMOTE는 적은 쪽 관측치와 그 이웃 사이의 점을 새로 만들어 오버샘플링합니다. 단순히 복사하는 것보다 과대적합 위험이 덜합니다.
묶음 3
문제 1. 언더샘플링의 단점으로 가장 알맞은 것은?
언더샘플링은 많은 쪽을 줄여 균형을 맞추므로 정보 손실이 있습니다. 적은 쪽을 단순 복사해 과대적합이 생기는 것은 오버샘플링의 위험입니다.
문제 2. 오버샘플링과 언더샘플링을 옳게 설명한 것은?
두 방법 모두 계층의 비율을 맞추려는 것이며, 보통 훈련 데이터에만 적용하고 평가 데이터는 실제 비율대로 둡니다.
문제 3. 계층 불균형을 맞추는 샘플링을 평가 데이터에는 하지 않는 이유로 가장 알맞은 것은?
현실의 부정 거래 비율이 1퍼센트라면 평가도 그 비율에서 해야 실제 성능을 알 수 있습니다. 균형을 맞추는 것은 모델을 잘 배우게 하려는 훈련 단계의 처방입니다.
문제 4. 9강의 주성분분석은 이 강의 분류로 보면 어디에 속합니까?
주성분분석은 목표변수 없이 변수들의 구조를 요약하므로 비지도학습의 차원 축소 기법입니다.
문제 5. 검증 데이터를 두는 가장 큰 이유는 무엇입니까?
모델 선택을 검증 데이터로 해야 평가 데이터가 끝까지 처음 보는 데이터로 남아 최종 성능을 정직하게 잴 수 있습니다.
문제 6. 데이터가 적어 훈련, 검증, 평가로 셋이나 나누기 어려울 때 흔히 쓰는 방법은 무엇입니까?
교차검증은 같은 데이터를 돌아가며 훈련과 평가에 써서 적은 데이터로도 안정된 추정을 줍니다.
문제 7. 훈련 데이터와 평가 데이터의 성능이 모두 높고 차이도 작습니다. 가장 알맞은 판단은 무엇입니까?
두 성능이 모두 높고 비슷하면 모델이 우연한 잡음이 아니라 일반적인 패턴을 배웠다는 신호입니다.
문제 8. 지도학습 기법만으로 짝지은 것은?
의사결정나무와 로지스틱 회귀는 목표변수를 맞히도록 배우는 지도학습 기법입니다. 나머지는 모두 비지도학습입니다.
문제 9. 부트스트랩에서 한 관측치가 적어도 한 번 뽑힐 확률은 데이터가 클 때 약 얼마입니까?
한 번도 뽑히지 않을 확률이 약 36.8퍼센트이므로 적어도 한 번 뽑힐 확률은 1에서 이를 뺀 약 63.2퍼센트입니다.
문제 10. 데이터 마이닝 개요에 관한 진술로 옳지 않은 것은?
훈련 정확도가 지나치게 높으면 오히려 과대적합일 수 있고, 새 데이터 성능은 처음 보는 데이터로만 확인할 수 있습니다. 나머지 셋은 옳은 진술입니다.