Take it easy

サッカーブログです。

xG(ゴール期待値)はサッカー分析の福音となり得るのか?

f:id:tomex-beta:20200906101006p:plain



プレーを数字で表現する

サッカーとはプレーの良し悪しを評価するのがとても難しいスポーツです。例えば、シュートが上手いあの選手は他の選手と比べてどれくらい上手いのか?非常にボールを扱う技術の高いあの選手は、チームの勝利にどれだけ貢献できているのか?DFラインを統率する能力がある選手が居ると居ないでは何が変わるのか?そのチームにとって、適切なDFラインの高さとはどの辺りなのか?

要するに、サッカーというスポーツは数値で表現するのが非常に難しいということです。そのため、これまでは定量評価でなく、もっぱら定性評価が行われてきました。

近年になってその流れが変わりつつあります。技術の進歩により、プレーを細かく記録しデータとして扱えるようになりました。データ集計を専門的に行うOPTAという企業は有名ですよね。

そうして大量に集めたデータを統計的に扱い、新しい指標を作り出すことでプレーの評価を行う試みが進んでいます。書籍「モダンサッカーの教科書2」では色々な指標が紹介されていました。xG(Expected Goal)もその指標の一つです。

という訳で、xGについて勝手に色々書いていこうと、そんな内容です。参考にしたネタは最後に置いときます。

 

 

xGとは何なのか?

Expected Goal、略してxGは、ゴール期待値と呼ばれる指標です。

ゴール期待値とは、「あるシュートチャンスが得点に結びつく確率」を0~1の範囲で表した指標

と説明されています。

もう少し説明を加えると、シュートという事象が起きた時、それに至るまでのプレーを細かく分析することで、そのシュートが得点に結びつく可能性がどれだけあったのか、どれだけいい状態でシュートを打てたのか、という事を示した数値です。

どれだけ良い状態であるか?というのを表すために、色々なデータを使います。

・ゴールまでの距離、角度

・シュートした身体の部位(右足、左足、頭、その他)

・プレーパターン(FK、CK、PK、スローイン、通常のプレー、速攻)

・大きなチャンスであるか

・一つ前のプレーがミスか意図的なプレーか

などなど、この他にも多くのデータが使用されています。

このデータを元に、平均的な選手がシュートを打った場合、どれくらいの確率でゴールになるのか、という数値がxGとなります。

 

ここで注意すべきなのは、xGはシュートというプレーが主になっているという事です。

クロスボールがぎりぎり届かなかった、スルーパスを受けてゴールキーパーを抜こうとしたけど失敗した、ライン裏に抜け出してシュートを決めたけどオフサイドになった、などの得点チャンスと言えるけどシュートにならなかったプレーに関しては、xGとして計測されません。

だから、シュート期待値=優れたチャンス構築力とは成らないのかなと思います。(似たような現象を表しているのは確かですが・・・)

 

 

xGの算出方法

【機械学習に関する専門的な話が出てくるので、飛ばしてもらっても構いません。】

ではxGは実際どのようにして算出されているのでしょうか。

フットボールラボではGBDTという手法を用いていると説明されています。

ゴール期待値の算出は勾配ブースティング決定木(GBDT)という機械学習の手法を用いて行いました。機械学習とは人工知能の一分野であり、「コンピュータがデータの特徴を学習し、自らタスクを実行すること」を指します。

 勾配ブースティング決定木(GBDT)なのですが、実際には更に派生させたXGBoostかLightGBMのどちらかを使っているんじゃないかな?って想像しています。

まずGBDTってなんやねんという話になります。GBDTは機械学習の一種で教師あり学習に分類されます。まずは教師あり学習について説明しましょう。

教師あり学習の流れをxGに合わせて説明しますと、

入力されたパラメータ(シュートの位置、角度、部位など)から、変換器(モデルとよばれます)の中で計算をして、ゴールが決まるか決まらないかを数値で算出します。0.3とか0.76とか、どっちか言うとゴール決まるっぽい、みたいな数字で出てきます。

 そしてモデルが算出した結果が実際に起きている答えとどれだけ差が出ているかを調べます。xGの場合では、ゴールが決まる(1)か決まらないか(0)と比較します。そして、差が大きく出てきてしまった場合、モデル内部の計算を少しづつ調整していきます。

f:id:tomex-beta:20200906102843p:plain

入力→算出→結果と比較→モデル内部の計算を調整、という流れを繰り返して、上手いこと答えを出してくれるモデルを作成します。モデルに問題を何度も解かせて、勉強して賢くなってもらいます。この作業の流れから、教師あり学習と呼ばれています。

Optaでは30万本以上のシュートデータを使っているようです。一般的にデータが多いほど、データの質が高いほど、出来上がるモデルの性能は良くなるとされています。

 

巷で話題のAIというのには、ほぼ間違いなく機械学習の技術が使われています。機械学習でできることは、入力データに対する予測や分類などです。今のところは人の様な複雑な思考を再現しているとは言えず、まだまだ遠い先の未来の話でしょう。技術者的には機械学習をそんなに大げさに言わないで欲しいなあと言うのが本音です。

 

話を戻しまして、GBDTは現在の機械学習界隈では流行している手法です。AI技術でいうと、ディープラーニングというのが有名だとは思いますが、経験上、使われている印象はそれほどありません。高い精度を出すためにはデータ収集と計算にお金と時間がものすごく掛かるので、環境によって採用できないケースが多々あります。

GBDTは先の図でいうと、モデル内部の計算にあたります。計算が速い!精度が良い!汎用性が高い!と評判です。牛丼屋みたいですね。

 

一生懸命に学習してもらって賢いモデルを作った後は、xGの算出に利用します。

f:id:tomex-beta:20200906103221p:plain

モデルにパラメータを与えてやると、それっぽい値を出してくれます。この数値をxG、ゴール期待値と呼んでいます。

このように幾つかのパラメータを入力して、目的となる数値を予測することを回帰分析と読んでいます。

ようやくここまでこれました。お疲れさまでした。

 

GBDTのアルゴリズムを真剣に理解しようとすると大変です。自分もよく分かってないです。使いこなすことが出来ると、データ分析の仕事が出来るようになります。頑張ってみてくださいw

 

・参考資料

GBDTの仕組みと手順を図と具体例で直感的に理解する

https://www.acceluniverse.com/blog/developers/2019/12/gbdt.html

 

 

1つでは無いxG

xGの算出方法は一つではありません。幾つかのバージョン違いがあります。これはxG算出に使われている機械学習という技術の特徴によるもので、入力するパラメータ(シュートした場所、角度など)は独自で決めることができるからです。

入力パラメータを追加、変更する事によって、算出されるxGの値が微妙に異なってくる様です。異なるといっても、ほんの少し値が変わるだけで、そこまで神経質に成らなくても良さそうです。

 

OPTAによるxG算出方法を見てみましょう。

www.youtube.com

動画の中で紹介されているパラメータを書き出してみると

・アシストの種類

・へディグのシュートであるか

・大きなチャンスであるか

・ゴールまでの距離と角度

になります。これが全てでは無いと思いますが、意外とシンプルなパラメータを使っています。

OptaのxGには弱点があり、味方、相手の位置がパラメータとして入力されていない事です。シュートに対する守備側の位置など、シュート成功率に大きな影響がありそうなのですが、OPTAでは選手の位置情報をデータとして残していないらしいので、使いたくても使えなかったというのが実情のようです。

 

それに対して「Fantasy Football Fix」で作成されたxGで使われているパラメータは

・ゴールまでの距離と角度

・プレーパターン(通常プレー、速攻、CK、PK、直接FK、スローイン)

・シュートした部位(左足、右足、頭、それ以外)

・意図したアシストか、ミスによるものか

・2つ前までのアクション(パス、クロス、コーナーキック、セーブ、インターセプトなど30種類のアクション)

・前に起きたアクションの位置

など、OPTAに比べると詳細なデータを使っています。

その代わりと言っては何ですが、入力しているシュートデータは、プレミアリーグの13/14シーズンと18/19シーズン5万7千本です。OPTAの30万本に比べるとかなり少ないです。

 

サイト内でxGと性能差を表にしていました。

Training data Validation data xG model RMSE
2013/14 to 2016/17 2017/18 Our full model 0.270
? 2017/18 Opta 0.274

 RMSEがxGの性能を表しています。小さいほど性能が良い事を示しています。この表が言いたいのは、OptaのxGよりも俺が作ったxGの方が出来が良いんだぜ!といった所でしょうか。(0.270と0.274なんで、誤差と言えるぐらいの差かもしれませんが・・・)

 

フットボールラボではJリーグのデータを使ってxGを算出しています。

www.football-lab.jp

紹介されているパラメータは

・ゴールへの距離、角度

・シュートに使った身体の部位

・プレーパターン(オープン、PK、FK)

・直前のプレーの種類

・相手選手が1m以内にいるか

・ブロックに入った相手選手の人数

・相手ゴールキーパーの位置

など、とされています。

個人的には守備側の位置をパラメータとして取っているのはポイント高いです。

  

 

xGの使い方

では実際にxGをどうやって使うのか。幾つか挙げていきます。

・xGと実際にゴールした数を比較すると、選手が持っているシュート技術もしくは運の良さが分かります。xGの合計よりも多くゴールを決めている選手は、おそらく平均以上のシュート技術を持っています。

・チーム平均xGの差分(ゴール期待値から被ゴール期待値を引く)から、その試合でのチームのパフォーマンスを示す事ができます。xG差が正であったにも関わらず負けていた場合は、チームが不運と踊ってしまったか、それとも平均以下のシュート技術しか無かった事を示します。

 ・xGは、フリーキック、コーナーキック、オープンプレーなど、様々な状況でのチーム能力を評価するために使用できます。例えば、チームのフリーキックからの非ゴール期待値(xGA)よりも実際の失点が多いチームは、セットプレーの守備がおそらく平均以下であろと想像されいます。

・チームのxGA(非ゴール期待値)は失点の防ぐ能力を示すことができます。得点確率の高いシュートに対して制限を掛けて防ぐ事が出来ていると、xGAよりも失点は少なくなるでしょう。

 ・互いのチームのxGを図示することで、勝敗とは別にどちらが優位に試合を進められていたのかが分かり、監督の言い訳としても使えるでしょう。

f:id:tomex-beta:20200905171229p:plain

https://www.betconnect.com/blog/expected-goals-explained-xg-football-betting/

このようにxG、xGAと実際のスコアを比較することで、チームの能力を測ることが出来るとされています。

 

 

xGの有用性についての議論

英国sky sportsの番組内で、サッカージャーナリストであるジェフ・ステアリング氏は次の様に発言しています。

「xGはサッカーの歴史上、最も意味のないデータだ!一体それが何を教えてくれるんだ? 試合はすでに3-1で終わってる。その後にゴール期待値を示す意味はあるのか?」

www.youtube.com

サッカー分析コミュニティの間では、xGが最も役に立たない統計では無いことをおそらく理解しているよ。ポゼッション率があるからね。という英国ジョークが有るとか無いとか。

シュートが打たれた瞬間、ゴールか否かの結果は即座に決まります。xGとはすでに結果が決まっている事象に対する確率を算出することになります。xGは後追いの数字でしかありません。果たしてその数値に意味はあるのでしょうか?ジェフ・ステアリング氏がこの主張をするのも理解できるというものです。

 

 次にOPTAが出しているデータを見てみます。16/17シーズンで記録された、PKを除いたxGとゴール数の表です。

f:id:tomex-beta:20200903160713j:plain

https://www.optasports.com/news/advanced-metrics-expected-goals/

 注目したのは、ルカク、ハリー・ケインです。

ルカク xG:14.53 ゴール数:24。

ケイン xG:13.86 ゴール数:24。

xGよりも遥かに多くゴールを決めており、得点力の高い選手だと言えます。

一方で、アグエロ xG:16.58 ゴール数:16。
xGの解説をそのまま信じるならば、ケイン、ルカクの両名はアグエロよりもずっとシュートが上手いことになります。本当なのでしょうか?ピッチ上の実態を表しているのでしょうか?

 

もちろん本当の意味で、ルカクとケインはアグエロよりもずっとシュートが上手いという可能性はあります。

ただ、この手の直感的に変な値(10ゴールというのは1シーズンでは大変大きな値です)を見た時にまず調べるのが、入力されたデータが正しいかどうかです。桁が間違っていないか、データが入れ替わっていたりしないか。単純ミスはデータ分析あるあるだったりします。なんせ3500万のデータですから、正しいデータで有ることをチェックするのも大変です。

 

次に考えられるのが、試行回数の少なさによる偏りが出てしまっているのでは無いかと思います。

確率だの統計情報というのは、元になる母集団が多ければ多いほど信頼性は増します。その観点でいうと、シュート数の46や52というのは試行回数としては心もとない数字です。結果として予想された数値と大きく離れてしまっているのでは無いかと考えています。コインを10回投げた時に表が7回出てしまっても、まったく不思議では無いということです。

もし、シュートを1シーズンに2000本くらい打っていたら、かなり信頼できる数値が出てきそうな気はしていますが現実的に無理ですね。よって、xGの数値の偏りはどうしたって出てきてしまいます。

現在、フットボールラボではxGの数値をチーム平均でしか出していません。選手単位でxGを出そうとすると、シュート数が少なすぎて極端な数値が出てしまうからだと予想しています。

 

昔なつかしのロベルト・カルロスが凄いゴールを決めています。

www.youtube.com

この時代にはもちろんxGはありませんでしたが、このシュートのxGは0.01くらいでは無いでしょうか。ゴール数との差も好成績が出ているはずです。数値だけ見て判断してしまうと、「この選手めっちゃシュートうまいやんけ!ほんならFWにしたろ!」とウイイレ的発想をしてしまうかもしれません。

 

 

京都サンガのxGを考察

xGを使った考察として、京都サンガFCをサンプルにやってみましょう。

f:id:tomex-beta:20200905180808p:plain

・チーム平均xGが1.488。この数字はリーグ上位で、それだけ攻撃が上手く行っている事を示しているのでは無いか?

・平均xGと実際のゴールの差分はー0.388。マイナスになっているという事は、ウタカは現在得点トップであるが、実際にはもっと得点を取れるチャンスがあったのではないか?

・差分がー0.388。これはチーム平均の値であるため、ウタカ以外の選手がシュートを外しているのでは無いか?

・点が取れていないのは運が悪いだけだよ。HAHAHA。

 

ぱっと思いつく限りで、これだけ仮説が出てきました。ここからは、実際に試合を分析して、どんな事象がxGの数値につながっているのかを調べて行くことになります。

 

個人的な感触としては、xGは指標として扱うには心もとない所があります。しかし、その数値から仮説を立て、チームを分析し解析まで辿り着く、きっかけになるのでは無いかと考えています。

 

 

参考資料

フットボールラボ J2 ゴール期待値

https://www.football-lab.jp/summary/team_ranking/j2/?year=2020&data=expected

 

EXPECTED GOALS EXPLAINED: WHAT IS XG AND HOW CAN IT GIVE YOU AN EDGE IN FOOTBALL BETTING?

https://www.betconnect.com/blog/expected-goals-explained-xg-football-betting/

 

xG Explained

https://fbref.com/en/expected-goals-model-explained/

 

How we calculate Expected Goals (xG)

https://www.fantasyfootballfix.com/blog-index/how-we-calculate-expected-goals-xg/

 

Premier League Projections and New Expected Goals

https://cartilagefreecaptain.sbnation.com/2015/10/19/9295905/premier-league-projections-and-new-expected-goals

 

ゴール期待値 算出プログラム(python)

https://github.com/krivonogov/xg