move84

기계 학습 기본 - 지수 평활법 본문

머신러닝

기계 학습 기본 - 지수 평활법

move84 2025. 3. 3. 07:35
반응형

📈 지수 평활법 (Exponential Smoothing)은 시계열 데이터 (Time Series Data)를 분석하고 미래 값을 예측하는 데 사용되는 강력한 기법이다. 시계열 데이터는 시간의 흐름에 따라 수집된 데이터의 시퀀스를 말하며, 주식 가격, 날씨 데이터, 판매량 등 다양한 분야에서 나타난다. 지수 평활법은 과거 데이터에 가중치를 부여하여 최근 데이터에 더 큰 영향을 주도록 설계되어 있다. 이는 데이터의 트렌드와 계절성을 파악하고, 예측의 정확도를 높이는 데 기여한다.


지수 평활법의 기본 원리

지수 평활법은 과거 관측값들의 가중 평균을 사용하여 미래 값을 예측한다. 이때, 가장 최근의 관측값에 더 높은 가중치를 부여하는 것이 핵심이다. 이러한 가중치는 평활 상수 (Smoothing Constant)라는 파라미터에 의해 결정된다. 평활 상수는 0과 1 사이의 값을 가지며, 값이 클수록 최근 데이터에 더 큰 비중을 둔다. 지수 평활법은 단순 지수 평활법 (Simple Exponential Smoothing), 이중 지수 평활법 (Double Exponential Smoothing), 삼중 지수 평활법 (Triple Exponential Smoothing)의 세 가지 주요 유형으로 나뉜다. 각 유형은 데이터의 트렌드와 계절성을 고려하는 방식에 차이가 있다.


💡 단순 지수 평활법 (Simple Exponential Smoothing)

단순 지수 평활법은 트렌드나 계절성이 없는 시계열 데이터에 적합하다. 과거 모든 데이터를 사용하지만, 가장 최근의 데이터에 가장 큰 가중치를 부여한다. 예측값은 다음과 같은 수식으로 계산된다.

예측값(t+1) = α * 관측값(t) + (1 - α) * 예측값(t)

여기서, α는 평활 상수(0 < α < 1)이며, t는 시간 단계를 나타낸다. α 값이 클수록 최근 데이터에 더 큰 영향을 받으며, 시계열의 변동에 빠르게 반응한다.

예시:

import pandas as pd

# 샘플 시계열 데이터
data = [10, 12, 15, 13, 17, 19, 21, 20, 23, 25]
series = pd.Series(data)

# 평활 상수 설정
alpha = 0.3

# 단순 지수 평활법 적용
def simple_exponential_smoothing(series, alpha):
    smoothed = [series[0]] # 첫 번째 값은 초기값으로 사용
    for i in range(1, len(series)):
        smoothed_value = alpha * series[i] + (1 - alpha) * smoothed[i-1]
        smoothed.append(smoothed_value)
    return smoothed

smoothed_values = simple_exponential_smoothing(series, alpha)

# 결과 출력
print("원시 데이터:", series.values)
print("평활된 데이터:", smoothed_values)

📐 이중 지수 평활법 (Double Exponential Smoothing)

이중 지수 평활법은 트렌드가 있는 시계열 데이터에 사용된다. 트렌드는 데이터가 시간에 따라 증가하거나 감소하는 경향을 의미한다. 이중 지수 평활법은 레벨 (Level)과 트렌드 (Trend)의 두 가지 구성 요소를 고려한다. 레벨은 시계열의 현재 값을 나타내고, 트렌드는 레벨의 변화율을 나타낸다. 이중 지수 평활법은 두 개의 평활 상수, α와 β를 사용한다. α는 레벨을 평활하는 데 사용되고, β는 트렌드를 평활하는 데 사용된다. 예측값은 다음과 같은 수식으로 계산된다.

레벨(t) = α * 관측값(t) + (1 - α) * (레벨(t-1) + 트렌드(t-1))
트렌드(t) = β * (레벨(t) - 레벨(t-1)) + (1 - β) * 트렌드(t-1)
예측값(t+h) = 레벨(t) + h * 트렌드(t)

여기서, h는 예측 기간을 나타낸다.


🗓️ 삼중 지수 평활법 (Triple Exponential Smoothing)

삼중 지수 평활법은 트렌드와 계절성이 모두 존재하는 시계열 데이터에 적합하다. 계절성은 데이터가 특정 기간 (예: 분기별, 월별)마다 반복되는 패턴을 의미한다. 삼중 지수 평활법은 레벨, 트렌드, 계절성 (Seasonality)의 세 가지 구성 요소를 고려한다. 삼중 지수 평활법은 세 개의 평활 상수, α, β, γ를 사용한다. α는 레벨을, β는 트렌드를, γ는 계절성을 평활하는 데 사용된다. 예측값은 다음과 같은 수식으로 계산된다 (Addictive Model):

레벨(t) = α * (관측값(t) - 계절성(t-L)) + (1 - α) * (레벨(t-1) + 트렌드(t-1))
트렌드(t) = β * (레벨(t) - 레벨(t-1)) + (1 - β) * 트렌드(t-1)
계절성(t) = γ * (관측값(t) - 레벨(t)) + (1 - γ) * 계절성(t-L)
예측값(t+h) = 레벨(t) + h * 트렌드(t) + 계절성(t + h - L)

여기서, L은 계절성의 주기 (예: 월별 데이터의 경우 L=12)이고, h는 예측 기간이다. Multiplicative Model도 존재한다.


🎯 지수 평활법의 장점과 단점

장점:

  • 간단성: 구현이 쉽고, 이해하기 쉬운 알고리즘이다.
  • 과거 데이터 활용: 과거 데이터를 효과적으로 활용하여 예측을 수행한다.
  • 적응성: 데이터 변화에 빠르게 적응할 수 있다.
  • 계산 효율성: 계산량이 적어 대용량 데이터에도 적용 가능하다.

단점:

  • 파라미터 설정의 어려움: 평활 상수를 적절하게 설정하는 것이 중요하며, 최적의 값을 찾기 위한 튜닝이 필요하다.
  • 과거 데이터 의존성: 과거 데이터의 패턴에 크게 의존하므로, 데이터의 변화가 심한 경우에는 예측 정확도가 낮아질 수 있다.
  • 설명력 부족: 다른 기계 학습 모델에 비해 예측 결과에 대한 설명력이 부족할 수 있다.

📌 핵심 용어 정리

  • 지수 평활법 (Exponential Smoothing): 시계열 데이터의 미래 값을 예측하는 기법.
  • 시계열 데이터 (Time Series Data): 시간의 흐름에 따라 수집된 데이터.
  • 평활 상수 (Smoothing Constant): 과거 데이터에 부여되는 가중치를 결정하는 파라미터 (α, β, γ).
  • 트렌드 (Trend): 데이터의 장기적인 증가 또는 감소 경향.
  • 계절성 (Seasonality): 데이터가 특정 기간마다 반복되는 패턴.
  • 레벨 (Level): 시계열의 현재 값.

🔍 관련 키워드

  • 시계열 분석
  • 예측 모델
  • 데이터 평활
  • 시계열 예측
반응형