[ZB] 머신러닝 - Chap2. Classification|분류

porii·2024년 10월 11일

[edu] zerobase

목록 보기
12/28

1. Loss Function

  • 2가지 - 옳다 / 그르다 or 2개 이상의 Class
  • 모델의 학습 방향
    • 순도(Homogeneity)를 최대로 증가시키는 방향
    • 불순도(Impurity) or 불확실성(Uncertainty)을 최소로 감소시키는 방향
  1. Loss Function

    = Measuring Impurity

    1. Gini Index

      I(A)=1K=1mpk2I(A)=1-\displaystyle\sum_{K=1}^{m}p^2_k

      K : Class, P = Proportion

      • 불순도에 대한 index
      • 0 : 가장 잘 나누어진 것
      • 0.5 : Max
    2. Entropy

      Entropy=2K=1mniklog(pik)Entropy = -2\displaystyle\sum_{K=1}^{m}n_{ik}log(p_{ik})

      i : node index, k : Class, p : Probability of class k in node i

      • 0 : 가장 잘 나누어진 것
    3. Misclassification Error

  2. Binary Cross Entropy

    • 기본적으로 classification model 학습할 때 사용

    BCE=1Ni=0nyilog(yi^)+((1yi)log(1yi^))BCE=\frac{1}{N}\displaystyle\sum_{i=0}^{n}y_i\cdot log(\hat{y_i}) +((1-y_i)\cdot log(1-\hat{y_i}))

    y^\hat{y} : yy 값일 확률을 내뱉음

    • BCE 값을 Maximize 해야 Error → 0

2. ★ Decision Tree

: 데이터를 분석하여 이들 사이에 존재하는 패턴을 예측가능한 규칙(Rules)들의 조합으로 나타냄

  • ‘의사 결정 나무’
  • 질문을 통해 대상 좁혀나가는 스무고개와 비슷
  • Model Complexity 극한으로 높일 수 있음 → overfitting
  • 끝마디(마지막 단계) : Terminal node
    • Root node - Intermediate node - Terminal node
    • Terminal node가 N개 이면 데이터 수에 상관없이 N종류의 답(Rule)을 출력
  1. 원리

    순도(Homogeneity)를 최대로 증가시키는 방향

    • Split 하고 나서의 I(A)I(A) I(A)=i=1d(Ri(1K=1mpk2))I(A) = \displaystyle\sum_{i=1}^{d}(R_i(1-\displaystyle\sum_{K=1}^{m}p^2_k)) information gain : I(A)i=1d(Ri(1K=1mpk2))I(A) - \displaystyle\sum_{i=1}^{d}(R_i(1-\displaystyle\sum_{K=1}^{m}p^2_k))
      • 가장 큰 information gain을 가지는 곳을 먼저 split
    • Split의 원리
      1. 불순도가 가장 낮은 Feature과 포인트(=Root node) 찾음
      2. Information gain이 가장 큰 포인트에서 split
    • 병렬적 계산 → 속도가 빠름
      • 독립적으로 계산하므로 Scaling 필요 X
  2. Decision Tree Pruning

    • Full Tree = 100% Purity, 0% Impurity 인 상태 (무한히 partitioning(split)하면) = overfitting 발생
    • Decision Tree Pruning : Full tree를 생성한 뒤 적절한 수준에서 terminal node 잘라줌 = 가지치기
  3. 속성

    • Rule Extraction : 가장 중요하고 강력한 해석력을 지님
      • 심플하지만 직관력 O . Simple is the Best

3. Model 평가 및 지표 해석

“Class의 Balance가 맞는가?” - 이에 따라 평가지표가 달라지기 때문

  • Model이 imblance 할 때 학습하기를 포기 왜? 한 가지를 포기해도 정확도가 높이 나오니까 이 때는 다른 지표를 사용해야 함
  1. Confusion Matrix

    • TP(True Positive) 참양성
    • FN(False Negative) 위음성
    • FP(False Positive) 위양성
    • TN(True Negative) 참음성
    실제값
    TrueFalse
    분류 결과True① True Positive② False Positive
    False③ False Negative④ True Negative
  2. 지표

    1. 정분류율(Accuracy) : 직관적인 모델 예측 성능을 나타냄

      <전체 중에 알맞게 예측한 비율>

      정분류율=TP+TNTP+FP+FN+TN=++++정분류율 = \frac{TP+TN}{TP+FP+FN+TN}=\frac{① +④}{①+②+③+④}

    2. 정밀도(Precision) : 예측 Positive 중 실제 Positive 비율

      < 참이라고 생각했는데 진짜 참인 비율 >

      <더 정확한 예측이 필요한 경우 >

      정밀도=TPTP+FP정밀도 = \frac{TP}{TP+FP}

    3. 재현율(Recall) : 실제 Positive 중 올바르게 예측된 비율

      < 참 값을 얼마나 놓치지 않는지 >

      < 의학, 불량 등에 사용 >

      재현율=TPTP+FN재현율 = \frac{TP}{TP+FN}

    4. 특이도(Specificity) : 실제 Negative 중 올바르게 예측된 비율

      특이도=TNTN+FP특이도=\frac{TN}{TN+FP}

    • Accuracy만 보는 것은 위험하다
    • ★★ F1F_1 score
      • confusion matrix에서 한 가지 본다면

      • model imbalance도 잘 잡아줌

        F1score=2TP2TP+FP+FNF_1 score = \frac{2TP}{2TP+FP+FN}

4. Ensemble

  1. 정의

    : 어떤 데이터를 학습할 때 여러 개의 모델을 조화롭게 학습시켜

    각 모델의 예측결과들을 이용하여 더 정확한 예측값을 구함

    (Error을 낮춤)

    Ensembles almost always work better

    EEnsembleEAvgE_{Ensemble} \leq E_{Avg}

    • 결과 해석이 어려움(모델이 섞여있기 때문) = BlackBox Model
  2. 종류

    Error = Noise(x) + Bias(x) + Variance(x)

    1. Bagging = Bootstrap + Aggregating

      = Reduce the Variance

      • 하나의 Data로부터 여러개의 Datasset을 만들어 같은 Algorithm에 넣어
      1. Bootstrap : 표본에서 추가적으로 표본을 복원 추출

        • N개의 Data가 있으면 N개를 randomly하게 뽑아서 새로운 Data Set 구성
        • 확률 상 36.8%의 데이터는 뽑히지 못함
      2. Aggregating

        1. Majority Voting

        2. Weighted Voting1

          : Training Accuracy 반영

        3. Weighted Voting2

          : Test 시 뱉는 확률의 평균

        -도메인에 맞게 사용

      • Random Forest = Bagging on Trees
    2. Stacking

      = Reduce the Variance

      • 동일한 DataSet에 대하여 서로 다른 Algorithm 모델을 주어줌
      • Final Decision Algorithm
    3. 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

  1. Random Forest
    • Random Decision Forests(1995) : 여러 개의 decision tree를 랜덤하게 고른 feature로 학습 후 조합
    • Random Forest = Random Decision Forests + Bagging 기법
  2. Ensemble의 다양성을 증가시키는 2가지
    1. Randomly sample the training data (Bagging)
    2. 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을 학습하는 양이 그만큼 줄어드므로
  3. Important Score
    1. OOB( Out Of Bag )

      • OOB Data = 뽑히지 못한 36.8%의 Data
      • OOB Data를 Test Set으로 활용하여 Model 성능 측정
    2. Important Score

      1. OOB error로 모델의 validation

        OOB Error = OOB Data로 테스트 했을 때의 성과

      2. xix_i의 중요도를 알고싶다? xix_i의 데이터를 permutation(shuffling) → 못쓰는 데이터로 만듦

      3. Permuted Data를 가지고 OOB Error 계산

        xix_i가 중요하지 않다? → OOB Error 증가

      4. OOB Error가 증가한 정도 = Feature Importance Score

    3. 변수의 중요도가 높은 경우

      1. Random permutation 전후의 OOB Error 차이가 크다

        m번째 tree에서 변수 i에 대한 OOB Error 차이

        dim=pimeimd^m_i=p^m_i-e^m_i

      2. 그 차이의 편차가 적다

        전체 tree에 대한 OOB Error 차이의 평균과 분산

        diˉ=1mi=1mdimsi2=1m1i=1m(dimdiˉ)2\bar{d_i}=\frac{1}{m}\displaystyle\sum_{i=1}^{m}d^m_i \qquad s^2_i = \frac{1}{m-1}\displaystyle\sum_{i=1}^{m}(d^m_i-\bar{d_i})^2

      • i번째 변수의 중요도 vi=diˉsiv_i =\frac{\bar{d_i}}{s_i}

      → 모든 트리에서 차이가 고르고 크게 나야 중요한 변수


  • Trade-off
    • Bias - Variance
    • Test Accuracy - Train Accuracy
    • 정확도 - 해석력 ( ensemble )
  • Regression 과 Classification
    RegressionClassification
    Loss FunctionMin(yiy^i)2Min \displaystyle\sum(y_i-\hat{y}_i)^21. Gini Index
    2. Entropy
    Model 평가- RMSE
    - MSE
    - R2R^2
    - Accuracy
    - Recall
    - F1F_1 score
    - Confusion Matrix

0개의 댓글