混合ガウスモデルはじめに近年の機械学習は専ら教師あり学習に話題が集中しています。実際のデータは必ずしもラベルを正確に付与できるとは限りません。多くのデータはなんだかよくわからないが手元にある状態で、そのデータはいくつかの塊に分けられると(あるいはいくつかのデータの源がある)考えられます。そのようなときに使える機械学習の手法が、教師なし学習であり、その一種であるクラスタリングは、ラベルの付与無しに、データをいくつかの塊(クラスター)に分けます。今回はクラスタリングで最も基本的な手法であるK-meansを紹介します。K-meansは混合ガウスモデルの特殊なケースと考えることもできます。K-meansK-meansの働きK-meansはクラスタリングの手法の一種です。データが「K」個の塊(以後クラスター)に分けられると仮定し、あとはある所定の手続きに従って、各データ点をいずれかのクラスターに振り分けていきます。具体的な手続きに関しては、手計算でできるレベルのものを下記で紹介しています。s0sem0y.hatenablog.comK-meansはシンプルながら強力なアルゴリズムであり、ちょっとしたデータセットなら割と正確にクラスターを見つけ出してくれます。アルゴリズムがシンプルであるがゆえに、何をしているか、どういう仮定のもとでクラスターが得られたのかを解釈しやすいです。(D次元のベクトル)であると考えます。データはD次元のユークリッド空間に点在することになります。この際、このデータはK個のクラスターに分かれていると仮定します。クラスターとはデータの塊のようなもので、そのクラスターに属するデータ同士は、互いに近くに集まっているだろうと考えます。下の図のように2次元のデータが点在していた場合、なんとなく2つのクラスターがあるように考えられます(実際にはそのようなラベルは無い状況なのだが)。考えることができます。クラスターの重心とは、そのクラスターに属するデータ点の位置の平均で表されます。本来、データがどのクラスターに属するのかなど正確には知り得ないという状況です。従って、クラスターの重心は、最初は適当に与えてしまいます(下の図では菱型で2つのクラスターの重心を表現した)。すると、この重心が一旦正しいものだと考え、どちらの重心に近いかによって、各データ点をクラスターに割り当てることができるようになります(もちろん実際は仮のクラスターである)。このようにして2つのクラスターにどのデータが属するかが分かれば、そのクラスターの重心が計算できるようになります。最初においた重心は仮の姿であったため、今、この2つのクラスターの重心を更新します。重心の位置が移動したら、次はこの重心の位置を正しいものと考え、再び、データ点を各クラスターに割り当て直します。これによって、データ点がどのクラスターに属するか、一部変更が入りました。従って、新たなデータ点を用いて、それぞれのクラスターの重心を再度求め直します。新たな重心を用いて、データ点を近い方のクラスターに割り当てます。割り当ての変更はなさそうです。これによりK-meansのアルゴリズムは収束します。収束した時にはどうもそれらしい分け方を上手くできているように見えます。上記の動きを定式化します。データ集合:各データ点:クラスタKの重心:としたとき、これは以下の損失関数の最小化問題となります。要するに上記の損失関数は、各クラスターの重心とそのクラスターに属するデータの二乗距離の総和を表しています。近いはずである、ということを表現しているわけです。この損失関数の最小化の手続きは以下のとおりです。(既に具体的にどんな動きをするのかを概要で見たので、すぐに分かるはずです)1.初期化を適当に決定します。2.クラスターへの割り当てによりデータをクラスターへ割り当てます。これは単純に、一番近い重心にデータ点を割り当てることになります。3.重心の更新により重心を更新します。これは要するに「2.」で割り当てられたデータ(ベクトル)の平均に相当します。ついて解いたものです。4.「2.」と「3.」を繰り返す重心が変更されたため、データの割り当ても変更を受けます。変更を受けなくなるまで、上記の処理を繰り返します。K-meansの欠点K-meansの欠点はいくつか考えられますが、まず、クラスターの個数を指定しなければならないことが挙げられます。本来いくつのクラスターがあるのか分かりません。データが2次元であれば当たりを付けるのは簡単かもしれませんが、これが可視化できない次元になれば難しくなります。実際、当たりを上手く付けられなかった場合、クラスターは想定外の割り当てを行ってしまいます。損失関数を見れば分かる通り、重心との二乗距離を評価しています。従って、仮にデータに外れ値が混ざりこんでいた場合、そのデータの損失を低くするために重心がやたらと引っ張られてしまう可能性が出てきます。データを評価する上で二乗距離というものが本当に妥当であるかは分かりません。K-meansの改良そこで、K-meansの改良をするという試みがいくつかあります。K-meansのアルゴリズムを、単に動きとしてだけでなく数式ベースで見てきたため、以下のような変更が有効に活用できそうなのは容易に想像できるかと思われます。置き換えたということになります。この場合でも、まずは重心を適当に置きます。その後割り当ての仕方が異なってきます。小さいクラスターに割り当てます。重心の計算も異なってきます。重心は損失関数が小さくなるように決定されるべきであり、単にベクトルの平均を取るという方法ではなくなります。形状次第ではあるが)。混合ガウスモデル確率的なクラスタリングの手法として混合ガウスモデルがあります。真面目に数式を追いかけるとそれなりにゴツい式になってしまうので(確率的な手法は総じて)、今回はK-meansから派生した軽い説明をします。よる振り分けを行っていますが、この部分が確率で表現されるようになります。80%はあっちで、20%はこっちのクラスタかもしれない、位のソフトな振り分けを行うのです。K-meansでは二乗距離になっていましたが、ここが指数関数の形になります。これはガウス分布を仮定したことに由来します。今回のK-meansの解法を一般化したものはEMアルゴリズムとして知られ、隠れマルコフモデルなど隠れ変数を持つモデルに広く持ち入られています。EMアルゴリズムはK-meansの解法と同じように、一方を求めて一旦固定し、その固定した条件の元で他方を求めるという最適化を交互に行うことで達成されます。確率的なモデルはベイズ理論で拡張が可能で、その場合には他の解法が用いられる場合もあります。»プロフィール自分が勉強していく上で学んだことなどをまとめていきたいと思います。ML_deepスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。