![見出し画像](https://assets.st-note.com/production/uploads/images/100069984/rectangle_large_type_2_4e55006cb74ca5fab709525764e6cff7.png?width=1200)
機械学習の勉強Part3: ノンパラメトリックベイズ1 ~ベイズ統計とクラスタリング~
イキサツ
この機械学習勉強パートも本題に差し掛かってきました.このシリーズは私が敬遠していたノンパラメトリックベイズをしっかり勉強するために書き始めたものになります.このノンパラメトリックベイズは奥というか根が深いので,複数の記事に分けて書かせていただければと思います.
また,引き続き参考書はオーム社の「続・わかりやすいパターン認識―教師なし学習入門」です.
また,本記事もNotionAIとChatGPTがお供についてきてくれています.
概要
ノンパラメトリックベイズの概要とベイズ統計について書かせていただきます.どうぞ,お手すきでしたら最後までご覧ください.
さて,これまでに私は2つのクラスタリング手法について書かせていただ来ました.記事を載せておきます.
この2つのクラスタリング手法には大きな違いがります.前者の凸クラスタリングでは予めクラスタの数を設定しなくてはいけないのに対し,後者HDBSCANではそれを必要としません.一方,凸クラスタリングでは確率分布を扱い,HDBSCANでは密度を基準とします.
今回から扱うノンパラメトリックベイズは事前のクラスタ数の設定を必要とせず,各クラスタの分散がばらついていてもクラスタリング可能なすごい手法なのです!!(その分,理論が難しい…).
余談ですが,凸クラスタリングでも赤池情報量基準(AIC)やベイズ情報量基準(BIC)を使えば,クラスタ数の獲得はできます.ただ,これ何回もクラスタリングするので,ちょっとズルっぽいく感じます.
ノンパラメトリックベイズの概要
ノンパラメトリックベイズは,ベイズ統計学の一種であり,確率モデルを仮定する必要がなく,データの分布について事前知識を持たない場合に有用です.通常のベイズ統計学では、事前分布と呼ばれるハイパーパラメータを仮定する必要があります.この事前分布はデータ(観測値)によって変形し,データの観測後だと事後分布として算出されます.一方、ノンパラメトリックベイズでは、データの分布を表現するために事前分布を仮定する必要があまりありません.
ノンパラメトリックベイズでは、事後分布を無限次元の分布としてモデル化します.具体的には、ディリクレ過程やガウス過程などの確率過程を使用して、無限次元の確率分布を表現します.これにより、データの分布が従う確率分布の形状を事前に知る必要がなく、モデルの柔軟性が向上します.
ま,何言ってるかわからないですよね!!笑
今後の記事を読んでいって,この内容に対して「これ微妙にあってなくね?」みたいな文句が言えるようになれば,完璧ですね.
ベイズ統計
とりあえず,通常の統計とベイズ統計は何が違うの?ってところから始めましょうか.ちなみに私も厳密な定義などは知りません.
通常の統計学では,データから母集団のパラメータを推定する際に、最尤推定法や最小二乗法などの点推定法を使用します.例えば,「データから平均値や分散を算出して,正規分布を算出する」みたいな誰もが考えることが通常の統計です.一方,ベイズ統計では事前分布と呼ばれる確率分布を仮定し,データを観測することで事後分布を求めることによって,パラメータの不確実性を表現します.これにより,現実の問題への適応範囲が広がり,データが少ない場合や複雑なモデルに対しても有用です.
ま,何言ってるかわからないですよね!!笑
つまり,通常の統計では観測したデータだけで分布を推定します.一方,ベイズ統計は最初に予測(事前分布)をして,観測したデータに基づいて予測を修正(事後分布)します.
![](https://assets.st-note.com/img/1678499732903-DpT4hvKIXm.png?width=1200)
上図の様なイメージを持っていただければ幸いです.通常の統計では,このサイコロは5,6の確率が0になっているのに対し,ベイズ統計では確率が残っています.これは,事前分布をもとに観測値から事後分布を予想している多です.また,モデルがもっと複雑になる(通常サイコロとイカサマサイコロっが混ざる)場合に,ベイズ統計が優位になります.
詳しい,ベイズ統計が知りたい場合は参考書をお読みください.
クラスタリングへの応用
さて,本題に戻りますがこれをどうやってクラスタリングに活かしていくのかが重要です.ノンパラメトリックベイズでは,このベイズ推定を事前分布のモデルリングに用います.
ここで,データxに対応するクラスタ集合をs,各クラスタのモデルパラメータをθとします.
![](https://assets.st-note.com/img/1678588117724-tsndpU8w2a.png)
一応,補足で説明するとクラスタ集合sはs={1,2,1,3…}といった各データxが所属しているクラスタの結果になります.紅組,白組,白組みたいな組み合わせを思っていただければ幸いです.パラメータθは各クラス分存在します.紅組のパラメータ,白組のパラメータだと思ってください.
このパラメータから最適なデータを求めるには,ベイズの定理より事後分布を計算し,
![](https://assets.st-note.com/img/1678588737124-QxHYxUGC7Y.png?width=1200)
ベイズ推定と事後確率最大化に従うことで,
![](https://assets.st-note.com/img/1678588930090-ztluWbXkhM.png)
上記のsとθを求めることにより,最適な所属クラスタのモデルパラメータを決定可能である.ここで,p(・)が確率,P(・)が事前分布の確率(事前確率)です.このため,最大化の式はxのクラスタがsで,パラメータがθだった時の事前確率を最大化することを意味します.
ちなみに,各データの所属するクラスタsのみに興味がある場合は,パラメータ情報を必要としないので,θを積分して消去します.
![](https://assets.st-note.com/img/1678589552930-609kdbAyZW.png?width=1200)
これらならば,sのみを求めればよくなりますね.
と,いうことでパラメータθを求めるor求めないでクラスタリングの手法が2つ出てきます.ここでいうパラメータθは平均値μなどを指します.さて,では実際にどうやって求めるのか?これが一番重要ですね!
現状の課題点としては2つあります.
事前確率 P(s)をどうやって定めるのか
事後分布 p(s,θ |x) or p(s|x)を最大にするにはどうやって計算すればいいのか?
課題1は単純な疑問ですよね! 「さっきから事前分布をモデル化するって言ってるのに,それがわかったら苦労ないじゃん!」全くその通りでございます.
この問題は事前分布の定式化の問題に帰着します.この事前確率P(s)はn個のパターンをどのようにクラスタsに分割するか?またその確率を示します.
そこで,次の記事出てくる分割モデルを用いてモデル化を行います.
課題2も直球な課題ですよね.「最大化するにはどういった計算や手法をとるのか?」これは,すごく乱暴な考え方で解決法が1つ思いつきます.総当たりです(ブルートフォース).ただ,流石に想定される全ての組み合わせを計算するのだと,膨大な処理に追われるのでやりません.しかし,馬鹿げててもいいから一番単純なやり方をパッと思いつけることは大事なことになります.さて,本題ですがこちらはギブスサンプリングと呼ばれる疑似的なサンプル列を生成する手法で解決していきます.
まとめ
今回も自分の勉強ついでに,アウトプットとしてノンパラメトリックベイズの序章を書かせていただきました.なるべく難しい理論を抜いて,概要として「これを求めたい」「これが課題」「課題に対する手段は?」みたいなことを感じ取れていただければ幸いです.
また,長くなりそうでしたのでなんだかぶつ切りになってしまいました.ご容赦ください.次回はホップの壺,中華料理店過程について書ければと思います.
多少,時間をかけて書いておりますので,フォローとスキ,シェアしていただければ幸いです.また,読者の皆様のお役に立てればよりうれしいです.
この記事が気に入ったらサポートをしてみませんか?