Model Selection & Evaluation Metric

seodalzzz·2023년 10월 8일
0
post-thumbnail
  • 2022년 12월 개인적으로 진행했던 토이프로젝트를 정리하여 블로그에 재업로드합니다.

5. Model Selection

본 프로젝트의 목적은 두가지입니다.

(1) 2Q 종료 후(전반전 종료 후) 홈팀의 기대 승률 예측

(2) 경기의 최종 승부 예측

1) Logistic Regression

Logistic Regression의 경우, 데이터가 각 클래스에 속할 확률을 모델링합니다. 따라서 Logistic Regression을 사용하면 홈팀이 승리할 확률 즉, 홈팀의 기대 승률에 대한 예측값을 구할 수 있습니다.- (1)

  • 또한 threshold를 설정하여 기대 승률을 기반으로 승리 여부도 예측할 수 있습니다. threshold는 0.5로 설정하여 홈팀의 기대 승률이 0.5 이상일 경우 홈팀이 승리한다고 예측합니다. - (2)

Logistic Regression은 본 프로젝트에서 진행하고자 하는 Binary calssification 에 매우 적합합니다. 만약 Logistic Regression에서 Lasso regularization을 적용하게 되면 feature selection을 기대할 수 있습니다.

2) Random Forest (Classification)

reference : 파이썬 머신러닝 완벽 가이드 (권철민/위키북스)

RandomForest는 Tree 기반의 앙상블 모델입니다. Bagging방식을 사용하여 Train 데이터 셋으로부터 복원 추출을 통해 여러 개의 boostrap 데이터 셋을 만들고, 각 데이터셋에 대한 Decision tree를 만들어 결과를 예측합니다. 분류 문제에서는 각 Decision 트리들의 결과를 voting하여 다수결로 최종결과를 선정합니다.

(1) Decision Tree
  • parent node에서 특정 feature에 대한 값을 기준으로 binary split을 진행합니다. 이 때 split에 사용하는 feature와 split 기준은 child node의 imppurity 가 최소가 되도록 설정합니다.

  • Decision tree가 Train data set에 대해 fitting되고 나면, 어떤 test data가 들어 왔을 때 그 data는 decision tree의 split 기준에 따라 root 노드 부터 터미널 노드까지 분기해나갑니다. 데이터가 터미널 노드에 도달하면, 해당 터미널 노드에 속하는 train data 들 중 가장 많은 data가 해당하는 class로 test data의 class를 예측합니다.

(2) Bagging
  • 하나의 data로 부터 복원추출을 통해 여러 개의 boostrap data를 생성합니다. 이후, 각 boostrap data 별로 각각 모델을 fitting합니다. 이후 test data가 들어 오면 각 모델의 예측 class를 다수결 원칙으로 투표하여 최종 예측 class를 결정합니다.

랜덤포레스트는 Bagging방식을 사용하며, 이 때 각 Boostrap data를 이용하여 fitting하는 각각의 모델이 Decision Tree인 경우를 말합니다. Decision Tree에서는 임의로 선택된 일부의 feature를 사용하여 split을 진행합니다.

sklearn의 RandomForestClassifier는 predict_proba() 메소드를 제공합니다. fitting된 RandomForestClassifier에서 해당 메소드를 사용하면 데이터가 특정 class로 예측될 확률을 return하므로, 기대 승률에 대한 예측값을 구할 수 있습니다. -(1)

RandomForestClassifier의 예측 결과를 가지고 승부 예측 또한 진행할 수 있습니다. -(2)

6. Evaluation Metric

다음과 같은 총 4개의 evalutaion metric을 고려했습니다.

  • Accuracy
    • Accuracy = (True Positive + True Negative)/(Total number of data)
    • 올바르게 예측한 데이터의 비율
  • Precision
    • Precision = (True Positive)/(True Positive + False Positive)
    • True로 예측한 data 중 실제로도 True인 데이터의 비율
  • Recall
    • Recall=(True Positive)/(True Positive + False Negative)
    • 실제로 True인 data 중 True로 예측한 데이터의 비율
  • f1-score
    • fl-score = 2*(precision x recall)/(precision + recall)
    • precision과 recall을 함께 고려한 metric

본 프로젝트에서는 단순히 전반전만의 데이터를 가지고 승부를 예측하고, 실제로 그것이 의미있는지를 확인하는 것이 목적이기 때문에 승리를 패배로 잘못 예측하거나, 패배를 승리로 잘못 예측하는 것에 대해 두 경우의 가중치를 다르게 설정할 필요가 없습니다. 즉, precision과 recall이 큰 의미가 없는 것이죠. 따라서 accuracy를 중점적으로 model을 평가하고자 합니다 . 따라서 Hyper parameter tuning도 accuracy를 사용하여 진행합니다.

  • 다른 예로 암 여부를 판단하는 경우에는 실제로 암인 데이터를 암이 아니라고 예측하지 않는 것(recall)이 암이라고 예측한 데이터 중에서 암이 아닌 데이터가 포함되지 않는 것(precision)보다 중요합니다.

0개의 댓글