劣化爆打は作れるだろうか?〜テンパイ率推定編〜

戻る

1.はじめに

爆打ニキはパクれるだろうか?爆打の劣化手法で相手テンパイ率の推定をやってみる。

2.論文

牌譜を用いた対戦相手のモデル化とモンテカルロ法によるコンピュータ麻雀プレイヤの構築(R1681の時の爆打) http://www.logos.ic.i.u-tokyo.ac.jp/~mizukami/paper/GPW_paper_2014.pdf これの「4. 相手プレイヤの聴牌予測」の劣化版が作れるか試す。

3.方法

鳳凰卓の牌譜から特徴量を生成する。特徴量は以下にした。パーサーは自作した。 ・フーロ数 ・手出しの数 ・順目 ・ドラの種類を切ったか ・最後に手出しした牌とそのひとつ前に手出しした牌の組み合わせ 値は1か0のbooleanで表す。特徴ベクトル数は1413になった。 特徴ベクトルを決める際の注意点としてロジスティック回帰は一般化線形モデルであるため、 特徴量を決める際にはテンパイ率と相関がありそうな要素にする必要がある。 教師データについて、リーチしている時、4フーロしている時はテンパイ率が100%のため除外した。 また自分以外の誰かがリーチしている局面では降りている可能性があるので、それも除外した。 教師データ数は40万局面になった。 ロジスティック回帰にはLIBLINEARを使用した。 参考)http://www.mwsoft.jp/programming/nlp/liblinear_start.html -s 6 オプションでtrainするとロジスティック回帰が出来る。 出力されたmodelファイルでpredictする際に -b 1 オプションをつけると確率が出力される。 ROC曲線の描画はRのEpiライブラリを使用した。 参考)http://minato.sip21c.org/swtips/ROC.pdf テストデータには教師データとは違うを用意した。 ROC分析は単回帰分析の一つである。そのためテンパイしているかどうか(1 or 0)のデータとpredictで求めた予想確率のデータを用意した。テストデータ数は2568になった。
AUCが0.824と高い数字を出しているが、教師データにテンパイが含まれている局面が少なすぎるためあまり信用出来るデータではないだろう。 教師データを何倍にも増やす必要がある。現在のデータが40万行で3.6GB程なので外付けハードディスクが必要である。外付けハードディスクが必要である。お金が必要である。お金(略)

4.反省

特徴ベクトル数に対して教師データが少なすぎて重みが0のベクトルが出来てしまっている 。爆打ニキは1770万局面を学習しているため、教師データ数をものすごく多くしなければならない。

5.感想

・一応巡目が遅い程、ドラを切っている程、フーロしている程テンパイ率が高くなるような学習は出来た。 ・全部パクるのは超大変。

6.ていうか

この論文の爆打オープンソースになってるやんけ! http://www.logos.t.u-tokyo.ac.jp/~mizukami/ の[4] 水上 直紀,鶴岡 慶雅. 牌譜を用いた・ホ戦相手のモデル化とモンテカルロ法によるコンピュータ麻雀プレイヤの構築,[slide][paper][code] の[code]
inserted by FC2 system