クラスタリング

クラスタリングまたはクラスター分析は、機械学習やデータ解析で使用される教師なし学習手法で、同じグループ (またはクラスター) 内のデータポイント同士が、他のグループ内のものに比べて、高い類似性を示すようデータを整理します。クラスタリングは、大規模で複雑なデータ群の中に埋もれたパターンやトレンドを見つけ出し、ラベル付けされていないデータに対して予測を行うことで、データの意味を理解できるようにします。

クラスタリングの仕組み

クラスタリングには、データの準備、類似度測定の定義、適切なクラスタリング アルゴリズムの選択、クラスターの評価や調整など、いくつかの重要な手順が含まれます。

クラスタリングの手順を示すワークフローチャート: データの準備、類似度測定の定義、クラスタリング アルゴリズムの選択、クラスターの評価。

クラスタリングの主な手順。

クラスタリングは、データポイント間の類似度を測定し、他のクラスターのデータよりも類似性の高いポイントをグループ化することで機能します。この「類似性」の概念は、コンテキストやデータによって異なり、教師なし学習における基本的な要素となっています。使用できる類似度の指標はさまざまで、ユークリッド、確率、余弦距離、相関などがあります。

2 次元で表示されたクラスタリング結果。クラスターが異なる色で表現されています。

spectralcluster 関数を用いて 3 つのクラスターにグループ化したデータの散布図。(MATLAB コードを参照)

クラスタリング アルゴリズムの種類

クラスタリング アルゴリズムは、次の 2 つのグループに大きく分けられます。

  • ハードクラスタリング: 各データポイントが 1 つのクラスターのみに属する場合 (よく利用される k-means 法など)
  • ソフトクラスタリング: 各データポイントが複数のクラスターに属する場合 (混合ガウスモデルなど)
<i>k</i>-means クラスター分析手法は、重心を表すために星形が追加されたデータポイントの離散クラスターを示します。

k-means クラスタリングは、各グループをその重心 (メンバーの平均) で示し、星形で表現します。

データポイントの 2 つのクラスターを示す混合ガウスモデル。クラスター メンバーシップの確率を示す等圧線状の線が描かれています。

クラスター メンバーシップの確率を割り当てる混合ガウスモデル。異なるクラスターとの関連強度を表しています。

クラスタリング アルゴリズムにはいくつかの種類があり、それぞれ独自のアプローチでデータをグループ化します。これらの手法は、仕組みや理想的なユースケースの点で大きな違いがあります。機械学習で使用される最も一般的なクラスタリング アルゴリズムの種類は、次のとおりです。

  • 階層クラスタリングは、クラスターツリーを作成することにより、クラスターの多重レベルの階層を構築します。
  • k-means クラスタリングは、クラスターの重心までの距離に基づいて、データを k 個の異なるクラスターに分割します。
  • 混合ガウスモデルは、多変量正規密度成分の混合としてクラスターを形成します。
  • Density-based spatial clustering (DBSCAN) は、密度の高い領域の互いに近接したデータポイントをグループ化し、密度の低い領域の外れ値を追跡します。この手法では、任意の非凸形状を扱うことができます。
  • 自己組織化マップは、データのトポロジと分布を学習するニューラル ネットワークを使用します。
  • スペクトル クラスタリングは、入力データをグラフベースの表現に変換し、元の特徴空間よりもクラスターがより明確に分離されるようにします。クラスター数はグラフの固有値を学習することで推定できます。
  • 隠れマルコフモデルは、バイオインフォマティクスにおける遺伝子やタンパク質など、シーケンス内のパターンを発見するために使用できます。
  • Fuzzy c-means (FCM) はデータを N 個のクラスターにグループ化し、データセット内のすべてのデータポイントが、ある程度すべてのクラスターに属しているようにします。

教師なし学習におけるクラスタリング

教師なし学習は、ラベル付けされていないデータから、人間の介入なしに推論を導き出すために使用される機械学習アルゴリズムの一種です。クラスタリングは、最も一般的な教師なし学習の手法です。クラスタリング アルゴリズムを適用することで、グループラベルに関する事前情報がなくても、データ内を分析して隠れたパターンやグループを見つけだすことができます。このグループやパターンを利用して、ラベル付けされていないデータから役立つ情報を引き出し、内在する構造を明らかにします。

元の写真には、白黒のタイル張りの床の上に薄茶色の犬が写っています。クラスタリングを使用して処理された画像では、犬と床が分離されています。

クラスタリングを使用した画像セグメンテーション。床のパターン化された背景を分離します。

クラスタリングが重要な理由

クラスタリングは人工知能 (AI) の重要な領域です。データに関する貴重なインサイトを提供し、埋もれて目に見えないパターンや関係を明らかにすることで、さまざまな分野で重要な役割を果たしています。ラベル付けされていないデータの場合、データポイント間に内在する関係が隠されており、そこから役立つ情報を引き出す必要があります。クラスタリングはそれらの関係を導き出し、ラベル付けされていないデータを意味のあるグループに整理することができます。

クラスタリングは、類似した項目をグループ化することでデータの複雑さを軽減するため、個々のデータポイントの多さに圧倒されることなく、グループの特性やパターンに集中することができます。そのため、クラスタリングは探索的データ解析や半教師あり学習に利用されています。後者では、クラスタリングを教師あり学習の前処理として使用することで、機械学習モデルで処理されるデータ量を削減し、予測モデリングの精度を高めます。

クラスタリングは、異常検知画像セグメンテーションパターン認識などのアプリケーションでもよく利用されています。具体的には、次の領域でパターンやシーケンスを特定するために活用されています。

  • データ圧縮手法では、生の信号データの代わりにクラスターを使ってデータを表現することができます。
  • クラスターは、セグメンテーション アルゴリズムにおける画像や LiDAR 点群の領域を示します。
  • クラスタリングは、データセット内の外れ値や異常値の特定に役立ちます。
  • 医用画像処理では、クラスタリング アルゴリズムを使用して、画像を関心領域に分割できます。たとえば、健康な組織と腫瘍を判別したり、脳を白質、灰白質、脳脊髄液にセグメント化したりします。
  • 地理情報システム (GIS) では、衛星画像や航空写真を解析して都市のスプロール現象や土地の利用パターンを識別したり、都市部の経年変化を監視したりするためにクラスタリングが利用されます。
  • 遺伝子のクラスタリングや配列解析は、バイオインフォマティクスで使用されます。
ヘマトキシリンとエオジンで紫色の濃淡に染色された組織の元の画像と、3 つのクラスにセグメント化された組織の処理画像。

左: ヘマトキシリンとエオジンで染色された組織の元の画像。右: MATLAB は画像に 3 つのクラスターを割り当て、組織を 3 つのクラスにセグメント化しました。

MATLAB を使用したクラスタリング

MATLAB®Statistics and Machine Learning Toolbox™ を使用すると、選択したクラスタリング手法を適用してデータをグループやクラスターに分割することでパターンや特徴を識別できます。Image Processing Toolbox™ では、画像データ上でクラスタリングを実行できます。

データの準備

正確で効率的なクラスタリング結果を得るには、データを前処理し、欠損値や外れ値を処理することが重要です。データのクリーニング前処理は、組み込み関数を使用してプログラムで処理するか、データ クリーナー アプリで対話的に実行できます。

クラスタリング アルゴリズム

MATLAB は、一般的なクラスタリング アルゴリズムをすべてサポートしており、means 関数などの組み込み関数を利用することができます。クラスター データ ライブ エディター タスクを使用して、k-means クラスタリングや階層クラスタリングを対話的に実行できます。このタスクを使用すると、ライブスクリプト用の MATLAB コードを自動生成できます。

KNN Search ブロックを使用して、Simulink で最近傍クラスタリングを実行することもできます。このブロックはクエリ点を受け入れ、最近傍探索オブジェクトを用いて観測データ内の k 個の最近傍点を返します。

3 種のアヤメの花弁の幅と長さの測定値を示す 2D プロットと、GMM クラスタリングを使用して得られた 3 つのクラスターを示すプロット。

左: 3 種のアヤメのいくつかの標本から得られた花弁の測定値の MATLAB 散布図。右: 混合ガウスモデル (GMM) クラスタリング手法を使用して 3 つのクラスターにセグメント化された花弁の測定値。(Statistics and Machine Learning の例を参照)

クラスタリング結果の可視化と評価

データに適切なクラスター数を示す自然な区分がない場合は、ギャップやシルエットのような別の評価基準を使用して、データが特定のクラスター数にどの程度当てはまるかを判断できます。また、クラスターを可視化してクラスタリング結果を検証することもできます。たとえば、クラスタリングの可視化には系統樹プロットを使用できます。

2 つのクラスターに含まれるポイントはすべてシルエット値が大きく (0.8 以上)、クラスターがよく分離されていることを示しています。

シルエット関数を使用して作成された MATLAB プロットは、データが同じ大きさの 2 つのクラスターに分割されていることを示します。(MATLAB コードを参照)

画像のクラスタリング

色や形の類似度に基づいてピクセルの領域をクラスタリングすることで、画像のセグメンテーション (imsegkmeans 関数を使用) やボリュームのセグメンテーション (imsegkmeans3 関数を使用) を実行できます。特定のクラスタリング アルゴリズムを用いてセグメント化されたラベル付き画像を作成できます。たとえば、医用画像では、患者の脳や他の臓器の腫瘍を表す画像内のピクセルや 3D ボリュームのボクセルを検出してラベル付けできます。MATLAB ツールを活用することで、病気の診断から土地利用の分類に至るまで、幅広い用途で画像を処理して解析できます。

4 枚の白黒画像: テスト画像、セグメンテーション画像、腫瘍検出画像、ラベル画像。

MATLAB で Fuzzy c-means クラスタリングを用いた MR 画像からの脳腫瘍検出。(Fuzzy Logic Toolbox の例を参照)