Data Visualization
데이터 시각화는 데이터를 차트, 그래프, 지도로 표현하여 데이터셋 감사부터 학습 곡선까지 패턴, 이상치, 오류를 알아보기 쉽게 합니다.
데이터 시각화는 데이터 값을 차트, 그래프, 지도 및 주석이 추가된 이미지의 위치, 길이, 색상 또는 모양으로 나타내는 그래픽 표현입니다. 이를 통해 숫자 표에서는 드러나지 않는 패턴, 이상치, 오류를 확인할 수 있습니다. 탐색적 시각화는 분석가가 탐색적 데이터 분석 과정에서 데이터를 이해하도록 돕습니다. 탐색적 데이터 분석은 John Tukey가 1977년에 같은 제목의 저서에서 주창한 방법입니다. 설명적 시각화는 발견한 결과를 다른 사람에게 전달합니다. 머신 러닝과 컴퓨터 비전에서는 데이터셋을 점검하고, 학습 과정을 추적하며, 모델 오류를 진단하고, 예측을 설명하는 데 사용됩니다.
시각화가 중요한 이유#
통계학자 Francis Anscombe는 1973년에 현재 Anscombe의 4중주라고 불리는 작은 데이터셋 4개를 통해, 거의 동일한 요약 통계를 가진 데이터도 다르게 보일 수 있음을 보여주었습니다.
import matplotlib.pyplot as plt
import numpy as np
# Anscombe's quartet: four datasets of 11 (x, y) points each
x = [10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]
quartet = {
"I": (x, [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]),
"II": (x, [9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]),
"III": (x, [7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]),
"IV": ([8] * 7 + [19] + [8] * 3, [6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]),
}
# Print each dataset's summary statistics and draw its scatter plot side by side
fig, axes = plt.subplots(1, 4, figsize=(12, 3), sharex=True, sharey=True)
for ax, (name, (xs, ys)) in zip(axes, quartet.items()):
r = np.corrcoef(xs, ys)[0, 1]
print(f"{name}: mean y {np.mean(ys):.2f}, variance y {np.var(ys, ddof=1):.2f}, correlation {r:.3f}")
ax.scatter(xs, ys)
ax.set_title(f"Dataset {name}")
fig.savefig("anscombe.png")네 데이터셋 모두 y 평균은 7.50, 분산은 4.12 또는 4.13, 상관계수는 0.816 또는 0.817로 나타납니다. 그러나 저장된 그래프의 모양은 전혀 다릅니다. 데이터셋 I은 잡음이 있는 선형 추세이고, II는 매끄러운 곡선이며, III은 이상치 하나가 있는 완벽한 직선이고, IV는 상관관계가 멀리 떨어진 점 하나에서 비롯되는 수직 점 배열입니다. Autodesk 연구원들은 2017년에 같은 통계를 가진 데이터셋 13개로 구성된 Datasaurus Dozen을 통해 이 아이디어를 확장했으며, 그중 하나를 그래프로 나타내면 공룡 모양이 됩니다.
차트 선택하기#
차트는 데이터 표현 방식이 질문에 부합할 때 효과적입니다. 범주 간 비교에는 막대 차트, 시간에 따른 추세에는 선 차트, 분포에는 히스토그램과 상자 그림, 두 변수 간 관계에는 산점도, 공간 패턴에는 지도와 히트맵이 적합합니다. William Cleveland와 Robert McGill은 1984년 그래픽 지각 실험에서 사람들이 공통 척도상의 위치를 가장 정확하게 판단하고, 그다음으로 길이, 각도, 면적, 색상 음영 순으로 정확하게 판단한다는 사실을 발견했습니다. 따라서 정밀한 비교에서는 막대 차트와 점 차트가 원형 차트보다 효과적입니다. 색상은 범주와 크기를 표현할 때 viridis와 같이 지각적으로 균일하고 색각 이상을 고려한 컬러맵을 사용하는 것이 가장 좋습니다. viridis는 Matplotlib 2.0부터 기본값입니다.
머신 러닝에서의 시각화#
- 데이터셋 편향 점검: 클래스 히스토그램으로 클래스 불균형을 파악하고, 박스 위치 및 크기 지도에서 특정 영역이나 크기로만 나타나는 객체를 찾으며, 이미지 그리드로 레이블 오류를 확인합니다.
- 손실 함수 곡선: 에포크별 학습 손실과 검증 손실을 그리면 수렴 여부를 확인할 수 있습니다. 학습 손실은 감소하는데 검증 손실이 증가하면 과적합을 의미합니다.
- 혼동 행렬 및 정밀도-재현율 곡선: 모델이 어떤 클래스를 혼동하는지, 신뢰도 임계값을 변경할 때 정밀도와 재현율이 어떻게 상충하는지 보여줍니다.
- 임베딩 맵과 t-SNE: t-SNE와 같은 투영 기법은 유사한 샘플을 2차원 공간에서 서로 가까이 배치하여 군집, 중복 항목, 이상치를 드러냅니다.
- 살리언시 맵 및 예측 오버레이: 이미지에 박스, 마스크 또는 키포인트를 그려 넣고, 예측을 결정하는 데 영향을 준 픽셀을 강조 표시합니다.
TensorBoard 및 Weights & Biases와 같은 실험 추적 도구는 여러 학습 실행에 걸쳐 이러한 지표를 실시간으로 차트에 표시하므로, 검증 손실이 상승하기 시작하면 과적합이 즉시 드러납니다. Ultralytics YOLO도 기본적으로 각 학습 실행 폴더에 핵심 그래프를 저장합니다. labels.jpg에는 클래스 인스턴스 수, 박스 모양 샘플, 바운딩 박스 중심의 2D 히스토그램, 박스 너비와 높이의 2D 히스토그램이 표시됩니다. results.png은 에포크마다 각 손실 및 지표를 차트에 표시하고, 검증 과정에서는 혼동 행렬과 정밀도-재현율 곡선이 추가됩니다.
데이터 시각화와 관련 용어 비교#
- 데이터 분석: 질문에 답하기 위해 데이터를 조사하고, 정리하고, 모델링하는 보다 광범위한 과정입니다. 시각화는 데이터를 탐색하고 결과를 보고하는 주요 도구 중 하나입니다.
- 설명 가능한 AI(XAI): 모델이 특정 결정을 내린 이유를 설명하며, 살리언시 맵과 같은 시각화가 주요 결과물에 포함됩니다.
- 데이터 마이닝: 알고리즘을 사용해 대규모 데이터셋에서 패턴을 자동으로 찾으며, 시각화는 발견한 패턴을 표현하는 데 자주 사용됩니다.
- 대시보드: 한 화면에 여러 차트를 모아 시간에 따른 주요 지표를 추적합니다. 비즈니스 인텔리전스 도구와 프로덕션 모델 모니터링에서 흔히 사용됩니다.










