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

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

手軽にクラスター分析するなら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がオススメというお話でした。

関連カテゴリー記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com