K-Meansクラスタリングの紹介

クラスタリングとは、データの中にある共通な部分を持つグループにデータを分類する手法です。

今回は、クラスタリングの代表的な手法であるK-MenasクラスタリングをExploratoryで実行する方法についての紹介となりますが、これによって何ができるのか簡単な例を使ってみていきましょう。

例えば、顧客一人当たりの年齢と購買額の関係をプロットした散布図があったとします。

K-Menasクラスタリングを使うことで、年齢と購買額の値をもとにグループ分けすることができます。

必要なデータの形式

K-Meansクラスタリングを実行する際には、1行が1観測対象となっているデータを使う必要があります。

また、クラスタリングするもととなる変数のデータ型は数値型になります。

サンプルデータ

そこで、今回はサンプルデータとして、都道府県ごとの時間の使い方のデータを使用します。

このデータは、1行が1都道府県となっており、列には仕事や家事、学業などにどれだけの時間を使っているかの列が性別ごとにあります。

K-Meansクラスタリングを実行する

アナリティクスビューを開き、タイプに「K-Means クラスタリング」を選択します。

変数の列をクリックして、K-Menasに使用する列を選択します。シフトキーを押すことで、複数の列を一気に選択できます。

列の指定が完了したら実行することで、K-Meansクラスタリングの結果が表示されます。

クラスターの数はデフォルトでは3ですが、変更したい場合はプロパティから設定できます。

結果の解釈

バイプロット

バイプロットのタブでは、それぞれのクラスター(グループ)ごとにどういった特徴があるのかが確認できます。

なお、このバイプロットタブで表示されている情報は、Exploratoryのアナリティクスのタイプの1つとしてサポートをしている「主成分分析」の結果となり、主成分分析の詳細はこちらから確認いただけます。

各点にどの都道府県かを表示したい場合は、カテゴリーに「都道府県」の列を追加し、カテゴリーの値を表示にチェックをつけます。

軸線が伸びている方向にある点(今回の場合は都道府県)は、それらのスコアが高いことを表し、軸線の反対側にある点はそれらのスコアが低いことを表します。

また、変数の線が同じ方向に向いている場合は、それらの変数で相関関係があると判断できます。

クラスター1をみてみると、通勤通学_男性、通勤通学_女性の軸に東京都や埼玉県、千葉県、神奈川県がプロットされているのが確認できます。つまりは、これらの都道府県は通勤通学に時間をかけている人が多いという解釈ができます。

クラスター2では、家事_男や介護_看護_男に北海道や秋田県、佐賀県、岡山県がプロットされているのが確認できます。これらの都道府県は男性が家事や介護などに積極的なことがわかります。

クラスター3では、学業_男や介護_看護_女、育児_男にいくつかの県がプロットされているのが確認できます。

バイプロットタブのより細かい解釈方法については、こちらをご覧ください。

箱ヒゲ図

箱ヒゲ図のタブでは、各クラスターの標準化された値を箱ヒゲ図で可視化したチャートが表示されます。

クラスター1の場合は、通勤通学の男性女性などの値が高いことが確認できます。

クラスター2では、睡眠_女の値が高いが、育児_女の値が低いようです。

クラスター3では、仕事_女などの値が高いことが確認できます。

箱ヒゲ図の見方については、こちらの「箱ヒゲ図の作り方」のノートをご覧ください。

レーダー

レーダーのタブでは、各クラスターでの変数を標準化した値としてレーダーチャートとして表示されます。

クラスター1は、通勤通学の男性女性や、買い物_男などの値が高いことが確認できます。

クラスター2は、多くの変数の値が低いことがわかりますが、特に育児_女や身の回りの用事_女の値が低いことが確認できます。

クラスター3は、仕事_女や睡眠_男などの値が高いことが確認できます。

分布タブ

「分布」タブでは、変数ごとに各クラスターに含まれる値の分布を密度曲線を使って可視化しています。

例えば、育児_女の分布では、クラスター2(オレンジ色)は他のクラスターに比べて育児に関するスコアが低いということがわかります。

密度曲線はデータがどのように分布しているのかを可視化できるチャートです。密度曲線の詳細を知りたい方は、こちらのノートをご覧ください。

クラスターとカテゴリーの関係性を見る

データの中に「八地方区分」といった列があり、それぞれのクラスターでどういった地方が多く集まっているのかを知りたいとします。

K-Measnクラスタリングのカテゴリー列に「八地方区分」を割り当てて実行します。

カテゴリー(比率)

カテゴリー列を割り当てることで、「カテゴリー(比率)」のタブが追加され、このタブでは各クラスターで割り当てたカテゴリーの比率を確認することができます。

クラスター1は通勤通学の男性女性の値が高いクラスターでしたが、関東や近畿地方のカテゴリーが多く集まっていることが確認できます。

クラスター2は多くの変数の値が低く、特に育児_女や身の回りの用事_女の値が低いクラスターでしたが、中国や東北地方が他のクラスターに比べて多いことが確認できます。

クラスター3は仕事_女や睡眠_男などの値が高いクラスターでしたが、九州や四国地方が他のクラスターに比べて多いことが確認できます。

カテゴリー(パス)

カテゴリーに列を追加すると、「カテゴリー(パス)」のタブも追加されます。

左側の情報

左側のバーの高さが各クラスターの総数を表しています。

つまり今回のクラスタリングでは、クラスター3に分類される観察対象が最も多いことがわかるわけです。

また、「色」は各クラスターにおける「八地方区分」カテゴリーを表しています。

例えば、クラスター1を確認すると、「近畿(ピンク)」「関東(黒)」の観察対象(都道府県)の割合が高いことがわかります。

右側の情報

右側のバーの高さはカテゴリー列に選択した「八地方区分」の総数の情報を表しています。

右側のバーに注目すると、八地方区分における各カテゴリー総数と、それぞれのカテゴリーにおける、クラスターの割合を確認できます。

クラスタリングしたデータをエクスポートする

データタブでは、K-Meansクラスタリングに使用されているデータとクラスター番号がテーブル形式で確認できます。

各都道府県ごとのクラスター番号は一番右の列にあるcluster列から確認できます。

このデータをデータフレームとして保存したい場合は、エクスポートボタンから「テーブル・データを新規データフレームとして保存」を実行します。

クラスタリングで使用したデータが新しくデータフレームとして作成されました。

参考資料

K-Meansクラスタリングに関する参考資料は下記をご覧ください。

  • K-Meansクラスタリングを使った顧客セグメンテンテーション - リンク
  • アンケートデータ分析 Part 1 - 相関、クラスタリング、NPS - リンク

K-Meansクラスタリングに関するよくある質問

Q: K-Meansクラスタリングを実行すると「Centers should be less than distinct data points.」というエラーが表示される。

K-Meansクラスタリングを実行したときに、Centers should be less than distinct data points.というエラーが表示され、K-Meansクラスタリングの結果が返らないことがあります。

このエラーは、クラスタリングに利用している各行の列の値の組み合わせの数が、設定しているクラスター数(デフォルトは3)より少ない場合に生じます。

そのため、クラスターの数を、前述した値の組み合わせの数より少なくなるように、減らすことで、エラーを回避することが可能です。

Q: K-Meansのクラスター数はどのように決めたら良いですか?

最適なクラスター数を探索する方法として、エルボー・メソッドという手法があります。詳細は、こちらのノートをご覧ください。

Q: K-Means クラスタリングでは最初にランダムに中心点の位置を決めるとのことですが、ランダムフォレストのように環境によって結果は多少変わってくるのでしょうか。

Exploratoryではシードがセットされているため、同じマシンで実行している限りは結果が変わることはありません。(MacとWindowsは文字エンコードの違いにより、日本語のデータの場合はクラスター番号が異なることがあります。)

Q: K-Meansクラスタリングの「箱ヒゲ図」で「箱」や「ヒゲ」が描画されません

K-Meansクラスタリングの「箱ヒゲ図」のタブにて、「箱」や「ヒゲ」が上手く描画できないケースがあったりします。K-meansで使用している変数に「偏りがある」場合は、箱ヒゲ図が上手く描画できない原因の一つとなります。

詳細は、こちらのノートをご覧ください。

Q: サマリタブに表示されるクラスター内平方和とはなんでしょうか?

クラスター内平方和は各クラスターの中心地からのそれぞれのデータのずれの合計だと捉えていただければと思います。この値が小さければ小さいほどずれが少なくなり、K-Meansではこのクラスター内平方和を少なくするために、クラスターの中心となる点をずらしていくという手法となっています。

Q: サマリタブに表示される各変数の値はどういった値が表示されているのでしょうか?

サマリタブで表示される変数は全て標準化した値のクラスターごとの平均値となっています。色がついたバーはその値の大きさに応じてバーが長さが変わります。値がプラスであれば水色に、マイナスであれば赤色で表示されます。

Q: バイプロットタブに表示されている第1主成分、第2主成分は何を表しているのでしょうか?

バイプロットでは次元削減のアルゴリズムである主成分分析(PCA)というものを使っており、複数の変数を2つの次元で表した時にどれだけの情報量(ばらつき)を表現できているかが第1主成分と第2主成分からわかります。

例えば、下記は20列使用してK-meansクラスタリングを実行したものとなりますが、第1主成分で14.2%、第2主成分で11.6%と2つ合わせて全ての変数のばらつきの25.8% を表現できていると捉えることができます。

残りの74.2%のデータのばらつきについては、第3主成分以降で説明がつくばらつきになっています。

ちなみに、K-Meansクラスタリングの中で主成分分析を行っているのは、あくまで「バイプロット」タブで表示するためだけに行っているものであり、クラスタリングする際のアルゴリズムとは別の処理となります。

バイプロットの詳細については、こちらの「主成分分析(PCA)の紹介」のセミナーにて紹介していますので、そちらをご覧ください。

Q: バイプロットタブに表示される変数の軸線はどのように決まっていますか?

上述した「バイプロットタブに表示されている第1主成分、第2主成分は何を表しているのでしょうか?」と関連していますが、それぞれの変数の軸線は主成分分析を実行した際の第1主成分、第2主成分のスコアをもとに位置が決まっています。

Q: バイプロットタブのデータをエクスポートしたときの、それぞれのデータは何を表すのでしょうか?

PC1(第一主成分)はそのままの列名となっていますが、ObservationはPC2(第二主成分)の値となっています。

また、measure_nameはクラスタリングに使用した変数(数値列)を表しており、variablesはバイプロットでそれぞれの変数の軸を表現する時に使用されている値となっています。

下記は、左側がK-meansのバイプロットで、右側がエクスポートしたデータをもとにチャートで可視化をしています。

X軸にPC1, Y軸にVariablesを割り当てていますが、元のバイプロットと同じく、それぞれの変数の軸がある位置が表現されています。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio