✅ Heatmap
히트맵(Heatmap)은 행과 열로 이루어진 2차원 데이터에서 값의 크기를 색상으로 표현한 시각화 기법이다. 주로 값의 분포, 상관관계, 패턴 및 이상치를 직관적으로 확인할 수 있다.
1️⃣ 특징 및 장점
- 색상 변화로 데이터의 크기나 빈도 표현 : 예를 들어, 진한 색은 높은 값을, 연한 색은 낮은 값을 나타냄
- 상관관계 확인 : 변수들 간의 상관계수를 시각화하여 관계가 강한 변수를 쉽게 찾을 수 있음
- 이상치 및 패턴 탐색 : 비정상적인 색상 패턴을 통해 이상치 감지 및 데이터 패턴 확인 가능
2️⃣ 주요 사용 사례
- 상관계수 히트맵 (Correlation Heatmap)
- 데이터의 상관관계를 나타내는 매트릭스를 시각화
- 변수들 간의 상관관계 파악에 유용
- Ex) 신용 점수와 연간 소득의 관계 확인
- 데이터 분포 히트맵
- 이산형 데이터의 빈도수 또는 분포를 표현
- Ex) 연도별 월별 판매량 변화 패턴
- 피처 중요도 히트맵
- 모델 학습 후 피처 중요도를 색상으로 표현하여 중요 변수 식별에 사용
- Ex) 랜덤포레스트 피처 중요도 시각화
3️⃣ Python에서 히트맵 그리기
seaborn 라이브러리를 활용한 상관관계 히트맵 예시
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 예시 데이터 생성
data = {
'Yearly Income': [50000, 60000, 70000, 80000, 90000],
'Score': [400, 650, 700, 750, 800],
'Left': [10000, 12000, 20000, 25000, 40000],
'Working Hours': [40, 45, 30, 55, 60],
'default': [0, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
# 상관계수 계산
corr_matrix = df.corr()
# 히트맵 그리기
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='Spectral', vmin=-1, vmax=1)
plt.title('Correlation Heatmap')
plt.show()
📌 파라미터 설명
- annot=True : 각 셀에 상관계수 값을 표시
- cmap='Spectral' : 색상 팔레트 설정
- vmin, vmax : 색상 스케일 범위 설정 (-1 ~ 1)

💡결과 해석
주요 상관관계 해석
(1) Yearly Income (연간 소득)
- Score와 +0.88: 강한 양의 상관관계. 연간 소득이 높을수록 신용 점수도 높아지는 경향이 있음.
- Left와 +0.89: 강한 양의 상관관계. 연간 소득이 높을수록 대출 잔액도 높음.
- Working Hours와 +0.83: 강한 양의 상관관계. 연간 소득이 높을수록 근무 시간도 길어지는 경향.
- default와 +0.50: 양의 상관관계가 있지만 중간 정도의 강도. 소득이 높다고 해서 불이행이 반드시 증가하지는 않음.
(2) Score (신용 점수)
- Yearly Income와 +0.88: 위에서 설명한 바와 같이, 연간 소득과 신용 점수가 함께 증가.
- Left와 +0.85: 강한 양의 상관관계. 신용 점수가 높을수록 대출 잔액도 높음.
- Working Hours와 +0.94: 아주 강한 양의 상관관계. 신용 점수가 높을수록 근무 시간이 긴 경향.
- default와 -0.63: 음의 상관관계. 신용 점수가 높을수록 채무 불이행 가능성이 낮음.
(3) Left (대출 잔액)
- Yearly Income와 +0.89: 소득이 높을수록 대출 잔액도 많음.
- Score와 +0.85: 신용 점수가 높을수록 대출 잔액도 높음.
- Working Hours와 +0.93: 근무 시간이 길수록 대출 잔액도 많음.
- default와 +0.22: 약한 양의 상관관계. 대출 잔액이 많다고 해서 불이행 가능성이 크게 증가하지는 않음.
(4) Working Hours (근무 시간)
- Score와 +0.94: 신용 점수와 근무 시간이 매우 밀접한 관계.
- Left와 +0.93: 근무 시간이 길수록 대출 잔액도 많음.
- default와 -0.32: 약한 음의 상관관계. 근무 시간이 길수록 채무 불이행 가능성이 조금 낮음.
(5) default (채무 불이행 여부)
- Score와 -0.63: 음의 상관관계. 신용 점수가 낮을수록 채무 불이행 가능성이 높음.
- Working Hours와 -0.32: 근무 시간이 길수록 채무 불이행 가능성이 약간 낮음.
- Yearly Income과 +0.50: 약한 양의 상관관계. 소득이 높다고 해서 채무 불이행 가능성이 반드시 높지는 않음.
- Left와 +0.22: 대출 잔액과 불이행은 큰 상관관계가 없음.
인사이트 및 해석 요약
- 신용 점수(Score)와 채무 불이행(default) 간에는 음의 상관관계(-0.63)가 있습니다. → 신용 점수가 높을수록 채무 불이행 가능성은 낮아집니다.
- 연간 소득(Yearly Income), 대출 잔액(Left), 근무 시간(Working Hours) 간에 강한 양의 상관관계가 나타납니다. → 소득이 높고 근무 시간이 길수록 대출 잔액도 많아지는 경향이 있습니다.
- default와의 상관관계는 다른 변수에 비해 상대적으로 낮으며, 특히 Left와는 매우 약한 관계가 있습니다. → 대출 잔액이 채무 불이행에 직접적인 영향을 주지 않을 수 있습니다.
- Working Hours와 Score가 매우 강한 양의 상관관계(+0.94)를 가지므로, 신용 점수 산정에 근무 시간이 중요한 영향을 미칠 가능성이 있습니다.
4️⃣추가 활용 방안
- 상관계수가 강한 변수들을 이용해 파생 변수를 생성하면 모델 성능 향상 가능
- sns.clustermap()을 사용하면 상관관계가 유사한 변수끼리 군집화된 히트맵을 그릴 수 있음
'Technique > 데이터 분석' 카테고리의 다른 글
| [실험실. 01] 아주 간단한 A/B test (0) | 2024.07.08 |
|---|---|
| Pandas와 Numpy 비교하기 (0) | 2024.06.13 |
| 판다스와 넘파이 비교하기 (0) | 2024.06.13 |
| DB Schema (0) | 2024.04.23 |
| KPI (2) - 어떻게 하는건데? (0) | 2024.04.19 |