본문 바로가기

KHUDA

KHUDA Data Business 05

 

Chapter 14-1 학습셋, 검증 셋, 테스트 셋과 과적합 해결 

 

Degree 1 : 모델이 너무 단순해서 Y값을 제대로 예측하지 못함, 학습이 너무 덜 된 경우 과소적합(underfitting)

Degree 15 : 학습 셋에 과도하게 적합(fit)하도록 학습된 과적합 상태(overfitting)

-> 학습이 너무 많이 이루어지거나, 변수가 너무 복잡해서 발생, train 데이터와 test 데이터가 중복될 경우 발생

Degree 5 : 최적의 모델 True function과 가장 유사한 모델

검증셋
학습 셋 데이터를 통해 모델을 만들 때 과도하게 학습되지 않도록 조정해주는 역할을 함
테스트 셋
학습 셋과 검증 셋으로 만든 최종 모델의 실제 '최종 성능'을 평가할 때 사용
-> 검증 셋도 결국 모델을 만들 때 관여한 데이터기 때문에 모델 성능 지표가 다소 과장되어 있기 때문에 모델 산출시 사용되지 않았던 테스트 셋 데이터를 통해 실제적인 모델의 정확도를 판단.
홀드아웃(holdout)
과적합을 방지하는 가장 기본적인 테스트셋 분리 방법
-> 정답지가 있는 학습 셋과 검증 셋 데이터로 모델을 만들고, 모델을 테스트 셋 데이터에 적용하여 산출한 예측값을 테스트 셋 레이블과 비교하여 모델 성능 평가

반복 학습을 많이 하지 않는 간단한 모델에는 검증 셋 사용을 생략하고 바로 테스트 셋에 모델을 적용하여 과적합을 검증함

BUT 반복 횟수가 100회 이상으로 많은 모델을 만들 때에는 model.fit(..., validation_data = (x_test, y_test)) 과 같이 검증 셋을 설정해줌!

정규화(Regularization)
모델 내부의 계수인 세타( θ ) 값에 패널티를 주어 변수의 영향력을 감소시키는 기법
-> 과적합된 모델의 각 가중치를 줄여 줌으로써 예측이 불필요한 변수의 영향을 최소화함
드롭아웃(dropout)
 주로 신경망 모델에서 사용되며, 최종 결괏값을 계산하기 위해서 사용되는 뉴런들 중 일부를 누락(dropout)시켜 과적합을 방지하는 기법

Chapter 14-2 주요 교차 검증 방법 

 

<k-Fold Cross Validation>

한정된 데이터를 가지고 최대한 과적합을 방지하여 모델을 학습시킬 수 있는 방법 중 하나

k-fold 교차 검증 (k - Fold Cross Validation) : 전체 학습 데이터 중 일부를 검증 셋으로 분리하는 과정을 k번 반복하는 방법

1. 전체 학습 셋을 k 개의 조각(fold)으로 분리

2. 검증 셋을 중복 없이 바꿔가면서 모델 생성과 평가 진행

3. 만들어진 k개의 모델의 모든분할 조합의 평균 계숫값을 구하거나 최고 성능의 모델을 선택

4. 테스트 셋을 통해 최종 예측력을 평가 

 

일반적으로 k의 수는 5~10개로 지정하여 수행

- k가 클수록 평가의 편중된 정도(bias)는 낮아지지만, 각 fold의 모델별 결과의 분산(variance)이 높을 수 있으므로 K가 크다고 무조건 좋은 것은 아님!

-) 홀드아웃 방식보다 연산량이 많음

 

<LOOCV(Leave-one-out Cross-validation)>

LOOCV(Leave-one-out Cross-validation) : 기존 k-fold 방식에서 k를 최대화한 방법으로 k를 전체 관측치 수로 하여, 검증 셋이 관측치 하나 하나가 되는 것

- 전체 관측치가 1000개인 데이터 셋이면 k가 1000인 k-fold 교차검증을 수행함

-) 모델의 편중이 매우 작지만 결괏값의 분산이 다소 커 과적합 될 여지가 있음

-> 데이터양이 많은 경우에는 적합하지 않은 방법

<Stratified K-fold Cross Validation>

Stratified K-fold Cross Validation(Stratified K-fold 교차검증) : 기존 k-fold 방식에 층화 추출 방식을 접목한 기법

-> 데이터의 특정 클래스(카테고리)가 한 곳에 몰리는 상황을 방지할 수 있음

-> 클래스 분포가 일정하지 않으면 각 분할 셋 간 계숫값의 분산이 커지게 됨

-> 분할 셋 안의 클래스 비율이 학습 셋 전체의 클래스 비율과 같도록 분리

 

<Nested Cross Validation>

기존 k-fold 방식 : 학습 셋과 테스트 셋 분리를 한 번만 하기 때문에, 모델의 성능이 테스트 셋에 크게 의존한다는 문제 있음

중첩 교차검증(Nested CV) : 학습 셋과 테스트 셋 검증에도 k-fold 방식을 적용한 것

-> k-fold를 이중으로 중첩하여 사용하므로 inner loop와 outer loop로 구성됨

Inner loop : 기존의 k-fold 교차검증과 마찬가지로 학습 셋과 분류된 데이터를 k-1 개의 테스트셋과 1개의 검증 셋으로 나누어 k 번 학습을 수행하여 계숫값을 산출함

outer loop : inner loop에서 만들어진 계숫값을 테스트 셋에 적용하여 정확도를 산출하는 작업을 k-fold 방식으로 수행함

 

-> 전체 데이터를 테스트 셋 데이터로 활용하기 때문에, 만든 모델이 얼마나 잘 일반화되는지 평가하는 데 유용함

-> 모델의 최종 예측력은 각 fold의 예측력 평균으로 구함

<Grid Search Cross Validation>

격자 탐색 교차검증: 모델의 하이퍼 파라미터 값을 리스트 형태로 미리 입력해 놓은 다음 각 조건의 모델 성능을 측정하고 평가하여 효율적으로 최적의 하이퍼 파라미터 값을 찾아내는 기법

- sklearn의 GridSearchCV 패키지로 제공됨

- 각 조건의 모델을 교차검증으로 평가하여 최적의 모델 조건을 찾는 것

그리드 방식 : 사전에 설정한 모든 허이퍼 파라미터 조건의 모델을 수행하기 때문에 조건이 많아지면 시간이 오래걸림

-> 조건이 많은 경우레는 현실적으로 가능한 횟수(1000회 등) 내에서 무작위로 조건을 탐색하여 최적의 조건을 찾는 무작위 탐색(randomized search) 방법을 사용하기도 함

 

Chapter 14-3 회귀성능평가지표

 

결정계수(R-Square(R^2)
모델의 독립변수들이 종속변수를 설명할 수 있는 설명력을 나타내는 0에서 1 사이의 수치
-> 회귀모델의 회귀선이 종속변수 y값을 얼마나 잘 설명할 수 있는가를 의미
-> 실젯값과 예측값의 차이인 오차와, 실젯값과 실젯값 평균의 차이인 편차와 관련 있음

SSR(Sum of square regression) : 회귀식의 추정값과 전체 실젯값 평균과의 편차 제곱합

SSE(Explained sum of squares) : 회귀식의 추정값과 실젯값 편차 제곱의 합

SST(Total sum of squares) : 실젯값과 전체 실젯값 평균과의 편차 제곱합

 

R^2은 실제로 제곱은 아니기에 음수값이 나올수도있다......

 

RMSE 
편차 제곱의 평균에 루트를 씌운 값으로, 실제 수치와 예측한 수치와의 차이를 확인하는 전형적인 방법
 -> 예측값에서 실젯값을 뺀 후 제곱한 값을 모두 더한 다음, n으로 나누고 루트를 씌움(실젯값과 예측값의 표준편차)

장점) 표본 평균과의 비교를 통해 대략적인 모델 간 정확도 비교 가능
단점) 예측값의 스케일에 영향을 받음 -> 표본 데이터가 다르면 RMSE 절대치로 비교 불가능

MAPE
백분율 오차, MAE를 퍼센트로 변환한 것
-> 스케일에 관계없이 절대적인 차이를 비교할 수 있으므로 다른 데이터가 들어간 모델 간 성능을 비교하기에 유용
-> 0부터 무한대의 값을 가질 수 있으며, 0에 가까울수록 우수한 모델



1. 실젯값이 0인 경우에는 0으로 나눌 수 없기에 분석 소프트웨어는 알아서 실젯값이 0인 관측치를 제외하고 계산

-> 실젯값에 0이 많은 데이터는 MAPE 평가 기준을 사용하는 것이 적합하지 않음

 

2. 실젯값이 양수인 경우, 실젯값보다 작은 값으로 예측했을 때 MAPE의 최댓값이 최대 100%까지만 커질 수 있으나 실젯값보다 큰 값으로 예측했을 때는 MAPE 값에 한계가 존재하지 않음

->  따라서 실젯값보다 작은 값으로 예측하도록 편향될 수 있음

 

3. 실젯값이 0과 매우 가까운 경우에 MAPE가 과도하게 높아질 수 있음

-> 성능평가 방법을 선정하기 전에 실젯값과 예측값의 분포를 확인하고 이러한 주의점들을 고려하여 적합한 방법을 선택해야 함.

 

RMSLE
RMSE와 동일한 수식에서 실젯값과 예측값에 1을 더하고 로그를 취해준 값이며 로그를취해 주었기 때문에 상대적 비율을 비교할 수 있음
-> RMSE보다 이상치에 덜 민감하기 때문에 실젯값에 이상치가 존재하는 경우에 적절한 방식
-> 로그를 취하기 전에 1을 더해주는 이유는 실젯값이 0일 때 log(0)이 무한대로 발산하기 때문

- 스케일이 차이가 나더라도 비율 오차(실젯값에 대한 오차의 비율)가 같으면 동일한 RMSLE 값을 산출

- 로그의 특성상 실젯값보다 크게 예측하는 경우보다 작게 예측하는 경우에 더 큰 페널티를 주기 때문에 상품 수요 예측에 유용 -> 일반적으로 수요를 높게 예측해 재고비용이 생기는 것보다 수요를 낮게 예측해 기회 손실이 발생하는 경우가 타격이 크기 때문

 

AIC(아카이케 정보 기준)
최대 우도(Likelihood, 모델이 데이터를 설명하는 적합도)에 독립변수가 얼마나 많은가에 따른 페널티를 반영하는 평가 척도
- 독립변수가 많아지면 차원의 저주에 의해 모델 성능이 떨어질 수 있기에 모델의 정확도와 함께 독립변수가 많고 적음까지 따지는 평가 방법

AIC에서는 데이터 수에 대한 보정이 없기 때문에 관측치가 많지 않을 경우 정확도가 낮아질 수 있음

-> 관측치 수를 반영하여 보정된 AICc 방식을 사용할 수 있으며 이 또한 작은 값을 가질수록 좋은 모델을 나타냄.

BIC
AIC와 변수 개수에 대한 페널티에서 차이가 있음
BIC에서는 관측치가 8개 이상만 되어도 AIC보다 변수 개수에 대한 패널티를 더 크게 부여하기 때문에, 변수의 개수를 줄이는 것이 중요한 상황에서는 BIC로 모델을 평가하는 것이 좋음!

 

c

Chapter 14-4 분류, 추천 성능 평가지표 

 

예측한 전체 관측치 중 몇 개를 정확히 분류했는가를 주로 평가

혼동 행렬 

1. 테스트 셋의 모든 관측치의 구매 여부 1과 0에 대한 확률을 구함.
2. 분류 기준값(threshold)에 맞춰(일반적으로 0.5) 1의 확률이 0.5 이상인 관측치는 1로 분류하고 나머지는 0으로 분류

오분류율 : 제대로 관측하지 못한 관측치의 수를 전체 관측치의 수로 나눠 구함

1로 예측했는데 실제로도 1인 경우를 진양성(True Positive), 실제로는 0인 경우를 위양성(False Positive), 0으로 예측했는데 실제로도 0인 경우는 진음성(True Negative), 실제로는 1인 경우를 위음성(False Negative)이라고 한함.

-> Positive와 Negative는 긍정과 부정의 의미보다 분류하고자 하는 1값과 0값, 즉 구매여부의 구매, 탈퇴 여부의 탈퇴, 질병 양성 여부의 양성 등을 의미

 

정확도
전체 관측치 중에서 올바르게(1은 1로, 0은 0으로) 분류한 비중

오분류율(Misclassification rate)

전체 관측치 중에서 잘못 분류한 비중

정밀도
1로 예측한 관측치 중 실제로 1인 관측치 비중. 모델이 실제 1을 제대로 분류하는 성능을 확인할 때 사용

민감도(재현율)
실제 1인 관측치 중 모델이 1로 분류한 비중일반적으로는 50% 이상의 민감도를 유지하도록 함.


특이도
0으로 분류한 관측치 중 실젯값도 0인 비중을 나타냄. 보통 전체 관측치에서 1보다 0이 많은 비중을 차지하기 때문에 특이도 값은 높게 나오며, 가끔 1과 0의 비중이 비슷하거나 0에 대한 분류가 중요할 때 특이도를 확인함.

F - score
정밀도와 민감도를 함께 고려한 것으로, 0~1 사이의 값을 갖음.
정밀도와 민감도는 서로 트레이드오프 관계로, 둘중 하나가 증가하면 나머지 하나는 감소

G - mean
기하평균을 사용해 민감도와 특이도의 평균을 구하는데, 이는 실제 1을 제대로 분류한 비율과 실제 0을 제대로 분류한 비율의 기하평균

향상도(Lift) 
전체 관측치 중에서 실제 1의 비율보다 모델을 통해 1로 예측한 관측치 중 1의 비율이 얼마나 더 높은지를 나타냄

향상도 테이블에서는 모델에서 1로 분류할 확률이 높은 관측치는 실제로 1인 경우가 많다는 것을 전제로 함.
-> 모델이 제대로 학습되어 관측치가 1로 분류될 확률이 높을수록 실젯값이 1일 확률이 높아야 함!
-> 무작위로 1을 뽑는 확률보다 모델이 1을 분류할 확률이 낮으면 향상도는 1 미만이 됨

 

Roc 곡선
민감도와 1-특이도 값의 변화를 그래프로 그려 분류 모델의 성능 평가

AUC
ROC 곡선을 수치로 계산하는 것으로 곡선아래 면적의 크기를 구함. 
1: 우수한 모델 
0.5: 랜덤 분류
0.5이하:  데이터에 이상이 있음.
수익곡선
진양성에 따른 이익과 위양성에 따른 손해를 수치화하여 모델의 수익성을 최대화 할때 사용하는 것
- 가용 예산 안에서 최대의 수익을 얻을 수 있는 지점을 선택
2번이 최적의 수익을 낼 수 있는 모델
-> 고객 구간이 넓어질수록 가정한 예상 비용에 대한 오차가 커지므로 주의

MAP
사용자들이 반응했던 항목 구간들의 precision 들을 모두 평균을 낸 모델 평가 척도

 

Chapter 14-5 A/B테스트와 MAB

A/B 테스트
- as-is 와 to-be의 결과를 직접 비교
- 임의로 두 집단으로 나누어 서로 다른 콘텐츠를 보여 준 다음 어떤 집단이 더 높은 성과를 보이는지를 비교

MAB 테스트
강화학습의 기초 개념
MAB 의 목적은 조합을 최적화하여 최대의 이익을 얻는 것으로 최적의 수익을 내기 위한 전략

UCB

ε-greedy 알고리즘이 대안 탐색을 좀 더 스마트하게 할 수 있도록 보완한 알고리즘
ε-greedy 방식은 ε 값의 확률로 무작위로 대안을 선택하기 때문에 효과적이지 못하다는 단점이 있음.
UCB는 일정 확률로 대안을 탐색하지만, 대안들 중에서도 최적의 수익을 낼 가능성이 더 높은, 불확실성이 강한 대안을 우선적으로 선택
관측된 보상의 표본 평균으로 계산된 대안의 가치에, 얼마나 많은 탐색을 했는지를 함께 고려하여 대안을 평가
탐색을 적게 했다는 것은 그 대안의 보상이 아직 확실하지 않다는 뜻이기에 더 많은 가중치를 주는 방식
톰슨 샘플링

베타분포를 사용하여 확률적으로 수익을 추정하고 선택하는 확률적 알고리즘
넷플릭스나 구글 애널리틱스에서 사용하는 알고리즘
활용분야

기계학습 모델에 적용 가능

추천 시스템 모델에서 여러 종류의 협업 필터링과 콘텐츠 기반 필터링 기법을 앙상블하여 사용한다고 했을 때, MAB를 적용하여 최적의 추천 정확도를 보이는 모델을 선택가능

MAB를 적용하면 사용자의 실제 반응 정보를 반영하여 실제 반응률이 가장 좋은 모델을 적용한 아이템 추천을 하여 반응률을 극대화

 

Chapter 14-6 유의확률 검정

 

p값이라 불리는 유의확률이 변수 선택 및 모델 평가에 있어 매우 중요함

p값은 표본의 크기가 커지면 점점 0으로 수렴하게 되는 특성

→ 표본의 크기가 커지면 표본오차가 작아지고, 결과적으로 p 값도 작아지게 됨.

 

주의할 점

  • 기부여부에 따른 연 소득 차이는 10만원으로 같음에도 불구하고, 표본을 증가시킨 것만으로 유의확률이 조정

p값의 기준인 0.05는 임의적인 기준이기 땜누에 0.05미만으로 나왔다고 해서 통계적 유의성이 확실히 있다고 단언 x

 

 

Chapter 14-7 분석가의 주관적 판단과 스토리 텔링

 

올바른 데이터를 선택하고 결론을 이끌어내려면, 사람의 지식과 상식, 그리고 창의성이 필요

왜냐하면 데이터에서는 나타나지 않는 사람들의 심리적 요소가 있기 때문

특정 이슈에 대해서는 사람의 인사이트와 결정적 판단이 매우 중요

단순한 분석을 통한 맹목적인 판단은 위험 분석한 결과대로 행동했을 때 종속변수가 어떻게 반응할 것인가를 고민

 

분석가의 올바른 주관적 판단을 하기 위한 3가지

1.해당 분야의 도메인 지식이 수반
2.통계적 지식을 기반으로 탐색적 데이터 분석과 데이터 전처리를 성실히 수행 적
3.극적인 커뮤니케이션과 검증 과정이 필요

 

'KHUDA' 카테고리의 다른 글

KHUDA Data business 04  (0) 2024.04.03
KHUDA Data buisness 03  (0) 2024.03.26
KHUDA Data business 02 practice  (1) 2024.03.26
KHUDA Data business 02 심화발제  (0) 2024.03.20
KHUDA Data buisenss 02  (0) 2024.03.20