[도구로 배우는 AI] 상관관계 분석(Correlation Matrix, Heatmap) 완벽 가이드
상관관계 분석(Correlation Matrix, Heatmap) 완벽 가이드 ✨
데이터 분석을 시작하면서, 혹시
“어떤 변수가 다른 변수와 얼마나 관련되어 있을까?”
라는 궁금증을 가져본 적 있나요?
예를 들어, 제품 판매량과 광고비는 얼마나 밀접한 관련이 있는지,
혹은 사용자의 나이와 구매 빈도 사이에 연관성이 있는지 말이죠.
이런 질문에 답을 주는 강력한 무기가 바로 ‘상관관계 분석’입니다.
상관관계 분석은 단순히 수치로 관계를 보여주기도 하지만,
이를 예쁜 지도처럼 나타낸 ‘Heatmap’ 그래프를 통해 한눈에 직관적으로 파악할 수 있어요.
이번 블로그 글에서는 상관관계 분석의 개념, 활용법,
그리고 Orange Data Mining으로 직접 실습해보는 방법까지 폭넓게 다뤄보겠습니다.
초보자분들도 이 글만 따르면 어렵지 않게 상관관계를 파악할 수 있으니,
함께 상관관계의 매력에 빠져 봅시다!
안녕하세요, 데이터 분석에 입문한 지 얼마 안 된 분들이라면 환영합니다!
데이터 안에는 우리가 미처 알지 못하는 수많은 비밀이 숨어있죠.
그 중에서도 ‘변수 간의 관계를 알아보는 것’은 꼭 짚고 넘어가야 할 필수 과정이랍니다.
예를 들어,
어떤 쇼핑몰에서 제품 리뷰 개수가 늘어날수록 매출도 함께 오르는지,
혹은 특정 앱의 사용 시간이 길어질수록 충성고객 비율이 높아지는지 등을 파악하려면 바로 상관관계 분석이 필요해요.
상관관계를 잘 파악하면, 앞으로 어떤 변수를 주목해야 하고,
어디에 더 많은 자원을 투자해야 할지 감이 확 잡힐 거예요.
그렇다면 이 상관관계 분석, 어떻게 하면 효과적일까요?
오늘은 그 기초부터 실무 활용까지 차근차근 알아보려고 합니다.
차근차근 따라오시면, 상관관계 분석이란 이름이 낯설게만 느껴졌던 분들도 ‘아, 이게 이렇게 쓰이는 거구나!’ 하고 고개를 끄덕이게 되실 거예요.
준비되셨다면, 여러분과 함께 상관관계 분석의 세계로 한 걸음 들어가 보겠습니다.
목차 📖
1. 상관관계 분석이란 무엇인가? 🤔
데이터를 다루다 보면, 특정 변수들이 어떤 식으로 서로 연관되어 있는지를 알아보는 일이 자주 필요합니다. 예컨대,
“광고비가 높아질수록 매출이 함께 올라가는지”,
“연령대가 증가할수록 특정 앱 사용 시간이 늘어나는지”,
“학습 시간과 시험 점수는 비례하는 경향이 있는지”와 같은 질문을 하곤 하죠.
이러한 질문에 답해주는 강력한 도구가 바로 상관관계 분석입니다.
상관관계 분석은 두 변수 간의 선형적 연관성을 측정하여,
어떤 변수 X와 변수 Y가 서로 얼마나 밀접하게 움직이는지를 수치로 표현해 줍니다.
보통 우리가 상관관계를 이야기할 때는 상관계수(Correlation Coefficient)라는 용어가 따라오죠.
상관계수를 통해 “양의 상관관계(둘 다 함께 증가/감소)”,
“음의 상관관계(한 쪽이 증가하면 다른 쪽은 감소)” 또는 “거의 무관함”을 알 수 있습니다.
데이터 분석 초기 단계에서 상관관계 분석은 매우 중요한 역할을 해요.
왜냐하면 상관관계를 통해 우리가 분석해야 할 핵심 변수를 골라내거나, 더 깊이 파고들 가치가 있는 관계를 찾아낼 수 있기 때문입니다.
예를 들어, 특정 변수끼리의 상관도가 거의 0에 가깝다면 두 변수를 동시에 고려할 필요가 적어질 수 있고, 상관도가 매우 높다면 그 변수들을 우선순위에 두고 심층 분석을 해보는 식이죠.
상관관계 분석이 필요한 이유 💡
- 중요 변수 파악:
수많은 변수 중 어떤 변수들이 서로 밀접하게 연결되어 있는지를 파악해,
분석 범위를 좁히거나 모델 성능 개선에 활용할 수 있습니다. - 이상치 탐지:
매우 예측하기 어려운 데이터 포인트(이상치)가 특정 변수와의 상관관계에서 눈에 띄는가를 파악할 수 있습니다. - 간단한 가설 검증:
예비 단계에서 “이 두 변수가 관련 있지 않을까?” 하는 가설을 세우고,
실제로 상관계수를 통해 그 가설이 타당한지 빠르게 확인해볼 수 있습니다.
상관관계의 유형을 알아보자 🔎
상관관계 분석이라고 해서 하나의 형태만 있는 건 아니죠.
대표적으로 피어슨 상관계수(Pearson Correlation), 스피어만 순위 상관계수(Spearman’s Rank Correlation) 등이 있습니다.
어떤 방식을 선택하느냐에 따라 결과 해석 방법도 조금씩 달라집니다.
다음 테이블에서는 몇 가지 대표적인 상관계수의 특징을 정리해봤습니다.
상관계수 유형 | 특징 | 적합한 데이터 특성 |
---|---|---|
Pearson | 두 변수 간 선형적 관계를 측정하며, 데이터가 연속형이고 정규 분포를 따르는 경우 활용도가 높음. |
연속형, 정규분포, 이상치가 많지 않은 경우 |
Spearman | 순위(등수)에 기반한 비모수적 상관계수. 선형 관계뿐 아니라 단조(monotonic) 관계도 잘 포착. |
순서형(ordinal) 데이터, 정규분포가 아니거나 이상치가 있는 경우 |
위 표에서 보듯,
가장 널리 쓰이는 피어슨 상관계수는 두 변수 간의 선형적 연관성을 잘 보여주지만,
데이터가 정규분포를 따르지 않거나 이상치가 많은 경우에는 왜곡이 일어날 수 있습니다.
반면, 스피어만 순위 상관계수는 데이터의 순위에 기반해 상관성을 측정하기 때문에,
이상치나 비정규분포 데이터에도 비교적 안정적이죠.
상관계수 범위에 따른 해석 📏
상관계수(ρ 혹은 r)는 보통 -1과 +1 사이의 값을 가집니다.
여기서 0에 가까우면 상관관계가 거의 없다는 의미이고, +1에 가까우면 강한 양의 상관, -1에 가까우면 강한 음의 상관을 의미하죠.
예를 들어,
r값이 0.8 이상이라면 “두 변수 간에 매우 강력한 양의 상관관계가 존재한다”라고 말할 수 있고,
-0.8 이하라면 “매우 강력한 음의 상관관계가 존재한다”라고 해석할 수 있습니다.
- -1.0 ~ -0.8: 매우 강한 음의 상관
- -0.8 ~ -0.5: 뚜렷한 음의 상관
- -0.5 ~ -0.2: 약한 음의 상관
- -0.2 ~ 0.2: 거의 무관
- 0.2 ~ 0.5: 약한 양의 상관
- 0.5 ~ 0.8: 뚜렷한 양의 상관
- 0.8 ~ 1.0: 매우 강한 양의 상관
이처럼 상관계수를 활용하면 두 변수가 서로 관련되어 있는지를 숫자로 간단히 요약할 수 있으며,
특히 단순 회귀분석이나 다중 회귀분석을 하기 전에도 상관관계가 높은 변수들끼리는 다중공선성 문제가 발생하지 않는지 미리 체크해볼 수 있습니다.
2. 상관계수의 의미와 해석 📐
상관관계 분석을 본격적으로 이야기하기에 앞서, 상관계수(Correlation Coefficient)가 무엇인지 조금 더 구체적으로 살펴볼 필요가 있습니다.
우리가 보통 상관계수를 언급할 때,
가장 먼저 떠오르는 것이 ‘피어슨 상관계수(Pearson Correlation Coefficient)’죠.
이는 두 변수 간의 선형적 관계를 측정하는 가장 대표적인 지표로, 통계학에서 널리 사용되고 있습니다.
이를테면 X 변수가 증가함에 따라 Y 변수도 함께 증가하는 경향이 강하다면 양의 상관, X가 증가할수록 Y가 감소한다면 음의 상관, 그리고 둘 간의 움직임에 특별한 연관이 없다면 0에 가까운 상관으로 판단하게 됩니다.
피어슨 상관계수를 구하는 공식은 다음과 같습니다:
r = ( Σ (xᵢ - x̄)(yᵢ - ȳ) ) / ( √( Σ (xᵢ - x̄)² ) * √( Σ (yᵢ - ȳ)² ) )
여기서 x̄와 ȳ는 각각 X와 Y의 평균을 의미하며, xᵢ와 yᵢ는 i번째 관측값을 나타냅니다.
만약 r이 1에 가까울수록 강한 양의 상관, -1에 가까울수록 강한 음의 상관을 가지게 되죠.
예시로 r = 0.9라면, “두 변수는 매우 강력하게 함께 움직인다”고 해석할 수 있으며,
r = -0.8이면 “한쪽이 증가할 때 다른 한쪽은 감소하는 방향으로 강하게 관계가 있다”고 볼 수 있습니다.
다만 ‘상관관계는 인과관계를 의미하지 않는다’는 통계학의 기본 원칙을 꼭 기억해야 합니다.
예를 들어,
아이스크림 판매량과 익사 사고 건수 간에 양의 상관관계가 나타난다고 해서,
아이스크림을 많이 먹어서 익사 사고가 늘어난다고 결론지을 순 없습니다.
실제로는 기온이 높아지면 아이스크림 판매도 증가하고 물가(해변이나 수영장)에 놀러 가는 사람이 많아져 익사 사고도 증가하는 등의 ‘공통 원인(기온)’이 있을 수 있죠.
이런 부분을 간과하면 통계 함정에 쉽게 빠질 수 있다는 사실을 늘 염두에 두어야 합니다.
스피어만 상관계수(Spearman’s Rank Correlation) 📏
만약 데이터가 정규분포를 따르지 않거나, 극단값(이상치)이 많고, 선형적인 관계가 아닌 ‘단조(monotonic) 관계’를 갖는다면 어떻게 해야 할까요?
이때 쓰기 좋은 대안이 바로 스피어만 상관계수입니다.
스피어만 상관계수는 원데이터의 값이 아니라 순위(rank)를 기준으로 상관성을 측정하기 때문에, 극단값의 영향을 덜 받으며 비선형적인 패턴도 어느 정도 포착해낼 수 있죠.
스피어만 상관계수를 구하는 과정은 먼저 데이터를 순위화한 뒤, 피어슨 상관계수 공식을 적용하는 것과 유사합니다.
예시로, 키 순위와 몸무게 순위를 비교했을 때, 키가 큰 사람이 몸무게도 무겁다는 경향이 있다면 양의 스피어만 상관계수가, 키가 크지만 몸무게가 가벼운 경우가 많다면 음의 상관계수가 나타나겠죠.
하지만 이 또한 선형적이지 않은 관계, 예컨대 한 변수는 빠르게 증가하고 다른 변수는 완만하게 증가하는 경우 등, 미묘한 상황에서도 상관성의 방향성을 어느 정도 잡아낼 수 있습니다.
피어슨 vs. 스피어만: 언제 어떤 것을 쓸까? 🤔
항목 | 피어슨 상관계수 | 스피어만 상관계수 |
---|---|---|
적합한 데이터 분포 | 정규분포에 가까운 연속형 데이터 | 비정규분포, 이상치가 존재, 또는 순위로 측정 가능한 데이터 |
관계 형태 | 선형적 관계 | 단조(monotonic) 관계 |
적용 예시 | 키와 몸무게 같이 보편적으로 선형적인 패턴을 보이는 경우 | 설문 조사 응답(순위나 서열), 극단값이 많은 사례 |
위 테이블에서 보이듯이,
피어슨 상관계수는 일반적으로 더 자주 사용되지만, 데이터 특성에 따라 스피어만 상관계수가 더 적합할 수도 있습니다.
예를 들어, 매출액(정규분포와 거리가 멀고 편향이 큰 경우가 많음)과 사용자 만족도(설문 조사 결과)처럼 연속형 데이터와 순위형 데이터가 섞여 있다면 스피어만을 고려해볼 만하죠.
상관계수 해석 시 주의사항 🛎️
- 인과관계와 혼동 금지:
단순히 두 변수의 상관도가 높다고 해서, 하나가 다른 하나의 원인이라고 볼 수는 없습니다.
공통 원인(confounding factor)이 존재할 수 있음을 항상 염두에 두세요. - 이상치(Outlier)의 영향:
피어슨 상관계수는 극단값에 민감합니다.
만약 데이터 세트에 극단값이 있다면, 상관계수가 왜곡될 가능성이 높으므로, 이상치 처리를 신중히 해야 해요. - 비선형 관계:
상관계수, 특히 피어슨 상관계수는 선형적 관계를 전제로 합니다.
혹시 두 변수 간에 곡선 형태의 관계가 있다면, 상관계수로는 그 관계를 온전히 반영하기 어려울 수 있습니다.
이처럼 상관계수는 데이터 분석의 길잡이가 되어주는 유용한 지표이지만,
어디까지나 두 변수 간 관계의 ‘강도’를 설명해주는 수치일 뿐입니다.
이 수치 하나로 모든 것을 판단하기보다는, 데이터의 분포나 특성, 비선형적 패턴 등도 함께 고려해 종합적으로 해석하는 습관을 기르는 것이 중요합니다.
실무에서 상관계수를 어떻게 활용할까? 🚀
- 마케팅:
광고비와 매출, 웹사이트 방문자 수와 구매 전환율 등의 변수 간 상관도를 먼저 살펴본 뒤,
높은 상관도를 보이는 변수들에 집중 투자 전략을 세울 수 있습니다. - 인사/HR 분석:
직원 근무 시간과 성과 지표 간의 상관관계가 있는지 파악하거나,
교육 프로그램 참여도와 평가 점수 간의 상관도를 살펴봄으로써 업무 효율과 제도 개선 방안을 모색할 수 있죠. - 추천 시스템:
영화나 음악 플랫폼에서 사용자의 선호 장르와 시청/청취 이력 간의 상관성을 파악해,
더 정교한 추천 알고리즘을 만들 수 있습니다.
정리하자면,
상관계수는 두 변수 간에 어느 정도 연관성이 있는지를 수치화해주어, 분석 초기에 데이터 탐색(EDA) 단계에서 빠르게 통찰을 얻을 수 있도록 도와줍니다.
다만, “왜 이런 관계가 나타날까?”를 깊이 분석하기 위해서는 추가적인 가설 검증이나 실험, 추가 변수 탐색 등이 필수로 따라와야 한다는 점도 잊지 말아야겠죠!
3. 상관관계 행렬(Correlation Matrix) 소개 🧩
변수 두 개씩 짝을 지어 상관관계를 따로따로 계산하는 것은 데이터가 많아질수록 시간이 많이 들고, 인사이트를 한눈에 얻기도 어렵습니다.
예를 들어,
열 개 이상의 변수를 모두 쌍으로 분석해본다고 해보세요.
한두 쌍을 볼 땐 상관계수를 쉽게 파악할 수 있지만, 전체적인 흐름을 파악하기 위해서는 훨씬 복잡해지기 마련이죠.
이럴 때 상관관계 행렬(Correlation Matrix)이라는 도구를 사용하면 다차원 데이터의 상관관계를 표 한 장으로 일목요연하게 정리할 수 있답니다.
상관관계 행렬은 여러 변수 간의 상관계수를 행렬 형태로 표현한 것으로,
행과 열은 모두 동일한 변수 목록으로 구성됩니다.
행과 열이 만나는 셀에는 해당 두 변수 간의 상관계수가 적혀 있어요.
예를 들어,
변수 A와 변수 B의 상관계수를 보고 싶다면, A행과 B열이 만나는 지점을 확인하면 되죠.
이 행렬을 통해 한눈에 “어떤 변수끼리 밀접하게 연관되어 있고, 어떤 변수들은 무관한지” 쉽게 파악할 수 있습니다.
상관관계 행렬의 구조 🏗️
상관관계 행렬은 대체로 대칭 행렬의 형태를 띱니다.
즉, (i번째 변수, j번째 변수)와 (j번째 변수, i번째 변수)의 상관계수는 같기 때문에 행렬을 대각선을 기준으로 대칭으로 볼 수 있어요.
행렬의 대각선에는 (A, A) 즉 자기 자신과의 상관관계가 들어가므로, 항상 1의 값을 갖게 됩니다.
변수 A | 변수 B | 변수 C | |
---|---|---|---|
변수 A | 1 | r(A,B) | r(A,C) |
변수 B | r(B,A) | 1 | r(B,C) |
변수 C | r(C,A) | r(C,B) | 1 |
위 예시처럼 A, B, C 세 변수가 있을 때, 행렬의 대각선은 자기 자신과의 상관계수, 즉 1이 위치합니다.
그리고 (A, B) 위치의 상관계수는 (B, A) 위치의 상관계수와 동일하므로 대칭 구조를 이뤄요.
특히 여러 변수가 동시에 등장하는 실무 데이터셋(매출액, 광고비, 고객수, 재고량, 접속자수 등)에선 상관관계 행렬이 필수적으로 쓰이곤 합니다.
상관관계 행렬의 장점과 활용 ⚡
- 다변수 간 관계 한눈에 파악:
여러 변수 쌍을 일일이 조회하지 않아도, 행렬 하나로 전반적인 상관관계를 확인할 수 있습니다. - 다중공선성(Multicollinearity) 파악:
회귀 분석 등의 모델링에서, 독립변수들 간 상관도가 지나치게 높으면 모델이 불안정해질 수 있죠.
상관관계 행렬로 쉽게 파악 가능해요. - 특징 선택(Feature Selection) 가이드:
분석에 불필요한 변수를 제거하거나, 유사 정보(높은 상관을 가진 변수)를 통합하여 데이터 차원을 줄이는 과정에서 유용합니다.
가령,
웹사이트 운영 데이터에서 방문자 수, 페이지 뷰, 체류 시간, 구매 금액 등 여러 변수를 동시에 분석한다고 해봅시다.
상관관계 행렬을 통해 어떤 지표가 다른 지표들과 강한 상관관계를 가지는지 빠르게 파악하고,
“이 지표들은 서로 비슷한 정보를 주니 중복 제거가 필요하겠군” 하는 결론을 낼 수 있습니다.
파이썬에서 Correlation Matrix 확인하기 (간단 예시) 🐍
Orange Data Mining에서도 간단히 상관분석이 가능하지만,
만약 파이썬에서도 이 과정을 보고 싶다면 다음처럼 간단히 구현할 수 있습니다:
import pandas as pd
# 예시: iris 데이터셋
df = pd.read_csv("iris.csv")
# 상관관계 행렬 계산
corr_matrix = df.corr()
print(corr_matrix)
# 시각화 (Seaborn Heatmap)
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(corr_matrix, annot=True, cmap="Blues")
plt.show()
이처럼 df.corr()
함수를 통해 상관관계 행렬을 생성하고, sns.heatmap
을 이용해 행렬을 손쉽게 시각화할 수 있습니다.
이때 생기는 결과물은 단순한 숫자 표가 아니라 색깔로 구분되어 상관도가 높은 영역과 낮은 영역을 직관적으로 구분할 수 있게 해주죠.
상관관계 행렬을 해석하는 팁 💡
- 대각선은 무조건 1:
자기 자신과의 상관관계는 완벽할 수밖에 없으니, 대각선 값(1)은 제외하고 해석하세요. - 상관계수가 ±0.8 이상이면 주의:
두 변수 간 연관이 매우 크다는 의미입니다.
특히 회귀분석 등 모델링을 할 때는 다중공선성 문제가 될 수 있으니,
어느 한 변수를 제외하거나 차원 축소 기법을 고려해볼 수 있어요. - 절대값 0.1 미만이면 유의미하지 않을 수도:
보통 -0.1 ~ 0.1 사이의 상관계수는 실질적으로 관계가 거의 없다고 해석됩니다.
변수 선택 시 우선순위를 낮춰도 무방합니다.
특히 다중공선성(Multicollinearity) 문제는 예측 모델을 만드는 입장에서 심각한 이슈가 될 수 있어요.
어떤 독립변수들끼리 상관도가 높으면, 모델이 그 중 한 변수를 ‘너무 과대평가’하거나,
예측 결과의 안정성이 떨어지는 결과를 초래할 수 있기 때문이죠.
이런 상황을 상관관계 행렬로 미리 확인하면, 애초에 모델 설계 과정에서 변수를 줄이거나 다른 접근 방식을 택할 수 있습니다.
이처럼 상관관계 행렬은 다차원 데이터에 내재된 변수 간 관계를 효과적으로 요약해주는 강력한 도구입니다.
물론 행렬 자체가 숫자로만 되어 있으면 해석하기가 조금 딱딱할 수 있지만,
곧 살펴볼 Heatmap 시각화를 더하면 훨씬 직관적인 형태로 변환되어 마치 지도를 읽듯이 상관관계를 손쉽게 탐색할 수 있답니다.
4. Heatmap 시각화 기법 🔥
상관관계 행렬(Correlation Matrix)을 숫자 그대로만 보고 있으면, 많은 변수가 있을 때 어느 셀이 높은 상관관계를 갖고 있는지 일일이 찾아봐야 하기에 꽤나 번거로울 수 있습니다.
그리고 양의 상관은 어떤 값인지, 음의 상관은 어떻게 표시되는지 직관적으로 알아보기에도 불편하죠.
그래서 많은 데이터 분석가들은 Heatmap(히트맵)을 이용해 상관관계를 한눈에 파악하곤 합니다.
Heatmap은 행렬 형태의 데이터를 색상 그라데이션을 통해 시각화해주는 기법으로,
숫자만으로 된 무미건조한 표를 알록달록한 지도처럼 표현해줍니다.
예를 들어, 색상 범위를 파란색부터 빨간색까지 설정했다고 해봅시다.
파란색 계열은 음의 상관을, 빨간색 계열은 양의 상관을, 그리고 색이 진해질수록 상관 절대값이 커지는 방식으로 표현하면, 상관도가 높은 부분은 강렬한 색을 띠고, 상관도가 낮은 부분은 연한 색을 띠죠.
이렇게 해두면 상관도가 눈에 띄게 높은 변수 쌍이나, 거의 0에 가까운 변수 쌍 등을 시각적으로 빠르고 쉽게 찾아낼 수 있습니다.
Heatmap을 사용하는 이유 🎨
- 직관적인 시각적 이해:
숫자로만 표시된 행렬은 파악하는 데 시간이 많이 걸리지만, 색상의 농도를 보면 어느 쪽이 높은 상관, 어느 쪽이 낮은 상관인지 직감적으로 알아차릴 수 있습니다. - 변수들 간 패턴 확인:
가로(행)와 세로(열)를 살펴보면서 어떤 변수 주변에 유난히 진한(혹은 연한) 색이 몰려 있는지 확인할 수 있으므로,
변수가 그룹화되는 경향을 발견하는 데도 유리합니다. - 분석 결과 발표 시 유용:
숫자 테이블보다 시각적으로 훨씬 보기 좋기 때문에, 이해관계자나 비전문가에게 결과를 공유할 때도 효과적입니다.
Heatmap 자체는 상관관계 행렬에만 쓰이는 것은 아니지만,
이 “행렬 + 색상 시각화”라는 조합이 워낙 강력하다 보니,
데이터 분석에서 상관관계를 확인할 때 가장 먼저 떠올리는 시각화 기법 중 하나가 되었답니다.
Python 예시로 살펴보는 Heatmap 구현 👀
간단한 예시 코드를 통해 Heatmap이 어떻게 생기는지 확인해볼까요?
앞서 언급한 Iris 데이터셋을 예로 들어보겠습니다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 데이터 불러오기
df = pd.read_csv("iris.csv")
# 상관관계 행렬 계산
corr_matrix = df.corr()
# 히트맵 시각화
plt.figure(figsize=(8,6))
sns.heatmap(
corr_matrix,
annot=True, # 각 셀에 상관계수 표시
cmap="RdBu", # 음수-양수 범위를 색상으로 표시하기 위해 'RdBu' 컬러맵 사용
vmin=-1, vmax=1 # 상관계수 범위가 -1 ~ 1임
)
plt.title("Iris Correlation Heatmap", fontsize=16)
plt.show()
위 코드를 실행하면, 파란색에서 빨간색 사이 그라데이션으로 표현된 히트맵을 얻게 됩니다.
보통 빨간색 계열은 양의 상관(+)을, 파란색 계열은 음의 상관(-)을 의미하죠.
상관계수 값도 annot=True
옵션을 통해 셀 내부에 표시하도록 설정했기 때문에, 시각적 색상과 숫자 정보를 동시에 확인할 수 있습니다.
Heatmap 해석할 때 알아두면 좋은 팁 💡
- 컬러 스케일을 적절히 설정:
보통 -1 ~ +1 범위를 표현해야 하므로,
음수와 양수를 구분할 수 있는 컬러맵(예:RdBu
,coolwarm
등)을 사용하는 게 좋습니다. - 어노테이션(annot) 기능 사용:
색상만으로는 세밀한 수치를 파악하기 어려울 수 있으니,
셀 안에 숫자를 표시해주는 옵션을 활용하면 해석이 수월해집니다. - 정렬(Clustering) 기능:
seaborn.clustermap
나 dendrogram과 결합하면,
상관관계가 비슷한 변수들끼리 묶어서 보여주는 클러스터링 Heatmap을 만들 수도 있습니다.
이를 통해 변수들이 어떻게 군집을 이루는지 시각적으로 확인 가능하죠.
또한, 히트맵은 단순히 상관분석뿐 아니라 유전자 데이터 분석, 이미지 처리(픽셀 강도), 웹사이트 클릭 기록 같은 다양한 분야에서도 활용됩니다.
예를 들어,
웹사이트의 특정 영역에 클릭이 몰리는지를 ‘클릭 히트맵’으로 표현하면, 사용자들이 주로 어디를 누르고 있는지 시각적으로 확인할 수 있으니까요.
Orange Data Mining에서 Heatmap 보기 🍊
Orange에서는 “Correlation” 관련 위젯 혹은 “Heat Map” 위젯을 활용해 간단히 히트맵을 만들 수 있습니다.
데이터 파일을 불러온 다음, Heat Map 위젯을 연결하고, ‘Measure’(피어슨 혹은 스피어만)를 선택하면 자동으로 상관관계 값들이 계산된 히트맵이 표시되죠.
- Orange Canvas 실행 후, “File” 위젯에서 CSV(또는 다른 포맷) 데이터를 불러옵니다.
- “Heat Map” 위젯을 추가하고, File 위젯과 연결합니다.
- Heat Map 위젯을 클릭하여, 원하는 “Clustering” 옵션이나 “Distance Metric” 등을 설정합니다.
- 데이터 열(columns)을 기준으로 Heatmap이 생성되며, 마우스를 가져가면 각 셀의 상관계수(또는 거리)가 표시됩니다.
클릭 몇 번만으로도 멋진 히트맵이 완성되고, 이를 통해 데이터의 상관관계를 알록달록한 색상으로 직관적이게 확인할 수 있으니, 데이터 시각화 초보자도 부담 없이 도전해볼 만합니다.
히트맵은 숫자로만 표현된 행렬보다 훨씬 ‘한눈에 들어오기’ 좋으므로, 분석 인사이트를 공유하거나 보고서를 작성할 때 활용하면 크게 유용하답니다.
결국 Heatmap은 상관관계 행렬을 시각적으로 표현하는 강력한 도구로,
여러 변수가 섞인 상황에서 가장 쉽게 ‘전체적인 분포와 관계’를 파악하는 방법 중 하나입니다.
이제 곧이어 Orange Data Mining에서 실제로 어떻게 활용하는지 더 구체적인 예시를 살펴보면,
직접 손으로 그려보지 않고도 손쉽게 결과를 얻을 수 있다는 사실에 새삼 놀라게 되실 거예요!
5. Orange Data Mining을 활용한 실습 예제 🍊
앞서 상관관계 분석(Correlation Matrix)과 Heatmap에 대해 개념적인 부분을 살펴봤는데요,
이제는 실제로 Orange Data Mining 도구를 활용해 손쉽게 상관관계를 시각화하는 과정을 예시로 보여드리려고 합니다.
Orange는 프로그래밍 언어를 잘 모르는 초보자도 드래그 앤 드롭(Drag & Drop) 방식으로 다양한 분석 기법을 활용할 수 있게 해주는 아주 직관적인 도구입니다.
이번 실습에서는 예시로 Iris 데이터셋을 사용해볼게요.
Iris 데이터셋은 머신러닝·통계·데이터분석에서 가장 많이 쓰이는 고전적 예제 중 하나로, 꽃받침(sepal)과 꽃잎(petal)의 길이와 폭, 그리고 품종이 기록된 간단하고도 훌륭한 학습용 데이터입니다.
우리가 여기서 집중할 부분은 품종에 따른 꽃받침 길이·폭, 꽃잎 길이·폭의 상관관계를 Orange를 통해 어떻게 직관적으로 시각화하고 해석할 수 있는지예요.
Orange Data Mining 환경 준비하기 🛠️
- Orange 설치:
Orange 공식 웹사이트에서 최신 버전을 다운로드하여 설치합니다.
Windows, macOS, Linux 등 다양한 환경을 지원하므로 쉽게 설치 가능합니다. - 데이터 준비:
Orange는.csv
,.xlsx
,.tab
등의 파일 포맷을 지원합니다.
Iris 데이터셋은 Orange에 기본 내장돼 있기도 하지만, 필요하다면 CSV 형식으로 내려받아 사용할 수도 있어요. - Orange Canvas 실행:
설치를 마친 뒤 Orange를 실행하면, 블록(위젯)을 가져다 놓고 연결하며 시각적으로 분석 플로우를 구성할 수 있는 'Canvas' 화면이 뜹니다.
기본 Orange 워크플로우 구성하기 🚀
Orange에서는 분석 작업 과정을 ‘워크플로우(workflow)’라는 형태로 시각화해둡니다.
예를 들어,
데이터 불러오기 → 데이터 전처리 → 시각화 같은 단계를 각각 위젯으로 표현하고,
선으로 연결해 나가죠. 상관분석과 Heatmap 시각화도 이 워크플로우 안에서 위젯 몇 개만 배치하면 간단하게 끝납니다.
- File 위젯 배치:
Canvas 좌측의 ‘Widget’ 패널에서File
위젯을 찾아서 Canvas로 드래그합니다.
File 위젯을 클릭하여 Iris 데이터셋을 선택하거나, 로컬 CSV 파일을 선택할 수 있습니다. - Heat Map 위젯 추가:
이제 상관관계를 시각화할 수 있는Heat Map
위젯을 찾아 Canvas로 드래그하세요.
그리고 File 위젯에서 Heat Map 위젯으로 선을 그어 연결해줍니다. - 설정 확인:
Heat Map 위젯을 더블클릭하면 설정 화면이 뜹니다.
이곳에서 ‘Clustering’이나 ‘Distance Metric’ 등을 조절할 수 있는데, 기본값으로도 상관관계 히트맵을 확인하기 충분합니다.
Iris 데이터로 상관관계 확인하기 🌸
Orange 상에서 Iris 데이터를 불러오면, 기본적으로 꽃받침(SeapalLength, SepalWidth)과 꽃잎(PetalLength, PetalWidth), 그리고 품종(Species)이 주요 열(columns)로 구성된 테이블이 표시될 텐데요. 품종은 범주형 데이터이므로, 상관계수 계산 시에는 보통 연속형 변수끼리만 주로 보게 됩니다.
Heat Map 위젯을 통해 얻은 결과를 살펴보면,
가령 PetalLength와 PetalWidth가 꽤 높은 양의 상관관계(예: 0.95 이상)를 보인다는 점이 시각적으로도 확인될 거예요.
반면, SepalWidth와 PetalLength는 음의 상관을 보일 수도 있고, 어떤 변수들끼리는 거의 무관에 가까운 패턴을 나타낼 수도 있죠.
이 과정을 통해,
단순히 “Iris 데이터에 이런 열들이 있구나”를 넘어,
“꽃잎이 길면 폭도 넓은 편이고, 꽃받침 폭과는 큰 관계가 없거나 오히려 음의 상관 관계가 있구나” 같은 발견을 할 수 있게 됩니다.
이런 통찰은 나중에 품종 분류 모델을 만들거나, 데이터 전처리를 수행할 때도 요긴하게 쓰일 거예요.
Pearson vs. Spearman 상관계수 선택 🏷️
Orange에서 Heat Map이나 Correlation 관련 위젯을 사용할 때,
상관계수 종류를 선택할 수 있는 옵션이 보일 수도 있습니다.
기본 설정은 Pearson인 경우가 많은데, 만약 데이터가 범주형에 가깝거나 이상치가 많다면 Spearman으로 바꿔보는 것도 방법이죠.
Iris 데이터의 경우 비교적 정규분포에 가깝고 이상치가 크게 문제 되지 않으므로,
Pearson 상관계수를 그대로 써도 크게 무리가 없겠지만,
데이터 특성에 따라 어떤 상관계수를 택할지 고민해볼 필요가 있습니다.
Orange에서는 클릭 몇 번으로 쉽게 전환이 가능하니, 다양한 방법을 시도해보고 결과를 비교해보는 것도 좋은 학습이 돼요.
Orange 결과 해석 & 활용 아이디어 💡
- 변수 선택(Feature Selection):
상관도가 매우 높은 두 변수 중 하나만 남겨도 정보 손실이 적다면,
모델의 복잡도를 줄이기 위해 해당 변수를 제외할 수 있어요.
Iris 데이터에서도 PetalLength와 PetalWidth는 거의 같은 정보를 주므로,
둘 중 하나만 선택해 분류 모델을 만들어볼 수도 있죠. - 데이터 그룹화(Grouping):
Heat Map에 있는 Clustering 옵션을 켜보면, 유사한 상관 패턴을 갖는 변수들이 자동으로 묶여서 보여지기도 합니다.
이때 자연스럽게 변수들 간에 어떤 그룹이 형성되는지 확인하고, 인사이트를 얻을 수 있답니다. - 이상치 탐색:
만약 특정 변수 간 상관계수가 현저히 다르게 나온다면,
실제 이상치가 존재해 왜곡이 발생했을 가능성도 생각해볼 수 있어요.
Orange에서는 추가적으로 'Box Plot'이나 'Scatter Plot' 위젯을 연결해, 이상치가 어느 데이터인지 찾아내기도 쉽습니다.
또한, 분류·클러스터링·회귀 등 다른 분석 기법을 더해볼 때도, 상관분석과 히트맵 시각화가 훌륭한 출발점이 될 수 있습니다.
왜냐하면 모델을 돌리기 전에, 미리 어떤 변수들끼리 강하게 연관되어 있는지 확인해야 모델 과적합이나 다중공선성 이슈를 예방하기 수월하기 때문입니다.
Orange를 활용하는 이유 🚀
- GUI 기반 편의성:
코드를 작성하지 않아도, 위젯을 연결하는 것만으로 다양한 분석 시각화가 가능하므로 초보자나 비전공자도 쉽게 접근할 수 있습니다. - 풍부한 내장 위젯:
히스토그램, 박스플롯, 산점도, 상관관계 분석, 클러스터링, 분류 등 수많은 기법을 위젯 하나씩으로 제공하기 때문에, 다양한 실험을 할 수 있어요. - 워크플로우 저장 및 재활용:
한 번 만든 워크플로우는 .ows 파일로 저장해 두었다가, 다른 데이터셋에 그대로 적용하거나, 동료와 공유할 수 있어 협업에도 유리합니다.
정리하자면,
Orange Data Mining을 사용하면 상관관계 분석부터 Heatmap 시각화까지 정말 손쉽게 구현할 수 있다는 점이 최대 장점입니다.
프로그래밍 지식이 부족해도, “File → Heat Map” 위젯만 연결하면 기본적인 상관분석이 끝나는 셈이니 말이죠.
실습을 거치면서 데이터가 가진 스토리를 시각적으로 파악하는 재미도 쏠쏠합니다.
특히 분석 결과를 여러 stakeholder에게 보고할 때도, 알록달록한 Heatmap 화면을 보여주면 그 가치를 더욱 효과적으로 전달할 수 있으니 꼭 활용해보세요!
정리 🍊
오늘은 상관관계 분석의 기초 개념부터 행렬(Correlation Matrix)과 Heatmap 시각화, 그리고 Orange Data Mining 도구를 활용한 실습 예시까지 차근차근 살펴보았습니다.
데이터 분석을 할 때, 변수 간의 관계를 빠르게 파악해볼 수 있다는 점에서 상관관계 분석은 매우 유용한 기법이죠.
특히 여러 변수가 한꺼번에 등장하는 실제 환경에서는 Heatmap과 같은 시각화 도구가 큰 힘을 발휘해요.
분석 결과를 더욱 효과적으로 전달하고, 중요한 인사이트를 쉽게 공유할 수 있으니까요.
다만 상관계수는 선형적 관계만 반영한다는 점, 그리고 상관관계가 곧 인과관계를 의미하지 않는다는 점을 늘 유념해야 합니다.
예비 단계에서 상관관계 분석으로 유의미한 단서를 찾은 뒤, 추가 가설 검증이나 실험 설계로 깊이 있는 통찰을 얻는 과정을 거친다면 훨씬 더 알찬 데이터 분석을 할 수 있겠죠.
Orange Data Mining처럼 간편한 도구를 활용하면,
프로그래밍 지식이 부족해도 상관관계 행렬과 Heatmap을 활용한 다양한 실습을 손쉽게 시도할 수 있습니다.
앞으로도 변수 간 관계를 손쉽게 확인하고, 통찰력 있는 결론을 이끌어내는 즐거운 데이터 분석 여정 이어가시길 바랍니다!