algonote

There's More Than One Way To Do It

トクモン(特徴量モンスター)で学ぶデータサイエンス

カードゲームで遊んだメモ

f:id:hiromichinomata:20200329172433j:plain:w200

トクモンとは

特徴量モンスターは反社会人サークルが販売しているカードゲーム。Kaggleのタイタニックコンペをベースにしており、特徴量(トクモン)とアルゴリズムを組み合わせて生存者予測のスコアを上げることを目指す。

基本カードは

  • 特徴をあらわすトクモンカード
  • 機械学習の手法を表すアルゴリズムマシンカード
  • 前処理相当ののうりょくアップカード

で構成されており、ゲーム終了時に専用サイトで自身の手札を組み合わせて作ったモデルの「てきちゅうりつ」を計算できる仕組み

f:id:hiromichinomata:20200329172433j:plain

ゲームの進行

基本となる進行は

  1. 山札または廃棄済みのカードからカードを計2枚引く
  2. 手札からカードを1枚捨てる

の繰り返し

ターンごとに+1枚ずつ手札が増えていき、特殊カード「ちんぼつ」を誰かが引いたらゲーム終了.

トクモンと最初に聞いた時ポケモンカード風なTCGを想像したがどちらかというとトランプに近い。

詳細なルールは公式を参照

コツ

計算サイトでパラメーターをいじってどうやったら勝てるかを軽く考えてみた。

  • アルゴリズムマシン

Kaggleなどではアンサンブルなどもよく使われるが、本ゲームでは1つしか選べない。基本はGBDTが前処理不要で外れ値に堅牢でそれに近い決定木系がスコア安定、、、といってもデータサイエンティスト以外には通じずらいので絵が縦横まっすぐの境界のやつを選ぶ

  • トクモン

トクモンはかずトクモンとカテゴリトクモンに大別されるが一体だけ でんせつとくもん 「ポートばんごう」がおりそれが強い。同じようなトクモンの場合、欠損値が少ないものを選ぶとよい。

  • のうりょくアップ

組み合わせられるカードに制約があり使いどころが難しい。使うとスコアが下がることもある。トクモンにカード振った方がスコアが安定する。

ゲームデザインの分析

Kaggleでよく使われるLightGBM/XGBoostは特徴量は基本積めば積んだだけスコア上昇に寄与し、大きなモデルになりがち。このゲームもある程度追従しており、加点だけで減点対象はない。

大富豪だとスコア逆転などがあるが、メトリックを反転させる要素はなく、再計算チャレンジが唯一ある逆転要素。

自分がテストプレイした限りだとのうりょくアップカードの寄与が薄く、ゲームのウェイトがトクモンに偏りがちだった。また、タイタニックコンペベ由来の似たような特徴量も多く、一番有名なコンペではあるもののもしかすると別の独自コンペベースの方が特徴量の種類も豊富でゲームの複雑性も増すかもしれない。

また、バグなのか乱数要素なのか計算が安定しないのも気になった。

追記: 現実の課題に近くなるよう乱数は非固定とのこと

ローカルルールのアイディア

放課後さいころ倶楽部よろしくゲームを勝手に改良(改悪?)するアイディア

  • カードの間引き

プレイ人数2-4人想定のゲームだが人数少ないとトクモン過多になるのでそこの調整。またKaggler同士でプレイする場合は一番強いアルゴリズムや強い特徴量を間引いて、普段思考停止で使っているアルゴリズム以外だとどういう挙動になるか楽しむ

  • 手札オープン、アッタク

誰が何のカードを持っているかがわかると戦略性が増すのでいいかもしれない。手札1枚捨てると他のプレイヤーのカード1枚を一定の確率で取得できるサイコロを振れるとか

  • External data, ライブラリのバグ

再計算チャレンジの代わりにゲームの最後に特徴量、アルゴリズムに減点要素を追加。トクモンが実はコンペで使ってはいけないExternal dataだったことがわかり0点、ライブラリのバグにより特定のアルゴリズムは予測がまびかれるなど。

トクモンを増やしすぎると最後に減点の可能性がある仕様にして検討要素を増やす

所感

プログラミング教育必修化の流れで子供の頃からこういった教材で意欲を刺激するもよさそうですね。

企業だと合宿や4半期ごとに納会やる時にこういうレクリエーションやってもいいかもしれません。

真にテックドリブンな組織を目指すなら全ての職種の人がSQLを書ける、全てのソフトウェアエンジニアがデータサイエンス・機械学習の素養がある世界を目指してもいいのではと最近思っています。

booth.pm