1. Matlab のクラスタリング アルゴリズムの概要
この記事では、Matlab Statistics and Machine Learning Toolbox で利用できるクラスタリング手法の概要を説明し、そのクラスタリング関数を紹介します。使ってみると、この関数を直接呼び出せるのがとても便利で、MATLABの威力を実感します。
クラスター分析は、セグメンテーション分析または分類分析とも呼ばれ、一般的な教師なし学習方法です。教師なし学習は、ラベルのない入力データから推論して、データが属する分類ラベルを取得するために使用されます。これは、データに「ラベルを付ける」ことと同じです。たとえば、クラスター分析を使用して、ラベルのないデータ内の隠れたパターンやグループを見つけることができます。
クラスター分析では、データのグループまたはクラスターが作成されます。同じクラスタに属するオブジェクトは互いに類似しており、異なるクラスタに属するオブジェクトは互いに異なります。「類似」と「異なる」を定量化するには、特定のプログラムおよびデータセットのドメインに適用される相違度測定 (または距離測定) を使用できます。さらに、独自のニーズに応じて、データ内の変数をスケーリング (または標準化) して、クラスタリング プロセスで同等の重要性を与えることを検討できます。
具体的には、Statistics and Machine Learning Toolbox は次のクラスタリング アルゴリズムを提供します。
- 階層的クラスタリング
- k-Means および k-Medoids クラスタリング
- 密度ベースの空間クラスタリング DBSCAN とノイズ アプリケーション
- 混合ガウスモデル
- k 最近傍検索と半径検索
- スペクトル クラスタリング スペクトル クラスタリング
2. matlab に付属する 7 つのクラスタリング アルゴリズムの紹介と応用
1) 階層的クラスタリング 階層的クラスタリングは、
クラスター ツリーまたは樹状図を作成することによって、さまざまなスケールでデータをグループ化します。ツリーはクラスターの単一の集合ではなく、あるレベルのクラスターが結合して次のレベルのクラスターを形成するマルチレベルの階層です。この多層階層により、アプリケーションに最適なクラスター レベルまたはサイズを選択できます。階層的クラスタリングでは、データ内の各ポイントがクラスターに割り当てられます。
関数clusterdataを使用して、入力データに対して階層クラスタリングを実行します。Clusterdata関数には、pdist、linkage、およびクラスター3 関数が含まれており、より詳細な分析に使用できます。さらに、階層的クラスタリングでは、デンドログラム関数を使用してクラスタリング ツリーを描画し、クラスタリングの視覚的な結果 (階層的クラスタリング結果グラフ) を取得できます。階層的クラスタリングの具体的な紹介はここでは繰り返しません。より詳細な紹介は、時間があるときに後で更新される可能性があります。
T = clusterdata(X,cutoff)
ただし、基本的な内容を理解するにはこれらで十分だと思います。また、必要に応じて matlab で表示および適用できます。私とコミュニケーションをとることもできます。
2) k-Means クラスタリングと k-Medoids クラスタリング
k-means クラスタリングと k-medoids クラスタリングは、データを k 個の相互に排他的なクラスターに分割します。これらのクラスタリング手法では、クラスタの数 k を事前に指定する必要があります。k-means クラスタリングと k-medoids クラスタリングは両方とも、データ内の各ポイントをクラスタに割り当てます。ただし、階層クラスタリングとは異なり、これらの方法は (非類似性の尺度ではなく) 実際の観測に基づいており、単一レベルのクラスタリングを作成します。したがって、大量のデータの場合は、多くの場合、階層型クラスタリングよりも k-means または k-medoids クラスタリングの方が適しています。
idx = kmeans(X,k)
idx = kmedoids(X,k)
matlab では、関数kmeansとkmedoids を直接使用して、それぞれ k-means クラスタリングと k-medoids クラスタリングを実装できます。これら 2 つの比較的単純なクラスタリング アルゴリズムについてはよく知っているはずなので、これ以上説明する必要はありません。
3) ノイズアプリケーション DBSCAN を使用した密度ベースの空間クラスタリング
DBSCAN は、データ内の任意の形状のクラスターと外れ値 (ノイズ) を識別できる密度ベースのアルゴリズムです。クラスタリング中に、DBSCAN はどのクラスターにも属さない点を識別するため、この方法は密度ベースの外れ値検出に役立ちます。k-means や k-medoids クラスターとは異なり、DBSCAN ではクラスターの数についての事前の知識は必要ありません。これは非常に重要な点です。
idx = dbscan(X,epsilon,minpts)
matlab では、関数 dbscan を直接使用して、入力データ行列または観測値間のペアごとの距離に対してクラスタリングを実行できます。DBSCAN の詳細については、私の以前のブログ「密度ベースのクラスタリング アルゴリズム (1) - DBSCAN の詳細な説明」を参照してください。
4) 混合ガウスモデル
混合ガウス モデル (GMM) は、多変量正規密度成分の混合としてクラスターを形成します。特定の観測値に対して、GMM は各成分密度 (またはクラスター) に事後確率を割り当てます。事後確率は、観測値が各クラスターに属する一定の確率を持つことを示します。GMM は、割り当てられた観測値のクラスターとして最大の事後確率を持つ成分を選択することにより、ハード クラスタリングを実行できます。また、GMM を使用して、スコアまたは事後確率に基づいて観測値を複数のクラスターに割り当てることで、ソフトクラスタリングまたはファジー クラスタリングを実行することもできます。クラスターのサイズや相関構造が異なる場合、GMM は K-means クラスタリングよりも適切な方法である可能性があります。
GMModel = fitgmdist(X,k)
idx = cluster(GMModel,X)
Matlab では、fitgmdistを使用してgmdistributionオブジェクトを分析対象のデータに近似します。gmdistribution を使用して、配布パラメーターを指定して GMM オブジェクトを作成することもできます。適切な GMM がある場合、クラスター機能を使用してデータをクラスター化できます。
5) k 最近傍検索と半径検索
k 最近傍検索では、データ内でクエリ ポイントまたはポイントのセットに最も近い k 個のポイントが検索されます。対照的に、半径検索では、クエリ ポイントまたはクエリ ポイントのセットから指定された距離内にあるデータ内のすべてのポイントが検索されます。これらのメソッドの結果は、指定した距離メトリックによって異なります。
Matlab では、関数 knnsearch を直接使用してk 個の最近傍を見つけるか、関数 rangesearchを使用して入力データの指定された距離内にあるすべての近傍を見つけることができます。トレーニング データセットを使用してサーチャー オブジェクトを作成し、そのオブジェクトとクエリ データセットをオブジェクト関数 ( knnsearchおよびrangesearch ) に渡すこともできます。
Idx = knnsearch(X,Y)
6) スペクトル クラスタリング スペクトル クラスタリング
スペクトル クラスタリングは、データ内の任意の形状の k 個のクラスタを見つけるためのグラフベースのクラスタリング アルゴリズムです。この手法には、データを低次元で表現することが含まれます。低次元では、データ内のクラスターがより広範囲に分離されるため、k-means クラスタリングや k-medoids クラスタリングなどのアルゴリズムの使用が可能になります。この低次元は、ラプラシアン行列の固有ベクトルに基づいています。ラプラシアン行列は類似度グラフを表現する方法であり、データ ポイント間の局所的な近傍関係を無向グラフとしてモデル化します。
Matlab では、関数spectralclusterを直接使用して、入力データ行列または類似度グラフの類似度行列に対してスペクトル クラスタリングを実行できます。Spectralcluster関数では、クラスターの数を事前に指定する必要があります。さらに、スペクトル クラスタリング アルゴリズムは、データ内のクラスターの数を推定する方法も提供し、特定のアプリケーションを Matlab で表示できます。
idx = spectralcluster(X,k)