新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

手軽にクラスター分析するならPythonよりTableauがオススメ

Tableauはグラフの表示だけでなく、クラスター分析機能もあります。

Pythonは無料だし、それだけで十分手軽にクラスター分析できるのですが、Pythonでクラスター分析を行おうとすると、データ前準備として標準化したり、エルボー法のグラフを描いてクラスター数を考えたりなどの作業が発生します。また、変数を入れ替えたり、変数を使った計算式を変数にしたりする際に、都度コード修正作業が発生し、若干手間でもあったりします。

そんな時はTableauを使うと、GUIで試行錯誤が行え、かつ面倒な調整も自動で行ってくれるので、より手軽にクラスター分析できますよというお話です。

以下、よくあるクラスター分析作業を、Tableauを使ってやるやり方のメモになります。

手軽にクラスター分析するならPythonよりTableauがオススメ
クラスター分析イメージ

データ準備

いかにもクラスター分類できそうなデータということで、下記のマクドナルドのメニューの栄養成分データを用いました。

www.kaggle.com

栄養成分は「カロリー」「コレステロール」「タンパク質」「炭水化物」「脂肪」「食塩」「食物繊維」で、グラムあたりの保有量になおしています。

散布図マトリックスでザックリ相関を見る

まずは各々の2変数の散布図と傾向線を描いて、全体の分布状況をザックリと把握してみます。

栄養成分を「列」と「行」に放り込んでいきます

手軽にクラスター分析するならPythonよりTableauがオススメ

栄養成分の合計値のプロットのマトリックスができます。

これを散布図にします。

[分析]-[メジャーの集計]のチェックを外します

また、各プロットが何のメニューかが分かるように、「カテゴリー」「メニュー」を「マーク」の「ラベル」にドロップしておきます。

手軽にクラスター分析するならPythonよりTableauがオススメ

  • 高コレステロールのメニュー群があるなぁ
  • 高タンパクなメニューが多いなぁ

など、何となく全体の分布状況を見ます。

次に、散布図に傾向線を入れてみます。

左のアナリティクスペインから[モデル]-[傾向線]をグラフにドロップします

相関係数の可視化は面倒なので、「信頼区間」で代用します。

[分析]-[傾向線]-[すべての傾向線の編集]>「信頼区間の表示」にチェックを入れます

手軽にクラスター分析するならPythonよりTableauがオススメ

真ん中の線が線形相関関数で、上下が信頼区間が表示されます。信頼区間の幅が狭いほど、相関が高いと言えます。

  • 脂質・炭水化物はカロリー高いんだなぁ
  • 食塩は味付けだから、他の栄養成分との関連性は薄いのかなぁ

など、何となく相関を見ます。

クラスター分析をする

次に本命、クラスター分析をしてみます。

その前に、[分析]-[傾向線]-[すべての傾向線の表示]のチェックを外して、先程表示した傾向線が邪魔なので消しておきます。

左のアナリティクスペインから[モデル]-[クラスター]をグラフにドロップします

「クラスター」ダイアログが表示されるので、クラスター分析に使用する変数を指定します。ここでは「カテゴリー」「メニュー」は使わないのでドロップします。

手軽にクラスター分析するならPythonよりTableauがオススメ

するとクラスターが作成されます。これだけです!

正規化も自動でやってくれ、クラスター数もよさげなものにしてくれます。(今回Tableauはクラスター数を5つで提案してきました)

後述しますが、変数の変更やクラスター数の変更もGUIで行えるので、納得のいく分類ができるまで、手軽に試行錯誤できます。

クラスターの名前を推測する

各クラスターが何を意味するかを決めるのは人間の仕事なので、それを行います。

中央値で推測

クラスターの中心点は「色」の「クラスター」の[クラスターの説明]で見れます。

手軽にクラスター分析するならPythonよりTableauがオススメ

正直よくわかりません…。

分布で推測

先程作成した散布図のポイントにマウスオーバーすると、そのポイントの「カテゴリー」と「メニュー名」が表示されるので、具体的にどんなメニューかを見て推測します。

  • 高コレステロールの青クラスターのメニューは「エッグマックマフィン」等だから、青クラスターは「卵系」かな?

手軽にクラスター分析するならPythonよりTableauがオススメ

  • 高カロリー・高炭水化物の外れにある緑クラスターは「チョコレートチップクッキー」等だから、緑クラスターは「粉物系」かな?

手軽にクラスター分析するならPythonよりTableauがオススメ

他は重なりあってるので、散布図からは推測難しそうです…。

他のグラフから推測

作成したクラスタで、他のグラフを色分けすることができるので、それから推測してみます。

「色」の「クラスタ」を左のデータの「ディメンション」にドロップします

するとクラスタがディメンションになるので、後は適用したいグラフで、ディメンションのクラスターを「色」にドロップするだけです。

例)カテゴリー毎のクラスター分布

手軽にクラスター分析するならPythonよりTableauがオススメ

例)クラスターの詳細メニュー表

手軽にクラスター分析するならPythonよりTableauがオススメ

これらから、

  • オレンジクラスターは「肉系」かな?
  • 赤色クラスターは「揚げ物系」かな?
  • 水色クラスターは「野菜・乳製品系」かな?

と推測しました。

他のグラフへの展開

クラスター名が決まったので、上記と同様、他のグラフの「色」に「クラスター」をドロップして、クラスター分析結果を応用していきます。

例えば、マクドナルドのメニュー分類結果は下記になります。

手軽にクラスター分析するならPythonよりTableauがオススメ

クラスターの調整

クラスターの変数を変えたり、クラスター数を変えたりは、クラスターのダイアログで行います。

クラスターのダイアログは、最初に作成した散布図の「色」の「クラスター」の「クラスターの編集」で表示します。

手軽にクラスター分析するならPythonよりTableauがオススメ

初めから1発でクラスターは決まらず、ここで何度も試行錯誤することになるかと思います。

ですので、手軽にクラスター分析するなら、Pythonより手軽に試行錯誤できるTableauがオススメというお話でした。