머신러닝

머신러닝에서의 분산(Variance)과 표준편차(Standard Deviation) 이해

move84 2025. 4. 16. 07:10
반응형

머신러닝 모델을 구축하고 평가할 때 데이터의 분포를 이해하는 것은 매우 중요합니다. 분산과 표준편차는 데이터가 평균으로부터 얼마나 흩어져 있는지를 나타내는 기본적인 통계적 척도입니다. 이 글에서는 분산과 표준편차의 정의, 중요성, 그리고 머신러닝에서 어떻게 활용되는지를 자세히 설명합니다.


📊 분산(Variance)이란?
분산은 데이터가 평균으로부터 얼마나 멀리 떨어져 있는지를 제곱한 값들의 평균입니다. 즉, 데이터의 흩어진 정도를 나타내는 지표입니다. 분산이 크다는 것은 데이터가 평균에서 멀리 떨어져 분포하고 있다는 의미이며, 분산이 작다는 것은 데이터가 평균 주변에 모여 있다는 의미입니다.

분산을 계산하는 방법은 다음과 같습니다.

  1. 각 데이터 포인트에서 평균을 뺍니다.
  2. 결과를 제곱합니다.
  3. 모든 제곱된 값을 더합니다.
  4. 결과를 데이터 포인트의 개수로 나눕니다(모집단의 경우) 또는 (데이터 포인트의 개수 - 1)로 나눕니다(표본의 경우).

수식으로 표현하면 다음과 같습니다.

  • 모집단 분산(σ^2) = Σ(xi - μ)^2 / N
  • 표본 분산(s^2) = Σ(xi - x̄)^2 / (n - 1)

여기서 xi는 각 데이터 포인트, μ는 모집단 평균, x̄는 표본 평균, N은 모집단 크기, n은 표본 크기를 의미합니다.


📏 표준편차(Standard Deviation)란?
표준편차는 분산의 제곱근입니다. 분산은 제곱된 값을 사용하기 때문에 원래 데이터의 단위와 다를 수 있습니다. 표준편차는 원래 데이터와 동일한 단위를 가지므로 데이터의 흩어진 정도를 더 직관적으로 이해할 수 있도록 도와줍니다.

표준편차를 계산하는 방법은 분산을 계산한 후 제곱근을 취하면 됩니다.

수식으로 표현하면 다음과 같습니다.

  • 모집단 표준편차(σ) = √(σ^2)
  • 표본 표준편차(s) = √(s^2)

표준편차가 크다는 것은 데이터가 평균에서 넓게 분포하고 있다는 의미이며, 표준편차가 작다는 것은 데이터가 평균 주변에 밀집되어 있다는 의미입니다.


💡 분산과 표준편차의 중요성
분산과 표준편차는 데이터의 특성을 파악하고 이해하는 데 매우 중요한 역할을 합니다. 머신러닝에서는 다음과 같은 이유로 분산과 표준편차를 중요하게 생각합니다.

  1. 데이터 분포 이해: 분산과 표준편차를 통해 데이터가 어떻게 분포되어 있는지 파악할 수 있습니다. 이는 데이터 전처리, 특성 선택, 모델 선택 등 다양한 단계에서 중요한 정보를 제공합니다.
  2. 이상치 탐지: 분산과 표준편차를 활용하여 이상치를 탐지할 수 있습니다. 이상치는 데이터의 일반적인 패턴에서 벗어난 값으로, 모델의 성능에 부정적인 영향을 미칠 수 있습니다.
  3. 특성 스케일링: 분산과 표준편차는 특성 스케일링에 사용됩니다. 특성 스케일링은 특성들의 값 범위를 비슷하게 만들어 모델의 학습 속도를 높이고 성능을 개선하는 데 도움을 줍니다. 예를 들어, StandardScaler는 각 특성의 값을 평균이 0, 표준편차가 1이 되도록 변환합니다.
  4. 모델 평가: 분산과 표준편차는 모델의 예측 결과가 얼마나 안정적인지를 평가하는 데 사용될 수 있습니다. 예를 들어, 여러 번 모델을 학습시켜 예측 결과를 얻은 후 예측 값들의 분산이나 표준편차를 계산하여 모델의 안정성을 평가할 수 있습니다.

💻 Python을 이용한 분산과 표준편차 계산 예제
Python의 NumPy 라이브러리를 사용하면 분산과 표준편차를 쉽게 계산할 수 있습니다.

import numpy as np

data = np.array([1, 2, 3, 4, 5])

# 분산 계산
variance = np.var(data)
print("분산:", variance)

# 표준편차 계산
std_dev = np.std(data)
print("표준편차:", std_dev)

# 표본 분산 계산 (ddof=1)
sample_variance = np.var(data, ddof=1)
print("표본 분산:", sample_variance)

# 표본 표준편차 계산 (ddof=1)
sample_std_dev = np.std(data, ddof=1)
print("표본 표준편차:", sample_std_dev)

위 코드는 NumPy를 사용하여 데이터의 분산과 표준편차를 계산하는 예제입니다. np.var() 함수는 분산을 계산하고, np.std() 함수는 표준편차를 계산합니다. ddof=1은 표본 분산과 표본 표준편차를 계산하기 위해 사용됩니다.


📚 분산과 표준편차 활용 예시

예를 들어, 어떤 쇼핑몰에서 고객들의 구매 금액 데이터를 분석한다고 가정해 보겠습니다.

  1. 데이터 수집: 고객들의 구매 금액 데이터를 수집합니다.
  2. 분산 및 표준편차 계산: 수집된 데이터의 분산과 표준편차를 계산합니다.
  3. 분석 및 활용:
    • 표준편차가 높다면, 구매 금액이 고객마다 크게 다르다는 것을 의미합니다. 이 경우, 고객 세분화를 통해 맞춤형 마케팅 전략을 수립할 수 있습니다. 예를 들어, 고액 구매 고객에게는 프리미엄 서비스를 제공하고, 저액 구매 고객에게는 할인 쿠폰을 제공하는 등의 전략을 세울 수 있습니다.
    • 표준편차가 낮다면, 구매 금액이 고객들 사이에서 비교적 유사하다는 것을 의미합니다. 이 경우, 대중적인 마케팅 전략을 통해 매출을 증대시킬 수 있습니다.

또 다른 예로, 머신러닝 모델의 성능을 평가할 때 교차 검증을 수행하여 여러 번 모델을 학습시키고 예측 결과를 얻습니다. 이 예측 결과들의 표준편차를 계산하여 모델의 안정성을 평가할 수 있습니다. 표준편차가 낮다면 모델이 안정적으로 예측을 수행한다고 판단할 수 있으며, 표준편차가 높다면 모델의 예측 결과가 불안정하다고 판단할 수 있습니다.


📌 요약

분산과 표준편차는 데이터의 흩어진 정도를 나타내는 기본적인 통계적 척도이며, 머신러닝에서 데이터 분포 이해, 이상치 탐지, 특성 스케일링, 모델 평가 등 다양한 목적으로 활용됩니다. Python의 NumPy 라이브러리를 사용하면 분산과 표준편차를 쉽게 계산할 수 있습니다.


🔑 핵심 용어

  • 분산 (Variance): 데이터가 평균으로부터 흩어진 정도의 제곱값
  • 표준편차 (Standard Deviation): 분산의 제곱근으로, 데이터가 평균으로부터 흩어진 정도
  • 모집단 (Population): 연구 대상이 되는 전체 집단
  • 표본 (Sample): 모집단에서 선택된 일부 데이터
  • 이상치 (Outlier): 데이터의 일반적인 패턴에서 벗어난 값
  • 특성 스케일링 (Feature Scaling): 특성들의 값 범위를 비슷하게 만드는 과정
반응형