相関と共分散
Pearson・Spearman の相関、共分散行列、機械学習における相関の解釈を学びます。
「相関と共分散」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
関係性の測定
共分散と相関は、2つの変数がどのように一緒に変化するかを定量化します。特徴量選択、ポートフォリオ理論、探索的分析の基礎となる指標です。
共分散
共分散は、変数が一緒に増加すると正になり、一方が増加すると他方が減少する場合は負になります。大きさが単位に依存するため、生の共分散は解釈が難しいことがあります。
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
print(np.cov(x, y, ddof=1)) # 2x2 covariance matrix共分散行列
np.covは行列を返します。対角成分は分散、非対角成分は各ペア間の共分散です。複数の変数に一般化でき、PCAの基礎にもなります。
data = np.array([[1, 2, 3], [2, 4, 5], [3, 6, 7]], dtype=float)
print(np.cov(data.T)) # 3x3 covariance matrix of the columns相関:尺度をそろえた共分散
ピアソン相関は、共分散を標準偏差の積で割ることで-1から1の範囲に再尺度化します。そのため単位に依存せず、比較可能です。
print(np.corrcoef(x, y)) # 2x2 correlation matrix, diagonal is 1相関の読み取り方
+1は完全な正の線形関係、-1は完全な負の線形関係、0は線形関係がないことを表します。0に近い値でも、強い非線形パターンが隠れている場合があります。
pandasでの相関
df.corr()は、すべての数値列についてペアごとの相関を一度に計算します。データセット内の関係性をすばやく確認する方法です。
import pandas as pd
df = pd.DataFrame({"a": [1,2,3,4,5], "b": [2,4,5,4,6], "c": [9,7,6,5,3]})
print(df.corr()) # Pearson by defaultPearsonとSpearman
Pearsonは生の値における線形の関連を測定します。Spearmanは順位に基づくため、単調な関係であれば捉えられ、外れ値の影響も受けにくくなります。
from scipy import stats
x = np.array([1, 2, 3, 4, 100])
y = np.array([1, 2, 3, 4, 5])
print(stats.pearsonr(x, y).statistic) # distorted by outlier
print(stats.spearmanr(x, y).statistic) # 1.0 (perfectly monotonic)手法の選択
df.corr(method="spearman")を指定すると、pandasで順位相関を使用できます。外れ値がある場合や、非線形でも単調な関係がある場合はSpearmanを、データがきれいな線形関係を示す場合はPearsonを使用してください。
print(df.corr(method="spearman"))相関は因果関係ではありません
強い相関があっても、一方の変数が他方の原因であるとは限りません。隠れた交絡因子が両方に影響を与えている可能性があります。その関連を説明できる別の要因がないか、必ず確認してください。
見せかけの相関
変数が十分に多いと、純粋に偶然いくつかの変数が相関することがあります。アイスクリームの売上と水難事故件数には相関がありますが、どちらも夏の暑さの影響を受けているのであって、互いが原因ではありません。予想外の相関は疑ってかかってください。
ヒートマップで可視化する
相関ヒートマップを使うと、パターンがひと目で分かります。強く相関する特徴量の組み合わせは冗長である可能性があり、モデル構築前に削除する候補になります。
# import seaborn as sns
# sns.heatmap(df.corr(), annot=True, cmap="coolwarm")理解度チェック
相関に関する知識を確認しましょう。
まとめ
相関分析のツールキット:
- 共分散は方向を示しますが、単位に依存します。行列は
np.covで取得できます - 相関は-1..1の範囲に再スケーリングされます:
np.corrcoef、df.corr() - Pearson(線形)とSpearman(順位、頑健、単調)
- 相関は因果関係ではありません。交絡因子や見せかけの関連に注意してください
よくある質問
「相関と共分散」レッスンは無料ですか?
はい。「相関と共分散」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「相関と共分散」で何を学びますか?
Pearson・Spearman の相関、共分散行列、機械学習における相関の解釈を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「相関と共分散」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。