분데스리가 1, 2부 리그의 4개 시즌 데이터를 사용하여 골대에 안착한 모든 슛(골로 이어지든, 선방으로 이어지든)을 포함하는 머신러닝(ML) 모델을 Amazon SageMaker를 통해 학습시켰습니다. 이 모델은 슛의 파생된 특성을 사용하여 골키퍼가 슛을 성공적으로 막아낼 확률을 생성합니다. 모델에서 고려하는 몇 가지 요소는 골대까지의 거리, 골키퍼까지의 거리, 슛 각도, 슛 위치와 골대 사이의 선수 수, 골키퍼 위치, 예상 슛 궤적입니다. 관찰된 슛의 초기 몇 프레임을 사용하여 슛의 궤적을 예측하기 위해 추가 모델을 활용합니다. 예측된 슛의 궤적과 골키퍼의 위치를 바탕으로 xSaves 모델은 골키퍼가 공을 막을 확률을 평가할 수 있습니다.
골키퍼가 기록한 슈팅과 실점한 슈팅의 xSaves 값을 모두 더하면 한 경기 또는 시즌 동안 골키퍼가 기록해야 할 예상 세이브 수가 산출됩니다. 이를 실제 세이브 수와 비교하면 골키퍼 효율성이 산출됩니다. 즉, 골키퍼 효율성이 양수인 골키퍼는 해당 골키퍼가 예상보다 더 많은 슈팅을 막아냈다는 것을 의미합니다.
*xSaves 값: 각 슛에 할당되는 값으로 골키퍼가 슛을 막아낼 확률을 측정하는 데 사용됩니다. xSaves값이 0.9인 경우, 10번 중 9번은 골키퍼가 막아낸다는 뜻입니다.
Bundesliga Match Facts는 이벤트 데이터와 위치 데이터를 모두 사용합니다. 위치 데이터는 경기 중 언제든지 선수와 공의 위치(x-y 좌표)에 대해 카메라가 수집한 정보로, 속도는 25Hz입니다. 이벤트 데이터는 슛 온 타깃과 같은 유용한 속성과 함께 수작업으로 레이블이 지정된 이벤트 설명으로 구성됩니다. 슛 온 타깃(득점 또는 저장된 골) 이벤트가 수신되면 저장된 위치 데이터를 쿼리 하여 공의 타이밍과 위치가 이벤트와 일치하는 프레임인 동기화 프레임을 찾습니다. 이 프레임은 이벤트 데이터를 위치 데이터와 동기화하는 데 사용됩니다. 동기화가 완료되면 공의 궤적을 추적하는 후속 프레임을 사용하여 공이 골대에 들어갈 위치를 예측합니다. 또한 슛 당시의 골키퍼 위치는 물론 공과 골대 사이의 수비수 수, 공의 속도 등 다양한 요소도 고려됩니다. 그런 다음 이 모든 데이터는 머신런닝(ML) 모델(xGBoost)로 전달되며, 이 모델은 Amazon SageMaker Severless Inference에 배포되어 슛이 저장될 확률에 대한 예측을 생성합니다.
BMF 로직 자체(ML 모델 제외)는 AWS Fargate 컨테이너에서 실행됩니다. 모든 xSaves 예측에 대해, 예측이 페이로드로 포함된 메시지를 생성한 다음, Amazon Managed Streaming for Apache Kafka(Amazon MSK)에서 실행되는 중앙 메시지 브로커를 통해 배포됩니다. 또한 이 정보는 향후 감사 및 모델 개선을 위해 데이터 레이크에 저장됩니다. 그런 다음 Kafka 메시지의 콘텐츠는 AWS Lambda 함수를 통해 Amazon Aurora Severless 데이터베이스에 기록되어 Amazon QuickSight 대시보드에 표시됩니다.