人生という消極的な自殺をしていくにあたっての記録です。この広告は、90日以上更新していないブログに表示しています。C++Tweet[Background]EMアルゴリズムという手法があります。気が向いたら細かい説明を載せますが、簡単に説明すると、「観測できない隠れた変数」である潜在変数を含む確率モデルにおいて、最尤解を求めるアルゴリズムです。今回はこのEMアルゴリズムを実装しました。すべてC++で実装しました。使うデータですが、三つのガウス分布から100点ずつ点を生成します。1]生成した点をプロットした結果が以下の図の通りです。2]では実際に分類を行いますが、まずはいくつのクラスに分類するのが最も良いのかを見てみます。2~10クラスに分類してみて、それぞれにおけるすべての点の対数尤度を合計したものを見てみます。2]横軸にクラス数、縦軸に対数尤度を取ったグラフが下のようになります。見たところ3が最もよさそうです。(8などのほうが高そうですが、3以降は上昇が緩く飽和してそうなので、過学習を避けるためにも3に設定します。元データを3クラスで作っていると知ってしまっているのもありますが......。3]では、3クラスで分類し、学習が進んでいる様子をgifで出力するようにしてみます。用いて、各段階での学習した中心と分散とをpngファイルに出力するようにし、Giamを用いてgifにまとめました。出力するやり方がよくわからなかった。してやれば終わりです。»プロフィールid:tube_wormあかつきさやかと読みます。ロジオン・ロマーヌイチ・ラスコーリニコフとルルーシュ・ランペルージに強く共感します。puzzle月別アーカイブはてなブログをはじめよう!tube_wormさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。