1. Loss Function
- 2가지 - 옳다 / 그르다 or 2개 이상의 Class
- 모델의 학습 방향
- 순도(Homogeneity)를 최대로 증가시키는 방향
- 불순도(Impurity) or 불확실성(Uncertainty)을 최소로 감소시키는 방향
-
Loss Function
= Measuring Impurity
-
Gini Index
I(A)=1−K=1∑mpk2
K : Class, P = Proportion
- 불순도에 대한 index
- 0 : 가장 잘 나누어진 것
- 0.5 : Max
-
Entropy
Entropy=−2K=1∑mniklog(pik)
i : node index, k : Class, p : Probability of class k in node i
-
Misclassification Error
-
Binary Cross Entropy
- 기본적으로 classification model 학습할 때 사용
BCE=N1i=0∑nyi⋅log(yi^)+((1−yi)⋅log(1−yi^))
y^ : y 값일 확률을 내뱉음
- BCE 값을 Maximize 해야 Error → 0
2. ★ Decision Tree
: 데이터를 분석하여 이들 사이에 존재하는 패턴을 예측가능한 규칙(Rules)들의 조합으로 나타냄
- ‘의사 결정 나무’
- 질문을 통해 대상 좁혀나가는 스무고개와 비슷
- Model Complexity 극한으로 높일 수 있음 → overfitting
- 끝마디(마지막 단계) : Terminal node
- Root node - Intermediate node - Terminal node
- Terminal node가 N개 이면 데이터 수에 상관없이 N종류의 답(Rule)을 출력
-
원리
순도(Homogeneity)를 최대로 증가시키는 방향
- Split 하고 나서의 I(A) I(A)=i=1∑d(Ri(1−K=1∑mpk2)) information gain : I(A)−i=1∑d(Ri(1−K=1∑mpk2))
- 가장 큰 information gain을 가지는 곳을 먼저 split
- Split의 원리
- 불순도가 가장 낮은 Feature과 포인트(=Root node) 찾음
- Information gain이 가장 큰 포인트에서 split
- 병렬적 계산 → 속도가 빠름
-
Decision Tree Pruning
- Full Tree = 100% Purity, 0% Impurity 인 상태 (무한히 partitioning(split)하면) = overfitting 발생
- Decision Tree Pruning : Full tree를 생성한 뒤 적절한 수준에서 terminal node 잘라줌 = 가지치기
-
속성
- Rule Extraction : 가장 중요하고 강력한 해석력을 지님
- 심플하지만 직관력 O . Simple is the Best
3. Model 평가 및 지표 해석
“Class의 Balance가 맞는가?” - 이에 따라 평가지표가 달라지기 때문
- Model이 imblance 할 때 학습하기를 포기 왜? 한 가지를 포기해도 정확도가 높이 나오니까 이 때는 다른 지표를 사용해야 함
-
Confusion Matrix
- TP(True Positive) 참양성
- FN(False Negative) 위음성
- FP(False Positive) 위양성
- TN(True Negative) 참음성
| | 실제값 | |
|---|
| | True | False |
| 분류 결과 | True | ① True Positive | ② False Positive |
| False | ③ False Negative | ④ True Negative |
-
지표
-
정분류율(Accuracy) : 직관적인 모델 예측 성능을 나타냄
<전체 중에 알맞게 예측한 비율>
정분류율=TP+FP+FN+TNTP+TN=①+②+③+④①+④
-
정밀도(Precision) : 예측 Positive 중 실제 Positive 비율
< 참이라고 생각했는데 진짜 참인 비율 >
<더 정확한 예측이 필요한 경우 >
정밀도=TP+FPTP
-
재현율(Recall) : 실제 Positive 중 올바르게 예측된 비율
< 참 값을 얼마나 놓치지 않는지 >
< 의학, 불량 등에 사용 >
재현율=TP+FNTP
-
특이도(Specificity) : 실제 Negative 중 올바르게 예측된 비율
특이도=TN+FPTN
- Accuracy만 보는 것은 위험하다
- ★★ F1 score
4. Ensemble
-
정의
: 어떤 데이터를 학습할 때 여러 개의 모델을 조화롭게 학습시켜
각 모델의 예측결과들을 이용하여 더 정확한 예측값을 구함
(Error을 낮춤)
Ensembles almost always work better
EEnsemble≤EAvg
- 결과 해석이 어려움(모델이 섞여있기 때문) = BlackBox Model
-
종류
Error = Noise(x) + Bias(x) + Variance(x)
-
Bagging = Bootstrap + Aggregating
= Reduce the Variance
- 하나의 Data로부터 여러개의 Datasset을 만들어 같은 Algorithm에 넣어
-
Bootstrap : 표본에서 추가적으로 표본을 복원 추출
- N개의 Data가 있으면 N개를 randomly하게 뽑아서 새로운 Data Set 구성
- 확률 상 36.8%의 데이터는 뽑히지 못함
-
Aggregating
-
Majority Voting
-
Weighted Voting1
: Training Accuracy 반영
-
Weighted Voting2
: Test 시 뱉는 확률의 평균
-도메인에 맞게 사용
- Random Forest = Bagging on Trees
-
Stacking
= Reduce the Variance
- 동일한 DataSet에 대하여 서로 다른 Algorithm 모델을 주어줌
- Final Decision Algorithm
-
Boosting
= Reduce the Bias
Initial Dataset - Algorithm(Tree) - NEW Set of Data ( 알고리즘이 맞추지 못한 데이터에 우선순위를 주어) - Algorithm(New Tree)-
-New Data(Bad cases로) - Algorithm(New Tree) - … (못맞추는 것들을 전부 맞출 때까지)
- 정답을 맞추는 것이 중요해 !
- 요즘 연구되는 중
- 종류
- Ada Boost
- GBM
- x G Boost
- Light GBM - 데이터 10000개 이상일 때 효과적
- Cat Boost
- Net Boost
5. Random Forest
Ensemble - Bagging - Random Forest
- Random Forest
- Random Decision Forests(1995) : 여러 개의 decision tree를 랜덤하게 고른 feature로 학습 후 조합
- Random Forest = Random Decision Forests + Bagging 기법
- Ensemble의 다양성을 증가시키는 2가지
- Randomly sample the training data (Bagging)
- Randomly select x% of the possible splitting features
- 다양성을 갖고 학습하는 것 중요 but 복원추출 하므로 36.8% 는 뽑히지 않음
- 복원추출 → 데이터 간의 비상관화 (데이터의 row단위) +Feature 기준으로 한 번 더 randomly 뽑아
- 설명
- 한 개의 Tree : 작은 bias, 큰 variance 훈련데이터에 있는 noise에 민감
- 여러 개의 Tree : tree들이 서로 상관화되어있지 않다면 noise에 대해 강인 → 상관화 줄이는 방법 = 행/열 모두 Randomly Chosen
- 서로 다른 데이터 셋들에 대해 훈련시킴으로 tree들 비상관화 시킴 → Bias 유지. Variance 낮춤 왜? - bagging 하면서 새로운 데이터셋의 noise는 원본데이터의 noise보다 적어지기 때문에 outlier을 학습하는 양이 그만큼 줄어드므로
- Important Score
-
OOB( Out Of Bag )
- OOB Data = 뽑히지 못한 36.8%의 Data
- OOB Data를 Test Set으로 활용하여 Model 성능 측정
-
Important Score
-
OOB error로 모델의 validation
OOB Error = OOB Data로 테스트 했을 때의 성과
-
xi의 중요도를 알고싶다? xi의 데이터를 permutation(shuffling) → 못쓰는 데이터로 만듦
-
Permuted Data를 가지고 OOB Error 계산
xi가 중요하지 않다? → OOB Error 증가
-
OOB Error가 증가한 정도 = Feature Importance Score
-
변수의 중요도가 높은 경우
-
Random permutation 전후의 OOB Error 차이가 크다
m번째 tree에서 변수 i에 대한 OOB Error 차이
dim=pim−eim
-
그 차이의 편차가 적다
전체 tree에 대한 OOB Error 차이의 평균과 분산
diˉ=m1i=1∑mdimsi2=m−11i=1∑m(dim−diˉ)2
- i번째 변수의 중요도 vi=sidiˉ
→ 모든 트리에서 차이가 고르고 크게 나야 중요한 변수
- Trade-off
- Bias - Variance
- Test Accuracy - Train Accuracy
- 정확도 - 해석력 ( ensemble )
- Regression 과 Classification
| Regression | Classification |
|---|
| Loss Function | Min∑(yi−y^i)2 | 1. Gini Index 2. Entropy |
| Model 평가 | - RMSE - MSE - R2 | - Accuracy - Recall - F1 score - Confusion Matrix |