見出し画像

Wyscout APIを契約して最初に行ったこととその感想

最初のnote記事なので自己紹介や目標、夢について書くべきなのかもしれませんが、だるいのですっ飛ばして本題へ。

購入背景

Wyscoutはサッカーのプロチームの現場で働く人であれば知らない人はいないサービスでしょう。ざっくり言えばあらゆる試合の映像を集め各選手各プレー毎に検索できスカウティングに活用できるツールです。詳細は検索するかチャット系AIに聞いてください。

その下地には多くのデータが存在しているので、Wyscoutはデータサービスでもあります。一般的なWyscoutの契約の場合、ウェブ上もしくはPDFなどでデータレポートを見る形になると思いますが、今回はそちらの話ではなく「データそのもの」にアクセスできるAPIサービスについてのお話。今夏にWyscout APIのイングリッシュプレミアリーグのEventsパックを契約したので、それについて最初に行ったことと感想について書き残します。

同データを購入した主な目的は、

  • これまで自分はJリーグのデータに多く触れたものの海外はほぼないこと

  • 欧州サッカーを見始めた時からよく見ていたリーグの1つがイングリッシュプレミアで且つ現時点では世界最高峰のリーグとなっていること

  • 海外リーグを扱うデータサイト、データ分析記事は多く存在するが、割と似たり寄ったりなサイトが多いため自分で作ってみたくなったこと

の3点となります。データ会社は多く存在しますが、Wyscoutを選んだのは個人でも購入できることと、金額がギリギリ買える範囲(?)だったことと、トライアル時にチェックを行い使えるクオリティにあると判断したためです。チェックの内容については後で書きます。

Wyscout APIのドキュメントはこちら。

こちらにサンプルファイルもありますぞ。


データ会社と契約したら最初にすべきこと

 どの世界もデータを出して説明をすればそれが正しいかのような空気になりますが、そのデータがどう取得されどう管理されているかが不明であればデータといえど価値は薄まります。これはサッカーも同様で、ピッチ内でボールに対して行われたアクションをどう定義した上でデータを取得しているかが分からなければ、分析として利用するのは難しいです。例えば「シュート」は最も分かりやすいアクションですが、サッカーに詳しい人を5人集めて試合を見ながらシュート数を自分でカウントした場合、試合内容によりますが数本のズレが発生するでしょう。単にカウント漏れの場合もありますが、シュート性のクロスやすぐブロックされたシュートをカウントするかどうかの基準でブレることがあります。特に日本の公式記録のシュート基準は厳しいため、データ会社が取得した数値より少なくなる傾向があります。ゴール数はもちろん変わらないのでシュートのゴール率を計算すると公式記録側が高くなるでしょう。こうなると海外の大会などでデータ会社が出したゴール率と取得段階で差分が生じるため比較が難しくなります。分かりやすい「シュート」ですら差分があるのですから他のアクションはさらに差分が生じます。参考までに昨年のワールドカップから1試合、3種類のデータを下図に並べてみました。

W杯ドイツvs日本の3種類のスタッツ

このような違いが存在するため、データを用いてサッカーの分析を行いたい場合、データを手にした後に実際のサッカーの試合映像とプレーデータが紐づいた映像を見て、どういうアクションをどうデータ化しているかを把握する必要があります。ウェブサイトに載っている数値ではこういった確認は難しいですが、映像と紐付いたサービスや今回のようなRAWデータにアクセスできるAPIであれば、すべてのアクションに対してタイムスタンプが付いているのでそのチェックが可能です。

映像xデータの確認は以下の2通りが考えられます。

  1. データを選択してそのシーンを映像検索する

  2. フルマッチ映像を見ながらRAWデータを順番に追う

1はRAWデータを購入せずともwyscoutなど従来の映像検索サービスでも可能です。例えば「デュエル」を選択すればそのシーンだけが再生リストに入り連続で見ることができるでしょう。気になるアクションを1つ1つ見ていけば、その会社がどういうシーンをデータ化しているのか把握できます。ただこのやり方はあくまでデータ化されているアクションを参照しているだけなので、どのシーンを除外しているか(データとしてカウントしていないか)は確認できません。

「サッカーの分析」と「サッカーのデータ分析」を確実に紐付けたいのであれば2の確認方法を推奨します。こちらのやり方は時間がかかりますが、「このシーンはこのデータ会社はデュエルとしない」といったケースを把握することができますので、データの誤用は減らせるでしょう。さらに2の確認方法はデータ定義のみならず、選手判別やアクションの位置など、そのデータ会社のデータ精度がどれほどのものかを確認する上でも重要です。また昨今データの取得は人力から画像(動画)解析による自動取得に切り替わりつつありますが、結局それも人が作ったものですので、取得方法がどうであれこの確認は欠かせません。

配信サービスが主流となって試合映像の録画が難しくなりましたが、古い試合の場合、たまに公式がフルで試合映像をアップしていたりします。プレミアリーグの場合は以下2試合を参考にしました。(API契約の場合、映像はWyscoutから提供されません)

こちらはチェルシー公式チャンネルにアップロードされている22-23のアストンビラvsチェルシー。

こちらはニューカッスル公式チャンネルにアップロードされた同シーズントッテナム戦の開始21分の動画。

Youtubeは再生位置を指定できるので、映像の前半(後半)開始時間を取得してタイムスタンプと合わせれば、下図のようにアクション毎に映像リンクを作れます。

グレー部分がAPIからのデータ。黄色列がyoutubeのリンク

自分の分析に合わせた集計のための下準備

 
どうデータを取っているかを把握したら次は分析をするためにどう集計するかについて考えます。ウェブサイト掲載や分析記事等を執筆するための素材が最終目的地になりますが、そのためにはまずAPIから得たデータを自分の分析方法に合わせてカスタマイズすることと、ウェブで読み込むのに適したフォーマットにすることの2つの変換処理が必要になります。ここで書くのは前者の部分です。

データ把握の感想をざっくりまとめると下記のようになりました。

  • ボールを受けてから数回タッチがあっても移動が短ければパスのみがデータ化される(ワンタッチ判別不可)

  • デュエルは他社よりも広めに取得している傾向にあり、その中で分類されている

  • プレッシャーデータは定義ゆれを感じる(似たようなシーンでもカウントされていたりされていなかったり)

  • インターセプションも広めに取得。相手のプレーをカットして保持したケース以外でもシュートorクロスブロックのようなコントロールが難しいもインターセプションとなる。サブタイプで分類は可能

  • ポゼッショングループ化のロジックが不安定。詳細は後述

  • カウンターが少ない

イベントデータによる分析はオフザボールの選手位置が存在しないため真面目にサッカーの分析で活用しようとするとすぐ限界に達してしまいますが、ないものねだりをしても仕方ないので、あるデータでどう調理するかを考える必要があります。そういった点ではデュエルを広く取ってくれているのはとてもありがたいです(他社のデータはデュエル判定が厳しく少なめになっており、多少接触があってもカウントされないケースがあります)。デュエルを広く取ることで相手選手位置との関係が分かりますし、一つ前のプレーと結び付けることで、どういったアクションによって生まれたデュエルかを分類できます。またWyscoutにはアクセラレーションというイベントデータがあり、加速しながらスペースへボールを運んだ際に主にカウントされます。これもまた相手との距離関係を把握できるのでありがたいです。プレッシャーのデータもありますが、こちらは定義揺れを感じたのでちょっと活用が微妙なのですが、このあたりの組み合わせは活用できるでしょう。

「ポゼッション」というデータがありますが、このデータは同一チームによる連続したアクションを一つにまとめたデータです。データスタジアム社では「攻撃」(参考:FootballLAB 「プレーのつながりをグループ化した「攻撃」データについて」)、StatsPerform社では「シーケンス」(参考:朝日新聞「サッカーW杯32代表をデータ分析 優勝候補は、日本の決勝進出は?」)、StatsBomb社は同名の「ポゼッション」がそれぞれ存在しますが、定義はそれぞれ違います。Wyscoutの場合は同一チームが攻めていればアウトプレーとなっても同じ番号で続いてしまうケースがあったりなかったりしており、ボールキャリーやドリブルのような状況でも相手のプレーに挟まれたアクションの場合、そのチームのポゼッションとなっていなかったのが気に入らなかったので、このポゼッションデータは使わずプログラムで新たに作ることにしました。(ドリブルやキャリーができるくらいの時間があるのであれば、もうそのチームに攻撃権が移ったとして良いという判断)

連続したアクションのグループ化

この定義の詳細はウェブサイト完成時に何らかの形でまとめますが、ストリームを生成後に、各ストリームの開始の種別(どの種類+エリアでのセットプレーかorどのエリアでのオープンプレーか)、シュートなどキープレーに至ったか、どのエリアで終わったか、ストリームの時間、1つ前のストリームとの紐付け、などを集計。点差やスコアの状況別でもデータが出せるようゴールフラグから処理し、さらにフォーメーションのデータ群からどのストリームで誰がどのポジションで出場しているかを取得して、特定選手が出ている時or出ていない時のデータ集計もできるよう処理に加えました。

元々のWyscoutのポゼッションの種別にはカウンターが存在しますが、これがかなり少なく基準が厳しい模様。ただ実際のところ「カウンター」は一般的なワードではありますが、明確に基準を作るとなると人によって異なるので難しい面はあります。加えてイベントデータでは全員の選手位置情報がないので、後ろで奪ってすぐ前に展開したとしてもそれがカウンターかどうかは判断が難しい面があります。とりあえず、元々カウンターとしているものはそのまま残し、コーナーなど選手が密集するようなセットプレーの直後で奪って即リリースした場合も新たにカウンターとして処理するようにしましたが、活用するかどうかは未定です。

ほか、データ順が一定になっていなかったり、アウトプレータイミングのタイムスタンプズレ(数秒レベル)など気になる点はありました。従来の使い方であればおそらく気にならない点でしょうが、「ストリーム」を作る上では少々問題だったりします。例えば、連続でデュエルが生じた際にデュエル勝ち→デュエル勝ち→デュエル負け→デュエル負けみたいなケースです。こういった場合はそこそこ頻度がある場合は専用の修正処理を走らせ、年一レベルのバグのような事象の場合は手動修正対応しました。

こういった処理を加えることで単なるデータ集計ではなく自分が考える分析に合わせたデータ集計に近付きます。既存のデータサイトは基本的に1試合全体を集計したものが多いので、自分のサイトはシチュエーションに合わせた集計ができればと考えています。今回はここまで。

この記事が気に入ったらサポートをしてみませんか?