탐색적 자료 분석
고친 사람 github-actions[bot]
탐색적 자료 분석은 결론을 내기 전에 데이터의 생김새를 먼저 살피는 일입니다. 데이터가 따를 규칙을 미리 정해 두지 않습니다. 대신 그림부터 그려 봅니다. 계산하기 전에 데이터 속 이상한 곳을 이 단계에서 찾아냅니다.
쉽고 빠른 이해
무슨 일을 하나 — 데이터를 계산에 넣기 전에 눈으로 먼저 훑습니다. 주문 금액을 그려 보다가 -1 이 수백 건 끼어 있는 것을 찾아내는 식입니다.
왜 하나 — 평균 같은 수 몇 개만 보면 데이터의 모양이 가려집니다. 잘못 들어간 값이나 두 무리로 갈린 값을 모른 채 계산하면 결론이 처음부터 어긋납니다.
어떻게 하나
- 값이 어디에 몇 건씩 있는지 그림으로 그립니다
- 가운데 값과 퍼진 정도를 수로 냅니다
- 이상한 곳이 보이면 질문을 세우고 다시 그립니다
대가 — 끝이 정해져 있지 않아 시간이 얼마든지 듭니다. 여러 번 들여다보다 보면 우연히 생긴 무늬를 진짜로 믿기 쉽습니다.
상세
남이 짠 코드베이스를 처음 넘겨받은 개발자는 바로 기능부터 고치지 않습니다. 먼저 폴더 구조를 훑어봅니다. 로그도 몇 줄 찍어 봅니다. 어디가 핵심이고 어디가 수상한지를 익힙니다.
탐색적 자료 분석(EDA, Exploratory Data Analysis)은 이 일을 데이터에 합니다. 데이터 안의 구조를 찾는 데이터 분석 방식입니다. 도구는 그래프와 몇 가지 수입니다. 이 이름은 통계학자 존 튜키(John Tukey)가 붙였습니다.
EDA 는 정해진 기법 목록이 아닙니다. 데이터를 어떤 순서로, 어떤 눈으로 볼지에 대한 태도에 가깝습니다.
모델보다 데이터를 먼저
데이터를 분석할 때는 흔히 모델을 세웁니다. 모델은 데이터가 따른다고 미리 정해 두는 규칙입니다. 「응답 시간은 평균 근처에 종 모양으로 모인다」가 그런 규칙입니다.
이 규칙을 믿으면 평균과 표준편차 두 수만 알면 됩니다. 표준편차는 값이 평균에서 얼마나 흩어졌는지를 나타내는 수입니다. 이 두 수만 있으면 1초를 넘는 요청이 몇 퍼센트인지도 계산해 낼 수 있습니다.
많은 분석은 모델을 먼저 세웁니다. 그다음 데이터를 그 틀에 넣어 계산합니다. EDA 는 순서를 바꿔 데이터를 먼저 들여다봅니다. 모델은 그다음에 고릅니다.
순서를 바꾸는 까닭은 모델이 틀릴 수 있어서입니다. 모델이 틀렸으면 그 위에서 낸 계산이 전부 틀립니다. 데이터를 먼저 보면 이 어긋남을 계산 전에 잡을 수 있습니다.
그래서 EDA 가 다른 분석과 갈리는 것은 쓰는 그림이 아닙니다. 그림은 어느 쪽이든 흔한 것들을 씁니다. 갈리는 것은 그 그림을 모델보다 먼저 그리느냐입니다.
자주 쓰는 그림
EDA 에서 쓰는 그림은 대개 단순합니다. 가장 흔한 것은 셋입니다.
히스토그램은 값의 범위를 여러 구간으로 나눕니다. 구간마다 몇 건인지를 막대로 그립니다. 값이 어디에 몰렸는지가 보입니다. 봉우리가 몇 개인지도 보입니다.
상자 그림은 값을 크기순으로 줄 세운 뒤 가운데 절반을 상자 하나로 그립니다. 상자 안의 선은 중앙값입니다. 중앙값은 줄 세웠을 때 한가운데 오는 값입니다. 상자에서 멀리 떨어진 값은 점으로 따로 찍혀 눈에 띕니다.
산점도는 두 값을 가로축과 세로축에 놓습니다. 한 건마다 점 하나를 찍습니다. 요청 크기와 응답 시간처럼 두 값이 함께 움직이는지가 보입니다.
그림 옆에는 수도 함께 냅니다. 요약 통계는 값 수천 개를 평균이나 표준편차 같은 수 몇 개로 줄인 것입니다. EDA 는 이 수와 그림을 나란히 놓고 서로 맞춰 봅니다.
무엇을 찾나
그림과 수를 놓고 찾는 것은 대개 다섯 가지입니다. 아래 표는 찾는 것마다 잘 보이는 곳을 짝지었습니다.
| 찾는 것 | 무엇인가 | 잘 보이는 곳 |
|---|---|---|
| 가운데와 퍼짐 | 값이 어디쯤 모였고 얼마나 흩어졌나 | 히스토그램 · 요약 통계 |
| 분포의 모양 | 봉우리가 하나인가 둘인가 · 한쪽 꼬리가 길게 늘어졌나 | 히스토그램 |
| 이상치 | 무리에서 동떨어진 값 | 상자 그림 |
| 결측치 | 비어 있거나 「없음」을 뜻하는 값 | 값마다 건수를 센 표 · -1 같은 숫자로 적혔으면 히스토그램 |
| 두 값의 관계 | 한 값이 늘 때 다른 값도 따라 움직이나 | 산점도 |
다섯 가운데 백엔드 데이터에서 자주 걸리는 것은 분포의 모양과 결측치입니다. 아래 두 소절이 하나씩 예를 듭니다.
두 무리로 갈린 응답 시간
응답 시간 백 건이 있습니다. 쉰 건은 캐시에 있던 값을 돌려줘서(캐시 적중) 0.1초에 끝났습니다. 나머지 쉰 건은 캐시에 없어서(캐시 미스) 0.9초가 걸렸습니다. 평균을 내면 0.5초입니다.
평균만 보면 「대략 0.5초 걸리는 서비스」로 읽힙니다. 그런데 0.5초 근처에서 끝난 요청은 한 건도 없습니다. 히스토그램을 그리면 막대가 0.1초와 0.9초 두 곳에만 섭니다. 봉우리가 둘인 이런 분포가 쌍봉 분포입니다.
이 그림이 주는 것은 결론이 아니라 질문입니다. 캐시 적중이 왜 절반뿐인지, 0.9초 걸린 쉰 건은 어떤 요청인지를 묻게 됩니다.
질문은 데이터로 시험할 수 있는 문장으로 다듬습니다. 「0.9초 걸린 요청은 전부 캐시 미스다」 같은 문장입니다. 이렇게 다듬은 질문이 가설입니다. EDA 는 가설을 만들어 다음 분석으로 넘깁니다.
주문 금액에 섞인 표시 값
주문 테이블의 금액 열을 요약했더니 평균이 생각보다 낮게 나왔습니다. 계산에는 잘못이 없습니다. 히스토그램을 그려 보면 -1 에 막대 하나가 높이 솟아 있습니다.
알고 보니 결제가 실패한 주문을 금액 -1 로 적어 두고 있었습니다. 이 -1 은 금액이 아니라 「값이 없음」을 뜻하는 표시입니다. 결측치인 셈입니다. 그런데 숫자처럼 생겨서 평균 계산에 섞여 들어갔습니다.
이런 값을 걸러 내는 일이 데이터 정제입니다. EDA 는 무엇을 걸러야 하는지 알려 줍니다. 데이터 정제는 그 목록을 받아 값을 고치거나 뺍니다.
그리고 묻고 다시 그리는 반복
EDA 는 한 방향으로 흐르지 않습니다. 그림 하나에서 이상한 곳이 보이면 질문이 생깁니다. 그 질문에 답하려고 데이터를 쪼개 다시 그립니다. 더 쪼갤 곳이 없으면 그동안 다듬은 가설을 다음 분석으로 넘깁니다.
flowchart TD
A["데이터를 받는다"] --> B["그림을 그리고 요약 통계를 낸다"]
B --> C{"이상한 곳이 보이나"}
C -->|보인다| D["질문을 세우고 데이터를 쪼갠다"]
D --> B
C -->|안 보인다| E["가설을 다음 분석으로 넘긴다"]
응답 시간 예라면, 쌍봉 분포를 본 뒤 요청을 캐시 적중과 캐시 미스로 나눕니다. 나눈 두 묶음을 각각 다시 그립니다. 두 묶음이 저마다 봉우리 하나로 모이면 더 쪼갤 곳이 없으니 반복을 멈춥니다.
확인적 자료 분석과의 분업
EDA 가 넘긴 가설은 누군가 확인해야 합니다. 이 일을 맡는 것이 확인적 자료 분석입니다. 가설을 먼저 세워 두고 그 가설이 데이터로 뒷받침되는지를 봅니다. 「모델보다 데이터를 먼저」 소절에서 본, 모델부터 세우는 순서가 이쪽입니다.
확인에 흔히 쓰는 절차가 가설 검정입니다. 먼저 가설이 말하는 차이가 우연일 뿐이라고 칩니다. 그렇다면 지금만큼 뚜렷한 차이가 나올 확률이 얼마인지 계산합니다. 그 확률이 아주 작으면 우연으로 보기 어렵다고 판정합니다.
둘은 하는 일의 방향이 반대입니다. EDA 는 가설을 찾아냅니다. 확인적 자료 분석은 찾은 가설을 시험합니다. 시험을 거친 가설이 모델을 고르는 바탕이 됩니다.
둘을 같은 데이터로 하면 문제가 생깁니다. 데이터를 여러 방향으로 들여다보면 우연히 생긴 무늬도 몇 개는 걸립니다. 그 무늬를 찾아낸 데이터로 다시 확인하면 당연히 맞다고 나옵니다.
그래서 가설을 찾을 때 쓴 데이터와 확인할 때 쓰는 데이터를 나눕니다. 확인은 새로 모은 데이터로 합니다. 아니면 처음부터 데이터 한 부분을 떼어 두고 EDA 에서는 보지 않습니다.
쓰는 때와 쓰지 않는 때
가장 흔한 때는 새 데이터를 처음 받았을 때입니다. 로그를 모아 대시보드를 만들기 전이나 머신러닝 모델에 넣기 전에 한 번 훑습니다.
지표가 이상할 때도 합니다. 장애 뒤에 응답 시간이 왜 늘었는지 볼 때가 그렇습니다. 평균 그래프 하나 대신 시간대별로 히스토그램을 그려 보는 것이 EDA 입니다.
반대로 모양을 이미 잘 아는 데이터를 매일 같은 방식으로 요약하는 일은 EDA 가 아닙니다. 그건 정해 둔 보고서를 돌리는 일입니다. 새로 찾을 것이 없기 때문입니다.
대가
EDA 에는 정해진 끝이 없습니다. 그림은 얼마든지 더 그릴 수 있습니다. 질문도 계속 생깁니다. 멈출 때를 정해 두지 않으면 시간이 한없이 듭니다.
EDA 는 답도 주지 않습니다. 내놓는 것은 「이상한 곳이 여기 있다」와 거기 딸린 질문입니다. 확실하다고 말하려면 「확인적 자료 분석과의 분업」 소절에서 본 확인 단계를 따로 거쳐야 합니다.
관련 항목
탐색적 자료 분석이 속하는 상위 분류
탐색적 자료 분석이 그리는 그래프
히스토그램 · 상자 그림 · 산점도 · 데이터 시각화 · 통계 그래픽 · 줄기 잎 그림
탐색적 자료 분석이 계산하는 요약 통계
요약 통계 · 평균 · 중앙값 · 분위수 · 사분위수 · 사분위 범위 · 표준편차 · 분산
탐색적 자료 분석이 드러내는 데이터의 특징
분포 · 쌍봉 분포 · 왜도 · 이상치 · 결측치 · 상관관계
탐색적 자료 분석과 맞세워지는 분석 방식
확인적 자료 분석 · 가설 검정 · 통계적 추론 · 베이즈 통계
탐색적 자료 분석 뒤에 이어지는 처리 단계
데이터 정제 · 특성 공학 · 통계 모델 · 머신러닝
탐색적 자료 분석을 거치는 백엔드 운영 업무
다른 이름: exploratory data analysis · Exploratory Data Analysis · EDA · 탐색적 데이터 분석