01 분석모형 평가
1. 성능 평가지표
: 분석 모델의 성능은 데이터와 학습 유형에 따라 평가 방식이 달라짐
▶ 범주형 모델의 성능 평가 : 혼동 행렬을 이용한 평가지표와 ROC 곡선 등
1) 혼동 행렬 Confustion Matrix : 오차 행렬이라고도 함. 모델의 분류 분석 결과를 교차표 형태로 정리한 정오 분류표. 참, 거짓으로 분류하는 모델에 대해 만들 수 있고, 2가지 이상의 분류 문제에도 적용할 수 있음
- FP(거짓긍정) : 실제로 거짓 but 모형은 참으로 판단하는 것. 1종 오류
- FN(거짓부정) : 실제는 참 but 모형은 거짓으로 판단하는 것. 2종 오류
- 지표
- 정분류율 Accuracy : 바르게 분류한 데이터 / 전체 데이터
- 오류율 Error Rate : 틀리게 분류한 데이터 / 전체 데이터
- 민감도 or 재현율 Recall : 예측 참 / 실제 참. 참긍정률 TPR. 모델의 완전성 평가. 적중률
- 특이도 Specificity : 실제 거짓을 거짓으로 분류한 비율. 참부정률 TNR
- 정밀도 Precision : 참으로 분류된 것 중 실제 참 비율. 모델의 결과가 정답과 일치하는 케이스. 모델의 정확성 평가. PPV
- F1 Score : 2*정밀도*재현율 / 정밀도+재현율. 정밀도와 재현율의 조화평균. 0~1. 1에 가까울수록 예측과 실제값 일치
2) ROC 곡선
- 가로축 : 거짓긍정률 FPR(1-특이도). 세로축 : 참긍정률 TPR(민감도). 2진 분류 모델의 성능 평가에 활용
- ROC 곡선이 좌측 상단에 근접할수록 모델 성능 우수
- 여러 모델과의 비교 위해 성능분석 척도 AUC(Area Under the Curve)활용
- ROC 곡선이 좌측 상단에 가까워질 때, AUC도 1에 근접. 0.8 이상 = 우수
3) 향상도 곡선(이익도표)
- 랜덤 모델과 비교해 해당 모델의 성과가 얼마나 향상됐는지 등급별로 파악하는 그래프
- 등급별로 분류된 관측치에 대해 얼마나 예측이 잘 됐는지 반응검출율, 반응류, 향상도 등의 지표로 나타냄
- 사위 등급에서 높은 반응률 보일수록, 향상도가 빠르게 감소할수록 좋음
4) 카파 상관계수 K : Cohen's Kappa Coefficient
- 카파 통계량이라고도 함
- 0~1. 1에 가까울수록 모델의 예측값과 실제값이 일치함
- 우연히 나오지 않았음을 증명하는데 쓰이기도 함
▶ 연속형 모델 성능 평가 : 일반적으로 예측을 목적으로 회귀분석 모델 사용
~ 총제곱합 SST = 오차제곱합(회귀선으로 설명되지 않는 제곱합)SSE + 회귀제곱합 SSR
- 오차제곱합 SSE (Error Sum of Square) : 예측값과 실제값 차이의 제곱합
- 평균오차 AE (Average Error) : 예측한 결과값의 평균 오류. 예측값이 평균적으로 미달 or 초과하는지 체크
- 평균제곱오차 MSE(Mean Squared Error) : 예측오차 제곱합의 평균. 큰 오차는 더욱 크게 반영(패널티)
- 평균절대오차 MAE(Mean Absolute Error) : 예측오차 절댓값의 평균. 오차 간 상쇄효과 방지
- 평균제곱근오차 RMSE(Root Mean Squared Error) : MSE의 제곱근. MSE로 평가 시, 수치가 커지는 것을 제곱근으로 보정. 가장 널리 사용됨
- 평균절대백분율오차 MAPE(Mean Absolute Percentage Error) : 실제값에 대한 오차의 백분률. 오차 평균의 크기가 크게 차이나는 모델의 비교 가능
▶ 지도학습 모델 성능 평가 : 일반화 가능성(안정성), 효율성, 정확성, 해석력
1) 편향과 분산
- 편향 : 예측값 - 실제값. 학습 알고리즘에서 잘못된 가정으로 진행 시 발생하는 오차. 편향 大 = 오차 大 → 과소적합 문제 발생
- 분산 : 트레이닝 셋에 내재된 작은 변동으로 발생하는 오차. 예측치의 평균(기댓값)에서 얼마나 떨어져 있는지 측정한 값. 분산 大 = 각 예측값이 평균값에서 멀리 떨어져 있다는 것이 많다 → 과적합 문제 초래
- 예측값과 정답이 멀다? 결과 편향 높음 / 예측값끼리 멀다? 결과의 분산이 높다
2) 편향과 분산의 관계
- 편향, 분산 모두 오차이므로 최소화하는 것이 바람직하나 사실상 불가능 → 트레이드 오프 관계
- 모델 복잡할수록 편향은 작아지고, 분산은 커짐 → 과대적합
- 오류 최소화하려면 편향과 분산의 합인 전체 에러가 가장 작은 포인트를 찾아야 함
▶ 군집 모델 성능 평가
: 비지도 학습이라 성능 평가 기준 마련 어렵. 독립변수가 2~3개인 저차원은 그래프 도식화 가능. 그 이상은 수치상으로 정량화된 평가 척도 필요
1) 목표값 Target Value으로 모델 평가 : 군집 모델 결과를 실제 군집과 비교해 평가
- 일치행렬 Incidence Matrix
- 랜드지수 산출 위해선 원래 어떻게 군집 이루었는지 알려주는 정답 Groundtruth가 있어야 함
- N개 데이터 집합 중 두 개 뽑을 때, 같은 군집이면 1, 아니면 0
- 이를 n*m 행렬로 표시
- 평가지표
- 랜드지수 RI(Rand Index) : 가능한 모든 데이터 쌍의 개수에 대해 정답인 데이터 쌍 개수의 비율. 0~1
- ARI : 조정 랜드 지수. RI의 문제점(무작위로 군집화해도 좋은 값이 나올 확률 높음)을 해결하고자 RI의 기댓값을 원래 값에서 차감해 기댓값과 분산 재조정. 완벽하면 1, 음수 나오는 경우도 있음
- 조정 상호정보량 AMI(Adjusted Mutual Info) : 두 이산확률변수 T, C의 상호의존성을 측정한 값. 서로 독립이면 0. AMI는 MI의 기댓값을 재조정한 것
2) 목표값 없는 군집 모델 평가 : 군집 알고리즘 적용 시 대체로 목표값 없음. 던 지수와 실루엣 계수 활용
- 던 지수 DI
- 분자-군집 간 거리의 최솟값
- 분모-군집 내 요소 간 거리 최댓값
- DI 클수록 군집이 잘 됨
- 실루엣 계수 S(i)
- 군집 내 응집도와 군집 간 분리도를 이용한 지표
- 완벽한 군집화 = 1
- 군집화 X = -1
2. 분석 모형 진단
: 데이터가 모형에 맞지 않다면 모형 진단, 분석결과와 실제 데이터 괴리 심하면 자료 진단 실시
▶ 모형 진단 Model Diagnostics
- 선형회귀모형은 데이터가 선형성을 충족해야 하나, 이를 만족하지 않아도 모형이 통계적으로 타당한 결과 얻는 경우가 있음
- 그 분석은 틀린 것이 되므로 잔차분석(데이터가 선형 모형이 맞는지 판단하는 과정)이 요구됨
- 정규성 만족 여부 판단하기 위해 정규성 검정 실시
1) 샤피로-윌크 검정 Shapiro-Wilk test
- 데이터 정규성 검정하기 위해 사용. H0 : 데이터는 정규분포 따른다
- 데이터 적으면(n<2000) 샤피로-윌크. 많으면 K-S 검정 실시
- R에서는 shapiro.test()함수로 검정할 수 있고, 한 개의 수치형 벡터와 5천개 이하의 데이터만 사용 가능
2) K-S 검점 Kolmogorov-Smirnov Goodness of Fit test
- 콜모고로프-스미르노프 적합성 검정은 데이터가 어떤 분포 따르는지 정규분포와 비교
- 정규분포 이외에도 적용 가능하지만, 비교 기준을 정규분포를 가진 데이터로 설정해 정규성 검정할 수 있음
- H0 : 두 표본이 같은 분포를 따른다
- R에서 ks.test() 함수 사용
3) Q-Q Plot
- 회귀분석에 사용된 데이터가 회귀모형의 가정을 만족하는지 확인하는 방법
- 선형성 가정 만족한다면, 분석결과로 나온 잔차는 정규분포 따라야 함(대각선)
▶ 자료진단 Data Diagnostics
- 데이터 변화가 모형 추정에 어떤 영향 주는지 알아보는 것. 대체로 이상치 여부와 관측값의 영향력 분석
- 관측값의 영향력 분석은 모형이 옳다는 전제 하, 적합된 회귀모형의 안전성 평가
- 데이터에서 관측치를 하나씩 제거해가며 관측치의 영향력 파악
~ 관측값 영향력 진단 방법
1) 쿡의 거리 Cook's Distance : full model에서 관측치 하나가 제외됐을 때, 최소제곱추정치 벡터의 변화를 표준화한 척도. i번째 포함 적합치와 i번째 미포함 적합치 사이의 거리 계산. 1보다 크면 영향치로 간주.
2) DFBETAS : 2 혹은 2/√ n을 기준값으로, 기준값보다 크면 영향치
3) DFFITS : i번째 관측치 제외한 종속변수 예측치의 변화정도. 기준값 = 2√ ((p+1)/n) (p는 매개변수의 수, 즉 설명변수+1)
4) Leverage H : 관측치가 다른 관측치 그룹으로부터 떨어진 정도. 2*(p+1)/n이 기준
3. 교차검증 Cross Validation
▶ 필요성
- 전체 데이터를 일정 비율로 분할해 모델 학습하는데 이 비율 따라 모형의 추정 성능이 크게 달라짐
- 평가 데이터 셋에 어떤 데이터가 들어가는지에 따라 결과 달라짐
▶ 개념
- 전체 데이터셋을 훈련과 평가로 나누면 평가 데이터셋이 모형의 파라미터 추정에 영향을 미쳐 모형 성능이 나빠지는 문제 초래
- 그러므로 전체 데이터 셋을 3개로 나눠 훈련, 평가, 검증으로 구성
- 그러나 3개로 분할해도 고정적 데이터 셋으로 모델 만들면 과적합 나타날 수 있고, 이를 해결하고자 각각의 데이터 셋에 포함되는 데이터 비율 및 구성 다르게 해 모델 만들고 평가하는 과정 반복(교차검증)
▶ 교차검증 기법
1) K-Fold 교차검증
- 전체 데이터 셋을 K개 집단 subset으로 나눠 K-1개의 집단으로 모델 학습시키고 나머지 1개 집단으로 성능 평가
- 위 과정 K번 반복해 얻은 평균제곱오차 MSE 값의 평균을 해당 분류 모델의 MSE 값으로 활용
2) 홀드아웃 교차검증
- 데이터 3분할(훈련, 평가, 검증)하여 검증
- 계산량 많지 않아 평가 용이하나 전체 데이터셋이 어느 정도 규모 있어야 함
3) 리브-p-아웃 교차 검증 LpOCV(Leave-p-out corss validation)
- 전체 데이터 N개에서 p개의 샘플 = 모델 검증 / 나머지 (N-p)개 = 모델 학습(훈련 데이터)
- 평가 데이터 셋 구성하는 경우의 수는 nCp개(시간 소요 큼)
4) 리브-원-아웃 교차 검증 LOOCV(Leave-one-out cross validation)
- LpOCV에서 p(검증 데이터)가 1인 경우
- 1개 샘플만 평가 데이터에 사용하고 나머지는 훈련 데이터 (K 폴드와 동일)
- LpOCV보다 계산 빠르고 더 좋은 결과 얻을 수 있음
5) 부트스트랩 Bootstrap
- 모집단에서 추출한 표본 복원해 여러 번 표본 추출하는 것으로 데이터 분포 살펴보는 재표본추출 방법
- 샘플링 : 단순랜덤 복원추출법으로 동일 크기 표본 여러개 생성새 한 데이터가 여러 표본 포함되거나 아예 들어가지 않을 수 있음
- k개 관측치 → 훈련용 데이터로 뽑힐 확률 : 1/k
- 안뽑힐 확률 : 1-(1/k)
- k번 반복 시 안뽑힐 확률 : (1-(1/k))^k
- k가 충분히 크다고 가정 시, 1/e = 0.368로 수렴
- 즉, 부트스트랩으로 100개 추출 시, 샘플로 한번도 뽑히지 않은 raw data가 발생할 확률은 36.8%이며, 이를 OOB(out of bag) 데이터라고 함.
- OOB 데이터는 검증용으로 쓰임
4. 모수 유의성 검정
- 모수 parameter가 갖는 성질이 표본에 그대로 드러나 표본 통계량이 모수 추정량으로써 의미 있을 때 = 유의성이 있다
- 유의성 검정 : 확률적 추출 과정을 퉁한 통계적 추정값의 신뢰도 확인하고자 통계적 가설검정 활용
▶ 모평균에 대한 유의성 검정
1) 단일표본 t-검정
- 단일모집단에서 관심있는 연속형 변수의 평균값을 특정 기준값과 비교해 크 차이가 통계적으로 유의한지 판단
- t-검정은 표본이 정규분포 따른다는 전제.
- 정규성 검정은 샤피로-윌크 or K-검정 시행
- 정규성 가정 만족 시, t-검정(R - t.test())
- 정규성 가정 만족 X, 두 모집단의 중심 차이에 대한 비모수 검정 실시 (R - wilcox.test())
- p-val < 유의수준(대개 .05) → H0 기각
2) 대응표본 t-검정
- 단일모집단에서 두 번의 처리 가했을 때, 두 번의 처리에 대한 평균이 동일한지 판단하는 방법
- ex) 어떤 조치에 대한 두 집단 간 비교
3) 독립표본 t-검정
- 두 개의 독립적 정규분포에서 나온 n1, n2, 두 데이터셋의 평균 동일한지 판단하는 방법
- 등분산 가정 확인 필요(R - var.test())
▶ 모분산에 대한 유의성 검정
1) 카이제곱 검정
- 단일표본의 모집단이 정규분포 따르며 분산 아는 경우, 모분산에 대한 검정통계량은 표본분산이고, 자유도 n-1인 카이제곱 분포 따름
- 단일표본의 모분산 검정은 카이제곱 통계량 값을 특정 기준값과 비교해 그 차이가 유의한지 판단하는 방법으로 카이제곱 검정 시행
- 카이제곱 검정 결과, p-val < 유의수준 → H0기각 → 해당 데이터에 의거한 모분산에 대한 주장이 유의하지 않다
2) F-검정
- 두 개의 독립적 정규분포에서 나온 n1, n2 데이터셋 활용해 두 데이터셋의 분산 동일한지 파악하는 방법.
- 등분산 검정이라고도 함
- R - var.test()
3) 분산분석 ANOVA
- 종속변수가 연속형, 독립변수가 범주형일 때, 범주에 따라 두 개 이상의 집단에서 그룹 평균 간 차이를 그룹 내 변동에 비교하는 분석방법
- 독립변수 개수별로 일원배치 분산분석, 이원배치 분산분석, 다원배치 분산분석으로 나뉘고, F-검정 통계량 활용
- R - aov() / 이때 그룹 구분하는 독립변수는 팩터형
- 귀무가설 기각된다면, 적어도 한 집단의 평균이 타 집단과 유의한 차이 있다고 해석 가능
▶ 회귀모형의 유의성 검정
1) 모회귀계수의 유의성 검정
- 모회귀모형에서 모수가 갖는 성질이 표본회귀선에서 나타나면 유의성 있는 것으로 판단
- 표본으로부처 최소자승법으로 구한 표본회귀계수는 모회귀계수에 대해 유의성이 있는 추정량인지 검정
- 회귀계수 coefficients 항목 확인 결과, 귀무가설 기각되면, 유의성 있는 추정량이라고 해석 가능
2) 회귀모형의 통계적 유의성
: F-통계량으로 추정된 회귀모형의 통계적 유의성 판단(p-val < 유의수준일 때, 유의)
5. 적합도 검정
- 적합도 검정 Goodness of Fit test : 데이터의 관측값이 예상한 이론과 일치하는지 검정하는 방법
- 모집단 분포에 대한 가정 옳은지 관측 데이터와 비교
- R - chisq.test()
- 귀무가설 기각 시, 통계적으로 일치한다는 결론 도출
02 분석모형 개선
1. 과대적합 방지
- 과소적합이나 과대적합 피해 정상 추정을 하고 평가 데이터에서도 좋은 성능 지닌다면 모델의 일반화 가능성이 높음
- 과대적합은 일반화 오류, 과소적합은 학습 오류에서 발생
▶ 과대적합 억제
: 과대적합은 분석모델에 매개변수 많고, 표현력 높은 모델(은닉층이 깊은 신경망)이거나 훈련데이터가 적으면 발생
1) 데이터 증가 Data Augmentation
2) 가중치 감소 Weight Decay
- 학습 과정에서 큰 가중치에 패널티 부과해 과대적합 엊게
- L1, L2의 가중치 규제(과대적합 되지 않도록 각 가중치의 절대값을 0에 가깝게 제한) 사용
3) 모델의 복잡도 감소
- 모델 복잡하면 과대적합 가능성 높음
- 복잡도는 은닉층의 수, 모델의 수용력 등으로 결정
4) 드롭아웃 Dropout
- 신경망 모델에서 일부 뉴런 임의로 삭제해 학습에 배제
- 평가할 때 : 뉴런의 출력 * 훈련 시 삭제한 비율 → 모든 뉴런에 신호 전달 / 테스트 시 전체 뉴런 활성화 되면 모두 학습된 뉴런에 비해 정답 더 잘 찾음
- 신경망 학습에만 사용O, 예측에 사용X
- 유형
- 초기 드롭아웃 : p = .5 확률로 생략, DNN에서 활용
- 공간적 드롭아웃 : 합성곱 계층에서의 드롭아웃, CNN에서 활용
- 시간적 드롭아웃 : RNN 알고리즘에서 활용
2. 매개변수 최적화
- 학습 보델과 실제 에리블 간의 차이를 손실함수로 표현해 오차, 손실함수 값이 최소가 되는 매개변수(가중치, 편향) 찾는 것
- 매개변수와 초매개변수 hyper parameter의 가장 큰 차이 : 사용자의 직접 설정 여부
- 매개변수 : 머신러닝 모델 내부에서 결정. 훈련 데이터로 학습된 모델의 한 부분으로 저장. 알고리즘 최적화 과정에서 결정(선형회귀의 결정계수, 편향 or 절편, 인공신경망의 가중치 등)
- 초매개변수 : 모델 외적 요소, 학습 시작 전, 사용자가 설정하는 파라미터. (KNN의 K, SVM에서 코스트, 신경망 학습에서 학습률 등)
▶ 매개변수 최적화 기법 : 2차원(x축 가중치, y축 손실값) 손실함수 그래프 이용
1) 경사하강법 기반 : 최적의 매개변수 값 찾기 위해 미분
① 배치 경사 하강법 BGD
- 모든 데이터셋을 하나의 배치로 간주해 전체 미분값을 평균내어 1에폭 동안 한번만 생신 수행
- 배치 : 한 번에 처리하는 데이터 수
- max_iter : 몇 개의 배치 쓸 것 인가? ~ 학습 과정 몇 번 반복?
- test_iter : 모델 평가 위해 몇 개 배치 쓸 것인가?
- 에폭 Epoch : 전체 데이터에 대한 한 번의 학습 의미. iteration은 정해진 batch size로 학습(back, forward)을 반복하는 횟수. 한번의 에폭 위해 여러 번의 iteration 필요
② 확률적 경사 하강법 SGD
- 손실함수의 기울기 구해 그 기울기 따라 점차 아래로 내려가 궁극적으로 손실함수의 최소점에 도달하게끔 하는 알고리즘
- 각 반복 iteration에서 하나의 데이터 뽑아 학습
- 단점 : 기울기 감소하는 최적점 근처에서 느려짐. BGD에 비해 최적화로 가는 과정에서 노이즈 발생 가능성 높음. 탐색 경로가 지그재그
- 모멘텀, Adam 등으로 단점 극복
2) 모멘텀 Momentum
- 기울기 방향으로 힘 받으면 물체 가속된다는 물리법칙 적용한 알고리즘. SGD + 속도
- 기울기 감소해도 누적된 기울기 값으로 인해 빠르게 최적점으로 수렴
- 특징 : SGD보다 지그재그 정도 적어짐(관성으로 진동과 폭 줄어듦). x축으로는 일정하게 가속하나 y축 방향의 속도 일정하지 않음
3) Per-매개변수 조정 학습률 : 각 매개변수 별 조정된 학습 속도가 적용됨
① AdaGrad
- 조정된 경사 기반 방식으로 이전 갱신에서 많이 달라진 매개변수의 학습량 줄이는 방법 채용(학습률 감소기법)
- 학습률을 일괄적으로 낮추는 것은 아니고, 각각의 매개변수에 맞는 학습률 값을 생성
- 특징 : 최적점을 향해 매우 효율적으로 움직임. 갱신 강도 빠르게 약해지고, 지그재그 정도가 현저히 줄어들며 최적점으로 수렴
② Adam(Adaptive Moment Estimation) : 모멘텀 + AdaGrad. 가장 기본적, 성능 good
*SGD는 이해와 구현 용이하나 모멘텀, Adam등의 성능이 좋음
3. 분석모형 융합 Aggregation
- 단일 모델보다 여러 모델을 종합적으로 이용할 때 성능이 좋다는 전제
- 예측모형의 경우, 복수의 분류기 생성해 그 예측 결합해 보다 정확한 최종 예측을 이끌어낼 수 있음
1) 배깅 vs. 부스팅
- 배깅 : 학습 데이터에 여러 개의 부트스트랩 데이터 생성하고 각 데이터를 여러 알고리즘으로 학습시킨 후 산출된 결과를 다수결로 선정(직접, 간접 투표)
- 부스팅 : 배깅이 일반적 모델 만든다면, 고난도 문제 푸는 모델에 초점. 여러 개의 약한 학습기를 순차적으로 학습시켜 잘못 예측한 데이터에 가중치 부여하며 오류 개선하는 방식
- 배깅 : 병렬 vs. 부스팅 : 순차적 학습
2) 랜덤 포레스트
- 의사결정나무의 특징인 분산이 크다는 점을 감안해 배깅과 부스팅보다 더 많은 무작위성 주어 복수의 약한 학습기(의사결정트리 모형)를 생성하고 이를 결합해 종속변수를 분류하거나 예측
- 분류는 투표. 예측은 평균화 적용
4. 최종모형 선정
- 모델 학습에 활용된 분석 알고리즘 성능 평가할 수 있는 기준 선정
- 평가 데이터셋에 의한 모델 성능 평가 + 분석 알고리즘 수행 결과 기록 검토
- 대개 정확도를 기준으로 삼고 재현율, 정밀도를 고려하나 기법에 따라 달라질 수 있음
- 지도 학습(분류형 모델) : 분류 정확도, 평균 오차율, 오류 재현율
- 비지도 학습(설명형 모델) : 집도 소속률, 데이터 밀도 및 군집도
- 기타(텍스트 마이닝 등) : 텍스트 매칭률, 문서 분류율
- 머신러닝 모형 고를 때에는 컴퓨팅 복잡성, 예측 용이성, 해석 편이성 고려
- 평가기준 선정 > 분석 결과 검토 > 분석 알고리즘 결과 비교 > 챔피언 모델 등록
예상문제 대비
- 데이터 분석 모형 성능 평가 시, 고려사항
- 분석 결과 일반화 가능성
- 성능 평가 기준 적합성
- 데이터 분석 모형의 타당성
- 이익도표 - 반응률 % response : 해당 등급의 실구매자수 / 각 등급 고객
- 지도학습 모델의 평가 기준
- 일반화 가능성 : 같은 모집단 내 다른 데이터 적용해도 결과가 안정적
- 해석력 : 입력변수와 출력변수의 관계 설명
- 효율성 : 입력변수 적을수록 좋음
- 데이터 정규성 검정
- R에서 데이터 많으면 ks.test(), 적으면 shapiro.test()
- 샤피로-윌크는 대부분의 데이터 정규성 검정에 사용 가능
- K-S검정은 정규분포화 비교
- 샤피로-윌크 검정
- H0 : 데이터는 정규분포 따른다
- 유의확률 > 유의수준 → 기각X → H0 채택
- 두 집단의 평균 비교(정규성, 등분산성, 독립성 만족) : t-검정
- 일반화 오류 - 과대적합 / 학습 오류 - 과소적합
- 그레디언트 부스팅 : 분류/회귀에 관계없이 개별 멤버모형으로 회귀분석 모형 사용