kyleskom/NBA-Machine-Learning-Sports-Betting

NBA sports betting using machine learning

기계학습을 활용한 NBA 스포츠 베팅

무엇인가 – 과거 팀 통계와 스포츠북 오즈를 기반으로 기계학습 모델을 훈련하여 NBA 경기 승자(머니라인)와 총점(오버/언더)을 예측하는 파이썬 프로젝트입니다. 또한 각 베팅의 기대값을 계산하고 케리 기준(Kelly Criterion)을 사용해 베팅 금액을 제안합니다.

주요 구성 요소

  • 데이터 수집Get_Data는 NBA API에서 매일의 팀 통계를 스크래핑하고, Get_Odds_Data는 Sportsbook Review (SBR)에서 지원되는 베팅 회사(FanDuel, DraftKings 등)의 오즈와 스코어를 가져옵니다. 둘 다 원시 데이터를 SQLite 데이터베이스에 저장합니다.
  • 특징 공학Create_Games는 두 데이터베이스를 병합하고, 휴식 일수와 같은 파생 필드를 추가하여 훈련용 매치업 테이블을 생성합니다.
  • 모델 – 사전 구축된 스크립트로 두 가지 유형의 모델을 훈련합니다:
    • XGBoost(경사 부스팅 트리): 머니라인과 총점 예측에 사용.
    • 간단한 순전파 신경망(TensorFlow): 동일한 작업에 사용.
    • 로지스틱 회귀 스크립트도 제공됩니다.
  • 예측 스크립트main.py는 오늘의 일정을 가져와 동일한 특징 세트를 구성하고, 저장된 모델을 로드한 후 다음을 출력합니다:
    • 각 팀의 승리 확률.
    • 제시된 오즈에 베팅했을 때의 기대값.
    • 선택적으로 케리 기준에 따른 베팅 금액 비율.
  • 웹 UI – 최소한의 Flask 앱(Flask/)을 통해 브라우저에서 최신 예측을 둘러볼 수 있습니다.

실행 방법

# 종속성 설치
pip install -r requirements.txt

# 데이터 업데이트 (처음 한 번만)
cd src/Process-Data
python -m Get_Data
python -m Get_Odds_Data
python -m Create_Games

# 모델 훈련 (선택 사항 – 사전 훈련된 모델이 포함되어 있음)
cd ../Train-Models
python -m XGBoost_Model_ML --dataset dataset_2012-26 --trials 100 --splits 5 --calibration sigmoid
# …원하는 다른 스크립트도 동일하게 반복

# 오늘의 예측
cd ../../
python3 main.py -xgb -odds=fanduel   # XGBoost 사용 및 FanDuel 오즈 자동 가져오기

-nn를 추가하면 신경망 모델을 사용할 수 있으며, -A로 모든 모델을 실행하거나 -kc로 케리 기준 베팅 금액을 표시할 수 있습니다.

일반적인 사용 사례 – 스포츠 베팅 애호가가 매일 스크립트를 실행하여 스포츠북이 과소평가한 NBA 팀을 데이터 기반으로 식별하고, 케리 기준 기반의 자금 관리 전략에 따라 최적의 베팅 금액을 결정합니다.

제한 사항

  • 모델은 현재 시즌까지의 데이터로 훈련되었으며, 라인업 발표 후 발생한 부상과 같은 실시간 정보는 반영되지 않습니다.
  • 신경망 스크립트는 특정 데이터셋 경로에 하드코딩되어 있어, 사용자 정의 데이터를 사용하려면 수동으로 수정이 필요합니다.
  • 정확도는 스크래핑된 통계와 오즈의 품질에 달려 있으며, 소스 API의 변경으로 인해 파이프라인이 손상될 수 있습니다.

기여 방법 – README는 모델 동작이나 데이터 파이프라인을 수정하는 기여를 환영합니다. 기여자는 문서도 함께 업데이트해야 합니다.


위 정보는 리포지토리의 README에서 직접 가져온 것으로, 추가 기능은 추측되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트