ほくそ笑む

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

確率論の基礎について発表しました

Watanabe理論勉強会で発表してきました。
前回の発表はこちら

前回は2章だったのですが、2ヶ月半で5章まで進みました。ページ数的には折り返し地点です。

今回の担当は5章前半だったのですが、私の脳みそでは非常に難しく感じたため、5章に入る前に1章で飛ばした確率論基礎について復習させてもらいました。

発表スライドは下記です。

この部分は非常に簡潔に書かれていて、私には分かりやすかったのですが、確率空間は必ずしも距離空間である必要はないとか、可測空間だけでは積分は定義できないとか、詳しい方々からのツッコミが容赦なく入りました。

しかし、この復習で、ある程度は確率空間や確率変数に対するイメージが固まったため、5章を読み進めることができました。

5章の発表スライドは下記です。

タイトル詐欺で経験過程まで行っておらず、法則収束の説明までです。

法則収束は汎化誤差の漸近挙動を研究したいWatanabe理論では重要な概念となります。

この章ではもう一つ、関数に値を取る解析関数についてのセクションも私の担当なので、次回発表する予定です。

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)

A/Bテストと統計的検定の注意点(その1)

素晴らしい記事が上がっていたので言及したい。

この記事では、A/Bテストにおいて、意味のある差が出たかどうかを統計的検定を用いて判断する方法を説明しています。

Web上にある多くのA/Bテストの記事と異なるのは、単に検定手法にデータを突っ込んでp値を出すのではなく、

  • 意味のある差とは何かを事前に決定する
  • サンプルサイズを事前に決定する

という統計的検定のフレームワークに則ったまともな方法で判断を行っているという点です。

よく言われる統計的検定は無意味だなどという言論の多くは、このフレームワークを使っていないだけに過ぎず、不確実な事象に対する科学的な検証方法として、統計的検定のフレームワークの強力さはいまだ健在です。

さて、統計的検定のフレームワークについては上の記事および記事中で紹介されている参考文献にお任せするとして、ここではA/Bテストと統計的検定における、もう少し実践的な話題を紹介したいと思います。

A/Bテストの等質性

A/Bテストとはどういうものでしょうか?
例えば、Webサイトのランディングページに対して2つのデザイン案が持ち上がり、どちらが良いか判断に困る場合があります。
そこで、訪問者をAグループとBグループにランダムに振り分け、それぞれのグループに別々のデザインを見せ、入会率が良い方のデザイン案を採用する、といったことを行うのがA/Bテストです。

上記の記事ではAとBについて次のように書かれています。

  • A「入会率10%の現ランディングページ」
  • B「入会率(以下CVR)15%を期待する新ランディングページ(以下LP)」

ここにはちょっとした罠があります。

こういう風にA/Bを分けると、新ランディングページのCVRが最初だけ良く、途中から下がるという現象にわりと頻繁に遭遇するはずです。

例えば、下記の記事で言及されているような現象です。

ベースラインに対して新しい実験パターンのコンバージョンの方がずっと優勢なんですが,95%ラインを越えたり越えなかったり,という推移が見て取れます.ごく初期に95%を越えた段階で効果あり,と思って実験をストップしちゃうなんていうのは割とありがちな事態ではないでしょうか.

Optimizelyのstats engineによる逐次A/Bテスト - About connecting the dots.

これはなぜ起こるのでしょうか?

A/Bテストにおいて、訪問者をAとBにランダムに振り分けるのは、各グループにおける訪問者の性質を均質にすることが目的です。
もし、Aは男性、Bは女性というような振り分け方をすると、AとBにおける入会率の差が、性別による差なのか、デザインによる差なのか、判別できなくなります。
デザインによる入会率の差を検証したかったら、デザイン以外の要因(例えば男女比)が同じになるように振り分ける必要があります。

ところで、このランディングページに訪れるのは新規訪問者だけでしょうか?
A/Bテストの対象者の中に、現ランディングページを見たことのある人は含まれないのでしょうか?

今、A/Bテストの対象者の中に、新規訪問者と再訪問者が50%ずついるとしましょう。
新規訪問者とは、現ランディングページを見たことがない人たちと定義します。
すると、再訪問者は現ランディングページを見たことがある人たちであり、言い換えると、現ランディングページでは入会しなかった実績を持つ人たちです。
つまり、Aグループにおける再訪問者は、現ランディングページでは入会しにくいという性質を持っていることになります。
そう考えると、AとBの入会率に差が無かったとしても、Aグループにおける再訪問者の入会率はBグループにおける再訪問者の入会率より低くなることが予想されます。

これでは、A/Bテストの前提である「各グループにおける訪問者の性質が均質」を満たしません。

このような場合、どんなに正しく統計的検定のフレームワークを適用ても、正しい結果は得られません。

A/Bテストの評価に統計的検定を使用するならば、グループの等質性についても気を付けなくてならないことがお分かりいただけたかと思います。

(なんか長くなってしまって疲れました。気力があれば続きます。続きが読みたい人はワッフルワッフルと書いて下さい。)

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による実践データ解析 ―大規模データのための機械学習事例集