📢 해당 포스트는 [ECC DS 4주차] 1. A Complete Introduction Walkthrough 에 대한 추가적인 개념정리입니다.
캐글 노트북 필사

1️⃣ Macro F1-score

References_대회에서 자주 사용되는 평가산식들

1. 오차(Error)

1-1. 정확도의 함정

  • 음성(negative, 0)보다 양성(positive, 1) target이 많은 데이터의 경우 정확도만 본다면 무조건 양성으로 예측하는 분류기가 성능이 더 좋음
  • 따라서, 정확도(accuracy)만 보고 분류기의 성능을 판별하는 것은 이와 같은 정확도의 함정에 빠질 수 있음

1-2. 오차 행렬(confusion matrix)

  • 코드
from sklearn.metrics import confusion_matrix

confusion_matrix(y_test,pred)
array([[ 1,  0],
       [ 2, 88]])
  • 결과 해석

  • 용어 정리
    • 정밀도(precision)
      • 양성 예측 정확도
      • TP/(TP+FP)
      • __무조건 양성__으로 판단하면 좋은 정밀도를 얻기에, 유용하지는 않은 방법임
    • 재현율(recall)
      • 정확하게 감지한 양성 샘플의 비율
      • 민감도(sensitivity) 또는 True Positive Rate(TPR) 이라고도 부름
      • TP/(TP+FN)
    • F1 score
      • 정밀도와 재현율의 조화 평균을 나타내는 지표

        • 0에서 1사이의 값을 가지며, 1에 가까울수록 좋음
        • accuracy와 달리 클래스 데이터가 불균형 할 때도 사용하기 좋음

        • Macro F1
          • 클래스별/레이블별 F1-score의 평균
          • 모든 class의 값에 동등한 중요도를 부여
            • 비교적 적은 클래스(rare classes)에서 성능이 좋지 않다면, Macro-F1의 값은 낮게 나타남
            • 각 레이블의 발생 빈도를 계산에 반영하려면 weighted 옵션을 활용

2️⃣ 상관관계(Correlations)

References_상관 분석(Correlation Analysis)

0. 상관분석(Correlation Analysis)

  • 두 변수 간에 어떠한__선형적__ 관계를 가지는지를 분석하는 기법
  • 상관계수(correlation coefficient)
    • (X와 Y가 함께 변하는 정도) / (X와 Y가 각각 변하는 정도)
    • X와 Y가 완전히 동일하면 +1, 반대 방향으로 완전히 동일하면 -1
    • cf> r = 0이라는 것은 X와 Y가 전혀 상관이 없다는 것이 아니라 ‘선형 의 상관관계는 아니다’라고 해석하는 것이 더 적절함
      • 두 변수가 곡선 관계라면 상관계수로 설명할 수 없음

1. 피어슨 상관계수(Pearson Correlation Coefficient)

  • 상관분석에서 가장 기본적으로 사용되는 상관계수
  • 연속형 변수 의 상관관계를 측정하는 데 사용
  • 모수적 검정(parametric test)

2. 스피어만 상관계수(Spearman Correlation Coefficient)

  • 스피어만 상관 계수(ρ: rho)
  • 변수의 값 대신 순위 를 활용한 상관계수
  • 비모수적 검정(non-parametric test)
  • 데이터 내의 편차와 에러에 민감함
    • 다중 비교에서의 해결법: 본페로니 교정

    References_본페로니 교정(Bonferroni correction)

3️⃣ Baseline Models

  • 기계 학습 알고리즘에서는 어떤 모델이 주어진 데이터 세트에 가장 잘 작동할 지를 미리 알 수 없음
    • 여러 모델을 시도해 보아야 함
  • 해당 대회에서 사용된 모델들을 정리해 보자!

1. RandomForestClassifier

  • 지난 주 개념정리 부분을 참고해 주세요.

References

  • 데이터의 반복 복원 추출 + random하게 변수 추출 -> 다양한 모델 생성
    • 모델 간의 공분산을 줄이는 효과
  • 모델링 기준을 찾기 위해 활용됨
    • 트리 기반 모델의 기능 중요도(feature importances)를 통해 중요한 변수들을 파악할 수 있음

2. Linear SVC

2-1. 서포트 벡터 머신(Support Vector Machine)

  • 여러 집단들을 가장 잘 분류할 수 있는 최적의 선(결정 경계)를 찾기 위한 모델
    • 비확률적 이진 선형 분류 모델을 만들 때 활용
    • 경계로 표현하는 데이터들 중 가장 폭을 가지는 경계를 찾는 알고리즘
    • 서포트 벡터: 영역의 경계 부분의 데이터를 기준으로 한 평행한 두 직선
    • 마진: 두 집단 사이의 거리 -> 최적의 결정 경계는 마진을 최대화하는 경계

  • 변수의 스케일(범위)에 따라 데이터의 위치가 달라짐 -> 결정 경계도 달라짐
    • 적절한 스케일링이 필요

2-2. SVC 클래스

  • 코드
    from sklearn.svm import SVC
    
  • 주요 파라미터
    • C: 마진 오류를 얼마나 허용할 것인가
      • 값이 클수록 마진이 넓어지고 마진 오류 증가
      • 값이 작을수록 마진이 좁아지고 마진 오류 감소
    • kernel: 커널 함수 종류 지정
      • ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’
    • gamma: 커널 계수 지정
      • ‘poly’, ‘rbf’, ‘sigmoid’일 때 유효

3. GaussianNB(Gaussian Naive Bayes)

  • Naive Bayes: 확률(Bayes Theorem)을 이용해서 가장 합리적인 예측값을 계산하는 방식
  • 정규분포(가우시안 분포)를 가정한 표본들을 대상으로 조건부 독립을 나타내, 항상 같은 분모를 갖는 조건 하에서, 분자의 값이 가장 큰 경우(= 확률이 가장 높은 경우)를 선택하는 것
  • 설명변수가 연속형 변수일 때 활용

NaiveBayes(나이브 베이즈) 모델

4. MLPClassifier(Multi-Layer Perceptron Classifier)

  • 다중 신경망 분류 알고리즘을 저장하고 있는 모듈
  • 라이브러리 import
from sklearn.neural_network import MLPClassifier
  • 모델 구현(해당 노트북에서..)
from sklearn.neural_network import MLPClassifier

model_results = cv_model(train_set, train_labels,
                        MLPClassifier(hidden_layer_sizes = (32, 64, 128, 64, 32)),
                        'MLP', model_results)
  • model_results 변수에 모델 학습 결과를 저장
  • hidden_layer_sizes 파라미터: 5개의 은닉층을 만들고 각 계층별로 지정된 개수만큼의 노드를 할당

다층 퍼셉트론

5. LinearDiscriminantAnalysis(선형 판별 분석, Linear Discriminant Analysis)

  • 분류 모델과 차원 축소까지 동시에 사용하는 알고리즘
  • 선형 으로 데이터를 분할 하는 방법
    • 직선을 이용해 데이터를 분할
    • 기본적으로 베이즈 정리를 활용하여 선형 판별 함수를 구함
  • 입력 데이터의 target(label) 클래스를 최대한 으로 분리할 수 있는 축을 찾음
    • 클래스 간 분산(between-class-scatter)과 클래스 내부 분산(within-class-scatter)의 비율을 최대화 하는 방식으로 차원 축소를 적용
    • 클래스 분산은 최대한 크게, 클래스 내부 분산은 최대한 작게 분리

선형판별분석(LDA)

6. RidgeClassifierCV(RidgeClassifierCV)

  • 릿지 분류기 + 교차 검증
  • 릿지(Ridge)
    • 규제 의 일종으로, 학습이 과적합되는 것을 방지하고자 일종의 penalty를 부여하는 것임
      • 규제 강도를 크게 하면 가중치가 더 많이 감소되고(규제를 중요시함), 규제 강도를 작게 하면 가중치가 증가함(규제를 중요시하지 않음)
    • 각 가중치 제곱의 합에 규제 강도를 곱한 값($Error=MAE+αw^2$)

7. K-NeighborsClassifier

  • 최근접 이웃 알고리즘

8. Extra Trees Classifier

  • 극도로 무작위화(Extremely Randomized) 된 기계 학습 방법
  • 데이터 샘플 수와 특성 설정까지 랜덤
  • 랜덤 포레스트(RandomForest)와 동일한 원리를 이용 -> 많은 특성을 공유함
  • 랜덤 포레스트에 비해 속도가 빠르고 성능도 미세하게 높음
  • Bootstrap 샘플링을 사용하지 않고 전체 특성 중 일부를 랜덤하게 선택해 노드 분할에 사용
    • 무작위 분할 중 가장 좋은 것을 분할 규칙으로 선택

Extra Trees 정리

4️⃣ Model Update

1. LGBM(Light Gradient Boosting Machine)

  • 지난 주 개념정리 부분을 참고해 주세요.

References

5️⃣ 모델 최적화_HyperOpt

1. 베이지안 최적화

  • objective function(목적 함수)를 최대/최소로 하는 최적 해를 찾는 기법

2. HyperOpt

  • 베이지안 최적화의 접근 방식을 취하여 하이퍼 파라미터를 최적화하는 기법
    • 목적 함수하이퍼 파라미터 쌍을 대상으로 여러 모델들을 만들어 평가 -> 순차적으로 업데이트 하면서 최적의 조합을 찾아내는 방식
  • 단계>
    1. 목적 함수 정의: 최대화/최소화 하고 싶은 것
    2. 도메인 영역: 최적화의 대상을 지정
    3. 알고리즘 지정(최적화 지정): 과거 모델링 결과를 활용하여 다음 하이퍼 파라미터 값을 제안
    4. 최적화 수행
      • fmin() 함수
      • 지정해 주는 알고리즘과 최대 반복 횟수 등을 변경해 보면서 성능 차이를 모니터링

HyperOpt를 활용한 하이퍼 파라미터 튜닝

6️⃣ 차원 축소(Dimension Reduction)

  • 이후 내용 추가할 예정..