「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 標本を必ずしも必要としない、母数が確率的に動くとみなす。
- 手元のデータが不十分であることを前提に新たに情報が得られるたびに考え方を更新する。
- ベイズの定理というものを中心に主観的に条件付き確率を考えるという特徴がある。
ベイズ主義と頻度主義 †
ベイズ主義(ベイズ統計)と
頻度主義(一般的に扱われる統計)
| ベイズ主義 | 頻度主義 |
母数 | 確率定数 | 変数 |
データ | 変数 | 確率定数 |
主観確率と客観確率 †
主観確率を扱う統計学
- 得られたデータから確率を更新していく(ベイズ更新)
- 主観確率の数値に根拠データを要求しない。
同時確率と条件付き確率 †
- とある前提条件と、とある事象が同時に起こる確率
- 同時確率P(事象∩前提条件)
- P(A, B) = P(A∩B)
- とある前提条件があったとき、とある事象が起こる確率
- 条件付き確率P(事象|前提条件)
同時確率と条件付き確率の関連 †
- 条件付き確率
- P(B∣A) = P(B)
- P(A∣B) = P(A)
- 同時確率
- P(A∩B) = P(A) * P(B∣A)
- P(A∩B) = P(B) * P(A∣B)
- 条件付き確率
- P(B∣A) = P(A∩B) / P(A)
- P(A∣B) = P(A∩B) / P(B)
逆問題=機械学習的 †
- 非独立の場合、条件付き確率の乗法定理によって
「事象X, 前提条件Yの条件付き確率から、
前提条件X, 事象Yの条件付き確率(原因の確率)を求める」
ことができる。
- 観測したP(B∣A)、P(A) 、P(B)を使用してP(A∣B)を推定できる。
- P(A∣B) = P(A∩B) / P(B)
- P(A∣B) = (P(A) * P(B∣A)) / P(B)
例:ある町の子供が飴玉で笑顔になる確率。 †
- ある街の子どもたちは
- 毎日1/4の確率で飴玉をもらうことができ、
- 飴玉をもらうと1/2の確率で笑顔になる。
- その街の笑顔な子どもが飴玉をもらっている確率は?
(ただし,この街の子どもたちが笑顔でいる確率は1/3)
- 整理
- P(A) = P(飴玉) = 1/4
- P(B) = P(笑顔) = 1/3
- P(B∣A) = P(笑顔|飴玉) = 1/2
- P(A∣B) = P(飴玉|笑顔) = ?
- 回答
P(飴玉|笑顔) = 笑顔な子どもが飴玉をもらっている確率
- P(A∣B) = (P(A) * P(B∣A)) / P(B)
- P(A∣B) = ( (1/4)(1/2) ) / (1/3) = (1/8)/(1/3)=3/8
ベイズの定理 †
公式 †
「観測したP(B∣A)、P(A) 、P(B)を使用してP(A∣B)を推定する。」の
Aを仮説H、BをデータDと置き換えた、
「観測したP(D∣H)、P(H) 、P(D)を使用してP(H∣D)を推定する。」の
- P(H):事前確率:
事象Hの事前の発生確率。
- P(D∣H):尤度:
事象Hが観測された条件下での事象Dの発生確率。
- P(D):周辺尤度:
事象Dの確率。これは、すべてのHiについてP(Hi) * P(D∣Hi)を加算したもの。
- P(H∣D):事後確率:
事象Dが観測された条件下での事象Hの発生確率。
公式としては、
- P(H∣D) = (P(H) * P(D∣H)) / P(D)
※ 分子は左側が先に出てきて、次はひっくり返す。分母は右側
展開公式 †
- P(D):周辺尤度を計算すると、
P(D)=∑P(D∣Hi)×P(Hi)
- P(H∣D) = (P(H) * P(D∣H)) / P(D)
- P(H∣D) = (P(H) * P(D∣H)) / ∑i P(Hi) * P(D∣Hi)
※ 展開公式の∑(総和)の各項目は分子の式と同じだが∑iのHiは(左側の)全ケースを表す。
ベイズ更新 †
- まず、事象 H について、事前確率 P(H) を与える。これが初期の事前確率となる。
- 観測されたデータ D をもとに、値を計算
- 尤度 P(D∣H) :事象 H が与えられた条件下でのデータ D の発生確率。
- 周辺尤度 P(D) :すべての事象 Hi について、尤度 P(D∣Hi) を事前確率 P(Hi) と掛け合わせた値を加算。
- ベイズの定理を用いて、各事象 H の事後確率 P(H∣D) を計算。
- 新しい観測データが得られるたび、若しくは、新たな事象を追加する際、
(多変数の場合のベイズの定理というものが有るらしいので、それを使って計算する)
事前確率を計算した事後確率で更新して、新たな事後確率を計算する。
詳細 †
例:陽性時罹患率 †
- ● p(C1):罹患者a%
- ● p(P|C1):a * b%
- p(N|C1):a * (100-b)%
- ● p(C2):健康な人100-a%
- ● p(P|C2):x=100-a% * y%
- p(N|C2):x=100-a% * (100-y)%
- 検査薬陽性で病気Xとなる確率
- 病気Xには、10万人に20人の割合で罹患する。
- 罹患者に検査薬Yを投与すると、80%の確率で陽性
- 健康な人に検査薬Yを投与すると、95%の確率で陰性
| 合計 | 陽性(Y1) | 陰性(Y2) |
罹患者(X1) | 20/100,000 = 0.0002 | 0.0002*0.8 | 0.0002*0.2 |
健康な人(X2) | 1 - 20/10,000 = 0.9998 | 0.9998*0.05 | 0.9998*0.95 |
例:学校ABと男女 †
- 学校Aの生徒X人・男女比a:b、学校Bの生徒Y人・男女比c:dで、
入力データについて女子の時、学校A/Bに属する確率、的な問題。
- P(H∣D) = (P(H) * P(D∣H)) / ∑i P(Hi) * P(D∣Hi)
- この場合の全ケースは学校になる。Hi = C_sa, C_sb
- P(C_sa∣W) = (P(C_sa) * P(W∣C_sa) ) / ( (P(C_sa) * P(W∣C_sa) ) + (P(C_sb) * P(W∣C_sb) ) )
- p(C_sa):学校Aの生徒 = (X/X+Y)
- p(M|C_sa):学校Aの生徒場合で、男子生徒 = (a/(a+b))
- p(W|C_sa):学校Aの生徒場合で、女子生徒 = (b/(a+b))
- p(C_sb):学校Bの生徒 = (Y/X+Y)
- p(M|C_sb):学校Bの男子生徒 = (c/(c+d))
- p(W|C_sb):学校Bの女子生徒 = (d/(c+d)
- 学校Aの生徒1000人・男女比7:3、学校Bの生徒250人・男女比2:8で、
ある入力データxiについて性別が女子であった時、学校Aに属する確率を求めよ。
- p(C_sa):学校Aの生徒(1000/1000+250)=100/125=4/5
- p(M|C_sa):学校Aの生徒場合で、男子生徒(7/10)
- p(W|C_sa):学校Aの生徒場合で、女子生徒(3/10)
- p(C_sb):学校Bの生徒(250/1250)=1/5
- p(M|C_sb):学校Bの生徒場合で、男子生徒(1/5)
- p(W|C_sb):学校Bの生徒場合で、女子生徒(4/5)
- P(H∣D) = (P(H) * P(D∣H)) / ∑i P(Hi) * P(D∣Hi)
- P(C_sa∣W) = (P(C_sa) * P(W∣C_sa) ) / ( (P(C_sa) * P(W∣C_sa) ) + (P(C_sb) * P(W∣C_sb) ) )
- P(C_sa∣W) = ( (4/5) * (3/10) ) / ( (4/5) * (3/10) ) + ( (1/5) * (4/5) ) )
- P(C_sa∣W) = (12/50) / ( (12/50) + (4/25) ) = (12/50) / ( (12/50) + (8/50) ) = 12/20 = 6/10 = 0.6
例:工場ABCと不良品の確率 †
- 工場ABCの生産量と各工場の不良品の確率から、不良品の場合、どの工場で生産された確率が最も高いか?
- P(H∣D) = (P(H) * P(D∣H)) / ∑i P(Hi) * P(D∣Hi)
- この場合の全ケースは工場になる。Hi = C_fa, C_fb, C_fc
- P(C_fa∣F) = (P(C_fa) * P(F∣C_fa) ) / ( (P(C_fa) * P(F∣C_fa) ) + (P(C_fb) * P(F∣C_fb) ) + (P(C_fc) * P(F∣C_fc) ) )
- P(C_fb∣F) = (P(C_fb) * P(F∣C_fb) ) / ( (P(C_fa) * P(F∣C_fa) ) + (P(C_fb) * P(F∣C_fb) ) + (P(C_fc) * P(F∣C_fc) ) )
- P(C_fc∣F) = (P(C_fc) * P(F∣C_fc) ) / ( (P(C_fa) * P(F∣C_fa) ) + (P(C_fb) * P(F∣C_fb) ) + (P(C_fc) * P(F∣C_fc) ) )
- 各工場の不良品の確率
- AF : 1/8
- BF : 1/2
- CF : 3/8
- 不良品が工場Aの確率、Bの確率、Cの確率
分母は同じなので分子が最大のものが最大になる。
- 不良品が工場A:
((1/3)*(1/8))=1/24
- 不良品が工場B:
((1/9)*(1/2))=1/18
- 不良品が工場C:
((5/9)*(3/8))=15/72=5/24
例:迷惑メール †
(ベイジアンフィルタ)
- 迷惑メールのXが原因で、URL付きのYが結果
- 事前確率:迷惑メールは全体の30%(主観による設定)
- 迷惑メールの中でURL付きである確率は60%(観測による結果)
- 正常メールの中でURL付きである確率は10%(観測による結果)
| 合計 | URL有り(Y1) | URL無し(Y2) |
迷惑メール(X1) | 0.3 | 0.3*0.6 | 0.3*0.4 |
正常なメール(X2) | 1 - 0.3 = 0.7 | 0.7*0.1 | 0.7*0.9 |
- URL付きで迷惑メールである事後確率:P(H∣D)
- P(H∣D) = (P(H) * P(D∣H)) / ∑i P(Hi) * P(D∣Hi)
- P(H∣D) = (迷惑メールの確率(事前確率) * 迷惑メールの中でURL付きである確率(尤度)) / 全メールの中でURL付きである確率(周辺尤度)
- P(H∣D) = (0.3*0.6) / (0.3*0.6) + (0.7*0.1) = 0.18 / 0.18 + 0.07 = 18/25 = 0.72
- 新たな事象を追加する際、事前確率を計算した事後確率で更新して計算する。
(多変数の場合のベイズの定理というものが有るらしいので、それを使って計算する)
- タイトルに「出会い」が含まれていた場合の事後確率。
- 本文に「出会い」が含まれていた場合の事後確率。
- 初めは事前確率は不明でも、新たな事象を追加して事後確率を上げていけば良い。
- タイトル、本文に含まれる語句ごとの出現確率(=特徴)を抽出、
- 点数をつけ、スパムと正常なメールを判別するための閾値を導き出す。
フィルタ、モデル等 †
ベイジアンフィルタ †
- ナイーブベイズ・アルゴリズムを利用した
単純ベイズ(ナイーブベイズ)分類器(クラシファイア)を応用し、
対象となるデータを解析・学習し分類する為のフィルタの総称。
- 学習量が増えるとフィルタの分類精度が上昇するという特徴をもつ。
- 個々の判定を間違えた場合、ユーザが正しい内容に判定し直すことで再学習を行う。
ベイズモデル †
統計モデルのパラダイムシフトとして
記述能力と汎化能力のトレードオフを回避するパラメタθ
自体にも統計モデルを想定するような統計モデルの一種
- さまざまな情報を分布の形で表現する統計モデル
- データを与えたもとでのパラメタの確率分布を推定する
- 単純なモデルでは現実にそぐわない。
多くのパラメタが必要な非線形モデルにおいて、
様々な潜在変数を統一的に解析できる枠組。
- 顕在変数と潜在変数
潜在変数(観測できないデータ)を観測モデルにプラグインして
潜在変数も説明しながらデータが観測されるメカニズムを表現できる。
(潜在変数を無視した解析は本質的な理解とは遠い解析になるリスクを有する)
- 顕在変数:観測データとして取得できる。
- 潜在変数:観測データとして取得できない。
- 構造
以下のような統計モデルを有機的に結合
(軸(t)毎のパラメタが出てくる)
- パラメタaの不確実性を表す統計モデル
- パラメタθtの不確実性を表す統計モデル
- パラメタytの不確実性を表す統計モデル
- 枠組(モデル統合)
理論だけではなくドメイン知識も利用できる。
- 観測モデル
- 階層モデル
- 事前分布
- 潜在変数 1,2,...w
- マルコフ連鎖モンテカルロ法(MCMC)
- ベイズ階層モデルを推定する枠組み
- ベイズの定理を使ったデータ解析技術が飛躍的に進歩
- R、Pythonで比較的簡単に実装可能
- 二つのステップ
- マルコフ連鎖シミュレーションを通じたサンプリング
- モンテカルロ積分による期待値の計算
- プロセス
- 複数のモデルを立てる。
- 全てのモデルを推定・比較する。
- 最も妥当と考えられる構造を特定する。
- 情報の変換と活用。
- 上記を繰り返す。
ベイジアンネットワーク(BN) †
- 特徴
- 非線形で分布の密度関数を特定できない場合、
- 複数の離散的な変数間の依存関係を考慮し、
- 幅広い範囲の確率分布を表現出来る。
- 現象を複数の確率変数として近似するノンパラメトリック・モデル
- 確率的構造モデル(確率的グラフィカル・モデルとも呼ばれる)
確率的な因果構造(依存関係)をモデル化(構造化)して表現する。
- 条件付き確率表で不確実な現象を確率モデルで表現
(背景の条件付き確率で等価なため、決定木に変形も可能)
- 応用面
目的:知りたい対象の変数の事後確率分布を計算する。
- 関係のある変数間に条件付き確率表があり、
- 現象は各確率変数の同時分布として表現
- その変数でも入力・出力にできる。
- 依存関係を絞ることで記述量・計算量を劇的に削減可能。
- 複雑な因果関係の推論を有向非巡回グラフ構造により表す
- ノード
・離散的な確率変数
・観測ノード、未観測ノード、隠れノード
- 有向リンク
・定性的依存性:グラフ構造
・定量的依存性:条件付き確率(表 / パラメトリック・モデル)
- 完全データの場合
クロス集計表を正規化し条件付き確率表に変換
- 不完全データの場合
・事前確率分布を考慮し補完
・初期モデルを使って確率推論を行い
EMアルゴリズムにより欠損部を推定
・連続分布による近似で欠損データを補完
- 条件付き確率の学習
・離散確率変数:条件付き確率表を学習により作成(頻度分布から確率化)
・連続確率変数:パラメトリック・モデルのパタメタ学習(最小二乗法、最尤法) or 離散化
- グラフ構造の学習
BNで使う条件付き確率表では(離散確率変数の場合)
・クロス集計表ではカイ二乗検定により変数間の独立・従属性を判定
・条件付き独立性に基づく構造学習の判定は計算コストが大きいので
モデルの情報量基準を局所的に繰り返し変数間の独立・従属性を判定
・情報量基準:AIC、BIC/MDL、C4.5
(データの適合度とモデルの自由度による評価基準
・モデルを選択(ベイズ比検定
(ノードの探索戦略や制約条件で計算量を抑える
- 推論
- 確率伝播法(Belief Propagation
上流からのBeliefと下流からのBeliefをベイズの定理で統合
- ネットワーク構造によっては厳密な確率にならない問題
Junction Tree アルゴリズム(1本の順方向の構造へ変換)
Loopy Belief Propagation(近似計算)
その他、グラフ構造の確率モデル †
活用例 †
診断・コールセンター †
(ベイジアンネットワーク)
- 医者の診断の効率化
- コールセンター効率化
- ソフトウェアのAIアシスタント
レコメンド †
(ベイジアンネットワーク)
(ベイジアンネットワーク)
- 行動の予測(シミュレート
確率的行動モデリング
- 事故防止
- 子供の事故防止(デンバーⅡ行動モデル+事故履歴の相互作用結果
- 価値創出のための循環型アプローチ
サービスシステムの価値構造モデリング
- 製造系DXをサービス分野で応用
サービス間の動線を横断的に分析してマーケティング的に利用する。
※ ステークホルダー・マネジメントが重要である模様
ベイズモデルのマルコフ連鎖モンテカルロ法(MCMC)を使用して、
消費者の行動の結果データで観測されている変数だけでなく、
その背後に存在する観測できない潜在変数までも含めて因果性を評価する。
- 異質性
- ★消費者の異質性
- 時間的異質性
- 店舗の異質性
- 製品の異質性
- 地域の異質性
- 銘柄の異質性
- 企業の異質性
- 潜在変数
- ブランドロイヤルティ
- 家庭内の在庫量・消費量
- 消費者の経験
- 消費者の将来を予知する能力
- 消費者の嗜好性、好き嫌い、興味の有無
推論・経験モデル †
- 2つの段階で推論モデルを構築する。
- 1つが学習する段階
推論モデルを試行錯誤により「逆問題」で構築していく。
- もう1つが“推論”する段階
学習段階で作られた推論モデルから「順問題」で解いていく。
※ データ分析 > 順問題と逆問題
参考 †
YouTube? †
Wikipedia †
... †
アルゴリズム・モデル †