ゼファーネットのロゴ

機械学習を使用して勝利のサッカー戦略に関する洞察を得る

日付:

イリノイ大学アーバナシャンペーン(UIUC)は、 Amazon 機械学習ソリューション ラボ UIUCのフットボールコーチがゲームをより効率的に準備し、勝利の確率を高めるのを助けるため。

以前は、コーチは、特定のダウンと距離、およびチームがフィールドにいた場所でのプレーのタイプのみを特徴とするゲーム計画シートを作成することにより、ゲームの準備をしていました。 その結果、コーチングスタッフは重要なシナリオや機会を見逃す可能性があります。 さらに、ゲームプランニングシートの準備は手動のプロセスであり、各ゲームの新しいデータが毎週テンプレートに入力されていたため、時間がかかり、拡張性がありませんでした。

現在のコールシートテンプレートにさらに洞察を追加し、コーチがゲームをよりよく準備できるように、チームはカレッジフットボールにおけるUIUCの深い専門知識と機械学習(ML)機能のコーチングを組み合わせました アマゾンセージメーカー UIUCのサッカーの試合結果を予測する最先端のMLモデルを作成します。 さらに、UIUCコーチには、モデルが推奨する主要機能に基づいて自動生成されたビジュアルゲームプランニングシートが用意されました。 これにより、ゲームの戦略についてより多くの洞察が得られ、ビジュアルゲームプランニングシートの生成にかかる時間が2.5時間から30秒未満に短縮されます。

「UIUCアスレチック部門はAmazonML Solutions Labと協力して、機械学習の力を利用して、フットボールの試合の計画と準備に含める機能に関するデータ主導の洞察を導き出しました」と、アナリティクスのディレクターであるKingsleyOsei-Asibeyは述べています。 &UIUCのフットボールテクノロジー。 「主要なML / AIプラットフォームとしてAWSを選択することで、ML Solutions Labの専門家と協力して、AmazonSageMakerを使用して新しく興味深い洞察を作成することができました。 今では、過去のゲームのデータを手動で分析するのに何時間もかかったことがすべて自動化されており、Fighting Illiniのコーチは、ボタンを押すだけで、さまざまな対戦相手に対して毎週ビジュアルゲームプランニングシートを生成できます。」

この投稿では、Amazon ML Solutions Labがフットボールの試合中にプレイに関連する機能を使用して、プレイの結果を予測し、 XGブースト コーチが分析する機能を推奨するための重要度スコア機能と相関分析。

Amazon SageMaker XGBoostライブラリを使用して機能の重要度スコアを生成する方法を示すコードスニペットを提供します。

データとモデル

2018-2019カレッジフットボールシーズンのUIUCのゲームデータを使用し、ゲーム内統計、プレイの場所、UIUCの戦略、対戦相手のプレイタイプなどの24の機能をカバーしました。 これらの機能を使用してXGBoostモデルをトレーニングし、攻撃的なプレーが勝敗をもたらすかどうかを予測しました。 UIUCのコーチは、さまざまな状況に基づいて、プレーの勝敗を決定しました。

次に、機能の重要度スコアを使用して主要な機能を選択しました。 特徴を選択する目的でモデルを使用して、特徴によって表される重要なシナリオを推奨しました。 XGBoostを選択した理由は、複雑な分布をもつ機能で良好に機能し、機能の重要度スコアを出力して、機能の選択とモデルの解釈に役立てるためです。

主な目標は、サッカーのコーチがゲームで使用できるようにするためのゲーム計画シートを生成することでした。 成功したプレーと失敗したプレーを分類してコーチに通知し、ゲーム計画シートを生成するようにトレーニングされた、パフォーマンスの高いMLモデルの機能を使用しました。

次の図は、ゲームプランニングシートのMLベースの機能を生成するために行われたモデリング手順をまとめたものです。

行はシャッフルされ、重複しないXNUMXつの折りたたみに分割されます。これらは、さらにトレーニングセットと検証セットに分割されます。 各フォールドのトレーニングセットは、 Synthetic Minority Oversampling Technique(SMOTE)アルゴリズム。

各折りには、次の手順が含まれます。

  1. 新しい機能スコアを計算します。
    1. バランスのとれたトレーニングデータセットでXGBoostモデルをトレーニングし、機能の重要度を抽出する 偉業_i.
    2. バランスのとれたトレーニングデータセットの特徴とラベルのピアソンの相関を計算する 正しい.
    3. 絶対相関と機能重要度の積として新しい機能スコアを計算します feature_score_i = feat_i * abs(corr_i).
  2. に基づいて機能を並べ替えます 偉業_スコア.
  3. 上位5つの機能、上位10の機能などを使用して複数のXGBoostモデルをトレーニングし、各モデルの検証バランスの取れた精度を評価します。
  4. 最もパフォーマンスの高いモデルを選択します。

10つのフォールドのそれぞれからモデルをトレーニングした後、重要な機能をマージしました。 XNUMXつ以上のフォールドの上位XNUMXのフィーチャー(フィーチャー重要度スコアでランク付け)に表示されるフィーチャーは、ゲーム計画シートに選択されます。

新しい機能スコアの計算

前のセクションでは、新しい機能スコアの作成について説明しました。 この新しい機能スコアには、非線形のXGBoostモデルの機能の重要性と、直接的な線形相関が組み込まれています。 この新しい機能スコアの目的は、プレイの勝敗に関連する機能を選択することです。 機能スコアが高い機能は、XGBoost機能の重要度が高く、ラベルとの線形相関が高いため、ゲーム計画シートに関連する機能です。

このセクションでは、コードスニペットを使用した新機能スコアの作成について詳しく説明します。 機能スコアは、トレーニング済みのXGBoostモデルからの機能の重要性と、機能とラベルの線形相関の組み合わせです。

まず、Amazon SageMakerの組み込みアルゴリズムを使用してXGBoostモデルをトレーニングします。 Amazon SageMakerは、すべての開発者とデータサイエンティストに、MLモデルをすばやく構築、トレーニング、デプロイする機能を提供するフルマネージドサービスです。 Amazon SageMakerが提供する いくつかの組み込みアルゴリズム (XGBoostなど)さまざまな問題タイプ。

このトレーニングされたXGBoostモデルは、UIUCサッカーチームがプレーに勝つために重要な機能を最初に調べます。 次のコードを参照してください。

from sagemaker.amazon.amazon_estimator import get_image_uri
container = get_image_uri(region, "xgboost", "0.90-1") hyperparameters = { "max_depth":"7", "eta":"0.01", "gamma":"3", "min_child_weight":"6", "subsample":"0.6", "silent":"0", "objective":"binary:logistic", "num_round":"330"
} instance_type = 'ml.m5.2xlarge'
output_path = "s3://{}/{}/{}/output".format(bucket, "model", "xgboost") job_name = "xgboost-".format(i+1) + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime()) estimator = sagemaker.estimator.Estimator( container, role, hyperparameters=hyperparameters, train_instance_count=1, train_instance_type=instance_type, train_volume_size=5, output_path=output_path, sagemaker_session=sagemaker.Session()
) train_input = sagemaker.s3_input( s3_data="s3://{}/{}/{}".format(bucket, "train", "balanced_train_data.csv"), content_type='csv'
)
estimator.fit({"train": train_input}, job_name=job_name)

Amazon SageMakerは指定された場所にモデルオブジェクトを保存します Amazon シンプル ストレージ サービス (Amazon S3)バケット。 機能スコアを計算するには、ダウンロードする必要があります model.tar.gz Amazon S3からAmazon SageMakerノートブックインスタンスへ。 次のコードを参照してください。

model_path = "s3://{}/{}/{}/output/{}".format( bucket, "model", "xgboost", "xgboost-2019-06-16-09-56-39-854/output/model.tar.gz"
) fs = s3fs.S3FileSystem() with fs.open(model_path, "rb") as f: with tarfile.open(fileobj=f, mode="r") as tar_f: with tar_f.extractfile("xgboost-model") as extracted_f: xgbooster = pickle.load(extracted_f)

最後に、新しい機能スコアを次のように計算します feature_score_i = feat_i * abs(corr_i)。 相関関係の絶対値を使用するのは、プレーの勝敗に関連する機能を見つけることであり、非常に負の相関関係は、機能とプレーを失うUIUCサッカーチームの間に強い線形関係があることを示しているためです。 次のコードを参照してください。

#the xgbooster object replaces the original feature names with 'f0,...f'
#here we create a mapping to obtain the original feature names
feature_name_map = dict(zip([f"f{i}" for i in range(len(feature_names))], feature_names)) features_importance_df = pd.DataFrame([xgbooster.get_fscore()], index=["weight"]).T
features_importance_df["normalized_weight"] = features_importance_df["weight"]/features_importance_df["weight"].sum()
feature_importances_df["feature_name"] = feature_importances_df.index.map(feature_name_map) correlation_df = pd.DataFrame(balanced_train_data_df[FEATURES].corr()[LABEL])
correlation_df["absolute_corr"] = correlation_df[LABEL].abs() feature_score_df = pd.merge( features_importance_df, correlation_df.reset_index(), left_on="feature_name", right_on="index"
) feature_score_df["feature_score"] = feature_score_df["absolute_corr"] * feature_score_df["normalized_weight"]

次のグラフは、 feature_score vs.rank 折り目ごとに。 y軸の値が高い場合、その機能はXGBoostモデルにとって重要であり、プレイの勝敗に高い相関があることを示しています。 このプロットの重要なポイントは、機能番号105で新しい情報が追加されなかった後の追加機能であり、使用する機能の最適な数は0〜105です。

モデルの評価

XGBoostモデルで50分割交差検証を実行し、50つのベースラインモデルと比較しました:すべてのサンプルを損失と予測するモデル、すべてのサンプルを勝利と予測するモデル、勝敗をXNUMX/XNUMXで割り当てるランダムモデル機会。

データセットは失われたとラベル付けされたプレーの56%、勝者と44%と不均衡であるため、モデルをナイーブベースラインと比較する際に、クラスの重みを考慮した重み付き精度メトリックを使用しました。 50つのナイーブベースラインすべての加重精度は65.2%であり、XGBoostの平均加重精度は15倍にわたってXNUMX%であり、モデルがベースラインと比較してXNUMX%改善されていることを示しています。

次のプロットは、検証のバランスの取れた精度と、各折り目の上位のフィーチャの数を示しています。 各データポイントについて、XGBoostモデルはトップを使用してトレーニングされます n 機能、場所 n x軸の値であり、検証のバランスの取れた精度を得るために、フォールドの検証データセットで評価されます。 それぞれの最高パフォーマンスモデルは、プロットに注釈が付けられています。 たとえば、Fold 0の最もパフォーマンスの高いモデルは、上位の60個の機能(前のプロットで決定)を使用しており、検証のバランスが取れた精度は64.8%です。 105を超えるランク付けされた機能は評価されません。前のプロットは、105を超えるランク付けされた機能はほとんど情報を提供しないことを示しているためです。

次の表は、概要を示した手順の結果をまとめたものです。 フォールドごとに、機能選択を実行した後、平均3.2%増加して、バランスの取れた精度のパフォーマンスが向上します。

フォールド すべての機能を備えた検証BA 最高の機能を備えた検証BA 機能の数
0 視聴者の38%が 視聴者の38%が 60
1 視聴者の38%が 視聴者の38%が 105
2 視聴者の38%が 視聴者の38%が 30
3 視聴者の38%が 視聴者の38%が 25
4 視聴者の38%が 視聴者の38%が 10
AVG 視聴者の38%が 視聴者の38%が

モデルをさらに改善するために、 Amazon SageMaker自動モデル調整 ハイパーパラメータ最適化用。 前のステップで特定した最良の機能を各フォールドに使用し、各フォールドでベイズ最適化を20回繰り返しました。

XNUMXつのフォールドにわたる機能選択とゲーム計画シートの推奨

最終目標は、XGBoostモデルから派生した機能を使用して新しいゲームプランニングシートを作成することです。 高性能モデルは、抽出された機能がプレイの勝利に関連していることを示しています。 トレーニングステージの出力は、フォールドごとにXGBoostモデルになります。 10つ以上のフォールドの上位XNUMXのフィーチャー(フィーチャー重要度スコアでランク付け)に表示されるフィーチャーは、ゲーム計画シートに選択されます。

UIUCコーチングスタッフとこれらの機能を確認した後、コーチは新しいゲームプランニングシートを設計して、対戦相手がディフェンスをプレイする方法に基づいて最高のプレイタイプを分析しました。 これらの追加機能は、ゲーム開始前にコーチがより多くのシナリオを準備するのに役立ち、プレイヤーは対戦相手に対してより速くより正確に反応することができます。

まとめ

UIUCのフットボールコーチは、Amazon ML Solutions Labと提携し、MLモデルを作成して、パフォーマンスと戦略に関するより深い洞察を得ました。 このソリューションはまた、ゲームの準備をする際のコーチの時間を節約します。 コーチは、さまざまな状況で呼び出す最適なプレーを手動で分析する代わりに、MLモデルが推奨する機能を使用してこのプロセスを自動化できます。

このモデルは、UIUCのサッカーチームとその対戦相手向けにカスタマイズされており、UIUCのコーチが次のシーズンのより多くのシナリオに備えるのに役立ちます。 さらに、プレイヤーがゲームの状況に正しく迅速に反応するのに役立ちます。

製品やサービスでのMLの使用を促進するサポートが必要な場合は、 Amazon MLソリューションラボ プログラム。


著者について

 ニナド・クルカルニ は、Amazon Machine Learning SolutionsLabのデータサイエンティストです。 彼は、ビジネス上の問題に対処するソリューションを構築することで、顧客がMLとAIを採用するのを支援しています。 最近では、スポーツや自動車の顧客向けの予測モデルを構築しています。

Dアリアナ・ゼン・リュー は、Amazon Machine Learning SolutionsLabのデータサイエンティストです。 彼女は、顧客がスポーツ、メディア、教育でビジネスを加速するのに役立つMLモデルを構築しました。 彼女はより多くの人々にデータサイエンスを紹介することに情熱を注いでいます。

Tイアン・チャン Amazon Machine Learning Solutions Labのデータサイエンティストです。 彼は、MLおよびAI技術を適用することにより、顧客がビジネスの問題を解決するのを助けます。 最近では、調達とスポーツのNLPモデルと予測モデルを構築しています。

出典:https://aws.amazon.com/blogs/machine-learning/gaining-insights-into-winning-football-strategies-using-machine-learning/

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?