ブログトップ

今日から始めるゲーム統計学

tsubame30.exblog.jp

かつては麻雀およびエロゲのデータを統計解析して遊んでました。今では日本酒に夢中です。

チートイツは、待ち枚数が一番少ない単騎待ちでのテンパイが確定している役なだけに、「待ち換えやオリを見据えてダマにすべきか」「リーチかけて押さえつけるべきか」の感覚判断がなかなか難しい役だったりします。

そんなチートイドラドラ。
北HAZさんという方がリーチ判断に関する統計を出してくださっています。
【牌譜解析】チートイドラドラはリーチ? : HAZの研究する人生

これは、鳳凰卓牌譜において「チートイツをテンパイした場面」を抜き出し、「リーチをした場合」「リーチをしなかった場合」のそれぞれについての局収支を出し、それらの平均を比べたものです。

北HAZさんの統計によれば、「チートイドラドラはリーチした方が局収支がよくなる」という結果が得られています。この統計をソースにした、チートイドラドラはリーチした方がいいんだ、という言説が多く見られます。

しかし、一方で、「こういった統計から、正着判断できるかどうかはわからないんじゃないの」という指摘があります。麻雀AIの研究をされているkmo2さんは、ブログにてこのような記事を書かれています。

統計的手法の問題点: マッタリプログラミング日誌

>そもそも、鳳凰民というのは相当にレベルの高い集団であり、
>立直して不利ならば、立直なんてしないわけです。
>実際に立直したデータには、それだけ立直した方が有利である状況のデータばかりが
>そろっているわけです。


「優秀なプレイヤーが、リーチの方が良いだろうと判断した局面」だけ抜粋してるんだから、優秀な結果(局収支が上回ってる)が出ること自体は当然なんじゃないの?というのが、kmo2さんの意見です。



例えば、「どこの会社の車が好きですか?」というアンケートをとり、その統計をとったとして、A社という回答が一番多かった、という結果を得たとします。
これだけ見ると、A社が多くの車のブランドの中で一番人気であるかのように思えます。

しかし、これが「A社の営業所、ディーラーでとったアンケート」だったとしたらどうでしょうか?
そりゃあ、A社が好きな人多いに決まってるじゃん、って思いますよね?
そんな統計であれば、結果からA社が一番人気である、なんてことは当然判断できません。

統計において最も重要なことの1つは、「母集団のランダム化」です。
この場合は、アンケートをとる対象を可能な限りランダムにすることが必要であるということです。
そうすることによって得られた統計は、十分な意味を持つでしょう。

kmo2さんの指摘は、これと同じことで、「リーチをした場合」というサンプリングの段階で、既に「リーチが優秀になる局面」が多く選択されているはずだろう。これで局収支が大きくならないはずがない。ということです。



また、ランダム化がされていないと「因果関係の方向」がわからない、という問題も隠れています。

ただいま僕のTLでは「児ポ法」の話で盛り上がっていますが、
例えば、性犯罪を犯した者とそうでない者という条件で「性処理目的で児童ポルノを所持しているかどうか」
をそれぞれ数えて調べたとして、性犯罪を犯した者の方がポルノ所持率が高かったとします。
これだけ見ると、児童ポルノが性犯罪をほう助してるんだ! 規制だ! 規制! となりそうですが、
じゃあ、児童ポルノ規制したら性犯罪減るのか、っていうとこれだけではなんにもわかりません。


なぜなら、児童ポルノ所持うんぬんとは全く違う「性的暴力性」みたいなものが先にあって、だからこそ性犯罪を犯し、その発散先として児童ポルノを所持していた、という因果関係の方向も考えられるからです。
もし、こっちの因果関係の方が正しかった場合、規制したところで性犯罪は減らないどころか、性犯罪を減らすために行った規制によって発散先を失い、却って性犯罪が増えるなんていう展開になる可能性まで出てきます。

このように、因果関係の方向まではわからない。
これをちゃんと調べようと思ったら、他の条件はまったく同じだけど、「児童ポルノの所持」だけが異なっている
(「性的暴力性」などの他の要因の程度がランダムである)集団同士を比べる必要が出てくる。



先ほどのリーチ判断の例で言えば、もしかしたら
「局収支が高い(低い)ような手だったから鳳凰民がリーチ(ダマに)することが多かった」のかもしれないわけですよ。
因果関係の方向が逆の場合だって成り立ってしまう。
そして、この結論がなにか正着戦術に使えるかというと……難しいですよね。



このkmo2さんのブログ記事に対して、北HAZさんはこんなコメントをなさっています。

>的確にリーチ判断なされているならば、ダマにする時もこっちが有利だという的確な判断がなされていて、
>その結果の優劣というのは収支または和了率、放銃率、ひいては最終着順などに必ず影響が出ると思っています。



「リーチをした場合」というサンプリングの段階で、既に「リーチが優秀になる局面」が多く選択されている
のはそうなんですが、「ダマをした場合」は、既に「ダマが優秀になる局面」が多く選択されているはずなので、
結果的に「リーチ」と「ダマ」の比較はできるのではないか、というのが北HAZさんの意見です。
『鳳凰民がこっちの方が良さそうだと思って選択した』という点ではリーチもダマも同じで、
結果的に母集団は揃っている、ちゃんとランダム化されているのではないか
、ということです。



正直申しまして、母集団のランダム化がされているのかどうかという点は、僕には判断できません。
統計において、ランダムサンプリングされているかっていうのはものすごく重要なことなのに、
リーチ・ダマにした判断以外の部分がどのくらい揃っているかどうかなんてわからない。



もうすでにランダム化されているかもしれませんが、もしそうでなかったときにどうすればいいのか。
どうすればランダムになるのか。麻雀という同じ局面が訪れないゲームにおいて、どのように場面を揃えればいいか。

ここからは、僕の妄想が入ってくるので話半分でお願いします。
どれくらい正しいこと言えているか自信ないです。




その方法の1つは、「局収支に影響しそうな他のデータも同時に追跡する」です。
例えば、「アガリ牌の見た目の残り枚数」「待ち」「ドラの位置」「巡目」など、
局収支に影響しそうな他の要素も追跡してあげて、
少なくとも追跡した要素に関しては揃えて比較を行う、という方法です。
一個一個やると死ぬほどめんどくさそうなので、重回帰分析的にやれないかなぁという妄想はあります。
(結果変数が連続値、離散値のどちらにすべきかすら、僕には判断できないのですが……)


もう1つの驚きの方法。それは「技能戦の牌譜を解析する」です。

技能戦は、すべてが平場です。少なくとも、点数状況という条件は全て完璧に揃っています。
また、打ち手のレベルも二段以上と多様です。誤打になるリーチも増えるでしょう。
(誤打になるダマも、誤打になる脇の放銃も増えるでしょうが)
もしかしたらこういう環境の方が、統計を使って正着戦術を考える上ではいいのかもしれない。

過疎ってて、固定メンツが打っててランダム化されてない、だとか、統計するサンプル数自体が足りないだとか、そういうリアルなツッコミもきそうですし実際その通りです。

ただ、技能戦という過疎卓を無理やり使うことまでしなくても、
「特卓、上卓の牌譜で同じことをやる」っていうのは参考になるんじゃないか、とは思います。
むしろ「3卓全部均等に混ぜる」方がよかったりするのかもしれない。

実力レベルを全部攪拌してしまった方が、統計正着を知る上ではいいのかもしれません。
どのような比で混ぜるくらいが丁度いいのか、とかは難しいのですが、
プレイヤーの実力をランダムにする、という考え方はそこまで的を外していないのでは、と思います。




というわけで、こんな感じの話でした。
ここ最近、ツイッターで@が飛んでいるのが見えたので、触発されて書きました。


誤読しないで頂きたいのは、「チートイドラドラはダマ正着だ」って言ってるわけではないです。
この方法ではどっちが正解かわからない、っていうことです。

こんな背景があるので、麻雀解析に関しても色々やろうと思っていたのですが、
どうアプローチしたものか途方に暮れている状況です。





参考文献:「統計学が最強の学問である」(西内啓)
[PR]
# by tsubame30 | 2013-05-29 23:01 | 統計・プログラム雑談 | Comments(0)
関連:【エロゲ解析】ErogameScapeにおける「80点」の価値


以前おこなった、解析では、
「70点」「75点」「80点」「85点」というErogameScapeにおける最頻の4点についてのみ、
どのくらいの価値があるのかということを上位%という形で評価をしました
が、
せっかくなので、0~100点の全範囲(5点刻み)について同じことをやってみました。

データ元のSQLおよび計算方法は、以前のものと同様です。


●各点の偏差値(平均および90%信頼区間)
d0279358_19251590.png

<※追記>
以前のグラフと色の対応がめちゃめちゃだったので差し替えました。



偏差値の平均を見ますと、もう見事なまでに直線ですね。



●各点の上位%(平均および90%信頼区間)
d0279358_19253714.png

<※追記>
以前のグラフと色の対応がめちゃめちゃだったので差し替えました。



平均に注目すると、45点の段階でもう上位100%近似できるところまで来てしまいました。
(※35点と書いていましたが、45点の方が適切だと判断を改めました)
0点も、45点も、上位%という観点ではあまり差が無さそうです。
しかし当然ながら、信頼区間の上限は点数に応じて下がっており、
全く点数に担保がないわけでもありません。

45点からは少しずつ点数差が価値を持っていき、
60点を超えたあたりから、5点上がるごとの上位%の上昇幅が物凄い勢いで大きくなってます。
「65点より少し上」あたりに上位80%ポイント(100本中80位)がありますが、
わずか25点上の「90点」は上位10%ポイント(100本中10位)のところまで到達しています。



信頼区間の上下幅に注目すると、「70点」「75点」のあたりが最も大きく、
ユーザーの感覚の違いによる価値の変化が最も大きい範囲であると考えられます。

「70点」「75点」あたりは、『良い』としてるひとも『良くない』としてる人もそれぞれそこそこ多い、ということで、
参考にする際には、どういった意図で付いた点数なのかを考えたいところです。



信頼区間の下限に注目すると、80→85点、85点→90点の遷移の際に大きく上昇しており、
85~90点はある程度質の担保を認めてつけられていると考えられます。
特に、「90点」は信頼区間の下限ですら50%ポイントを超えています。
「90点」は本当にお気に入りのゲームが並ぶようです。



それで、この結果をどう参考にするかなんですけども、
80点の価値の記事にて、totoさんという方が非常に鋭いコメントを書いてくださってます。

>ユーザー心理としては、駄作は回避(=評価しない)するし、評価高いゲームはやってみようって気になるから、70点が100本中73位だとしても、実はそれほど悪い点じゃない気がする。

ご指摘の通り、この分布を作った元にしたデータからして、
駄作を積極的に回避(=評価しない)し、評価高いゲームを積極的にやった(=評価した)ことによって生まれたもの
ですから、
ここで使用している『上位%』は、「全てのエロゲ」という母集団での上位%という意味ではありません。
「その人が興味を持ったゲームという母集団」での『上位%』
になるので、
仮に73%だったとしても、そこまで酷いものではないものと思われます。


しかし、実際これを参考にして自分がゲームを選ぶにしても、
全く興味のないゲームは何点ついていてもやらないと思うので、
「自分が興味を持ったゲーム」という母集団と大きな差異はないと考えていいのではないかと思います。
その上で、そっくりそのまま得られた点数と上位%の関係を使っていいのではないかと思います。
自分が特別甘口or辛口の自覚があれば、それに応じて感覚で少しずらせば参考になるかなと。

上位何%からが「満足できるか」「クソゲーか」というのは完全に主観になりますけども……。
<追記>
例えば、「満足したゲームの数/今まで自分がやってきたゲーム全体の数」から、
『自分が満足する作品』の上位%のラインを考えてみると参考になるかもしれません。


totoさんのコメントの視点はかなり面白いと私は考えてまして、
なんで、35点にして既に上位100%なのか、
50%ポイントがなぜ75~80点の間という結構高い所にあるか、
そういったことの理由がこのあたりに隠れてる気がします。
普通は面白そうと思ったゲームしかやらないだけに、分布が上に偏ってこうなるのでしょうね。
そりゃあ点数と価値が線形にはならんよなぁ、などと改めて実感しました。
[PR]
# by tsubame30 | 2013-04-13 19:52 | エロゲ解析 | Comments(3)
先日、「反省しない」という考え方という記事を書きました。
この記事に対してOYOYOさんからコメントにて
「北家で安手の仕掛けを入れて、親の手番を増やすのは損ではないのか?」
という指摘を頂きました。

これに対するコメントレスを書いたところ、モーレツに長くなってしまったので、
記事として投稿することと致しました。

More
[PR]
# by tsubame30 | 2013-04-10 23:33 | 麻雀雑談 | Comments(0)
70点「なかなか面白かった」
80点「ちょっとイマイチだった」

こういうコメントと点数の差異に違和感を感じた経験はないでしょうか?


ErogameScapeにおいて各個人の点数というのは重要なパラメーターなのですが、
点数の付け方に共通の「決め」のようなものはなく、各個人が自由に採点しているものです。
そのため、「Good」の位置が85点なのか、80点なのか、70点なのかは本人にしかわかりません。
勿論、その点数をつけたユーザーのサマリーから全体の分布を見ればおおよそ察しはつくのですが、
それを毎回行うのも難しいところです。


そこで、今回はErogameScapeにおける「80点」って、実際問題どのくらいの価値をもつのか、ということを偏差値の考え方を使って考えてみたいと思います。

More
[PR]
# by tsubame30 | 2013-03-31 20:07 | エロゲ解析 | Comments(11)
天鳳では、鳳凰卓および技能β(一局清算)の牌譜が公開されています。
しかし、私が解析を試みようとした当時、牌譜をDLする段階でかなり手間取ったので、
今回は、天鳳のページから鳳凰卓の牌譜(mj.log)を取得する手順について書いてみようと思います。


●手順1:牌譜(urls)ファイルのダウンロード

天鳳のログのページはhttp://tenhou.net/sc/raw/にあります。

これは、天鳳トップから「ランキング」のページに飛ぶと、
ひっそりとログへのリンクがあるので、ここから飛べます。
d0279358_07662.png


この一覧には、最近の牌譜がgz圧縮形式で配布されています。
欲しい卓の牌譜のURLをクリックしてDLします。
せっかくなので、今ホット(……?)な技能戦の牌譜を落としてみましょう。
d0279358_074543.png


すると、「sce2013031109.gz」がDLされました。
これを、拡張子gzを解凍できるアーカイバーを使って解凍すると、なんかよくわからないファイルがでてきます。

※ちなみに、ファイル名の最初のアルファベット3文字は卓の種類を表しています。
sca=個室 / scb=段位戦 / scc=段位戦鳳凰卓(牌譜URLあり) / scd=雀荘戦 / sce=技能戦(牌譜URLあり)のようです。
さらに、牌譜URLありのものしかmj.logは取得できないようです。


●手順2:urls.htmlファイルをml.logに変換

このファイルをmj.logにする方法があるようなのですが、私にはちょっとわからなかったので、外部のツールを使わさせていただいてます。
それが、idaten!さんの天鳳の牌譜変換βです。
d0279358_0102588.png



「ファイルを選択」で先ほどの解凍したファイルを指定して、「urls.htmlからmjlogを取得」を押してしばらく(牌譜容量によって数秒~4,5分くらいかかったりと時間差あります)待つと、「tenhou_logs.tar.gz」がDLされます。
これを解凍すると、ml.log形式の牌譜を取得することができます。



●手順3:牌譜ファイルのリネーム→牌譜の書式化

こうして得られた牌譜データを、前回の記事のように書式化して解析することができる――
と思いきや、その際にもうひとつ作業があります。

リネームツールを使って、得られた牌譜ファイル全てのファイル名末尾に「&tw=0」を加えてください。

何故かといいますと、牌譜の書式化の際には牌譜解析スクリプトの起動が必要なため、
「その牌譜のどの席に座っていたか」という情報が必要となるからです。



これで晴れて、DLした牌譜の書式化ができることになります。
これ読んでる方だいたい察したかと思いますが、すんごいめんどくさいです。




ちなみに、オールドアーカイブ(http://f.tenhou.net/sc/raw/list.cgi?old)には、
過去の牌譜のファイル名が全て書いてあります。

list([
{file:'2006/sca20060701.log.gz',size:8480},
{file:'2006/sca20060702.log.gz',size:7596},
{file:'2006/sca20060703.log.gz',size:5517},
{file:'2006/sca20060704.log.gz',size:6272},
………


これのファイル名(file:以後)を参照して、
http://tenhou.net/sc/raw/dat/"ファイル名".log.gz
の形のURLにアクセスすると、DLできます。

http://tenhou.net/sc/raw/dat/2006/sca20060701.log.gz
↑例えば、こんな感じです。

このようにすれば、鳳凰卓黎明期の牌譜から全部ダウンロードできます。
(大量ダウンロード、自動ダウンロードの際には、運営の但し書きをよく読んでご利用ください。)
これも先ほどと同じ方法でmj.logに変換して解析ができます。




かなり荒っぽい解説でしたが、何かの参考になればと思います。
[PR]
# by tsubame30 | 2013-03-19 00:17 | 麻雀雑談 | Comments(1)