Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ベイズ統計学

4,070 views

Published on

ベイズ統計学を0から勉強して応用した時の話。
かれこれ1年以上前に作成した資料が出てきたので少しだけ手直ししてアップロードします。
肝心のベイズ部分が怪しいので、間違っている場合はご指摘いただけると幸いです。
(手直しできないので削除するしかないかも…)

Published in: Education
  • Dating direct: ❶❶❶ http://bit.ly/2u6xbL5 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/2u6xbL5 ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ベイズ統計学

  1. 1. ベイズ統計学
  2. 2. プロローグ  “Big Data”というのがはやり始めた頃
  3. 3. プロローグ 飲み会にて(かれこれ1年ほど前?) 最近、ベイズを 勉強してるんで すよ へ へ も へ 上司 へ へ も へ お、いいね。 理解したら教え てな! 本2冊チラッ M
  4. 4. プロローグ 後日、興味が湧いたので聞いてみた ベイズって経験 をいかせる確率 なんですよ M へ へ も へ 僕 へ へ も へ この前言ってた ベイズ教えて! ふんふん。ほん で、ほんで? どういう意味? ・・・ ・・・
  5. 5. プロローグ  2014年4月某日 グループ飲み会にて 最近、ベイズ勉 強してますよ! 各 へ へ も へ お、じゃぁ近々 発表してな! 僕 へ へ も へ 上司 へ へ も へ(あれ、Mさん時と 勢いちゃうやん。 ま、飲んではるし 忘れるやろ…) 冗談ちゃうから な。絶対やぞ。 覚えてる からな!
  6. 6. プロローグ 仕事じゃないので やり放題パワポ
  7. 7. 本資料の目的 本資料の目的  普通の確率との違いを理解する。  簡単な計算ができるようになる。  なぜビッグデータに関係するのか理解する。  使用例
  8. 8. ベイズでない普通の“確率”って知ってる? 確率とは、ある現象が起こる度合い、ある 事象が現れる割合のことを言う。偶然性 を含まない一つに定まった数値であり、 発生の度合いを示す指標として使われる。 (これを数学的確率) 赤玉を取り出す確率 1/2
  9. 9. では、玉の数が分からない場合は?    0 0.5 1 1.5 2 0.01 0.07 0.13 0.19 0.25 0.31 0.37 0.43 0.49 0.55 0.61 0.67 0.73 0.79 0.85 0.91 0.97 赤玉が出る確率の分布 そう、ベイズならね! 確率を求められる、
  10. 10. 試行毎に確率が変わる ベイズの確率は分布で表される! 0 0.5 1 1.5 2 2.5 3 3.5 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 確率の分布 赤玉が出る確率 施行前 試行1回(赤) 試行2回(赤赤) 試行3回(赤赤青)
  11. 11. なにが違うのか? ベイズ確率 (ベイジアン) 普通の確率 (頻度主義) 母集団 (真の値) 推定 試行結果 母集団 (確率で分布) 試行結果 試行結 果 試行結 果 試行結 果 試行結 果 試行結 果試行結果 母集団 (仮置き) 更新 母集団 (確率で分布)更新 無限回 繰り返すなんて正 気の沙汰じゃねーよ。 一生やっとけ! VS 事前確率を勝手に 決めるなんてあり得 えねーよ。ばーか
  12. 12. 用語 その1 ベイズの用語 有名どころ ・ベイズの定理 ・ベイズ確率 ・ベイズ推論
  13. 13. 用語 その2 確率の表記について 事象Aが起こる確率を P(A) 事象Aと事象Bが同時に起こる確率 P(A∩B) 事象Bが起こった条件のもと事象Aが起こる確率 P(A|B) A B P(A) A B P(A∩B) A B P(A|B)
  14. 14. ベイズの定理 確率の表記について 事象Aが起こる確率を P(A) 事象Aと事象Bが同時に起こる確率 P(A∩B) 事象Bが起こった条件のもと事象Aが起こる確率 P(A|B) A B P(A) A B P(A∩B) A B P(A|B) P(A∩B) = P(A|B) ×P(B) = P(B|A) ×P(A) ベイズの定理 P(A|B) = P(B|A) ×P(A) P(B)
  15. 15. ? で?
  16. 16. ベイズの定理の意味付け ベイズの定理のA、BをH、Dと置き換えます。 ベイズの定理 ∝ k×P(D|H) ×P(H) k・・・定数 P(D|H) ×P(H) P(D) D ・・・ 結果(Data) H ・・・ 原因、仮説(Hypothesis) ・・・ 事後確率 データDが得られたときの原因 がHである確率 事前確率 原因Hが発生する確率 尤度(ゆうど) 原因がHでデータDが得られる 確率 P(H|D) =
  17. 17. ? で!?(゚Д゚)ゴルァ!
  18. 18. ベイズ確率の実際の計算 では、赤玉の確率P(赤|θ) をθ としましょう。 ベイズの確率 θの分布を求める ベイズの定理 P(H|D)∝k×P(D|H) ×P(H)
  19. 19. ベイズ確率の実際の計算 では、赤玉の確率P(赤|θ) をθ としましょう。 ベイズの定理 P(H|D)∝k×P(D|H) ×P(H) P(θ|赤) ∝ k1 × P(赤|θ) × P(θ) = k1 × θ × 1.0 = 2θ θ 10 1 P(θ) ※この1.0が意味するのは、赤玉を取り出す前の何の情報 も無い状態では、全部赤玉(θ=1)、全部青玉(θ=0)も 同じ割合で存在するということ。(事前確率、経験) θ 10 2 P(θ|赤)
  20. 20. ベイズ確率の実際の計算 つづき ベイズの定理 P(H|D)∝k×P(D|H) ×P(H) P(θ|赤赤) ∝ k2 × P(赤|θ) × P(θ|赤) = k2 × θ × 2θ = 2k2 × θ^2 = 3θ^2 ※確率なのでθ=0〜1の積分が1となるため2k2=3 θ 10 2 P(θ|赤) θ 10 3 P(θ|赤赤)
  21. 21. ベイズ確率の実際の計算 つづき ベイズの定理 P(H|D)∝k×P(D|H) ×P(H) P(θ|赤赤青) ∝ k1 × P(青|θ) × P(θ|赤赤) = k3×(1−θ)×3θ^2 = 12(1−θ)θ^2 ※確率なのでθ=0〜1の積分が1となるため3k3=12 θ 10 3 P(θ|赤赤) 10 16/9 P(θ|赤赤青) 2/3 最尤推定で確 率2/3!
  22. 22. ビッグデータに向いている訳  逐次合理性 ベイズの定理 P(H|D)∝ k×P(D|H) ×P(H) k・・・定数 事後確率 データDが得られたときの原因 がHである確率 事前確率 原因Hが発生する確率 尤度(ゆうど) 原因がHでデータDが得られ る確率 ※すべてのデータを使って計算し直す必要が無い。
  23. 23. 使用例
  24. 24. 技術とは使ってなんぼ 人生をハッピーにするベイズ! (日曜日の憂鬱を軽減) こいつ
  25. 25. 人間の思考パターンを凌駕するのだ! 「サザエさんじゃんけん研究所 公式ウェブサイト」の「よくある質問 と回答」より Q1:サザエさんの手は誰がどうやって決めているのですか? A1:アニメーションを製作している株式会社エイケンの動画編集担当者(エン ディングで「編集」とクレジットされている人)が個人的な思いつきで決めていま す。 これはいける! 参考URL: http://park11.wakwak.com/~hkn/
  26. 26. なぜベイズなのか? 人間が考えるランダムはランダムではないから。 ?3回 同じものを出したのは2008年以降1回だけ! 過去何回かの出力傾向を見れば、次に出すものが分かる!
  27. 27. ベイズの推測方法 つまり、  事前に出た手で次に出す手を推測する。 n回前の手次の手 ※http://ja.wikipedia.org/wiki/単純ベイズ分類機 このとき、分子は同時確率で、 細かいことはいいや
  28. 28. 思考の元 過去のじゃんけんパターンを解析して予想をたてる 「サザエさんじゃんけん研究所 公式ウェブサイト」より(予測方法不明)
  29. 29. 統計に強い言語Rを使用して計算 簡単なプログラムを作成。 入力を変化させて ・過去 約1200回のデータを学習 ・99回のデータをテストデータ で、正解率を確認 #load library for NaiveBayes library(e1071) #inport data last line is dummy to predict #default read.csv is treatin string as factor , so add option and #convert to factor after add dummy line indata <- read.csv("DB_FILE.txt",stringsAsFactors=F) indata <- rbind(indata,c(2000,21001010,2010,10,10,"P","")) indata$Result <- as.factor(indata$Result) #get data length len <- length(indata$Times) #function to create learning data Get_Input <- function(num,del=0,TestCount=100){ len <- length(indata$Times) Res <- matrix(ncol=num+1,nrow=len-num-TestCount-del) for (i in (1+del):(len-num-TestCount)){ for(j in num:0) Res[i-del,num - j + 1] = indata$Result[i+j] } Res } #funciton to create test data(include predicting data) Get_Test <- function(num,TestCount=100){ len <- length(indata$Times) Res <- matrix(ncol=num+1,nrow=TestCount) for (i in 1:TestCount){ for(j in num:0 ) Res[i,num -j + 1] = indata$Result[len - num - TestCount + i + j] } Res } #main fuction to predict last data using naivebayes Try_NB <- function(num){ nb_input <- data.frame(Get_Input(num,TestCount=100)) nb_input$X1 <- as.factor(nb_input$X1) nb_test <- data.frame(Get_Test(num,TestCount=100)) nb_test$X1 <- as.factor(nb_test$X1) nb_model <- naiveBayes(X1~.,nb_input) predict(nb_model,nb_test) } #set # of data to exclude to learning #TestCount <- 5 #####Main Routine##### #try naiveBayes with some parameters between 1 to 50 LOOP_MIN <- 1 LOOP_MAX <- 200 for (i in LOOP_MIN:LOOP_MAX) { res <- Try_NB(i) cat(res) cat("n") } levels(indata$Result)
  30. 30. 結果! 正解率 50%超え! 0% 10% 20% 30% 40% 50% 60% 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 n回前の手まで入力とする 正解率 正解率 確認するデータを増やしても、正解率はそれほどあがらない ※直感的にも正しいと思える。
  31. 31. ついでにbot化! ゴールデンウィークの一日目を使ってbot化! AWS (無料サーバ) 某有名サイト 実装した機能(毎週木曜日0時に自動実行) ・某有名サイトからデータ取得 ・Rでバッチ的に最新データを機械学習 (ナイーブベイズ) ・学習データをもとに予測して、結果を自動的にツイート 本サービスはAWS無料期間終了のため、 Closeしております
  32. 32. まとめ ・ベイズの基本公式を導きだし方を説明 ・簡単な計算をやってみました ・実際の問題に適用してみました。
  33. 33. 付録
  34. 34. より具体的な ベイズの計算例 例題) 男性 60人 眼鏡 50人 女性 40人 眼鏡 20人 ベイズの定理 P(H|D) = P(D|H) ×P(H) P(D) D ・・・ 結果(Data) H ・・・ 原因、仮説(Hypothesis) ある一人を選んだとき、眼鏡を掛けていた。 その人が女性である確率は? 選んだ人が女性である確率 ・・・ P(H) 眼鏡をかけている人を選ぶ確率 ・・・ P(D) =P(H|D) = P(D|H) ×P(H) P(D) = 70/100 20/40×40/100 70 20 当たり前?では、設問の確率、P(H|D)は? P(H) ・・・ 女性の確率 40/100 P(D) ・・・ 眼鏡をかけている確率 70/100 P(D|H) ・・・ 女性を選んだときに眼鏡をかけている確率 20/40

×