상관관계와 공분산
피어슨 및 스피어맨 상관관계, 공분산 행렬, 머신러닝 맥락에서의 상관관계 해석.
상관관계와 공분산은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
관계 측정하기
공분산과 상관관계는 두 변수가 함께 어떻게 움직이는지 수치로 나타냅니다. 이는 특성 선택, 포트폴리오 이론, 탐색적 분석의 기반입니다.
공분산
공분산은 변수들이 함께 증가할 때 양수이고, 한 변수가 증가할 때 다른 변수가 감소하면 음수입니다. 크기는 단위에 따라 달라지므로 원시 공분산은 해석하기 어렵습니다.
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은 LINEAR 관계가 없음을 뜻합니다. 0에 가까운 값도 강한 비선형 패턴을 숨기고 있을 수 있습니다.
판다스에서 상관관계 계산하기
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피어슨과 스피어먼 비교
피어슨은 원시 값의 LINEAR 관계를 측정합니다. 스피어먼은 RANKS를 사용하므로 모든 단조 관계를 포착하고 이상치에 강합니다.
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를 순위 상관관계를 사용하도록 전환합니다. 이상치가 있거나 비선형이지만 단조로운 관계에는 스피어먼을 우선 사용하고, 깨끗한 선형 데이터에는 피어슨을 사용합니다.
print(df.corr(method="spearman"))상관관계는 NOT 인과관계입니다
강한 상관관계가 있다고 해서 한 변수가 다른 변수의 원인이 된다는 뜻은 아닙니다. 숨은 교란 변수가 두 변수 모두에 영향을 줄 수 있습니다. 이 연결을 설명할 수 있는 다른 요인이 무엇인지 항상 질문해 보세요.
허위 상관관계
변수가 충분히 많으면 순전히 우연히 일부 변수 사이에 상관관계가 나타납니다. 아이스크림 판매량과 익사 사고는 상관관계를 보이지만, 서로가 아니라 여름 더위의 영향을 함께 받기 때문입니다. 예상하지 못한 상관관계는 신중하게 판단하세요.
히트맵으로 시각화하기
상관관계 히트맵은 패턴을 한눈에 드러냅니다. 강한 상관관계를 보이는 특성 쌍은 중복일 수 있으므로 모델링 전에 REMOVE할 후보입니다.
# import seaborn as sns
# sns.heatmap(df.corr(), annot=True, cmap="coolwarm")빠른 확인
상관관계에 대한 이해도를 확인해 보세요.
복습
상관관계 도구 모음:
- 공분산은 방향을 보여 주지만 단위에 따라 달라집니다.
np.cov는 행렬을 제공합니다 - 상관관계는 -1..1 범위로 재조정됩니다:
np.corrcoef,df.corr() - 피어슨(선형)과 스피어먼(순위, 강건함, 단조성)
- 상관관계는 인과관계가 아닙니다. 교란 변수와 허위 연결을 주의하세요
자주 묻는 질문
“상관관계와 공분산” 강의는 무료인가요?
네 — “상관관계와 공분산” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“상관관계와 공분산”에서 뭘 배우나요?
피어슨 및 스피어맨 상관관계, 공분산 행렬, 머신러닝 맥락에서의 상관관계 해석. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“상관관계와 공분산” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 기술 통계와 분포
- 확률과 베이즈 정리
- 가설 검정
- 상관관계와 공분산