ニッキーの日記

気が向いたときに趣味のことを書くブログです!最近は旅行や食べ歩きなどのお出かけ、ゲームを楽しんでます!

Bli2君、時間ごとのチャンピオン重要度を理解する!?「Bli2君プロジェクト」マイナーアップデート【LoL】【機械学習】

先日始動したLJLの勝率予想モデル ブリッツ君を模倣する「Bli2君プロジェクト」ですが、ここ2日で若干ですが重要なアップデートを果たしました。本記事では、変更点とその成果について紹介していきたいと思います。

 

 

まず最初に、使用する機械学習のモデルについては変更が無いので、本記事での説明は割愛させていただきます。過去の記事リンクを下につけますので、そちらをご確認ください。

 

プロトタイプ1号の課題:チャンピオンはそれぞれ強い時間があるが、それを知らない...

LoLをされたことがある方は分かると思いますが、チャンピオンはそれぞれパワースパイク(影響力がグンと上がる瞬間)を迎えるタイミングが異なっていたり、ゲーム後半にかけてパワーがスケーリングするかどうか、といった特徴を持っています。

例えば、下の図の例で言うと、ルシアン(Lucian)は序盤強いチャンプの代表格で、またカミールは後半にかけてスケーリングしていく強力なチャンプです。(Pathc10.19)それぞれの強い時間帯であれば、もっと上位に来ても不思議ではありません。

一方で、重要度1位のグレイブスというチャンピオンは、現在メタのファーム系ジャングラーで、ファームすることで自信のスケールも悪くないし、どの時間帯でもレーナ―を助ける動きもできるため、ゲームの中心でいる時間が長いと思われます。そういった部分が繋がって、高い評価を得ていると考えられます。

f:id:YNicki:20201015025558p:plain

Bli2君プロトタイプ1号が学習したチャンピオンの重要度Top20。再掲。

そのような仕様で作っていないので当然なのですが、プロトタイプ1号はチャンピオンの強い時間帯が分かっていません。それは、試合の勝利予想をするうえでハンディキャップになると考えたので、ここ2日で改善を試みました。

 

プロトタイプ1号からの変更点:シンプルなアイデアで解決!

時間的な特徴をモデルに学習させるためには、どこかに時間の要素をいれる必要があります。そこで以下の2つのアイデアを試してみました。

  • 予測対象を、Blue or Redの2値分類から、どちらのチームがどの時間帯(序盤・中盤・終盤)で勝つかの6値分類に変更。
  • 試合時間の長さに応じて学習データを3つ(early game, middle game, late game)に分割し、対応して3つのモデルを学習させる。それぞれBlueかRedのどちらが勝つか予測する2値分類のモデル。

両方を試した結果(=>これで2日かかっています)、後者の方が良さそうだということが分かったので、そちらについて説明していきたいと思います。

 

下準備:試合の長さはどうやって分ける?

まず、学習データを分割する基準となる試合時間の長さをどうやって求めるか決めなければいけません。また、BlueとRedで勝利しやすい時間帯にズレがあった場合、ややこしいことになりそうなので、そこもチェックする必要があります。

今回、データにはKR・EU・NAの3地域のチャレンジャー・Patch10.19のデータを用いて行いました。試合時間の分布は以下の図のようになっています。

f:id:YNicki:20201018083728p:plain

KR・EU・NA3地域のチャレンジャー・Patch10.19の試合時間の分布を示した図。横軸の単位はsec。

この分布に関して、3地域の間に大きな差異は認められませんでした。なので、ここでは3地域をまとめて扱います。だいたい25分~(1500sec~)あたりにピークが来ていて、右に裾の厚い(late gameに該当)分布になっていますね。

f:id:YNicki:20201018084215p:plain

BlueチームとRedチーム、それぞれ勝利したときの試合時間を示した箱ひげ図。

また、試合時間に関してBlueチームとRedチームで大きな差がないことが、上の図からわかりました。

学習データを3分割したいので、とりあえず3分位点を調べたところ、1497sec, 1758secで、約25分と30分ですね。試合時間の分布の特徴も影響して、第1三分位数と第23分位数の間が短くなっています。筆者の個人的な感覚として、30分以上がlate gameというのは違和感があるので、35分に変更しました。おそらく35分でも違和感があると思いますが(40分45分を過ぎた辺りから長い試合だと思います)、学習データのサンプル数の兼ね合いもあったのでご容赦ください...

ここまでくれば、あとはやるだけです。果たしてBli2君は改善されたのかどうか。結果について見ていきます!

 

時間帯によって、モデルの間で重要なチャンピオンの違いが出た!

記事になっていることからお察しの通り、面白い結果が得られました!

f:id:YNicki:20201018085433p:plain

試合時間25分まででBli2君が重要と学習したチャンピオンtop25。

まず、試合時間が25分までのチャンピオンの重要度ですが、記事の最初の方で紹介した通りルシアン(Lucian)がtopに来ましたね。BlueとRedでルシアンの重要度が大きく乖離している理由としては、LoLのBanPickの仕組みが影響していると思われます。1st pickは必ずBlueチームなので、現在メタのopチャンプは必ずそこで取られます。つまり、ルシアンがBlueチームで使われることが多いことが、Bli2君が学習した重要度の差につながっていると考えられます。

その他の、これまで重要度ランキングで見なかったチャンピオンで面白いのは、3位に入っているシェンと21位のシンドラでしょうか。シェンは味方に飛んでいくultがあるので、レベル6以降序盤マップ全体に影響力を持つチャンピオンなので、上位に来るのも頷けます。シンドラは、かなりナーフをくらってSoloQの勝率は良くないと聞きますが、プロシーンを見ると序盤のレーン主導権を握りたい場合に依然としてpickされることが多く、他の時間帯と比較して重要度が高くなっていますね。

 

f:id:YNicki:20201018085528p:plain

試合時間25分から35分まででBli2君が重要と学習したチャンピオンtop25。

中盤に関しては、先ほどのルシアンの重要度が相対的にやや下がっています。また、リリア(Lillia)・グレイブス(Graves)・ニダリー(Nidalee)といった、現在メタのジャングラーの重要度が上昇しています。試合時間25分までは、レーンで相手に勝つ・相手を壊すという意味で、レーンの強いチャンピオンの重要度が高かったと思われますが、試合中盤ではきっちりオブジェクト(ドラゴン・ヘラルド・バロン)を獲って、ゲームに勝つというのが重要視されていると考えられます。

サプライズ登場だったのが、Blueサイドセト(Sett)が重要度1位に来たことですね。セトはかなりナーフをPatch10.19以前にかなりナーフを受けていて、単体でキャリーするというのは難しい現状にあります。ですが、Worlds2020のグループステージを見ても分かる通り、依然としてmid・top・supのフレックス運用ができるチャンピオンです。そういった面から、BanPickで先出する際のセトというのはまだ重宝されているのではないか、と筆者は推測しています。

 

f:id:YNicki:20201018085606p:plain

試合時間35分以降でBli2君が重要と学習したチャンピオンtop25。

late gameの重要度に関しては、筆者が期待していた通りにはなりませんでしたね。GPやオリアナ(Orianna)、カシオペア(Cassiopeia)といったスケーリングするチャンピオンが初ランクインしているのは、狙い通りに言ったポイントです。

記事冒頭で、スケーリングするチャンピオンの例で挙げたカミールが順位を下げたのは予想外でした。カミールが勝てるようになるには、それほど時間がかからないということでしょうか。

また、late game最強と謳われるブラッドミアや、無限スケールのあるセナ・キンドレッド・サイオン辺り、武器強化でチームのスケールがいいオーンがランクインしていないのは残念です。序盤耐えてlate game構成にするというのは、プロシーンと比較してSoloQではやや難しいのかもしらません。

 

ここまでそれぞれ考察してきましたが、狙っていた時間帯ごとにチャンピオンの重要度をBli2君に学習させる、というのはうまくいったと思います。

 

最後に:Worldsの試合の勝率予測をTwitterでしています、見てね!

この記事では、ここ2日かけて行ったBli2君のマイナーアップデートに関して、解説・考察を行っていきました。予測結果を説明する要素がかなりそろってきたなと感じています。

筆者のTwitterアカウントでは、このBli2君プロジェクトを応用してWorlds2020の試合の勝率予想をon-timeで行っています。↓例えばこんな感じです。

 気になる方は、ぜひフォローしてチェックしてみてください。よろしくお願いします!