본 프로젝트의 목적은 두가지입니다.
(1) 2Q 종료 후(전반전 종료 후) 홈팀의 기대 승률 예측
(2) 경기의 최종 승부 예측
Logistic Regression의 경우, 데이터가 각 클래스에 속할 확률을 모델링합니다. 따라서 Logistic Regression을 사용하면 홈팀이 승리할 확률 즉, 홈팀의 기대 승률에 대한 예측값을 구할 수 있습니다.- (1)
Logistic Regression은 본 프로젝트에서 진행하고자 하는 Binary calssification 에 매우 적합합니다. 만약 Logistic Regression에서 Lasso regularization을 적용하게 되면 feature selection을 기대할 수 있습니다.
reference : 파이썬 머신러닝 완벽 가이드 (권철민/위키북스)
RandomForest는 Tree 기반의 앙상블 모델입니다. Bagging방식을 사용하여 Train 데이터 셋으로부터 복원 추출을 통해 여러 개의 boostrap 데이터 셋을 만들고, 각 데이터셋에 대한 Decision tree를 만들어 결과를 예측합니다. 분류 문제에서는 각 Decision 트리들의 결과를 voting하여 다수결로 최종결과를 선정합니다.
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를 예측합니다.
랜덤포레스트는 Bagging방식을 사용하며, 이 때 각 Boostrap data를 이용하여 fitting하는 각각의 모델이 Decision Tree인 경우를 말합니다. Decision Tree에서는 임의로 선택된 일부의 feature를 사용하여 split을 진행합니다.
sklearn의 RandomForestClassifier는 predict_proba() 메소드를 제공합니다. fitting된 RandomForestClassifier에서 해당 메소드를 사용하면 데이터가 특정 class로 예측될 확률을 return하므로, 기대 승률에 대한 예측값을 구할 수 있습니다. -(1)
RandomForestClassifier의 예측 결과를 가지고 승부 예측 또한 진행할 수 있습니다. -(2)
다음과 같은 총 4개의 evalutaion metric을 고려했습니다.
본 프로젝트에서는 단순히 전반전만의 데이터를 가지고 승부를 예측하고, 실제로 그것이 의미있는지를 확인하는 것이 목적이기 때문에 승리를 패배로 잘못 예측하거나, 패배를 승리로 잘못 예측하는 것에 대해 두 경우의 가중치를 다르게 설정할 필요가 없습니다. 즉, precision과 recall이 큰 의미가 없는 것이죠. 따라서 accuracy를 중점적으로 model을 평가하고자 합니다 . 따라서 Hyper parameter tuning도 accuracy를 사용하여 진행합니다.