クラスタリングとは

たとえば音楽について何か調べようとすると、意味のあるグループやコレクションを探すという方法が考えられます。たとえば、ジャンル別に音楽を分類したり、友人がジャンル別に音楽を整理したり、アイテムをグループ化する方法を選択すると、個々のアイテムとしてアイテムの詳細を把握できます。パンクロックには深いアフィニティがあり、さらにさまざまなジャンルや、さまざまな場所から流れる音楽にジャンルを分割することもできます。一方、友人は 1980 年代の音楽を見て、その時のさまざまなジャンルの音楽が社会政治的な気候にどう影響されたかを理解できるかもしれません。どちらの方法も、異なるアプローチを試しても、友人と一緒に音楽について面白いことを学びました。

機械学習でも、機械学習システムの件名(データセット)を理解するための最初のステップとしてサンプルをグループ化することがあります。ラベルのないサンプルをグループ化することをクラスタリングと呼びます。

例がラベル付けされていないため、クラスタリングは教師なし機械学習に依存しています。サンプルにラベルが付いている場合、クラスタリングは分類になります。教師ありと教師なしのメソッドの詳細については、機械学習の問題のフレーミングの概要をご覧ください。

3 つのクラスタを示すグラフ
図 1: 3 つのクラスタにグループ化されたラベル未設定の例。

類似する例をグループ化する前に、類似の例を見つける必要があります。例間の類似性を測定するには、例の特徴データを指標に類似性指標という組み合わせます。それぞれの例が 1 つまたは 2 つの特徴によって定義されている場合、類似性は簡単に測定できます。たとえば、著者が類似する書籍を見つけることができます。特徴の数が増えると、類似性メジャーの作成が複雑になります。異なるシナリオで類似度メジャーを作成する方法については、後ほど説明します。

クラスタリングの用途

クラスタリングは、さまざまな業界で多くの用途に使用されています。クラスタリングの一般的なアプリケーションには、次のようなものがあります。

  • 市場セグメンテーション
  • ソーシャル ネットワーク分析
  • 検索結果のグループ化
  • 医用画像
  • 画像セグメンテーション
  • 異常検出

クラスタリング後、各クラスタにクラスタ ID と呼ばれる番号が割り当てられます。これで、例の特徴セット全体をクラスタ ID に集約できます。複雑な例を単純なクラスタ ID で表すと、クラスタリングが強化されます。アイデアを拡張すると、データをクラスタリングして大規模なデータセットを簡素化できます。

たとえば、次の例に示すように、異なる機能ごとにアイテムをグループ化できます。

  • 星の数を明るさでグループ化します。
  • 遺伝子情報により生物を分類する。
  • ドキュメントをトピック別にグループ化する。

機械学習システムでは、クラスタ ID を使用して大規模なデータセットの処理を簡素化できます。したがって、クラスタリングの出力はダウンストリーム ML システムの特徴データとして機能します。

Google では、YouTube 動画、Play アプリ、音楽トラックなどのプロダクトの一般化、データ圧縮、プライバシー保護のために、クラスタリングを使用しています。

一般化

クラスタ内のいくつかの例で特徴データが欠落している場合、クラスタ内の他の例から不足しているデータを推定できます。

人気が低い動画は人気の動画が多くなるほど、おすすめ動画の精度が向上します。

データ圧縮

前述のように、クラスタ内のすべての例の特徴データは、関連するクラスタ ID に置き換えることができます。この置き換えにより特徴データを簡素化し、ストレージを節約できます。こうしたメリットは、大規模なデータセットにスケールする場合に顕著になります。さらに、機械学習システムでは、特徴データセット全体の代わりにクラスタ ID を入力として使用できます。入力データの複雑さを軽減することにより、ML モデルのトレーニングがより簡単かつ高速になります。

1 つの YouTube 動画の機能データには以下が含まれます。
  • 場所、時間、ユーザー属性の閲覧者データ
  • タイムスタンプ、テキスト、ユーザー ID を含むコメントデータ
  • 動画タグ
YouTube 動画をクラスタリングすると、これらの機能セットを単一のクラスタ ID に置き換えて、データを圧縮することができます。

プライバシー保護

ユーザーをグループ化し、特定のユーザーではなくクラスタ ID にユーザーデータを関連付けることで、プライバシーを保護できます。ユーザーデータと特定のユーザーを関連付けることができないようにするには、クラスタは十分な数のユーザーをグループ化する必要があります。

YouTube ユーザーの動画履歴をモデルに追加するとします。ユーザー ID を使用する代わりに、ユーザーをクラスタ化して、クラスタ ID を使用することができます。これで、モデルは動画履歴を特定のユーザーに関連付けることはできませんが、多数のユーザー グループを表すクラスタ ID にのみ関連付けることができます。