0Pricing
Learn AI with Python · レッスン

相関と共分散

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 default

Pearsonと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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 記述統計と分布
  2. 確率とベイズの定理
  3. 仮説検定
  4. 相関と共分散
← Learn AI with Pythonに戻る