クラスタリング(clustering)とは、データの集合をクラスタ(cluster)という部分集合に分けることで、教師なし学習(人間が与えた正解は不要で、観測データだけを対象に分析)の代表的な手法。
クラスタ(cluster)は、Weblio 辞書によれば、「房(ふさ)、群れ、集団」を意味するが、「内部では似ていて、外部では似ていないような部分集合」を指す。
クラスタリング手法は大きく、最短距離法などの階層的手法(hierarchical method) と、k-means法などの非階層的手法(non-hierarchical method)に分けられる。
【クラスタリング手法の分類】
◆階層的クラスタリング(hierarchical clustering)
●凝集型階層的クラスタリング(agglomerative hierarchical clustering)
データ一つが個々のクラスタの状態から,順次クラスタを併合し、クラスタの階層を生成する。
●分割型階層的クラスタリング(divisive hierarchical clustering)
データ集合全体が一つのクラスタの状態から、順次クラスタを分割して、クラスタの階層を生成する。
◆分割最適化クラスタリング(partitional optimization clustering)
別名:partitional clustering, non-hierarchical clustering
クラスタの良さを表す関数を定義し、その関数を最適化するようなクラスタを見つけ出す。
【凝集型階層的クラスタリング(agglomerative hierarchical clustering)】
【分割最適化クラスタリング(partitional optimization clustering)】
代表的なものとして、「k-means法(k平均法)」が挙げられる。
①最初にK個のクラスタに分けると決める。(上図の場合、K=3)
②K個の代表ベクトルを無作為に決める。
③それぞれについて距離が一番近い代表ベクトルのところに所属させる。
④各クラスに含まれる点の平均を取り、それを新しい代表ベクトルにする。
(繰り返し)
●k-meansクラスタリングのデモ
下記QRコードで、実行画面をスマートフォンで確認
「階層的クラスタリング」では、一度の繰り返しに必要な計算量は、全サンプルのペアの間の距離の比較を計算するため、サンプル数の二乗に比例する。
一方、「k-meansクラスタリング」では、一度の繰り返しに必要な計算量は、サンプル数の一乗に比例する。さらに、数百万サンプルを取り扱う場合、「k-means」であれば、まずは数千サンプルで繰り返し計算を行って「クラスタ中心点」を定義したうえで、「クラスタ中心点」は固定された状態で残りのサンプルはクラスタの割り当てだけを行うこともできる。数百万人~数千万人を対象としたようなクラスタリングは、「k-means」アルゴリズムの効率性がなければほとんど不可能。
参考(引用)
神嶌 敏弘:クラスタリングに関する講演・講義資料
http://www.kamishima.net/archive/clustering.pdf
クラスタリング (クラスター分析)
http://www.kamishima.net/jp/clustering/
jsdo.it:k-meansクラスタリング
http://jsdo.it/kazuki_nagasawa/clustering-kmeans-002
Qiita:[機械学習]クラスタリングについて
https://qiita.com/c_5/items/6428d9080cec66285e3d
コメント