相関ヒートマップ

入門

6.4.1

相関ヒートマップ

最終更新 2020-01-29 読了時間 1 分
まとめ
  • 相関ヒートマップで特徴量同士の相関を色で表現する。
  • sns.heatmap で相関行列を描画し、強い関係を素早く発見する。
  • 特徴量選択やEDAの初期段階で全変数の関係を概観するのに使う。

相関係数を色で表現すると、どの指標が一緒に動きやすいかを視覚的に把握できます。pandas で相関行列を作り、seaborn.heatmap で描画するのが簡単です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {
        "売上":    [100, 120, 150, 170, 190, 210, 180, 205],
        "集客":    [230, 260, 300, 320, 350, 370, 330, 360],
        "滞在時間": [18, 20, 23, 25, 27, 29, 26, 28],
        "リピート率": [0.32, 0.34, 0.36, 0.38, 0.4, 0.41, 0.39, 0.4],
    }
)

corr = df.corr(numeric_only=True)
fig, ax = plt.subplots(figsize=(6, 5))
sns.heatmap(
    corr,
    annot=True,
    cmap="Blues",
    vmin=-1,
    vmax=1,
    square=True,
    fmt=".2f",
    ax=ax,
)
ax.set_title("売上指標の相関ヒートマップ")
fig.tight_layout()

plt.show()

pandas で相関行列を作り、seaborn.heatmap で描画するのが簡単ですの図

読み方のポイント #

  • 対角要素は必ず 1 になるので、オフダイアゴナルを重視する。
  • 正の相関(青が濃い)が強いペアは、どちらかの指標を伸ばす施策がもう一方にも効く可能性が高い。
  • 逆に相関が弱い指標は独立に改善できる領域だと考えられる。

いつ使うか #

  • 適している場面: 多数の変数間の相関を色で一覧し、強い関係を素早く発見したいとき。EDAの初期段階に最適です。
  • 不向きな場面: 変数が非常に多い(50以上)とセルが小さくなり、値の読み取りが困難になります。
  • 代替手段: 特定の変数ペアを深掘りしたいなら散布図や散布図行列で個別の関係を確認してください。

よくある失敗パターン #

  • 相関と因果の混同: 相関が高い=因果関係があるとは限りません。ヒートマップの解説に「相関は因果を意味しない」と注記しましょう。
  • カラーマップの不適切な選択: 虹色カラーマップ(jet 等)は正負の区別がつきにくく誤解を招きます。発散型(RdBu, coolwarm 等)を使い、0 を中心に対称に設定してください。