クラスター分析入門 #01

似た者同士を集める。

クラスター分析(Cluster Analysis)は、異なる性質を持つ要素が混ざり合った集合から、互いに似た性質を持つ要素を集めた部分集合を作る手法で、データマイニング(Data Mining)1)再考するデータマイニングの中核をなす分析手法のひとつです。なお、クラスター(Cluster)とは房・群れ・集団を意味します。

ところで「いまさら聞けない機械学習」で教師なし学習(Unsupervised Learning)の手法としてクラスタリング(Clustering)を紹介しましたが、手法としては全く同じものです。データマイニングでは気づいていない似た性質を持つ集合を発見することを主な目的とし、機械学習では今後発生する事象がどの集合に分類されるかを予測することを主な目的とします。

なお、教師なし学習であるため、クラスターの分類基準はあらかじめ決まっていません。与えられた変数や特徴量をもとに、性質の近い要素を半自動的に抽出して分類することになります。

クラスター分析はマーケティング領域でよく用いられます。「再考するパーソナライゼーション」でも触れたとおり、多様化する生活者の価値観に個別に最適化することをパーソナライゼーション(Peasonalization)といい、そのアプローチにより売上を最大化するマーケティング戦略を1to1マーケティングといいますが、実際にはすべての個人に対して個別に最適化することは難しく、似た者同士での分類、すなわちセグメンテーション(Segmentation)を行う必要があります。一方で、分類基準が自明である場合はよいものの、顧客の価値観や意思決定に関わる因子は極めて複雑であり、多くの場合は自明ではありません。

そのような場合においてクラスター分析は有効な手段であり、顧客データが持つ性別・年齢・購買傾向などのさまざまな変数から似た者同士をクラスターとして抽出することで、セグメンテーションのヒントを得ることが可能となります。

そこで今回は、このクラスター分析の実践にむけた入門編をご紹介します。なお、分析ツールはGoogle BigQueryとGoogle Cloud Datalabを用いて進めます。BigQueryついては「BigQueryではじめるSQL」、Cloud Datalabについては選択する理由と合わせて「アソシエーション分析入門 #02」に詳しいのでそちらを参照してください。

階層型と非階層型。

実践に入る前に、分析の基本的な考え方についてまとめておきます。まずクラスター分析は要素間の類似性を分析する手法の総称であり、特定の分析手法をさすものではありません。分類の形式や要素間の類似度の計算ロジックにより、いくつかの手法に分かれます。

  • 分類の形式:階層型、非階層型
  • 分類に用いる距離:ユークリッド距離、マハラノビス距離など
  • 分類における併合方法:ウォード法、k平均法など

まず大きく階層型と非階層型に分かれます。それぞれの詳細は次回以降に後述するとして、ここでは概要を説明しておきます。

階層型クラスタリング(Hierarchical Clustering)は、最も似ている対象の組み合わせから順にグルーピングしていく手法で、その過程で階層が構成され、最終的にデンドログラム(Dendrogram)と呼ばれる樹形図が完成します。順にグルーピングするため最初にクラスター数を決める必要はなく、後から決めることが可能であり、決めたクラスター数により最終的にどのグループをクラスターとするかが決まります。

非階層型クラスタリング(Non-hierarchical Clustering)は階層的な構造を持たず、最初に決めたクラスター数にサンプルを分けていく手法です。ただし、いくつのクラスターに分けるかは分析者が決める必要があり、最適クラスター数を自動的には計算する方法は確立されていません。階層型と比較して計算量が少なく、サンプル数が多いデータの分析に適しています。

階層型と非階層型の使い分けについて、データのサンプル数が多い場合には非階層型が有利であることから、ビッグデータ分析では非階層型を使うと説明される場合もありますが、それには異論があります。

ビッグデータであっても、分類の軸となる変数や特徴量をつかむことが目的であれば、サンプリングによりサンプル数を減らしての分析も可能です。むしろ、どのように分類されるかの傾向や、あるいは分類の構造をつかみたい場合は、最初にクラスター数を決める必要がなく、さらに分類結果が構造化される階層型のほうが有利な場合も少なくありません。非階層型は、とにかく分類はされるものの、指定したクラスター数の妥当性や、なぜそのように分類されたかの構造を視覚的につかむことができないからです。

このように、階層型と非階層型のどちらが適しているかは、データ量だけでなく分析の目的やデータの理解度などによっても異なりますし、どちらが適しているかがわからない場合も多いため、両方のアプローチをとることをおすすめします。この記事においても、両方のアプローチで進めることにします。

距離を類似度とみなす。

続いて、クラスター分析における距離について説明します。クラスター分析は似た者同士に分類する手法ですが、それには要素間の類似度を定量的に測定する必要があります。そして類似度は、要素間の距離として定量的に測定することが可能です。例えば、あるクラスの生徒の身長と体重のデータを二次元平面にプロットしたとします。その中で、似た体格の生徒は距離的に近い場所にプロットされるはずです。これが、類似度を距離で測定できるということです。すなわち要素間の距離を類似度とみなすことができるということになります。

ところで、数学やデータサイエンスで使う距離にはいくつかの種類があります。日常で用いる距離は、数学的にはユークリッド距離(Euclidean Distance)と呼ばれるもので、要素Aと要素Bの二点間の距離は、二次元平面であればピタゴラスの定理により計算することが可能です。これをN次元に拡張にすると、以下の数式で表現されることになります。

$$d(A, B) =\sqrt{(A_1-B_1)^2+…+(A_n-B_n)^2}\\$$

数学の世界では、ユークリッド距離以外にも、マハラノビス距離やコサイン距離など多数の距離が存在します。ここでは距離の深掘りは避けておきますが、ユークリッド距離以外の距離の捉え方がある、ということを理解するために、マハラノビス距離について簡単に触れておきます。マハラノビス距離(Mahalanobis’ Distance)は、相関性を考慮した距離の捉え方です。

先ほどの例で、あるクラスの生徒の身長と体重のデータを二次元平面にプロットした場合に、似た体格の生徒は距離的に近い場所にプロットされると言いました。では身長も体重も平均的な生徒Aさんから見た場合に等距離にいる生徒は、みな体格の類似度は同じに見えると言えるでしょうか。たとえば、Aさんよりも身長が高く体重も重いBさんと、Aさんよりも身長は低いものの体重が重いCさんがいた場合に、Aさんからの距離がBさんとCさんで同じになることがありますが、Bさんの体型はAさんと比較的似ているものの、Cさんはかなり太っているように見えるはずです。

これは、身長と体重の間に相関がある、すなわち身長が高くなるほど体重も重たくなるという性質によるものです。この場合は相関性を考慮し、相関の強い方向の距離を、実際のユークリッド距離よりも相対的に短く測定することで、実態に近い類似度を表現することが可能となります。これがマハラノビス距離の考え方です。

実際のデータ分析においては、先ほどの身長と体重のように、データの変数間に相関が存在することが少なくありません。その場合はマハラノビス距離を用いるべき、という話になりそうですが、実際にはほとんど用いることはありません。なぜならクラスター分析では、身長と体重のように強い相関をもつ変数の存在は冗長で無意味であり、予めどちらかを除外するからです。言い方を変えると、クラスター分析を行うプロセスにおいては、変数間の相関性を予め分析しておく必要があるということになります。

以上の考え方を踏まえ、次回以降でクラスター分析の実践を進めて行きます。

脚注   [ + ]