ほくそ笑む

R言語と統計解析について

Watanabe理論勉強会で発表してきました

このブログの読者には AIC (赤池情報量基準) をご存じの方は多いと思います.
AIC は統計モデルの評価指標として世界中で広く使われていますが、これは赤池弘次という日本人統計学者により考案されたものです。

これに対し、近年、ベイズ統計学で利用可能な WAIC という情報量基準が考案され、世界中で爆発的に普及しています。
この WAIC を考案したのも日本人であり、東工大の渡辺澄夫先生です。

WAIC は、算出すること自体は簡単なのですが、その理論的な根拠として非常に高度な数学が使われています。
この理論について、渡辺先生ご自身が書かれた書籍があります。

Algebraic Geometry and Statistical Learning Theory (Cambridge Monographs on Applied and Computational Mathematics)

Algebraic Geometry and Statistical Learning Theory (Cambridge Monographs on Applied and Computational Mathematics)

Watanabe理論勉強会は、この本を熟読し、この偉大な理論を理解することを目的として発足された勉強会です。

今回、私は第二章の前半部分を担当させていただきました。
発表スライドは下記です。

タイトルは煽りですが、特異点とその解消は渡辺理論において非常に重要です。
今回の発表は特異点の定義とその判定法に関する定理の証明までが範囲です。

ご参考になれば幸いです。

参考リンク

こちらは渡辺理論について日本語で書かれた書籍の読書メモです。たいへん勉強になります。

ベイズ統計の理論と方法

ベイズ統計の理論と方法

追記

ちなみにこの本、Amazon 洋書の売れ筋ランキング 3部門で 1位です。すごい。

「異常検知と変化検知」輪読会で論文紹介しました

去る 7/21(木) に行われた「異常検知と変化検知」輪読会で論文紹介をさせていただきました。

タイトルは「非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出」で、資料は SlideShare に上げています。


本発表で紹介した論文は下記です。


『異常検知と変化検知』「第11章 密度比推定による異常検知」では、密度比推定法として

  • カルバック・ライブラー密度比推定法 KLIEP (Sugiyama+ 2008)
  • 最小2乗密度比推定法 LSIF (Kanamori+ 2009)

が紹介されていますが、LSIF を進化させた uLSIF という手法の紹介です。

uLSIF は本書に載っていない手法として紹介したのですが、本書で LSIF として紹介されているものは実は uLSIF のことらしいというご指摘をいただきました。どうやらその通りのようです。


スライドの最後にも紹介していますが、KLIEP と uLSIF を実装した R パッケージ densratio を CRAN で公開しています。

使い方の詳細は Vignette をご参照下さい。

densratio パッケージはオープンソースGitHub 上で開発されていますので興味のある方はこちらをご参照下さい。

以上です。

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

階層モデルの分散パラメータの事前分布について発表しました

ひと月ほど前になりますが、基礎からのベイズ統計学入門 輪読会で発表させて頂きました。

タイトルは「階層モデルの分散パラメータの事前分布について」で、Andrew Gelman の論文

  • Prior distributions for variance parameters in hierarchical models (PDFリンク)

の内容をまとめたものです。

ベイズ統計において、パラメータの事前分布に何を使うかというのは重要な問題です。
分散パラメータの事前分布には伝統的に逆ガンマ分布が使われますが、この論文によると半コーシー分布を使いましょうとのことです。

発表資料は SlideShare に上げています。


ベイズ統計に興味のある方は、5/19 に 基礎からのベイズ統計学入門 輪読会 #5 最終回 が行われますので参加してみてはいかがでしょうか。テキストは下記です。

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

また、この本の著者である豊田秀樹先生が、アメリ統計学会の声明を受けて、新しい本を出版されるようです。要チェックですね。

はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学―

はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学―

追記

トピックモデルの評価指標 Coherence に関する論文まとめ

LDA などのトピックモデルの評価指標として、Perplexity と Coherence の 2 つが広く使われています。
Perplexity はモデルの予測性能を測るための指標であり、Coherence は抽出されたトピックの品質を評価するための指標です。
トピックモデルは確率モデルであるため、Perplexity の定義は明確です。
一方、Coherence は「トピックが人間にとって分かりやすいかどうか」を評価する必要があるため、その算出方法について様々な議論があります。

本記事では、Coherence に関する研究の中で、主要な流れを作っている、特に重要な 5 つの論文をピックアップして紹介したいと思います。

Coherence とは

Coherence は、「トピックが人間にとって分かりやすいか」を表す指標です。
例えば、トピックが

  • { farmers, farm, food, rice, agriculture }

の単語からなる場合、このトピックが農業に関するものだということは容易に分かります。
したがって、このトピックは Coherence が高いと言えます。
一方、トピックが

  • { stories, undated, receive, scheduled, clients }

の単語からなる場合、このトピックは Coherence が低いと言えます。
この例は非常に極端な場合ですが、実際にはもっと微妙な場合にも Coherence を算出する必要があります。
「人間にとっての分かりやすさ(Human-Interpretability)」という曖昧な指標をどのように算出するのかが Coherence 研究のポイントとなります。
上記の例を見ても分かるように、Coherence の算出には、トピックに含まれる単語間の類似度が大きな役割を果たします。

それでは、論文を見ていきましょう。

Reading Tea Leaves: How Humans Interpret Topic Models

トピックモデルの評価指標として Coherence を提案した最初の論文。
Word Intrusion(単語の押しつけ)という方法でトピックの Coherence を人間に評価させる。
Word Intrusion とは、トピックのトップ N個の単語群の中に、一つだけ別の単語を混ぜて、人間に見つけさせるという作業のこと。
例えば、{ dog, cat, horse, apple, pig, cow } の中から仲間はずれを見つけさせる。
これは容易だが、例えば { car, teacher, platypus, agile, blue, Zaire } では難しい。
その理由は、前者のトピックは Coherence が高く、後者は Coherence が低いからであると考える。
この作業を何人かにやらせて、仲間はずれの発見成功率によって Coherence を評価する。
pLSI, LDA, CTM の 3 つのモデルに対して、この Coherence を測定。
CTM は Perplexity が高いが、Coherence は低くなることが分かった。

Automatic Evaluation of Topic Coherence

Chang(2009)では、Coherence を人間に評価させたが、この論文では、人間を使わずに評価する方法を提案する。
基本的に、トピックのトップ N単語に対して、各単語間の類似度を計算し、その平均値、もしくは中央値を Coherence とする。
この論文の焦点は、どのような単語間類似度を選べば良いかであり、
様々なコーパスと様々な類似度関数を調べ上げ、人間による評価に一番近い物を探している。
人間による評価方法は、Chang(2009)とは異なり、もっと直接的な方法である。
トピックのトップ N単語を人間に提示し、それらの関連性について 3段階評価を行ってもらう(良い、中間、悪い)。
単語間類似度により算出した Coherence と、人間による 3段階評価のスピアマン相関を見て類似度関数の良し悪しを測る。

参照コーパスとして Wikipedia を、単語間類似度として PMI (pointwise mutual information) を使うのが良い。

UCI Coherence という名称で呼ばれ、よく使われているらしい。
佐藤トピ本で紹介されているのはこれ。

Optimizing Semantic Coherence in Topic Models

Newman(2010)では、Coherence の算出に参照コーパスを用意しなければならなかったが、
この論文では、学習コーパスのみを用いた Coherence の算出方法を提案する。
Coherence の算出方法は Newman(2010) と同じで、単語間類似度としては対数条件付き確率(LCP)を用いる。
これにより計算された Coherence が人間による評価に近いことを示した。
人間による評価方法は、Newman(2010)と同じ直接的な 3段階評価を用いた。
ちなみに、この論文では、Word Intrusion は Chain みたいなものが起こるとダメだ的な指摘もしている。
Chain の例: { apple, appl-pie, meat-pie, meat, crab-meat, crab }
Chained Topic は Coherence は低いのに、Word Intrusion で仲間はずれを見つけやすい。
さらにこの論文では、この論文で提案した Coherence が高くなるような新たなトピックモデルも提案している。

UMass Coherence と呼ばれ、参照コーパスを必要としないため、ライブラリに実装しやすい。
実際、gensim の LDA において、top_topics() という関数で実装されている。
UCI Coherence と UMass Coherence を比較したこちらの論文紹介が非常に参考になります。

Evaluating Topic Coherence Using Distributional Semantics

統計的意味論における類似度を Coherence の自動計算にあてはめてみたという論文。
Newman(2009)では、単語間類似度に PMI を用いたが、これを意味空間(Semantic Space)上の類似度に変えてみる。
分布仮説に基づき、意味空間を共起についての情報量(PMI, NPMI)を用いて作成。(参照コーパスWikipedia)
ただし、そのままだと意味空間の次元が大きくなりすぎるので、Islam(2006) で提案された Reduced Semantic Space と
トピックに現れる単語のみを用いた Topic Word Space の 2 つを考える。
意味空間上の類似度として、コサイン類似度、Dice係数、Jaccard係数の 3 つを調べる。
もう一つ、トピックの重心(Centroid)からのコサイン類似度の平均値から算出した Coherence も調べる。
この 16個(=2×2×4)を人間による評価とのスピアマン相関により評価。
人間による評価は 3 段階評価をクラウドソーシングにより実施。
結果としては、

  • Topic Word Space が良い
  • コサイン類似度が平均的に良い
  • PMI と NPMI は同じくらいか

とりあえず既存手法で最も良い Newman(2009) よりは良くなったので、意味論的なアプローチは有効。
NPMI はコサイン類似度に限らずいい値が出たので意味論的なアプローチに向いている。

Machine Reading Tea Leaves: Automatically Evaluating Topic Coherence and Topic Model Quality

この論文では、上記4つの方法を俯瞰的に比較している。
モデルレベルでの Coherence とトピックレベルでの Coherence を分けて考える。
まず、モデルレベルの Coherence はトピックレベルの Coherence の平均値であるとする。
pLSI, LDA, CTM の 3 つのトピックモデルに対して、トピック数 50, 100, 150 の 3 つを作る(計9つ)
これら 9 つのモデルのトピックに対して Word Intrusion と直接的な 3 段階評価法で人間による評価を行う。
手法としては、Newman(PMI), Newman改(NPMI), Mimno(LCP), Aletras(DS) および著者の提案した Auto-WI を人間による評価とピアソン相関で比較する。
モデルレベルでは人間による Word Intrusion と直接的な 3 段階評価法には強い相関があり、ほとんど同じと言ってよい。
Word Intrusion に対しては Auto-WI が最も相関が高く、直接的な 3 段階評価法に対しては NMPI が最も相関が高く、Wikipedia に限ると LCP が最も相関が高くなった。
また、参照コーパスとして学習コーパスと同じドメインを用いると良い。
次に、トピックレベルでの相関を見てみたが、非常に低い。
これは本質的な難しさがあり、人間同士を比較してもばらばらになる。
人間による評価値を 2 グループに分けてそれらの相関をとり、その値に近い相関が出れば、人間と同じレベルの評価ができる手法とみなす。
モデルレベルと同様の実験をしたが、NPMI と DS の 2 つの手法が人間と同じレベルの評価ができることが分かった。

宣伝

1/28(木)の第8回『トピックモデルによる統計的潜在意味解析』読書会で発表します!
皆さまぜひ聞きに来てください!

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

『Sparkによる実践データ解析』という本の付録を執筆しました

リクルートの高柳さんと共同で『Sparkによる実践データ解析』という本の付録を執筆しました。

Sparkによる実践データ解析 ―大規模データのための機械学習事例集

Sparkによる実践データ解析 ―大規模データのための機械学習事例集

執筆した付録の内容は「SparkRについて」です。
SparkR は、R 言語から Spark を使うためのパッケージで、公式サポートされています。

SparkR については、以前 Spark Meetup で発表しました。

このときはまだ、機能として不十分な点が目立ちましたが、Spark 1.5 で大幅に機能が追加されました。
特に、

  • 数学関数、文字列操作関数、日時データ操作関数といった、便利な関数が大量に追加された
  • MLlib の機能から、一般化線形モデル(glm)が追加され、R の glm() と同じ感覚で使えるようになった

など、大きな改善が見られました。

本付録では、このような改善点を含め、SparkR について基礎から応用まで幅広く紹介しています。

本付録では、

  • SparkR の起動方法、RStudio から使うための設定方法
  • SparkR によるデータハンドリングの基礎
  • AWS 上で SparkR を使って分散処理する方法
  • 一般化線形モデル(glm)による線形回帰およびロジスティック回帰

といった内容をなるべく丁寧に解説しています。


また、本付録の大きな目玉として、SparkR で使用できる関数一覧を付けています。
この関数一覧では、関数の入出力とそのデータ型、機能の説明に加えて、分かりにくい場合は使用例も載せています。
例えば、実数を整数に丸める二つの関数 rint() と round() の細かい違いも一目で分かるのではないかと思います。
このような関数一覧は、Spark でのプログラミング中に、こういう機能があったかなというのを探す際の強力なリファレンスになると考えます。
これは、SparkR ユーザだけでなく、ScalaPython から Spark を使用するユーザにとっても非常に有用であると考えます。


さて、本書の翻訳は『Hadoop(象本)』や『はじめてのSpark』を手掛けた玉川竜司さんであり、安心の品質であることは間違いないでしょう。
我々もそれに負けないように全力を込めて付録を執筆したので、ぜひ手に取って見てみて下さい!

Sparkによる実践データ解析 ―大規模データのための機械学習事例集

Sparkによる実践データ解析 ―大規模データのための機械学習事例集

ベイズ統計の入門書が出版ラッシュなのでまとめてみた


【宣伝】2016/09/14

このページに来た方へ。あなたが求めている本はこれです。

まずこれを予約してから下記を読むといいです。
【宣伝終】

最近、ベイズ統計の入門書がたくさん出版されているので、ここで一旦まとめてみようと思います。

1. 基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門 (2015/6/25)

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

データ分析業界ではかなり有名な豊田秀樹先生の本です。
難易度としては易しいほうだと思います。
最新のハミルトニアンモンテカルロ法について容易に解説されているところが特徴です。
Stan ユーザでここらへん分かっていないのなら必読の本だと思います。
勉強会も開催されていて、スライドも公開されていますので、これらを見ながら読み進めていくといいと思います。

(追記:この本は有識者によると誤りが多いそうです)

2. 岩波データサイエンス Vol.1 (2015/10/08)

岩波データサイエンス Vol.1

岩波データサイエンス Vol.1

岩波から出版された「岩波データサイエンス」、シリーズの一冊目の特集が「ベイズ推論とMCMCフリーソフト」でした。
難易度としては簡単なものから難しいものまで多岐に渡っています。
ベイズ推定を行う際の実践的な内容が盛りだくさんというのが特徴です。
特筆すべきは、サポートページの充実ぶりです。購入を検討している人は、一度このサイトに目を通しておくといいと思います。

3. ベイズ計算統計学 (2015/10/10)

ベイズ計算統計学 (統計解析スタンダード)

ベイズ計算統計学 (統計解析スタンダード)

結構ガチな入門書。数式を使って入門したい人向け。
著者は下記の資料を書いた方なので、購入を検討している人は、一度見ておくといいと思います。

4. 完全独習 ベイズ統計学入門 (2015/11/20)

完全独習 ベイズ統計学入門

完全独習 ベイズ統計学入門

完全独習 統計学入門 を書いた人です。この本を読んで気に入った人ならぜひ読むべきでしょう。

著者による書籍紹介はこちら。

5. 見えないものをさぐる―それがベイズ (2015/11/28)

見えないものをさぐる―それがベイズ: ツールによる実践ベイズ統計

見えないものをさぐる―それがベイズ: ツールによる実践ベイズ統計

読んでませんが、Excelベイズをやるらしい。

解説する上で最小限必要とする数式は掲載しますが、ベイズ法で大きな障害となる「計算が難しい」という問題点をツール「Weka」や「Excel」を積極的に使用して簡略化し、データ分析の敷居を低くすることで、「理論より実践」を目指します。

6. ベイズ法の基礎と応用 (2016/1/12)

まだ発売されていませんが、東工大の間瀬先生も出されるようです。
間瀬先生といえば、R ヘルプの日本語訳で有名です。詳しくは下記記事。

7. まずはこの一冊から 意味がわかるベイズ統計学 (2016/2/24)

まずはこの一冊から 意味がわかるベイズ統計学 (BERET SCIENCE)

まずはこの一冊から 意味がわかるベイズ統計学 (BERET SCIENCE)

まだ発売されていませんが、こういうのも出るらしい。

具体的な例題も豊富な本書は、「専門書はとっつきにくいけれども数式のない入門書では物足りない」「これから本格的に学んでいこう」という読者にとって最適な「入門書」です。

8. 医薬データ解析のためのベイズ統計学 (2016/2/25)

医薬データ解析のためのベイズ統計学

医薬データ解析のためのベイズ統計学

“Bayesian Biostatistics”の翻訳
WinBUGSやSASなどの統計ソフトを用いたデータ解析を詳しく紹介
医薬統計分野の実務家にとっても参考となる

9. 身につく ベイズ統計学

身につく ベイズ統計学 (ファーストブックSTEP)

身につく ベイズ統計学 (ファーストブックSTEP)

ベイズ統計の基本的な考え方や活用について、初学者向けテキストとして、ていねいに解説していきます。
ベイズ統計学をこれから勉強したい大学生、ビジネスで実際に活用したい社会人に最適です。

10. はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学

はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学―

はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学―

独自の解釈が多く、初心者が読むと混乱するためお勧めしない。

既刊

ベイズ統計の入門書はすでにたくさん出ていて、いいものがありますのでついでに紹介します。

1. 史上最強図解 これならわかる!ベイズ統計学 (2012/2/21)

史上最強図解 これならわかる!ベイズ統計学

史上最強図解 これならわかる!ベイズ統計学

最初に読む本の定番になっているのではないでしょうか。わかりやすいです。
最後に出てくるこの図が個人的にはお気に入りです。


2. 図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術 (2013/12/18)

上記の本と内容は基本的に変わりませんが、こちらは読み物要素が入っているので、文系向きかも。

3. 異端の統計学 ベイズ (2013/10/23)

異端の統計学 ベイズ

異端の統計学 ベイズ

こちらは完全に読み物。長いですが、文章を読むのが好きな人にはいいかも。私は途中で挫折しました。

4. Think Bayes ―プログラマのためのベイズ統計入門 (2014/9/6)

Think Bayes ―プログラマのためのベイズ統計入門

Think Bayes ―プログラマのためのベイズ統計入門

未読ですが、Think Stats が面白かったのでこちらも良いかなと。
プログラマ向けの入門書で、Python で書きながら学ぶ感じです。

(追記:個人的感想に過ぎませんが、ちょっといまいちでした)

ということで、英語版の PDF が公式ホームページから無料でダウンロードできます。

5. 入門ベイズ統計―意思決定の理論と発展 (2008/6)

入門ベイズ統計―意思決定の理論と発展

入門ベイズ統計―意思決定の理論と発展

私が最初に学んだ本なので思い入れが深いですが、分かりやすさでは上で紹介した入門書の方が良いかもしれません。
ただ、非常に面白い本なので、ある程度学んだあとでいいので、ぜひ手に取ってほしいです。

6. 計算統計 2 マルコフ連鎖モンテカルロ法とその周辺 (2005/10/27)

計算統計 2 マルコフ連鎖モンテカルロ法とその周辺 (統計科学のフロンティア 12)

計算統計 2 マルコフ連鎖モンテカルロ法とその周辺 (統計科学のフロンティア 12)

Amazon レビューでも書かれていますが、伊庭先生の一章は必読です。

R言語でWebアプリケーションを作るためのチュートリアルを翻訳しました

RStudio社が開発した Shiny パッケージは、R言語で簡単に Web アプリケーションを作るためのフレームワークを提供します。

この Shiny による Web アプリケーションの開発方法を学ぶには、公式のチュートリアルを読むのが一番です。

しかし、公式は英語なので、読むのがしんどいです。
そこで、チュートリアル全文を日本語に翻訳しました。
訳文は Qiita で公開しています。このページは目次として活用していただければと思います。

Shiny チュートリアル目次

7 つのレッスンからなるこのチュートリアルは、R プログラマを Shiny 開発者へと導きます。
1 つのレッスンは 20 分ほどで終了し、各レッスンごとに新しい Shiny スキルを 1 つ学ぶことができます。
すべてのレッスンを終えたとき、あなたは Shiny アプリを構築し、公開することができるようになっています。


各レッスンにはエクササイズ(練習問題)が用意されています。
はやる気持ちは分かりますが、このエクササイズを読み飛ばしてはいけません。
エクササイズを行うことによって重要な学びを得ることができます。
我々はエクササイズが重要な意味を持つように、このチュートリアルを作成しました。


それでは、レッスン1 をクリックして、Shiny の世界へ飛び込みましょう!