데이터 과학

데이터 전처리

데이터를 분석하기 전에
데이터를 그냥 사용해도
괜찮을까요?

학습 목표

  1. 결측치가 무엇인지 알고, 제거법과 대체법의 장단점을 비교하여 상황에 맞는 방법을 고를 수 있다.
  2. 논리적 기준과 통계적 기준으로 이상치를 판별하고, 상자 그림의 이상치 기준을 사분위수로 구할 수 있다.
  3. 속성마다 값의 범위가 다를 때 생기는 문제를 설명하고, 최소-최대 정규화로 범위를 0~1로 맞출 수 있다.

데이터를 모았으면 바로 쓰면 되지 않을까?

모은 데이터를 살펴보면 비어 있는 값이나 이상한 값이 자주 보입니다.

「다 모아놨어. 바로 사용하면 돼.」

「그냥 사용하면 결과가 잘못 나올 수 있어!」

「그럼 어떻게 해야 해?」

「데이터 전처리와 시각화를 통해 분석할 수 있도록 만들어야지.」

직장에서의 데이터 전문가

2022년의 한 조사에서 데이터 과학자들은 시간의 약 37.75%를 데이터 준비 및 정리에 사용한다고 답했습니다. 데이터 시각화(12.99%)와 보고 · 프레젠테이션(16.20%)까지 더하면 모델을 만드는 시간(약 26.44%)보다 데이터를 정리하고 전달하는 시간이 훨씬 깁니다.

출처: anaconda.com/resources/whitepaper/state-of-data-science-report-2022

데이터 전처리는 모아 온 데이터를 분석하거나 모델을 만들기 좋은 상태로 정리하는 작업입니다.

데이터의 오류를 찾아 바로잡아야 분석 결과를 믿을 수 있습니다. 여기서는 대표적인 전처리 세 가지를 다룹니다.

결측치 처리

값이 비어 있는 자리를 제거하거나 채웁니다.

이상치 처리

정상 범위를 벗어난 값을 판단해 처리합니다.

데이터 정규화

속성마다 다른 값의 범위를 맞춥니다.

데이터 전처리와 비슷한 뜻으로 쓰이는 말들

데이터 먼징(data munging), 데이터 랭글링(data wrangling), 데이터 가공(data manipulation) 등의 용어도 데이터 전처리와 비슷한 의미로 사용됩니다. 영어권 문서에서 이 말들을 만나면 같은 작업을 가리킨다고 보면 됩니다.

값이 비어 있으면 어떻게 할까?

결측치 처리

결측치(missing value)는 있어야 할 자리에 값이 없는 것입니다.

결측치는 왜 생길까?

데이터를 수집하는 과정에서 다양한 이유로 결측치가 포함될 수 있습니다.

설문을 통한 수집

일부 질문에 대해 응답하지 않을 때 발생합니다. 답하기 곤란한 질문일수록 빈칸이 많아집니다.

측정을 통한 수집

일시적 기기 오류 등으로 발생합니다. 센서가 그 시각의 값을 기록하지 못한 경우가 여기에 해당합니다.

지난 약 120년간 서울의 기온 데이터

가로축은 연도(1907~2023), 세로축은 기온입니다. 주황 선은 달마다의 평균 기온, 짙은 선은 전체 흐름, 빨간 상자는 값이 없는 구간입니다. 모양만 요약해 그린 그림입니다.

1952년 전후로 데이터가 누락되어 있습니다. 한국 전쟁 기간으로 서울 기온 측정이 불가능했을 것이라고 유추할 수 있습니다.

서울 기온 데이터셋 내려받기

  • 기상청 기상자료개방포털 (data.kma.go.kr)
  • 기후 통계 분석 → 통계 분석 → 기온 분석
  • 검색 조건 — 자료 구분: 월 / 기간: 1907~최근(서울 관측은 1907년 10월에 시작합니다) / 지역 · 지점: 서울특별시 - 서울

위 그림은 기온 분석 메뉴에서 받은 자료입니다. 아래 실습에서 쓰는 서울기상관측.csv는 이와 별도로 받은 자료로, 1907년 10월부터 시작합니다.

결측치를 그대로 두면 계산이 멈추거나 결과가 왜곡되므로, 결측치는 제거하거나 대체해야 합니다. 데이터가 적어서 한 줄도 아까울 때는 평균, 최빈값, 중앙값 가운데 상황에 맞는 값으로 채울 수 있습니다.

결측치 해결 방법 두 가지

두 방법 모두 대가가 있습니다.

제거법
  • 결측치가 있는 데이터 포인트 또는 속성 전체를 제거한다.
  • 주로 결측치의 비율이 낮은 경우 사용한다. 처리 방법이 쉽지만 속성이 하나만 누락되어도 해당 데이터 포인트 또는 해당 속성 전체가 분석에서 제외되므로 상당한 데이터 손실이 발생할 수 있다.
대체법
  • 남아 있는 모든 데이터의 평균, 최빈값, 중앙값 등의 대푯값으로 일괄 대체하거나, 범주형 속성이 같거나 유사성이 있는 데이터만을 활용한 대푯값으로 대체한다.
  • 남은 데이터를 활용할 수 있지만 대체된 값으로 인해 분석 결과가 왜곡될 수 있다.

결측치 해결 방법 두 가지 — 제거법과 대체법의 장단점

결측치 처리 과정

  1. 결측치 확인 — 데이터셋에서 결측치가 있는 위치와 범위를 파악한다.
  2. 결측치 처리 방법 — 기본적인 방법은 「제거」와 「대체」이다. 결측치가 적은 경우 간단히 제거할 수 있으나, 데이터의 양이 적을 경우 평균 · 최빈값 · 중앙값 등으로 대체하는 방법이 효과적일 수 있다.
  3. 결과 검증 — 결측치 처리 후 데이터셋을 다시 검토하여 처리가 적절했는지 확인한다. 이것은 데이터의 일관성과 정확성을 유지하는 데 중요하다.

데이터 손실 최소화

결측치 제거는 데이터의 손실을 초래한다는 점을 간과하지 않아야 합니다.

분석 왜곡 주의

결측치를 대체할 때 잘못된 값으로 대체하면 분석 결과에 왜곡을 일으킬 수 있습니다. 따라서 상황에 맞는 적절한 대체값 선정이 중요합니다.

스스로 확인

한국 전쟁 기간의 서울 기온을 앞뒤 연도의 평균으로 대체한다면, 「약 120년간의 기온 변화」를 분석하는 데에 문제가 될까요? 그렇다면 제거와 대체 중 어느 쪽이 더 정직한 선택일까요?

직접 결측치를 처리해 볼까?

실습 1 — 오렌지 프로그램으로 기상 관측 데이터셋의 결측치 처리하기

기상청 기상자료개방포털에서 내려받은 서울 월별 기상 관측 데이터셋(서울기상관측.csv)을 사용합니다.

오렌지 프로그램에서는 네모 하나가 위젯 하나이고, 화살표가 데이터가 흐르는 방향입니다. 아래 그림처럼 위젯을 놓고 선으로 이으면 워크플로가 됩니다.

단계 1 결측치 확인하기

File 위젯에서 기상 관측 데이터셋을 불러오고, Feature Statistics와 Data Table 위젯을 연결합니다.

이 단계에서 만들 워크플로

File

데이터 불러오기

Feature Statistics

결측치가 있는 속성 확인

Data Table

결측치가 얼마나 있는지 확인

Data Table의 정보 칸에는 1376개의 데이터 포인트, 6개의 속성, 그중 1.5%가 결측이라는 식으로 표시됩니다. Feature Statistics에서는 어느 속성에 결측치가 몰려 있는지 한눈에 보입니다.

단계 2 결측치 처리하기

File에 결측치 처리를 위한 전처리 위젯인 Preprocess 위젯을 연결합니다. 두 방법 중 하나를 골라 설정합니다.

방법 1 — 결측치 제거하기

Impute Missing Values를 선택한 뒤 Remove rows with missing values를 선택하면 결측치가 삭제됩니다.

방법 2 — 결측치 대체하기

Impute Missing Values를 선택한 뒤 Average/Most frequent를 선택하면 결측치가 평균값으로 대체됩니다.

단계 3 데이터 분석하기

각 Preprocess에 Data Table 위젯을 연결하면 결측치를 처리한 결과를 확인할 수 있습니다. 두 방법 중 더 적절한 방법을 선택하거나 다른 대체할 값을 선택할 수 있습니다.

결측치를 제거하면 전체 데이터 중 9%를 잃게 됩니다.

결측치를 대체하면 뚜렷한 특징이 무시됩니다. 비어 있던 달이 계절과 상관없이 전체 평균값 하나로 채워져, 여름과 겨울의 차이가 사라진 값이 끼어듭니다.

결과 검증 — 두 방법이 갖는 문제점에 주의를 기울여 확인해야 하며, 데이터의 일관성과 정확성을 유지할 수 있도록 더 적절한 방법을 찾아야 하는지 결정해야 합니다.

오렌지 대신 구글 스프레드시트로 결측치를 처리하려면
  1. 데이터 → 열 통계에서 각 열의 「빈 셀」 수를 확인합니다.
  2. 데이터 → 필터 만들기 후 빈 셀을 필터링합니다.
  3. 빈 셀에 대해 제거 또는 대체합니다.

파이썬을 이용할 수도 있습니다. 도구는 데이터를 신중하게 검토할 수 있는 것이면 됩니다.

내 데이터가 예시와 다르게 나온다면

다른 지역의 데이터는 결측치의 위치와 범위가 다를 수 있습니다. 또 전체 기간 월별 데이터의 행 수가 실제 기간의 월 수보다 작을 수 있습니다.

6개의 속성 모두 관측치가 없는 경우에는 그 월이 행 자체로 완전히 누락되어 있기 때문입니다. 즉 빈칸조차 남아 있지 않은 결측이 있습니다. 이렇게 제공되는 데이터는 예상과 다르게 일부 기간 자체가 누락될 수도 있다는 점을 보여 줍니다.

누락된 기간의 데이터가 갖는 의미는 해결하려는 문제에 따라 다르지만, 데이터셋을 자세히 살펴보는 과정 자체가 중요합니다.

혼자 유별난 값은 어떻게 할까?

이상치 처리

이상치(outlier)는 정상 범위를 벗어난 값입니다.

데이터 수집 과정에서 오류가 발생할 수 있으므로 실제 데이터에는 이상치가 포함될 수 있습니다. 또한 오류가 아니지만 극단적인 값이 있을 수도 있습니다. 이상치 판단 기준에는 논리적 기준과 통계적 기준이 있습니다.

논리적 기준 — 현실에서 있을 수 없는 값

논리적 기준의 이상치는 현실 세계에서 발생할 수 없는 값을 말합니다.

진료 기록

최고 828
최저 83
맥박 75

「최고 혈압이 828이라고?」

사람의 최고 혈압이 828이 되는 일은 없습니다. 128을 828로 잘못 입력했을 가능성이 큽니다. 5살 아이의 진료 기록이라면 더욱 그렇습니다.

통계를 계산하지 않아도 알 수 있는 이상치입니다. 그 분야를 아는 사람의 상식이 판단 기준이 됩니다.

논리적 기준의 이상치 — 현실에서 있을 수 없는 값

통계적 기준 — 계산으로 찾아내기

속성 하나만 볼 때는 상자 그림(box plot)이나 히스토그램(histogram)으로 이상치를 찾습니다. 상관관계가 있는 두 속성을 함께 볼 때는 산점도(scatter plot)를 그려 전체 패턴에서 벗어난 점을 찾습니다.

상자 그림 (box plot)

상자 그림으로 시각화했을 때 개별 속성의 이상치는 수염 끝 바깥에 따로 찍힌 점으로 알 수 있습니다.

산점도 (scatter plot)

두 속성을 산점도로 시각화했을 때 상관관계가 있는 속성의 이상치는 전체 패턴과 동떨어진 값으로 알 수 있습니다.

통계적 기준으로 이상치를 찾는 두 가지 그림

상자 그림 읽는 법

이상치 최솟값 Q1 중앙값 Q3 최댓값 이상치 IQR = Q3 − Q1
  • Q1 (제1사분위수) — 데이터셋을 순서대로 나열했을 때 1/4 위치의 값
  • Q2 (중앙값) — 가운데 값
  • Q3 (제3사분위수) — 순서대로 나열했을 때 3/4 위치의 값
  • IQR (사분위수 범위) = Q3 − Q1
  • 아래쪽 이상치 기준 = Q1 − 1.5 × IQR
  • 위쪽 이상치 기준 = Q3 + 1.5 × IQR
  • 두 기준 바깥에 있는 값이 이상치

이상치 기준은 사분위수로 계산한 값이라 데이터에 실제로 없는 값일 수 있습니다. 이 기준 밖으로 나간 값을 이상치로 보자는 약속입니다. 그림의 「최솟값」·「최댓값」(수염 끝)은 이상치를 뺀 나머지 데이터에서 가장 작은 값 · 가장 큰 값이라 늘 실제 데이터 값이고, 이상치 기준과 같거나 그보다 안쪽에 놓입니다. 최소-최대 정규화에서 말하는 최솟값·최댓값은 이상치를 빼지 않은 데이터 전체의 값이라 뜻이 다릅니다.

그래서 이상치를 어떻게 할까?

모든 데이터에 같은 기준을 적용하지 않습니다. 이상치를 처리할지는 데이터셋의 속성을 보고 판단합니다. 분석 결과를 왜곡하는 이상치는 제거하거나 대체합니다. 대체할 때는 이상치를 뺀 데이터의 대푯값, 상한값, 하한값 가운데 데이터셋의 특성에 맞는 값을 고릅니다.

데이터의 손실과 왜곡 최소화

이상치를 제거할 때는 데이터의 손실을 고려해야 합니다. 무작정 이상치를 제거하기보다 해당 데이터가 분석 결과에 미치는 영향을 고려하여 접근하는 것이 중요합니다.

분석 목적에 맞는 처리

이상치를 처리하는 방법은 분석의 목적에 따라 달라집니다. 예를 들어 예측 모델링에서는 이상치가 모델의 성능에 큰 영향을 미칠 수 있으므로 이를 적절히 처리하는 것이 중요합니다.

이상치가 데이터의 오류로 인한 것인지, 자연스러운 변이인지를 판단해야 합니다. 올림픽 기록 데이터에서 세계 신기록은 통계적으로는 이상치로 보이지만 지워서는 안 되는 값입니다.

스스로 확인

체지방 속성에 9998(설계서에 「측정하지 않은 값」이라고 적힌 값)이 들어 있습니다. 이것은 논리적 기준의 이상치일까요, 결측치일까요? 메타 데이터를 확인했을 때와 확인하지 않았을 때 판단이 어떻게 달라질지 이야기해 봅시다.

직접 이상치를 처리해 볼까?

실습 2 — 오렌지 프로그램으로 전기 자동차 데이터셋의 이상치 처리하기

준비하기

캐글에서 「EVs」를 검색하면 관련 파일을 내려받을 수 있습니다. EVs - One Electric Vehicle Dataset - Smaller를 사용합니다.

kaggle.com/datasets/geoffnel/evs-one-electric-vehicle-dataset

단계 1 이상치 확인하기

(1) 개별 속성의 이상치 확인하기

File 위젯에서 전기 자동차 데이터셋을 불러오고, Feature Statistics 위젯을 연결합니다.

File

Feature Statistics

(2) 두 속성 간의 관계에서 이상치 확인하기

File 위젯에서 전기 자동차 데이터셋을 불러오고, Scatter Plot 위젯을 연결합니다. 축은 AccelSec(가속 시간)과 TopSpeed_KmH(최고 속도)로 둡니다.

File

Scatter Plot

단계 2 이상치 처리하기

(1) 개별 속성의 이상치 처리하기

  1. File에 Box Plot 위젯을 연결하여 AccelSec 속성의 사분위수를 확인해서 아래쪽 · 위쪽 이상치 기준을 구합니다.
  2. File에 Select Rows 위젯을 연결하여 그 범위를 벗어나는 데이터를 걸러 냅니다.
제1사분위수 제3사분위수 IQR 아래쪽 이상치 기준 위쪽 이상치 기준
5.1 9.0 3.9 0 14.85

직접 계산해 봅시다

IQR = Q3 − Q1 = 9.0 − 5.1 = 3.9
위쪽 이상치 기준 = Q3 + 1.5 × IQR = 9.0 + 1.5 × 3.9 = 14.85
아래쪽 이상치 기준 = Q1 − 1.5 × IQR = 5.1 − 5.85 = −0.75

그런데 표에는 아래쪽 이상치 기준이 0으로 적혀 있습니다. AccelSec은 가속에 걸리는 시간(초)이라 음수가 될 수 없기 때문입니다. 공식이 준 값을 그대로 쓰지 않고 속성의 의미에 맞게 조정한 것입니다.

Select Rows에서 AccelSec is between 0 and 14.85 로 조건을 설정합니다.

(2) 두 속성 간의 관계에서 이상치 처리하기

Scatter Plot 위젯에서 전체 패턴과 동떨어진 데이터 포인트를 이상치로 판단하고, 모여 있는 데이터 포인트들을 드래그하여 선택합니다.

드래그해서 선택하면 선택되지 않은 데이터 포인트를 제거할 수 있습니다. 즉 남길 것을 고르는 방식입니다.

단계 3 데이터 분석하기

개별 속성의 이상치 처리와 두 속성 간의 이상치 처리를 반복해서 데이터의 정확성을 향상시킬 수 있습니다. 단, 모든 이상치가 실제로 데이터 오류를 나타내는 것은 아니므로 데이터의 맥락을 이해하고 적합한 방법으로 처리해야 합니다.

이상치 처리 후 Data Table 위젯으로 결과 데이터를 검토하고, 다시 Scatter Plot 위젯으로 데이터를 확인하여 이상치 처리가 적절했는지 평가합니다.

오렌지의 Box Plot 화면 읽는 법
  1. 평균(짙은 파란색 세로선)과 표준 편차. 파란색 가로선이 표준 편차를 나타냅니다. (예: 7.396 ± 3.00)
  2. 제1사분위수 (예: 5.1)
  3. 제3사분위수 (예: 9.0). 파란색 상자 영역은 제1사분위수와 제3사분위수 사이의 값을 나타냅니다.
  4. 중앙값(노란색 수직선) (예: 7.3)

오렌지의 상자 그림은 평균과 표준 편차도 함께 그려 주므로, 앞에서 그린 기본형 상자 그림과 선의 개수가 다를 수 있습니다.

Scatter Plot에서 고른 것만 다음 위젯으로 보내려면

Scatter Plot 위젯에서 다른 위젯 (Data Table 등)을 연결하면 연결선 위에 Selected Data → Data라고 표시됩니다. 이는 선택된 데이터만 다음 위젯의 입력으로 사용된다는 뜻입니다.

해당 문구를 더블 클릭하면 무엇을 보낼지 변경할 수 있습니다.

단위가 다른 속성을 함께 비교할 수 있을까?

정규화

정규화(normalization)는 속성마다 제각각인 값의 범위를 0에서 1 사이의 같은 폭으로 맞추는 작업입니다.

값의 범위가 속성마다 다르면 해당 속성이 분석이나 모델링에 미치는 영향이 있어도 영향이 없는 것처럼 왜곡될 수 있습니다.

정규화 전 — 범위가 너무 다릅니다

「세계 행복 보고서 2023」 데이터셋에서 건강 기대 수명과 1인당 GDP는 값의 크기가 크게 다릅니다.

Country name
(국가명)
Healthy life expectancy
(건강 기대 수명)
Logged GDP per capita
(1인당 GDP)
Finland 71.15 10.792
Denmark 71.25 10.962
Iceland 72.05 10.896
Israel 72.697 10.639
… … …

정규화 전 — 건강 기대 수명과 1인당 GDP의 원래 값
출처: UN 세계 행복 보고서 2023 worldhappiness.report

1인당 GDP는 건강 기대 수명에 비해 값의 크기와 폭이 작아 나라 사이의 거리를 측정하는 분석에서는 결과에 영향을 미치지 않는 속성으로 취급될 수 있습니다.

왜 「영향이 없는 것처럼」 되어 버릴까?

많은 분석 방법은 두 데이터가 얼마나 떨어져 있는지를 측정해서 비슷한지 다른지를 판단합니다. 그런데 그 「떨어진 정도」를 원래 숫자 그대로 빼서 측정하면 문제가 생깁니다. 우리 반 데이터로 확인해 봅시다. 표의 값은 수업에서 원리를 확인하려고 지어낸 값입니다.

키 (cm) 하루 독서 시간 (시간)
학생 A 170 2
학생 B 175 0
차이 5 2

숫자만 보면 키 차이(5)가 독서 시간 차이(2)보다 2.5배 크게 보입니다. 그런데 우리 반 전체를 보니 키는 150~190cm(폭 40), 독서 시간은 0~4시간(폭 4)이었습니다. 이제 다시 봅시다.

키 차이 5는

전체 폭 40의 5 ÷ 40 = 0.125, 즉 12.5%

독서 시간 차이 2는

전체 폭 4의 2 ÷ 4 = 0.5, 즉 50%

뒤집혔습니다. 전체 폭을 기준으로 보면 독서 시간 차이가 키 차이보다 4배 큰데, 원래 숫자로는 키 쪽이 2.5배 커 보였습니다. cm와 시간이라는 서로 다른 자로 측정한 값을 그대로 빼서 비교했기 때문입니다.

정규화는 바로 이 「전체 폭에서 차지하는 비율」로 바꿔 주는 일입니다. 모든 속성을 같은 자(0~1)로 다시 측정하는 것이라고 생각하면 됩니다. 키도 독서 시간도 단위가 사라지고 비율만 남습니다.

정규화 후 — 둘 다 0과 1 사이로

최소-최대(min-max) 정규화를 하고 나면 건강 기대 수명과 1인당 GDP가 모두 0과 1 사이의 값이 됩니다.

Country name
(국가명)
Healthy life expectancy
(건강 기대 수명)
Logged GDP per capita
(1인당 GDP)
Finland 0.762 0.858
Denmark 0.766 0.886
Iceland 0.797 0.875
Israel 0.822 0.834
… … …

최소-최대 정규화 후 — 두 속성 모두 0과 1 사이
출처: UN 세계 행복 보고서 2023 worldhappiness.report

0.858은 어디서 나온 숫자일까?

핀란드의 1인당 GDP는 10.792였는데 정규화 후에는 0.858이 되었습니다. 직접 계산해서 확인해 봅시다. 137개 국가 전체에서 이 속성의 최솟값은 5.527, 최댓값은 11.66입니다. (뒤에 나올 실습 3의 Feature Statistics에서 직접 볼 수 있습니다.)

(10.792 − 5.527) ÷ (11.66 − 5.527) = 5.265 ÷ 6.133 = 0.858

표의 값과 정확히 같습니다. 이 값이 뜻하는 것은 「핀란드의 1인당 GDP는 전체 폭에서 아래로부터 85.8% 지점에 있다」입니다. 가장 낮은 나라가 0, 가장 높은 나라가 1이 되고 나머지는 그 사이에 놓입니다. 최솟값에서 최댓값까지의 거리를 1로 봤을 때의 위치이지, 137개국 중 상위 몇 %라는 순위(백분위)가 아님에 주의합니다. 덴마크(10.962), 아이슬란드(10.896), 이스라엘(10.639)도 같은 식으로 계산해 표와 맞는지 확인해 봅시다.

스스로 확인

정규화한 값이 0인 나라와 1인 나라는 각각 어떤 나라일까요? 모든 속성에 반드시 0과 1이 존재하는 이유도 말해 봅시다.

범위를 맞추는 방법은 하나뿐일까?

최소-최대 정규화 · 표준화

앞에서 쓴 방법은 둘 중 하나였습니다. 나머지 하나는 확률과통계를 배웠다면 이미 만난 식입니다.

범위를 맞추는 두 가지 방법

최소-최대(min-max) 정규화

바뀐 값 = (원래 값 − 가장 작은 값) ÷ (가장 큰 값 − 가장 작은 값)

모든 값을 특정 범위의 값으로 조정하는 기법으로, 일반적으로 0~1 범위의 값으로 변환합니다.

너무 크거나 작은 이상치가 포함되어 있으면 대부분의 값이 좁은 구간에 몰려 있게 되어 좋지 않은 결과를 낼 수 있습니다.

표준화(standardization)

z = (x − μ) ÷ σ

평균(μ)이 0, 표준 편차(σ)가 1이 되도록 값을 조정하는 기법입니다.

최소-최대 정규화와 다르게 상한과 하한이 정해져 있지 않으며, 정규 분포를 따르는 속성에 적합합니다.

최소-최대 정규화에 비해 표준화는 이상치에 영향을 덜 받으며, 대부분의 값들이 −3~3 사이에 위치하지만 매우 크거나 작은 값은 이 범위를 벗어날 수 있습니다.

확률과통계의 표준화와 같은 식입니다

확률과통계에서 정규분포를 표준정규분포로 바꾸는 방법을 배웠다면, 이미 표준화를 배운 것입니다. 두 식을 나란히 놓아 봅시다.

확률과통계에서

Z = (X − m) ÷ σ

평균 m, 표준 편차 σ인 정규분포를 평균 0, 표준 편차 1인 표준정규분포로 옮깁니다.

데이터 과학에서

z = (x − μ) ÷ σ

기호만 다를 뿐 완전히 같은 식입니다. 속성값을 평균 0, 표준 편차 1로 옮깁니다.

그래서 z 값이 뜻하는 것

표준화한 값은 「평균에서 표준 편차 몇 개만큼 떨어져 있는가」입니다. z = 2는 평균보다 표준 편차 2개만큼 위, z = −1은 평균보다 표준 편차 1개만큼 아래라는 뜻입니다. 키가 z = 1.5이고 성적이 z = 0.2라면, cm와 점수를 비교할 수 없어도 「이 학생은 키가 성적보다 두드러진다」고 말할 수 있습니다.

「대부분 −3~3」도 여기서 나옵니다

정규분포에서 평균 ±1σ 안에 약 68%, ±2σ 안에 약 95%, ±3σ 안에 약 99.7%가 들어옵니다. 표준화하면 σ가 1이 되므로 ±3σ가 곧 −3~3입니다. 1000명 중 3명 정도만 이 범위를 벗어난다는 뜻이라, z의 절댓값이 3을 넘으면 이상치를 의심해 볼 수 있습니다.

헷갈리기 쉬운 세 단어

정규화 · 표준화 · 정규분포는 이름이 비슷해서 자주 섞입니다. 한 번 정리하고 갑시다.

용어 무엇인가
정규화
normalization
값의 범위를 맞추는 작업. 데이터 과학에서 그냥 「정규화」라고 하면 보통 최소-최대 정규화(0~1)를 가리킨다. 확률과통계에는 나오지 않는다.
표준화
standardization
평균 0, 표준 편차 1로 맞추는 작업. 확률과통계의 표준화와 같은 것이다.
정규분포
normal distribution
종 모양으로 생긴 분포의 한 종류. 작업이 아니라 데이터가 퍼져 있는 모양을 가리키는 말이다.

흔한 오해

「정규화하면 데이터가 정규분포가 된다」 — 아닙니다. 정규화도 표준화도 모든 값에서 같은 수를 빼고 같은 수로 나누는 것뿐입니다. 위치와 간격만 바뀌고 분포의 모양은 그대로입니다. 한쪽으로 길게 늘어진 분포는 정규화해도 여전히 그 모양입니다.

사진을 확대하거나 축소해도 사진 속 사람의 생김새가 바뀌지 않는 것과 같습니다. 정규화는 값을 나타내는 기준만 바꿀 뿐 분포의 모양은 바꾸지 않습니다.

데이터 스케일링(Data Scaling)이라는 말도 있던데
  • 데이터의 범위를 조정하는 일반적인 용어로, 데이터 포인트를 특정 범위나 규모로 변환하는 것을 포함합니다.
  • 데이터 스케일링은 최소-최대 정규화, Z-점수 표준화, 로버스트 스케일링 등 다양한 기술을 포함합니다.
  • 정규화는 주로 데이터 포인트를 0과 1의 범위로 조정하는 최소-최대 정규화를 의미하는 경우가 많습니다. 그래서 범위를 조정하는 방법 전체를 가리킬 때는 데이터 스케일링이라는 말을 씁니다.
스스로 확인

어떤 속성에 혼자 아주 큰 값 하나가 섞여 있습니다. 최소-최대 정규화와 표준화 중 어느 쪽이 그 값 때문에 더 크게 망가질까요? 그 이유는 무엇일까요?

정규화는 항상 해야 할까?

하지 않는 것이 나은 경우도 있습니다.

정규화를 하는 이유

알고리즘 성능 향상

많은 기계학습 알고리즘들이 속성 간의 크기 차이가 클 경우 성능이 저하될 수 있습니다.

특정 속성의 과대 영향 방지

데이터의 속성 중 값의 범위가 큰 속성이 모델에 더 큰 영향을 미칠 수 있습니다.

정규화를 하지 않아도 되는 경우

모든 상황에서 정규화가 필수적인 것은 아닙니다. 몇 가지 경우에는 정규화를 하지 않는 것이 더 적합할 수 있습니다.

의사결정트리 기반 모델

의사결정트리와 이를 기반으로 한 모델은 속성값의 크기에 영향을 받지 않습니다. 데이터의 분할을 기반으로 작동하며, 속성의 절대 크기가 모델의 학습이나 예측에 영향을 미치지 않습니다.

데이터의 본질적 특성 유지 필요

데이터가 특정 범위 내에서 의미를 가지는 경우 (예: pH 값, 확률값 등) 정규화를 적용하면 데이터의 본질적 의미가 변형될 수 있습니다.

선형 회귀

선형 회귀는 속성마다 곱하는 수를 따로 정하므로, 값의 범위가 큰 속성에는 작은 수가 곱해져 정규화하지 않아도 예측 결과가 크게 달라지지 않습니다. 범위 차이가 곧바로 문제가 되는 것은 데이터 사이의 거리를 측정하는 방법입니다.

순서가 중요합니다

정규화 전에 데이터에 이상치가 없는지 확인해야 합니다. 이상치가 포함된 상태에서 정규화를 진행하면 대부분의 데이터가 좁은 범위에 몰리게 되어 분석에 부정적인 영향을 미칩니다.

또 정규화 과정에서 데이터의 원래 의미나 속성값 크기에 대한 감각을 잃지 않도록 주의합니다. 예를 들어 경제 데이터의 경우 원래 값의 경제적 의미가 중요할 수 있으므로, 무작정 정규화하는 것이 아닌 필요에 따라 선택적으로 적용해야 합니다.

스스로 확인

우리 반 데이터에 키(cm)와 하루 독서 시간(시간)이 있습니다. 두 속성을 함께 쓰는 분석에서 정규화를 하지 않으면 어느 쪽이 더 중요한 것처럼 보일까요? 그 이유는 무엇일까요?

직접 정규화해 볼까?

실습 3 — 오렌지 프로그램으로 세계 행복 보고서 데이터셋 정규화하기

캐글에서 내려받은 세계 행복 보고서 2023 데이터셋을 사용합니다.

단계 1 속성값 범위 확인하기

File 위젯에서 세계 행복 보고서 데이터셋 (WHR2023.csv)을 불러오고, Data Table과 Feature Statistics 위젯을 연결하여 각 속성값 범위의 차이를 확인합니다.

이 단계에서 만들 워크플로

File

WHR2023.csv

Feature Statistics

Min · Max 확인

Data Table

값 직접 보기

속성 Min (최솟값) Max (최댓값)
Logged GDP per capita 5.527 11.66
Social support 0.341 0.983

두 속성의 범위가 서로 다릅니다. 거리를 측정하는 분석에 쓸 때 정규화가 필요한 이유입니다.

단계 2 데이터 정규화하기

File에 Preprocess 위젯을 연결하고 Normalize Features를 선택합니다. Normalize to interval [0, 1]을 선택하면 속성값들이 0과 1 사이의 범위로 정규화됩니다.

Preprocess 위젯을 열면 기본 설정이 Normalize Features로 설정되어 있습니다. Impute Missing Values 등 다른 전처리를 오른쪽으로 드래그해서 추가하거나, 불필요한 전처리는 삭제할 수 있습니다. 여러 개의 전처리를 적용할 경우 드래그해서 순서를 조정할 수도 있습니다.

단계 3 데이터 분석하기

Preprocess에 Feature Statistics 위젯을 연결하면 각 속성의 Min(최솟값)과 Max(최댓값)이 0과 1로 조정된 것을 확인할 수 있습니다.

속성 Min (정규화 후) Max (정규화 후)
Logged GDP per capita 0.00 1.000
Social support 0.00 1.000

두 가지 속성의 범위가 0~1로 변경되었습니다. 이는 모델링 또는 다른 데이터 분석 작업 전에 중요한 단계입니다.

오렌지 3의 자동 정규화 기능 — 모르면 헷갈립니다
  • 신경망(Neural Network), 서포트 벡터 머신(SVM) 등 속성값의 크기가 크게 영향을 미치는 기계학습 모델에 대해서는 데이터 스케일링이 자동으로 적용됩니다.
  • 자동 적용을 막기 위해서는 데이터 전처리 도구인 Preprocess 위젯을 모델 위젯의 Preprocessor 입력에 연결하고 전처리를 모두 삭제하거나 원하는 전처리만 설정합니다.

내가 정규화를 하지 않았는데 결과가 정규화된 것처럼 나온다면 이 기능 때문일 수 있습니다.

핵심 정리

데이터 전처리

분석에 적합하게 가공하기

  • 결측치 처리 · 이상치 처리 · 정규화
  • 2022년의 한 조사에서 데이터 과학자들은 시간의 약 37.75%를 데이터 준비에 쓴다고 답했다
  • 목적과 데이터가 다르므로 절대적인 표준 방법은 없다

결측치

missing value

  • 특정 속성값이 누락된 것 — 무응답 · 기기 오류
  • 제거법 — 쉽지만 데이터 손실
  • 대체법 — 남기지만 결과가 왜곡될 수 있음

이상치

outlier

  • 논리적 기준 — 현실에서 있을 수 없는 값(혈압 828)
  • 통계적 기준 — 상자 그림(개별) · 산점도(두 속성)
  • IQR = Q3−Q1, 이상치 기준 = Q1−1.5×IQR · Q3+1.5×IQR

정규화

normalization

  • 속성값의 범위를 일치시켜 왜곡을 막는다
  • 범위를 맞추는 두 방법 — 최소-최대 정규화(0~1) · 표준화(평균 0, 표준 편차 1)
  • 의사결정트리 기반 모델 · pH 같은 값에는 필요 없을 수 있음
  • 이상치를 먼저 처리한 뒤 정규화해야 값이 좁은 구간에 몰리지 않는다

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

결측치 제거법의 단점으로 알맞은 것은?

Q2

5살 아이의 진료 기록에 최고 혈압 828이 적혀 있습니다. 이것은 어떤 기준의 이상치인가?

Q3

어떤 속성의 Q1이 5.1, Q3가 9.0일 때, 상자 그림에서 이상치를 구분하는 위쪽 이상치 기준은?

Q4

건강 기대 수명(약 71)과 1인당 GDP(약 10)로 나라 사이의 거리를 측정하는 방법으로 분석하려고 합니다. 정규화를 하지 않으면 생기는 문제는?

Q5

최소-최대 정규화에 대한 설명으로 옳지 않은 것은?