進撃の巨人を読んだことない人がデータだけでキャラを推測してみる

はじめに

最近超人気の漫画として私のTwitter TLを賑わす作品、その名も「進撃の巨人」。
これだけ人気なんだからきっと面白いに違いないのですが、
なんか絵が怖そうだし、人がバンバン死んでてグロいっぽいという噂を聞くので、
なんとか漫画を読まずに、それでいて進撃の巨人のキャラについては知りたい、
そう願う潜在的進撃の巨人ファンも全国に70万人くらいいらっしゃると思います。

そこで、データから進撃の巨人にどんなキャラが登場するか推測してみましょう。
扱うデータとして、pixivのタグ情報を利用します。
商品レビューコメントなどとは違い、ファンの創作活動がダイレクトに反映されるサービスなので、
そこに付与されるタグ情報は、ファンの熱(過ぎる)いメッセージが込められているに違いありません。

今回、以下のような縛りを入れています。
1.勿論原作は見ない
2.pixivのタグ情報は参照するけど、絵は見ない
逆に、以下のような情報は取り入れています(取り入れているというか、意図せず入っちゃった感じです)
1.原作1話だけ無料で読めたので昔読んだ記憶がある(エレンが主人公、巨人が壁の外にいて人類と戦争してるというのは知っている)
2.twitterなどで進撃の巨人についてツイートされた場合は普通に見ていた
進撃の巨人で検索した結果を眺めたりはしないが、普段フォローしてる人がツイートした場合、それをわざわざミュートしたりはしない。めんどいので…)
3.分析結果をツイートした結果、フォロワーさんから得られたフィードバック
(この記事のようにまとめる意図が最初は無かったので、FBはミュートすることなく見ていました。
ので、分析途中で何件かは答えを知ってしまうことがありました)

この条件の下、
1.主要キャラクタ名
2.主要キャラクタの特徴(特に性別)
3.各キャラクタの関係(カップリング。受け攻め)
を抽出してみたいと思います。

ちなみに、私はアニメ・マンガ・ゲームを殆ど見ない人であり(20歳超えてから見たアニメはまどかマギカくらい)、
また、BLとか同人界とか全く知らないど素人です。コミケという存在は知っているけど行ったことはありません。
そういう門外漢がデータだけでどこまで行けるか、どのような失敗するかを試してみたいと思います。

pixivからタグ情報を取得する準備

まずは進撃の巨人タグを次のようなプログラムで取得してみましょう。
今回データを取得したのは7/28の20時くらいです。

# -*- coding: utf-8 -*-
import urllib
import sys
import time

def main():
  keyword = sys.argv[1]
  file_name = sys.argv[2]
  page_max = int(sys.argv[3])
  if len(sys.argv) == 5:
    phpsessid = sys.argv[4]
  else:
    phpsessid = ''
  with open(file_name, 'w') as wfp:
    for p in range(page_max):
      a = urllib.urlopen("http://spapi.pixiv.net/iphone/search.php?s_mode=s_tag&p=" + str(p) + "&word=" + keyword + "&PHPSESSID=" + phpsessid)
      time.sleep(1)
      for line in a:
        line = line.split(',')
        if keyword in line[13]:
          wfp.write(line[12].replace('\"', '') +"\t"+ line[13].replace('\"', '') + "\n")

if __name__=="__main__":
  if len(sys.argv) < 4:
    print "error occurred. please, 3 or more arguments. arguments is 1.tag-keyword 2.output-file-name 3. get-page-max 4.phpsessid"
    sys.exit()
  main()

ついでに単語頻度をカウントするプログラムも用意しましょう

#coding:utf-8
import sys
import collections

def main():
  read_file = sys.argv[1]
  cnt = collections.Counter()
  with open(read_file) as fp:
    for line in fp:
      tag = line.split('\t')[1]
      for word in tag.split():
        cnt[word] += 1
  
  print "count,word"
  
  for word, count in sorted(cnt.items(), key = lambda x:x[1], reverse = True): #登録された単語を頻度降順で表示
    print str(count) + "," + word
    #print word + "\t" + str(count)

if __name__=="__main__":
  if len(sys.argv) < 2:
    print "error occurred. please, 2 or more arguments"
    sys.exit()
  main()

これで準備OKです。

タグ頻度のランキングを作る

取得したタグを名寄せ*1してから頻度カウントしてトップ30を並べた結果が次です。
(26060は全タグのべ数です)

この内容からさらにキャラクタ名を抽出していきます。
それには人物に紐付きそうなタグと共起*2しているタグを取得することによって実現したいと思います。
キャラクタ名を抽出してタグ頻度順にトップ15*3を出した結果が次です。

大抵は「エレン・イェーガー」のようにフルネームと紐付けられたので、
「『●●・△△』って表記ならまず人物名であろう」という妥当と思われる仮定に沿っているので問題無いと思います。
一点、「ユミル」がフルネームを抽出できなかったのでちょっと心配です。
とはいえ、後続の分析でも人物名っぽいという結果になったので、ここではユミルという登場人物がいるものとして進めます。

頻出カップリングトップ10

次に頻出カップリング抽出を行います。
実はカップリング抽出をやろうとは思ってなかったというか、「そもそもカップリングって何?」って状態だったのですが、
「エレン リヴァイ リヴァエレ」みたいなタグが頻出してて、
「はて、これは一体?」と悩んでいたところ、婦女子の方から
「それはカップリングであり、左側が攻め、右側が受けであり、その例で言うとリヴァイ攻めエレン受けだ」
と教えて頂きました。
ちなみにあとで出てきますが、エレンもリヴァイも男性同士なので、そのカップリングとは一体…。
という感じですが、まぁその疑問は一旦脇に置き、人気カップリングを抽出してみましょう。結果は以下の通り。

リヴァイを含むカップリングの合計が全体の6割以上を叩きだしています。
リヴァイ兵長、相当の人気者のようですね。色んな意味で。

各キャラクタの特徴を掴む(性別判定)

次に各主要キャラクタの特徴を掴んでみましょう。
対象キャラは先ほどの頻出トップ10のキャラクタです。
特徴と言っても色々あるので、ここではシンプルに各キャラの性別を判定しましょう。
このキャラクタの名前ごと(フルネームではなく、「エレン・イェーガー」なら「エレン」というようにもっとも書かれやすい名前に置き換えて検索しています)
にタグを収集した結果からトップ30を切り出したのが次です。
(キャラ名の右の数値は、そのキャラと共起したタグの総種類数です)


大抵こういうデータの取り方をすると、対象名に紐付く特徴が共起するのですが、
pixivタグの場合は一枚の絵に描かれたキャラクタ名やカップリングが主にタグ付けされるため、
対象名の特徴というよりも「このキャラはあのキャラと一緒に描かれている」というのが上位にくるようですね。
正直全てのキャラの特徴がすっかり把握できるとは言えない状況です。
もっと下位(上記表に入っていない30位未満)の方で特徴語といえるものがいくつか付与されている場合もあるので、そこから出来る限り推測していきましょう。

リヴァイ

頻出タグ:[兵長、人類最強、最強サンド、最強彼氏、調査兵団幹部チーム]
とあることから、恐らく作中最強ランクのキャラなのでしょう。
そして兵長や幹部ということから、
エレンの上司か師匠か、あるいは目標とする人にあたる人物でしょうか?
男性に紐付く形容詞が多いのでまず男性でしょう。

エレン

頻出タグ:[幼馴染3人組、ショタ、女体化]
エレンは幼馴染が二人いるようですね。
そしてショタ+女体化というのがあるので、結構中性的な外見をしている男性なんでしょうか
(エレンの外見は一度見た気もするけど完全に忘れている)。

ミカサ

頻出タグ:[幼馴染3人組、進撃の百合、女の子、最強サンド、女子力(物理)、腹筋系アイドル、おっぱいのついたイケメン]
エレンの幼馴染の一人で、女の子とか百合という語が見られることから、まず女性キャラで間違いないようですね。
面白かったのが、女性キャラに紐付きそうな「可愛い」とか「綺麗」とかそういうタグはほぼなく、
むしろ筋肉系の評価がなされているので、多分女性だけどムキムキキャラなのでしょう。

アルミン

頻出タグ:[幼馴染3人組、性別:アルミン、女装、女体化、男の娘]
というわけで、「エレン、ミカサ、アルミン」の3人は幼馴染のようですね。
で、どうも性別は男性のようなのですが、女体化タグが多く、エレン以上に女性的な外見をしているのではないかと。


(あれ、女性系キャラが男性的な形容詞多くて、男性系キャラに女性的な形容詞付与されてるのが多い気がするぞ…)
という感じでタグを見て性別を判定していきます。
女性キャラは「百合」というタグが付けられていることが多いようなので、
百合タグの数でだいたい性別を当てられそうです。
…と思っていたら。

うーむ、腐女子界、奥が深い(腐った方々ありがとうございました)…。

データを時系列で眺めてみる

6/21〜7/28の各キャラの各日付ごとのタグ数です。

リヴァイ、エレンが圧倒的ですね…。
次に、もっと長期のタグ数推移を見ることによって、
作品の認知度のようなものがいつぐらいから向上してきたのかを見てみたいと思います。
進撃の巨人」タグの時系列推移を見たかったのですが、
どうも1万件以上遡ってタグ取得するのは出来ない(?)っぽいので、
遡りやすい「アルミン」タグの2013/1/1〜2013/07/28までの時系列推移を見てみます。

4月半ばから急上昇していますね。
これだけ明確に変化があったということは、強い外部要因(作品内の展開が変わったとかではなく)
があったと考えるのが妥当でしょう。
漫画の認知度が急激に上がるショックというと、アニメ化などを考えるのが妥当でしょうか。
また、日付を細かく見てみると、どうも日曜日に投稿数が跳ね上がるようです。
私は「もしかしてアニメが日曜にやっているからなのかな?」と考えたのですが、どうやら次のような理由があるようです。


なるほど、当たり前ですが絵を描くのにしっかり時間取らないといけませんし、
一般の方でしっかり時間取れるのって大抵土日ですよね。
また、pixivのランキングの仕組みも初めて知りました。
SNSだとこういうランキングなども意識して投稿されるというのは考慮に入れないといけませんね。

ちょっぴり統計解析してみる

頻度だけで分かることはこれくらいかなと思われるので、そろそろ統計学の手法を用いたいと思います。
階層型クラスタリングという手法を用いることによって、
どのタグとどのタグがどれくらい近いクラスタにいるかを把握したいと思います。
なんとなく近い位置に存在するタグが近しい関係にあると解釈して下さい。

次に共起ネットワークというものを見てみましょう。関連深いタグ同士でグラフを形成したものです。
ちなみにフルネームを取得する時にも使いました。

所々文字化けしているのは中国語のようです。中国の方にも人気なのでしょうか。
最後に、「進撃の巨人」をキーワードとしてリアルタイムでタグを取得してタグクラウドを作成して見た結果です。
これだけリアルタイムでデータ取得したため、この画像を作成するのに使ったのは8/4の18時頃のデータです。


所々東方や銀魂が入っているのはこういうことらしいです。

データからは全く分からなかったこと

「エレン右」など、○○右とか左とかいうタグが頻出していました。
これが何を意味するのか全く分からなくて頭を抱えていたのですが、

ということらしいです。

!!!!!!訳分かんねーよ!!!!!!!

結果

1.主要キャラクタ名

  • リヴァイ兵長
  • エレン・イェーガー
  • ミカサ・アッカーマン
  • アルミン・アルレルト
  • ハンジ・ゾエ
  • ジャン・キルシュタイン
  • クリスタ・レンズ
  • ベルトルト・フーバー
  • アニ・レオンハート
  • エルヴィン・スミス
  • ユミル
  • サシャ・ブラウス
  • ライナー・ブラウン
  • マルコ・ボット
  • ペトラ・ラル

2.主要キャラクタの特徴(特に性別)
男性:リヴァイ、エレン、アルミン、ジャン、ベルトルト、エルヴィン
女性:ミカサ、クリスタ、アニ
不明:ハンジ

3.各キャラクタの関係(カップリング)

  1. リヴァエレ
  2. リヴァハン
  3. ユミクリ
  4. エルリ
  5. エレリ
  6. ミカエレ
  7. ベルユミ
  8. エレミカ
  9. リヴァペト
  10. アルアニ


さて、性別は何人正解でしょうか(そもそもこれらは本当にキャラなのかという時点で不明なのですが)。
割と真面目にハンジの性別が不明のままとなりました。
ハンジは男性に付与される「女体化」タグも、女性に付与される「百合」タグも共存し、
また、女性キャラとも男性キャラとも共起しているようです。
心残りです…。

終わりに

このような分析をしてTwitterに投げたところ、沢山の方からのフィードバックを得られました。
諸々の助言ありがとうございました。
皆さんが進撃の巨人を大変愛していることが伝わってきたのと、答え合わせしたいというのもあって、
ようやくスプラッタな描写が待ち構えているのではという恐怖を乗り越えて、
進撃の巨人を読んでみようという気になりました。
Amazonで1〜10巻まとめてぽちっとな。


あと、なぜ今回進撃の巨人について分析することになったかというと*4
諸悪の根源はぜろゆ氏であり、進撃の腐人で検索すると面白いからやれと唆されたからです。



終わってしまえばすべては良い思い出です。
いい機会なので進撃の巨人を読んでみたいと思います。
はー、やっと、ついに分析しきれなかったハンジの性別が明かされる…!!

追記

ふぉろわーさんからしんげきのきょじんのさくしゃさんのこうしきぶろぐじょーほーをおしえていただきました。
http://blog.livedoor.jp/isayamahazime/archives/4388712.html

うおおおおおおおいいいいい!!!!!作者ッ!!!!最初から無理ゲーだったんじゃねぇか!!!!!!!!

*1: 指している内容は同じだけれど表記が違うものを、一つの表記に揃える処理です。例えば、「エレン」、「エレン・イェーガー」、「イェーガー」というタグがあれば、それを各々別の語として扱うではなく、全て「エレン・イェーガー」として扱うというものです。本来名寄せは結構難しい処理ですが、pixivでは「エレン・イェーガー」のようにフルネームっぽいものが簡単に取れるので結構楽でした

*2: 同時に出現する、程度の意味だと考えて下さい

*3:※タグ数はあくまで人気度合いを測るパラメタであって、イコール人気度合いというわけではありません。ここがテキストマイニングで難しい所ですが、単純に「頻度が高い=人気ではない」ではないということは常に意識しなければなりません。頻度が高い→描かれた枚数が多い→描き手が多い傾向にある→人気とタグ頻度は何らかの相関があるのでは?くらいのことは仮定できるかもしれませんが、あくまで仮定ですし、また、相関があるのは恐らく妥当な推論でしょうが、相関の強さについては全く分からないということに注意が必要です

*4: 本当の話をすると、テキストマイニングの練習としてやっています。こういう遊びを時々やると、仕事で「今まで全く扱ってこなかった商品分野だけど、Webのテキスト情報から最近のトレンドを把握してこい」とか無茶振りされても期待に応えられるようになるかもしれないので、トレーニングとして行うと良いですね。解答なんて用意されていない仕事のデータとは違って、後で答え合わせも出来るので気が楽です

15分だけLua勉強した

ドットインストールとか見ながら15分だけLua勉強したのでそのメモ。

--コメント
x = 10
s = "hello"
print(x*2) 
> 20

--テーブル(連想配列)操作
t[0] = 0
t[1] = 10
t[2] = 20
t[3] = 30
t[5] = 50

for k,v in pairs(t) do
 print(k, v)
end
>1       10
>2       20
>3       30
>0       0
>5       30

for k,v in ipairs(t) do --ipairsに注意
 print(k, v)
end
>1       10
>2       20
>3       30
--なんでこんなことになるのかよくわからない
--テーブルは1から始まるっぽい
--連番じゃないとそれ以降は捨てるっぽい

print("hello " .. "world") --文字列連結は..

--制御構文
i = 10
if i~= 10 then -- ~= 否定
 print("i not 10")
elseif i == 10 then
 print("i is 10")
else
 print("i is idk")
end

--繰返し
for i=0, 10 --, 増加分指定(オプション
 print(i)--breakをどうはさめばいいのかわからない、エラーになる…
end


--関数
--なんで関数の最後にreturn置いてるにも関わらずendが必要なの…
function func_name(i, j, k)
 return i*j, j*k
end
print(func_name(1,2,3))
>2 6
i, j = func_name(1,2,3)
print(i, j)
>2 6

--可変数引数
function f(i, ...)
 print(i)
 print(...)
end
f(1,2,3)
>1
>2 3

--無名関数
f = function(i)
 print(i)
end
f("hello")
>hello

--コルーチン関数
function func()
    coroutine.yield "1回目の値を返す"
    coroutine.yield "2回目の値を返す"
    return "最終の値を返す"
end

c = coroutine.wrap(func)-- コルーチン関数はwrapしないと動かない
print(c())
print(c())
print(c())
print(c()) -- エラー

感想。
breakどこに置けばいいの…。
end多過ぎ、冗長過ぎ、辛みある。
functionとか長い。とにかく冗長。
複数の値を返せるの良い。可変長引数も使い易い。

あと
i=10
i==10
ってやったらTrue返して欲しいなぁとか細々と意に沿わない。
15分勉強した感じだとPythonでええやんという感じになってる。
15分で言語語るなって言われたら全くその通りなんだけど、
rubyとかFactorとかだと15分でも一目惚れ出来た気がするが、
Luaはサンプル実行してるだけで「冗長だなぁ」感が押し寄せてきて残念ながら一目惚れ出来なかった。
ドットインストールで学べる程度の範囲で一目惚れ出来ると嬉しいな。
次はSmalltalkやりたい。

WindowsでSublime Text2 + leiningen + Clojure/Incanter環境をお手軽に作る

WindowsでClojureを用いて統計解析を行う環境を簡単に作成します。難しい作業はしません*1
ClojureJVM上で動くLispのようなプログラミング言語です。
これは簡単に説明すると
JVM上で動く=WindowsでもMacでもLinuxでも動く!その上使えるライブラリも多い!」
Lisp=簡単に読み書き出来て幸せ」
という意味です。
IncanterはClojureで書かれた統計解析ライブラリです。
Clojureから簡単に使えます。
もしあなたがプログラミングのこと一切知らなくて統計解析を始めようというならこの組み合わせが最t…ごふっ。
まぁ騙されたと思ってとりあえずやりましょうとかいってる相手にほいほい乗ってると騙されるので人生が辛い。
これらの組み合わせはsublime text2を除いて無料です。
Sublime Text2は便利なテキストエディタです。
コーディングしたりコードを実行したりするのにとても役立ちます。
無期限の試用期間があるので手軽に始められます。気に入ったらぜひ購入して下さい。
vimemacsという熟練のプログラマに愛されている素晴らしいツールもあるのですが、
設定や操作が素人には難しくハードル高かったので、いつか頭が良くなったら使いたいなと思います。
Sublime Text2の良い所は、デフォルト設定でもかなり使えることです。
さらにPythonやJSONを利用して自由にカスタマイズできるので、
使いこなせるようになればどんどんカスタマイズしましょう。
leiningenはClojureのビルドツールと言うかプロジェクト管理ツールです。
Clojure単体だと色々設定を書かなくてはいけなくて面倒臭い所を
このleiningenがよしなにやってくれます。


まずleiningenをインストールします。
Windowsにleiningenインストールする手順はこちらをご参照ください。
http://d.hatena.ne.jp/AntiBayesian/20120122/1327236946
次にsublime text2をインストールします。そしてsublime replというものもインストールする必要があります。
それにはこちらを参照してください。
http://yagays.github.io/blog/2012/11/16/sublimerepl-clojure/
ここらへんで気づいたと思われますが、リンク張るだけで済むしわざわざ記事書く必要ありませんでしたね。


さて、leiningenをc:\leinにインストールしたとします。
c:\leinにproject.cljって名前のファイルを作って次のように記述して下さい。

(defproject test "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.4.0"][incanter "1.4.1"]])

記述し終わったらコマンドプロンプトを用いてc:\leinでlein replと打ちこんでください。
するとIncanterがインストールされて、(use '(incanter))とかやると使えるようになります。
ちなみにreplってのは何かと言うとこちらをご参照ください。
http://d.hatena.ne.jp/keyword/REPL
要するにあなたのコマンドプロンプトが突然Clojureプログラミング環境になってハッピーと言う話です。

最後にsublime text2のreplから直接Clojure呼べるようにします。
{あなたがsublime text2をインストールしたフォルダ。「Preference→Browse Packeges参照」}\Sublime Text 2\Packages\SublimeREPL\config\Clojure\Main.sublime-menu
を開いて

"cwd": {"windows":"c:/Clojure", // where the lein.bat lives!

ってなってる行を

"cwd": {"windows":"c:\lein", // where the lein.bat lives!

に変えればOKです。
これでSublime Text2からさっきのIncanter設定したreplを呼べます。


えーと、簡単でしたね。もうちょっと色々書くつもりだったけど特に書くことないくらい設定楽だしかなり飽きてきたのでここら辺でさようなら。


■2013/5/24追記
sublime text2からleiningenを呼ぶ件ですが、どうもleiningen2からは動かなくなってるそうです。いや、これは困ったことですね。
https://github.com/wuub/SublimeREPL/issues/48
仕方ないのでclojure.jarを直接呼ぶbatファイルを作って、sublime textはそいつを呼ぶことにしてとりあえずrepl動くようにしましょう。
多分leiningenでclojureをデフォルト設定でインストールした場合は
C:\Users\{あなたの名前}\.m2\repository\org\clojure\clojure\{インストールしたClojureのver}\clojure-{ver}.jar
となってると思います。違ったら適宜調整して下さい。
clojure.batって名前でファイルを新規作成して、その中に

java -jar C:\Users\{あなたの名前}\.m2\repository\org\clojure\clojure\{インストールしたClojureのver}\clojure-{ver}.jar

と書きます。
これをさっきのc:\leinフォルダに置きます。
次にMain.sublime-menuを開いて
"cmd": {"windows": ["lein", "repl"],
となってるところを
"cmd": {"windows": ["clojure.bat"],
とします。
これで動くと思います。
batファイル置くフォルダはどこでもいいのですがパスを通しておいてください。でないと動きません。
これでとりあえず私の環境だと動いてるんですが、もしこれ試しても無理だよ〜という方いらっしゃったらご連絡ください。
なんか考えます。

*1:出来ません

経済学、数学、統計学などの資料纏め

※適宜追加します

経済学

計量経済学 京大 末石直也
http://www.econ.kyoto-u.ac.jp/~sueishi/econometrics/econometrics.html
経済数学系資料
http://www.f.waseda.jp/ksuga/
経済学のための位相数学の基礎とブラウワーの不動点定理
http://www2.chuo-u.ac.jp/keizaiken/discussno39.pdf
経済学のための最適化理論:講義ノート
http://www.meijigakuin.ac.jp/~mashiyam/pdfdocs/optimization.pdf
経済学に必要な最適化理論
http://mediaislandr.org/pdf/static_optimization.pdf
経済学のための確率論入門
http://www.meijigakuin.ac.jp/~mashiyam/pdfdocs/probability.pdf
経済学のための確率過程論入門
http://www.meijigakuin.ac.jp/~mashiyam/pdfdocs/stochastic.pdf
経済学のための数学
http://www.kier.kyoto-u.ac.jp/~hara/NoteByInami3r.pdf
メカニズム・デザイン: レクチャー・ノート
http://www6.atpages.jp/reiju/courses/99/mdesign99.pdf
一般均衡理論
http://www.kier.kyoto-u.ac.jp/~hara/GET10LectureNote.pdf
マクロ経済学?(上級マクロ経済学)中谷 武
http://www.econ.kobe-u.ac.jp/~nakatani/AdMacro/AdMac.pdf
情報の経済学:講義ノート
http://www.meijigakuin.ac.jp/~mashiyam/pdfdocs/information.pdf
社会的選択理論の基礎–アローの定理,多数決,ギバード・サタースウェイトの定理を中心として–
http://www1.doshisha.ac.jp/~yatanaka/pdf/dis1.pdf
ゲーム理論における数理
http://www.sci.keio.ac.jp/gp/6A910D4F/BC7A6C4F.pdf
進化ゲームと寡占
http://www1.doshisha.ac.jp/~yatanaka/pdf/ytanakasemi.pdf
大阪府立大学経済学部鹿野研究室 経済統計・計量経済学
https://sites.google.com/site/kanolabweb/
動学的最適化入門
http://www.econ.hokudai.ac.jp/~kudoh/Bellman.pdf
伊藤幹夫の講義ノート 経済数学系
http://web.econ.keio.ac.jp/staff/ito/lecture/
Animan Breeding & Genetics 動物遺伝育種の立場から、統計に関する基礎的な事項をまとめたもの
http://www.agri.tohoku.ac.jp/iden/education.html
ミクロ・マクロ講義ノート
http://www.meijigakuin.ac.jp/~mashiyam/lecture.htm
経済原論 ミクロ・マクロ、公共、計量、法
http://fs1.law.keio.ac.jp/~aso/kougi2.html


統計

前処理 欠測への対応
http://www.slideshare.net/dichika/maeshori-missing
重回帰分析における多重共線性とRidge回帰について
http://ir.library.osaka-u.ac.jp/dspace/bitstream/11094/9749/1/hs13-227.pdf
各統計手法の使い分け
http://blog.livedoor.jp/norikazu197768/archives/12396955.html
経験ベイズ入門
http://kasuya.ecology1.org/stats/EB2007-3disp.pdf
統計道具解析箱
http://c4s.blog72.fc2.com/
ミクの歌って覚える統計入門
http://miku.motion.ne.jp/index.html
生態学のデータ解析
http://hosho.ees.hokudai.ac.jp/~kubo/ce/EesLecture2007.html
FAQ 一般化線形モデル
http://hosho.ees.hokudai.ac.jp/~kubo/ce/FaqGlm.html
統計学入門 ――あなたにも統計学がわかる!……かもしれない――
http://www.snap-tck.com/room04/c01/stat/stat.html
Pythonのscikit-learnでRandomForest vs SVMを比較してみた
http://d.hatena.ne.jp/yutakikuchi/20121012/1349997641
生物統計学 R
http://r.livedocs.net/
Rな予測(各手法の概略とRのコード。時系列解析系が特に良い)
http://sakana.soregashi.com/yosoku.top.html
文系のための「多次元データ解析」
http://cis-jp.blogspot.jp/p/blog-page.html
交差検定の k の値はどれくらいにすればいいのか
http://d.hatena.ne.jp/hoxo_m/20110618/p1
小標本問題とt検定
http://d.hatena.ne.jp/hoxo_m/20130213/p1#20130213fn3
社会学データ実習講義資料:質的変数の分析を主眼に置いた統計資料
http://www.rikkyo.ne.jp/web/ymatsumoto/socdata09.html
欠損値、空白値を含むデータの分析
http://www-06.ibm.com/software/jp/analytics/spss/kwo/special/11_1.html
信頼区間の記述まとめ
http://web.archive.org/web/20040702104453/http://www.littera.waseda.ac.jp/faculty/stok/menu06/6_95pct.html
AIC (赤池の情報量規準)とカイ2乗分布
http://shimono.goga.co.jp/article/317283468.html
An Introduction to Statistical Learning with Applications in R
http://www-bcf.usc.edu/~gareth/ISL/index.html
ベイズ系、評価関数の詳細など 渡辺澄夫
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/index-j.html
An Introduction to Statistical Learning with Applications in R
http://www-bcf.usc.edu/~gareth/ISL/
鹿野研究室 経済統計、計量経済学
ダメな統計学:目次|Colorless Green Ideas
http://kawadem.web.fc2.com/course/index.html 計量経済学
横田 壽 数学学習教材
http://next1.msi.sk.shibaura-it.ac.jp/math.html


機械学習

東大中川研 統計的機械学習入門
http://www.r.dl.itc.u-tokyo.ac.jp/node/48/
機械学習はじめよう (主にpython)
http://gihyo.jp/dev/serial/01/machine-learning
ディリクレ分布メモ
http://www.singularpoint.org/blog/math/stat/dirichlet-distribution/
SVM のチューニングのしかた
http://d.hatena.ne.jp/hoxo_m/20110324/p1 http://d.hatena.ne.jp/hoxo_m/20110325/p1
NaiveBayseの発展系 Transformed Weight-normalized Complement Naive Bayes(TWCNB)、Averaged One-Dependence Estimators(AODE)
http://qiita.com/cou_z/items/bca93fce0a08b521a3e8
Subgroup DiscoveryとPython Orange
http://blog.cocomoff.info/archives/2013/12/19/6413/
Perceptron の収束性定理と学習率の関係
http://sleepyheads.jp/docs/novikoff.pdf
数式を使わずイメージで理解するEMアルゴリズム
http://yagays.github.io/blog/2013/12/15/mlac-2013-em-algorithm/
潜在変数モデルと学習法に関して
https://github.com/masakazu-ishihata/advent2013
Torch7でお手軽ニューラルネットワーク
http://conditional.github.io/blog/2013/12/07/an-introduction-to-torch7/
Random Forest とその派生アルゴリズム
http://kazoo04.hatenablog.com/entry/2013/12/04/175402
AIの未解決問題とDeep learning
http://www.slideshare.net/yutakamatsuo/ss-29407641
PL/Python機械学習
http://engineer-metanote.blogspot.jp/2013/12/postgresqlplpython.html
カイ二乗値を用いた特徴選択
http://aidiary.hatenablog.com/entry/20100625/1277470153
遺伝的アルゴリズムの紹介
http://aidiary.hatenablog.com/entry/20110109/1294581648
潜在クラスと他の変数との関係を調べる方法
http://elsur.jpn.org/mt/2012/03/001516.html
ロジスティック回帰の説明率指標をもっときちんと品定め
http://elsur.jpn.org/mt/2012/03/001517.html
PLS回帰
http://elsur.jpn.org/mt/2012/03/001518.html
The Elements of Statistical Learning
http://statweb.stanford.edu/~tibs/ElemStatLearn/
A Programmer's Guide to Data Mining
http://guidetodatamining.com/
Probabilistic Programming & Bayesian Methods for Hackers
http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/
Machine Learning
http://www.intechopen.com/books/machine_learning
Machine Learning - The Complete Guide
https://en.wikipedia.org/wiki/Book:Machine_Learning_-_The_Complete_Guide
Bayesian Reasoning and Machine Learning
http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage
A Course in Machine Learning
http://ciml.info/


Computer Vision

ベイズ推定とグラフィカルモデル:コンピュータビジョン基礎
http://derivecv.tumblr.com/post/67839909285
「顔以外」のものを画像認識する
http://qiita.com/shu223/items/ffd2202eaf92d342f83d

データセットコーパス

年次統計
http://nenji-toukei.com/
現在公開されているAPI一覧【2013年版】
http://www.find-job.net/startup/api-2013
統計を学びたい人へ贈る、統計解析に使えるデータセットまとめ
http://d.hatena.ne.jp/hoxo_m/20120214/p1
国立情報学研究所情報学研究データセットニコニコ動画楽天Yahoo!など)
http://www.nii.ac.jp/cscenter/idr/datalist.html
魯東大学会話コーパス
http://www.lang.nagoya-u.ac.jp/~sugimura/class/corpus/ludong.html
湖南大学学習者中間言語コーパス
http://www.lang.nagoya-u.ac.jp/~sugimura/class/corpus/hunan.html
華東政法大学作文コーパス
http://www.lang.nagoya-u.ac.jp/~sugimura/class/corpus/zhengfa.html
総務省統計局統計データ
http://www.stat.go.jp/data/index.htm
調査のチカラ
http://chosa.itmedia.co.jp/
日本の言語資源・ツールのカタログ
http://www.jaist.ac.jp/project/NLP_Portal/doc/LR/lr-cat-j.html
UCI 機械学習リポジトリのデータセット一覧 | トライフィールズ
場所参照表現タグ付きコーパス Ver 0.1 (2015/05/25)
Yahoo! Labs、Flickrで研究用のデータセットとして1億件の画像等をCCライセンスで公開Yahoo! Labs、Flickrで研究用のデータセットとして1億件の画像等をCCライセンスで公開 | カレントアウェアネス・ポータル
情報学研究データリポジトリ 国文研データセット
ニコニコ静画(イラスト)のタグを予測するように学習した、Deep LearningフレームワークのChainer用modelファイル
nico-opendata.jp


ブログ、サイト

Take a Risk: 林岳彦の研究メモ
http://d.hatena.ne.jp/takehiko-i-hayashi/
what_a_dudeの日記(←失効…)
http://d.hatena.ne.jp/what_a_dude/
きちめも
http://seikichi.hatenablog.com/
統計学へのお誘い本リスト
http://cse.niaes.affrc.go.jp/minaka/R/InvitationStatistics6September11.html
唯物是真 @Scaled_Wurm
http://sucrose.hatenablog.com/
ny23の日記
http://d.hatena.ne.jp/ny23/
2013年 プログラマの為の数学勉強会 資料
http://nineties.github.io/math-seminar/
ryamadaの遺伝学・遺伝統計学メモ
http://d.hatena.ne.jp/ryamada22/
logics of blue
http://logics-of-blue.com/
sfchaos blog
http://d.hatena.ne.jp/sfchaos/

数式エディタ、TeX

LaTeXiT(スライドにLaTeXで書いた数式をコピペ出来、貼り付けた数式を再度コピペすると編集できる)
http://www.chachatelier.fr/latexit/
IguanaTex(パワポに数式を貼り付けられる)
http://tx.technion.ac.il/~zvikabh/software/iguanatex/

可視化

「D3.js」を使った可視化
http://codezine.jp/article/detail/7459
rChartsでR言語のデータ解析結果をダイナミックに可視化
http://codezine.jp/article/detail/7383
チャートコンポーネントを利用したデータ視覚化入門
http://codezine.jp/article/detail/7320
HighCharts:可視化ライブラリ
http://www.highcharts.com/

その他

オンラインで入手できる数理論理学・数学基礎論のテキスト
http://klapaucius.web.fc2.com/logic/online-textbooks.html
数式の読み方,大学で学ぶ数学公式
http://www.math.kyoto-u.ac.jp/~yosihiro/teaching/how-to-read.pdf
情報論的学習理論ワークショップ (IBIS2013)レビュー
http://ibisforest.org/index.php?%E3%81%97%E3%81%BE%E3%81%97%E3%81%BE%2FIBIS2013
統計学へのお誘い本リスト
http://cse.niaes.affrc.go.jp/minaka/R/InvitationStatistics.html

適当に追記

PHP5.5新機能「ジェネレータ」初心者入門 http://www.slideshare.net/kwatch/php55
初心者脱出のためのPythonTipsを50個紹介 http://kwatch.houkagoteatime.net/blog/2013/12/07/python-tips/
ITエンジニアのための機械学習理論入門 ― NumPy / pandasチュートリアル&サンプルコード解説編 http://www.slideshare.net/enakai/it-numpy-pandas
ランダムフォレスト法による文章の書き手の同定 http://www.ism.ac.jp/editsec/toukei/pdf/55-2-255.pdf
個別面接聴取法におけるItem Count法の諸問題と 実用化可能性 http://www.ism.ac.jp/editsec/toukei/pdf/55-1-159.pdf
納度の概念の利用について http://www.ism.ac.jp/editsec/toukei/pdf/56-2-253.pdf
『トピックモデルによる統計的潜在意味解析』読書会を開催中です http://blog.albert2005.co.jp/2015/09/15/topicmodel-study/
ニューラルネットワークが任意の関数を表現できることの視覚的証明 http://nnadl-ja.github.io/nnadl_site_ja/chap4.html
データサイエンスのワークフロー ― データ分析を効率に行うために http://postd.cc/the-data-science-workflow/
「参照透過である」とは、何から何への参照がどういう条件を満たすことを言うのか http://qiita.com/knaka/items/b18134d9d11b51da4e2e
これなら使える!ビッグデータ分析基盤のエコシステム (pandasなど) http://gihyo.jp/dev/serial/01/bigdata-analysis
きたああああああああああああああああ!!!!!11: マイクロブログを用いた教師なし叫喚フレーズ抽出 http://www.yama.info.waseda.ac.jp/~asai/files/deim2013_asai_kyokan.pdf
ベイズ推論とMCMCフリーソフトhttps://sites.google.com/site/iwanamidatascience/vol1/support_tokushu#TOC-JAGS-
末尾再帰による最適化(ES6で末尾最適化実装されてるよ話) http://qiita.com/pebblip/items/cf8d3230969b2f6b3132
友利奈緒判定botを作った http://kivantium.hateblo.jp/entry/2015/09/04/123128
Git(GitHub)の運用で気をつけていること http://blog.a-know.me/entry/2015/09/13/172437
MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと http://soudai1025.blogspot.jp/2015/08/mysql2postgresql.html
今時のSQLインジェクションの総まとめ http://www.slideshare.net/ockeghem/phpcon2015
分布の集中度を調べる http://rion778.hatenablog.com/entry/2015/10/04/221949
Clojure for Data Science http://www.slideshare.net/henrygarner/clojure-for-data-science https://www.packtpub.com/big-data-and-business-intelligence/clojure-data-science
Promiseで簡単!JavaScript非同期処理入門【前編】 https://html5experts.jp/takazudo/17107/
機械学習ツール最前線 http://itpro.nikkeibp.co.jp/atcl/column/15/091600220/
TinySummarizer https://github.com/hitoshin/tiny_summarizer/blob/master/README.md
Python pandas 関連エントリの目次 http://sinhrks.hatenablog.com/entry/2015/04/28/235430
大学は職業訓練校になるべきか? 文科省がいう「真の学力」とは何なのかを追求し 滋賀大学がデータサイエンス学部を新設する理由 http://diamond.jp/articles/-/78454
心理尺度の広場 (糞便利では) http://jspp.gr.jp/doc/scale00.html
クックパッドインターン資料 機械学習自然言語処理入門 http://techlife.cookpad.com/entry/2015/09/08/113442
2015年版「Webスクレイピング」に関する参考記事へのリンクを淡々とまとめてみた。リンク16個。 http://cashew.hatenablog.com/entry/webscraping-2015
機械学習におけるオンライン確率的最適化の理論 http://www.slideshare.net/trinmu/stochasticoptim2013
2015年因果フェススライド http://www.slideshare.net/JunOtsuka/2015-52074249
さまざまな確率分布 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/statdist.html

靴屋とデータマイニングと季節外れの冬物衣料

やぁ。4月も終わりだというのに、いやに寒い日が続いてるね、元気かい?
面白い話がtwitterに流れていたので紹介したい。

日経コンピュータの話。ビックデータ神話に乗り、多額の費用で解析した靴屋の話、解析結果、冬にブーツが売れ、夏にサンダルが売れるw。

https://twitter.com/yawachi/status/326460494154194944

これを見て君はどう思う?
twitterでは皆がこのニュースに対して嘲笑を投げかけていた。
そりゃそうだろう、大金を掛けて誰でもわかることしか出てこないなんて、笑われて当然さ。
データマイニングってのは、やっぱり、もっとこう、あの有名な「おむつとビール」ような意外性のあるものじゃないとね。
そう、データマイニングに必要なのは意外性だ!
あの靴屋は全く馬鹿なことをしたもんだ、ゲラゲラ!


OK、笑いが取れたようなので、もう一つ同じような話を紹介しよう。
クックパッド社の提供している「たべみる」というサービスについてだ。
クックパッド自体はよくあるお料理レシピサービス(但し最高にクールだ、君も使ってごらん!)で、
たべみるはそのサービス内の検索キーワードのログを販売するサービス。
たべみるを使うと、単なるレシピの検索回数だけではなく、「どのエリアで」「何月に」検索されたかまでわかる。
これを利用して小売店や流通業界はデータマイニングをした。
どんな意外性のある結果が出てきたと思う?例えばこんなものだった。
「冬は鍋の検索回数が多い」
なんたる自明!どこまでも当然!当たり前以外の何物でもない!惨憺たる結果、笑うしかないね。
ところが小売店や流通業界はこの結果を実に上手く活用する。
彼らはその道の歴戦のプロであり、長年に渡って培ってきた市場感がある。
あの業界では「鍋物の季節はせいぜい1月まで。それ以降は売れ行きが落ちるので売り場は撤退すべき」という常識があった。
しかし、データは語りかける。「1月を過ぎても鍋物の検索数は落ちない。つまり、需要は少なくない」と。
彼らはその結果を見て、自分たちが今まで大切な商機を失ったことに気づいたんだ。


さて、話を笑いものにされたあの靴屋に戻そう。
そして彼らが実に有意義な分析をした(少なくともその可能性がある)んだと君に伝えよう。
「夏」や「冬」が具体的に何月何日を指しているのか、それは果たして自明だろうか?
まだ寒い日が続くなぁと思って冬物衣料を買いに行ったら、
店内にはもう完全に春物ばかり、いやそれどころか既に夏物が顔をのぞかせていた、
そんな経験が君にもないかい?
もしかすると需要とのミスマッチが起こっているかもしれないね。
それをデータから適切なマッチングが出来るようになれば、顧客も店側もハッピーになれる。
あの靴屋は恐らく手に入れただろう、ブーツが売れる時期である冬とは、一体いつからいつまでなのかを。


先ほど「データマイニングに必要なのは意外性だ」と言ったけど、ねぇ、それって本当?
意外なことを言うのがデータマイニングの本質なのかい?
考えてみよう、データマイニングの本質とは何なのか。
僕はデータから顧客満足度を高めることや売上に貢献する可能性を見出すことだと思うね。
それに対して意外性がどれほど重要かな。
ビールとおむつの売り場を近づけるのは、なるほど、お話として面白い。
けど良く考えてみると、ビールとおむつを一緒に買う層がどれだけいるだろう、
売り場を近くすることによってどれだけ売り上げが変わるだろう?
つまり、「意外性ある発見が、顧客満足度や売り上げに与えるインパクト」はどれくらいだろう?
そして、たべみるや靴屋の例で出てきた
「必要な時に欲しいモノが手に入る」という素晴らしさのインパクトとは!


靴屋の話を「意外性が無いから無駄」と切り捨てるのは、うーん、あんまりハッピーじゃないね。
いいかい、重要なことは「どれだけ意外性があるか」ではないんだ。
「どれだけ多くの人をハッピーにできるか」なんだ。
例の靴屋が、顧客が本当に欲しいと思っている時期に適切な靴を並べることが出来たなら、
それは素晴らしい価値創造だ。


先週、天気予報が真冬並みの気温を告げてきたので、
僕はどこかに行って季節外れの上着を購入する必要に迫られた。
こんな四月も半ばになって冬物衣料を置いている店とは?
ここで、セブンアンドアイホールディングスについて話を挟もう。
セブンアンドアイホールディングスはデータマイニングを含め、様々な最適化に力を入れているグループだ。
小話をすると、セブンアンドアイホールディングスのコンビニであるセブンイレブンは、
配送ルートに一筆書きの概念を利用している。
一筆書きの主な性質とは「1.指定された点を通る、2.二度と同じ経路は通らない」の2点だ。
これはつまり、各配送すべきコンビニ店舗を通りつつ、同じ道を何度も行き来するという無駄を省いた経路、ということだ。
配送ルートまで最適化しているセブンアンドアイホールディングス、
きっとこの時期でも冬物衣料を置いておくべきとデータから算出してくれているのではと期待して出かけた。
見事に置いてあった。お蔭で寒くない。
これを「単に売り場面積がでかいから季節外れでも冬物衣料を置き続けられただけだろう」と揶揄するのはたやすいけど、
果たして売り場面積が大きいからってスペースを無駄にするようなことをするかな?いや、わかんないけどね。
「四月半ばにもなれば、上着なんて売れないだろう」という常識をデータで吹っ飛ばしてくれたマイニング屋さん、
お名前は知らないけどあなたのおかげで暖かく過ごせたよ、ありがとう。
私もあなたのようにマイニングでハッピーを生成するよ。












○すげーウルトラミラクル糞どうでもいい追記
※文中に出てくる店、大井町駅の目の前にあるアレを僕はずっとイオンだと思って2年半ほど通ってたんですが、
つい先ほどご指摘を受けてアレがイトーヨーカ堂だということにようやく気づきました。
本当に嘘ばかり言って申し訳ありませんでした。
そして俺は2年半何を見てたんだマジで、いやもうマジで。



○すげーウルトラミラクル糞どうでもいい追記2
「たべみる」がところどころ「たべろぐ」になってて意味不明な文になってました。ご指摘ありがとうございます。