クラスタリングとは | 概要・手順・活用事例を紹介

このエントリーをはてなブックマークに追加


クラスタリング(clustering)とは、機械学習における教師なし学習の1種で、データ間の類似度にもとづいて、データをグループ分けする手法です。

機械学習や統計学の文脈以外でクラスタリングという言葉をほかのことに対して用いることもあります。そのため区別して、機械学習や統計学の文脈でのクラスタリングはクラスタ分析、クラスタ解析、データ・クラスタリングとも呼ばれます。

ここでは、機械学習や統計学の文脈でのクラスタリングの概要や分類との違い、さまざまな手法について紹介します。

クラスタリングとは

クラスタリングとは、データ間の類似度にもとづいて、データをグループ分けする手法です。クラスタリングによってできた、似たもの同士が集まったグループのことをクラスタと呼びます。活用例として、顧客情報をクラスタリングして顧客をグループ分け(セグメンテーション)し、同じグループ内で同じ商品が複数回購入された場合、その顧客と同じグループに属している他の人たちにも同じ商品をレコメンドする、といったものがあります。

各データが1つのグループのみに所属するようにグループ分けするものをハードクラスタリング、各データが複数のグループに所属することを許してグループ分けするものをソフトクラスタリングといいます。ソフトクラスタリングでは、データがグループに所属する確率を割り当てます。この記事が次章以降で解説するのはハードクラスタリングの手法となります。

クラスタリングと分類の違い

「データをグループ分けする」という言葉を聞くと、分類が思い浮かぶかもしれません。しかしクラスタリングと分類の意味合いは異なります分類は教師あり学習で、どのグループに所属するかの答えをもとに学習したモデルを用いて、答えが未知のデータがどのグループに所属するかを予測します。一方クラスタリングは教師なし学習で、どのグループに所属するなどの答えはなく、データをもとに特徴を学習しグループ分けします。

具体的に考えるため、大量のメールを分類する例とクラスタリングする例を紹介します。

分類では、迷惑メールか否かなど、答え(クラス)が分かっているデータから文章の特徴とクラスの関係を学習します。そしてクラスが不明の新着メールがどのクラスに当てはまるのかを予測します。

対してクラスタリングでは、迷惑メールか否かなどの答え(クラス)がないデータから文章の特徴を学習し、特徴が似ているか否かでグループ分けをします。各グループが何を示しているかは解釈が必要です。

クラスタリングの手順

クラスタリングは以下のような手順で行われます。

  1. クラスタリングの対象を決める
  2.   サンプルをクラスタリングするのか、変数をクラスタリングするのかを決めます。最初に述べた顧客情報のクラスタリングやメールのクラスタリングは、サンプルのクラスタリングです。変数のクラスタリングは、変数の数を削減するためなどに用いられます。

  3. クラスタリングの手法(=グループ分けの仕方)を決める
  4.   データ数が多いか否かや、グループが分かれていく過程を知りたいか否かなどの前提にしたがって、グループ分けの仕方を決めます。ハードクラスタリングで基本的に用いられる手法として、データがそこまで多くなく、グループが分かれていく過程を知りたい場合は群平均法ウォード法が、データ数が多い場合にはk-means法があります。クラスタリングの手法の詳細については次章以降で紹介します。

  5. データ間の類似度の尺度を決める
  6.   データ間の類似度の尺度は距離と呼ばれます。距離が近いほど類似度が高く、距離が遠いほど類似度が低いです。距離の種類にもさまざまなものがあり、データの性質に従って選ぶ必要があります。代表的な距離にはユークリッド距離があります。

階層的クラスタリングと非階層的クラスタリング

クラスタリングは、データのグループ分けの仕方により大きく階層的クラスタリングと非階層的クラスタリングに分けられます。この章ではそれぞれの概要を紹介し、次章以降で細かな手法を紹介していきます。

階層的クラスタリングは、データ間の類似度が近いものからまとめていく(凝集型階層的クラスタリング)、あるいは遠いものから離していく(分割型階層的クラスタリング)ものです。

非階層的クラスタリングとは、グループ分けの良さを表現する関数を定義し、反復的に計算していくことでその関数が最適となるグループ分けを見つけるものです。

それぞれの特徴をまとめたものが以下の表となります。

凝集型階層的クラスタリング

凝集型階層的クラスタリングの手順は以下のようになります。

  1. 個々のデータがそれぞれ1つのクラスタであるとし、すべてのクラスタ間の距離を計算
  2. クラスタ間の距離が最短なクラスタの組み合わせを見つけ出しクラスタを併合
  3. 再びすべてのクラスタ間の距離を計算
  4. クラスタ間の距離が最短なクラスタの組み合わせを見つけ出しクラスタを併合
  5. 全体が1つのクラスタになるまで3と4を繰り返し終了

クラスタの併合の過程を表した上図の右側の図はデンドログラムといいます。このデンドログラムにより、クラスタが形成される過程を把握できます。

凝集型階層的クラスタリングは、新たなクラスタを形成した際どこの距離をとるかで、さまざまな手法があります。ここでは外れ値に強く実用的な2つの手法を紹介します。データの特徴などからユークリッド距離の二乗以外を用いたい場合は、距離を自分で選択できる群平均法を用います。

1.群平均法

2つのクラスタのすべてのデータ間距離の平均をクラスタ間の距離とするものです。距離に何を用いるかで結果も変わります。

2.ウォード法

(併合後のクラスタ内の分散)ー(併合前の2つのクラスタの分散の和)をクラスタ間の距離とするものです。距離には分散(ユーグリッド距離の二乗)を用いています。

非階層的クラスタリング

ここでは、非階層的クラスタリングのなかでももっとも一般的なk-means法について紹介します。

k-means法

k-means法の手順は以下のようになります。

  1. はじめに与えたグループ分けの数 kだけ、全サンプルのなかから代表点(初期値)を選ぶ。
  2. 代表点とそれ以外のサンプル間の距離をはかり、もっとも距離が近い代表点と同じクラスタにグループ分けする
  3. 各クラスタの重心点を求める(通常は算術平均で導出)。求めた重心点と、もとの代表点の位置に変化がなければ終了。変化がある場合は重心点を新たな代表点として2に戻る(下図参照)

k-means法の初期値依存という問題に対応したk-means++という手法や、初期値依存の問題に対応するだけでなく、さらにクラスタ数まで自動で推定してくれるx-meansという手法もあります。

クラスタリングの活用事例

ここでは、クラスタリングが活用されたサービスや事例を紹介します。

テキストマイニングツール  

ユーザーローカルのテキストマイニングツールでは、出現傾向の似た単語を視覚的にとらえるため、階層的クラスタリングを行いデンドログラムを表示しています。

SMART ANNOTATOR

株式会社Studio OusiaのSMART ANNOTATORは大量のテキストデータを自動で仕分けするツールです。大量のテキストデータの仕分けにはクラスタリングが使われています。

LINE仲介ロボットの宛先自動判別

Ledge.ai編集部が以前取材した長崎大学の小林透教授の研究室では、高齢者層と若年層のコミュニケーションを手助けするLINE仲介ロボットを研究しています。LINE仲介ロボットとは、音声でLINE上のコミュニケーションを完結できる仕組みです。また、研究室では、会話をクラスタリングして宛先を自動判別する研究も行われています。

平成音楽の分析

株式会社ソケッツは、平成時代の30年間にリリースされた邦楽シングル楽曲を対象に、メタデータを抽出して分析を実施。楽曲を10個にグループ分けして、「切ない恋愛系ソング」「苦悩、憂鬱系ロック」など独自の解釈を与えました。

画像処理

クラスタリングは、画像の減色処理にも活用できます。クラスタリングにより類似色同士を1つのグループにまとめ1色で表すことで、もとの画像より少ない色の画像の表現が可能となり、ファイルサイズの削減を実現できます。
参考:K-meansクラスタリング

クラスタリングの用途は幅広い

クラスタリングは、単なる数字の羅列であるデータをグループ分けすることで人がデータに対して解釈を与えやすくなるため、データ分析においてよく活用されます。ただしどのグループに所属するかの正しい答えはないため、クラスタリングの結果が妥当か否かは検証が必要です。変数に対してクラスタリングを行えば、グループにつき代表の変数1つを選択し、変数の数を削減できます。「データ間の類似度にもとづいてデータをグループ分けする」という特徴の活かし方次第で、さまざまな問題に応用できそうです。