Forecasting Methods(수요 예측 방법) : 2


Forecasting Methods(수요 예측 방법) : 2



    앞서 수요예측과 수요관리(Forecasting & Demand Management)에 대해 간략히 설명드린 바 있습니다. 본 절에서는 앞서 설명드리지 못한 수요 예측 기법들 중 MRP/ERP 팩키지에서 기본으로 제공하고 있는 수요 예측 기법들을 조금 더 자세히 설명드리도록 하겠습니다. (참고 : DRP 시스템에 대해 앞서 설명드린 부분을 보시면 알겠지만, DRP 시스템에서 수요예측은 매우 중요합니다. 그래서, 조금 더 설명드릴 수 있는 기회를 만들기로 했습니다.)


     Forecasting Methods(수요 예측 기법) 

      본 절에서는 몇 가지 수요 예측 방법에 대해 설명드리도록 하겠습니다. 본 절에서는 이동평균법(MA, Moving Average), 지수평활법(Exponential Smoothing)을 설명드린 후에 대표적인 시계열 분석 모델인 ARIMA 모형에 대해 소개드리도록 하겠습니다.


     이동 평균법(MA, Moving Average) 

      이동 평균법(Moving Average)은 사실 Least-Square Analysis(최소 제곱법으로 번역하던가요?)와 동일합니다. 앞서 MRP 부분에서 이동 평균법을 설명드릴 때에는 constant process인 경우의 이동 평균법만을 설명드렸는데, 이동 평균법은 대개 constant process 또는 선형 경향(linear trend)을 보여주는 시계열 데이터의 모델링에 사용되는 방법입니다. 사실 이동 평균으로 얻은 데이터를 다시 이동 편균 방법으로 분석하게 되면, 차수를 하나씩 올릴 수 있습니다. 이렇게 한 차수를 올리면 선형 경향의 시계열 데이터를 분석할 수 있는데, 이를 double moving average 라고 합니다. 

       
      Moving Average

      위의 그림의 하단에는 각 시계열 데이터들을 모델링한 식이 있습니다. 왼쪽의 것은 constant process를 나타낸 것이고, 오른쪽의 것은 linear trend를 나타낸 것입니다. 각 프로세스를 모형화한 결과는 점선으로 그렸습니다. 실제 데이터와 점선으로 모형화된 것과의 차이를 white noise라고 합니다. (잘 모형화한 경우에는, white noise가 평균은 0이고, 분산은 작은 정규분포(normal distribution)을 따릅니다.) Constant process의 moving average는 사실 근접한 N기간의 평균을 구해서, 다음 기간의 예측치로 쓰겠다는 것입니다. 예를 들어 다음과 같은 실적 데이터가 있다고 가정하지요. 

      기간12345678910
      1012101081214???

      평균을 낼 N 기간의 결정은 매우 중요합니다. 이 N 값은 여러분이 모델을 사용할 때 설정하는 매개변수(parameter) 입니다. N을 적게 하면, 경향을 빠르게 쫓아가지만 오차의 분산이 커질 우려가 있고, N을 크게 하면, 경향을 쫓아가는 속도는 늦어지지만 오차의 분산은 (통계적으로) 작아 지게 됩니다. 만일 N을 2로 했을 때, 위의 기간 8, 9, 10의 예측치는 어떻게 될까요? 결과는 다음의 표와 같습니다. 

      기간12345678910
      1012101081214(12+14)/2=13(14+13)/2=13.5(13.5+13)/2 = 13.25


      만일 N을 4로 하면 어떤 결과가 나올까요? 

      기간12345678910
      1012101081214(10+8+12+14)/4=11(8+12+14+11)/4=11.25(12+14+11+11.25)/4 = 12.06

      N의 차이에 따라, 어떤 차이가 나는지 이제 눈으로 직접 확인하실 수 있지요? 사실, 기간 7 이전의 데이터를 유심히 보면, 10, 8, 12, 14와 같이 constant process가 아닌 어떤 증가 경향이 있을 수 있다는 것을 알 수 있습니다. N을 작게 하면, 이런 증가 경향을 빠르게 포착해서 예측치를 수정해나가지만, N을 크게 하면, 이런 증가 경향을 빠르게 포착하지 못한다는 사실을 알 수 있습니다. 이동 평균법에 대해서도 설명을 드릴 것은 많지만, 이동 평균법의 계산 방법 정도는 이제 확실히 이해하셨으리라 믿고 이동 평균법의 설명을 마치도록 하겠습니다. 

     지수 평활법(Exponential Smoothing) 

      이동 평균법을 보시면, N의 크기에 따라 사용되지도 않는 과거 데이터가 많음을 알 수 있습니다. 혹시, 이런 데이터가 아까우십니까? 지수 평활법은 이 아까운 데이터를 하나도 빠짐없이 활용할 수 있도록 도와줍니다. ^_^ 지수 평활법도 이동 평균법과 마찬가지로 constant process나 linear trend를 보이는 시계열 데이터의 예측에 많이 사용됩니다. 물론, 보다 차수가 높은 형태의 trend를 보이는 데이터에도 적용할 수 있습니다. (High Order Smoothing에 대해서는 설명을 하지 않도록 하겠습니다.) 지수 평활법과 이동 평균법의 근본적인 차이는 과거 데이터를 활용하는 정도와 , 과거 데이터에 부여하는 가중치의 정도입니다. 즉, 지수 평활법은 (매개변수를 조정하기 나름이지만) 가까운 과거의 데이터에 대해서는 가중치를 크게 주고, 현재로부터 먼 과거의 데이터에 대해서는 가중치를 적게주는 방법입니다. 

       
      지수 평활법 모형


      위의 식은 미래의 예측치는 과거의 데이터에 대하여 가중치를 다르게 준 것을 평균한 것임을 의미합니다. 이 때 중요한 것은 가중치의 합이 1이어야 한다는 것인데, 위에서 지수(alpha) 값을 0에서 1사이의 값으로 부여하면 가중치의 합은 항상 1이 됩니다. 지수 alpha의 값을 크게 주면, 가까운 과거에 큰 가중치를 부여한다는 의미이며, alpha의 값을 작게 주면 먼 과거의 데이터에도 가중치를 많이 준다는 의미가 됩니다. 예제를 통해서, 지수 평활법을 살펴보도록 하지요. 

      기간12345678910
      1012101081214???


      앞에서 Moving Average를 사용한 경우와 같은 데이터가 있습니다. alpha의 값을 0.4로 준다면, 어떤 결과가 나올까요? 기간 8의 값만 계산하도록 하겠습니다(^_^, Excel로 한번 계산해보세요.) 

      X8 = 0.4*X7 + 0.4*(1-0.4)*X6 + 0.4*(1-0.4)*(1-0.4)*X5 + ... = 11.57 

      만일, alpha의 값을 0.7로 준다면, 어떤 결과가 나올까요? 기간 8의 값만 계산하도록 하겠습니다(^_^, Excel로 한번 계산해보세요.) 
      X8 = 0.7*X7 + 0.7*(1-0.7)*X6 + 0.7*(1-0.7)*(1-0.7)*X5 + ... = 13.57 

      이전에 설명드린 바와 같이, 기간 4,5,6,7을 보시면 10, 8, 12, 14와 같이 증가경향을 볼 수 있습니다. alpha의 값을 크게 설정하면 이런 경향을 빠르게 포착할 수 있고, alpha의 값을 작게 설정하면 이런 경향은 늦게 포착되게 됩니다. 재미있지요? 이동평균법이나 지수평활법이나 최근의 경향을 빠르게 포착한다고 해서 좋은 것은 아닙니다. 에러에 민감하게 반응한 단점도 있기 때문이지요. 수학적으로는 지수평활법의 alpha와 이동평균법의 N간의 관계가 증명된 것이 있습니다. 증명이나 설명은 생략하기로 하고요, alpha = 2 / (N+1) 의 관계가 성립하면 지수평활법이나 이동평균법이나 거의 같은 예측 결과를 보여줍니다. 지수 평활법을 사용한다면 여러분이 이 alpha의 값을 정해주셔야 합니다.


     ARIMA (Autoregressive Integrated Moving Average) 

      ARIMA는 Box & Jenkins 모형이라고도 합니다. ARIMA 모형은 AR(Auto Regressive) 부분과 MA(Moving Average) 부분으로 구성되어 있으며, 변수 값의 차이를 따로 모형화할 수 있는 Integrated 부분이 있습니다. 본 절에서 이 모형을 설명한다는 것은 아마도 이 모형의 복잡도를 생각할 때에 거의 불가능하다고 생각됩니다. 관심이 있으신 분들은 수요 예측에 관한 서적을 구해보시면 되겠습니다. 참고로, ARIMA 모델이나 ARMA 모델에 대한 서적을 소개하는 것으로 마치겠습니다. 저는 대학원 재학중에 박진우 교수님과 함주호 교수님께 각각 수요 예측 과목의 강의를 들었었는데, 이 때 사용되었던 교재들입니다. 

      • Time Series Analysis (Forecasting and Control), by Box and Jenkins
      • Forecasting and Time Series Analysis, by D.C. Montgomery et al., McGraw-Hill
      • Time Series and System Analysis with Applications, by S.M. Pandit et al., John Wiley & Sons

      ARIMA 모델이나 ARMA 모델은 정말로 다양한 형태의 시계열 데이터를 귀신같이 모형화할 수 있습니다. 문제는 직관적으로 이해하기 힘들고, 분석에 많은 시간을 투자해야한다는 것이지요. 그러나, 어떤 데이터를 구하기는 했는데, 이런 모형으로도 모델링이 안되고, 저런 모형으로도 모델링이 안된다 싶으면 ARIMA, ARMA를 기억해주세요. ARIMA 모형은 주기성을 비롯해서, 높은 차수의 경향성에 대한 분석도 가능할 뿐만 아니라, 아무런 경향성을 찾을 수 없는 random 한 경향(?) 이라는 것 조차도 밝힐 수 있습니다.


     Winter's Model 

      마지막으로 계절적 변동을 비롯하여 시계열 데이터의 주기성까지를 모형화할 수 있는 Winter's Model을 소개하도록 하겠습니다. 우리는 주위에서 주기성을 갖는 수요의 형태를 많이 발견할 수 있습니다. 예를 들어, 국내에서 1-2위 규모를 자랑하는 모 출판사의 경우를 들기로 하겠습니다. 이 출판사에는 월말과 월초에 항상 일이 많다가 그 사이기간에는 일이 많지 않다고 합니다. 왜냐면, 각종 월간지의 주문이 몰리기 때문이지요. 뿐만 아니라, 1-2월과 7-8월에는 또 주문이 아주 많다고 합니다. 각종 학습지들이 개학을 맞아서 몰리기 때문이지요. 또, 년말이면 각종 다이어리 등의 제작 주문이 몰린다고 합니다. 이상의 상황 서술을 통해서 얼마나 많은 주기들이 겹쳐있는 상황인지 짐작하실 수 있을 것입니다. 이런 주기성을 수요 예측에 반영하는 방법에는 여러가지가 있습니다. 예를 들어, AR(I)MA 모형, 이동평균법 등은 이런 주기성을 반영할 수 있습니다. 그러나, 아주 잘 알려져 있고, AR(I)MA 보다 간단한 형태인 Winter's Model이라는 것이 있습니다. 기본적인 형태의 Winter's Model은 한 가지의 주기밖에는 표현하지 못하지만, 여러 가지 변형을 통해서 여러 종류의 주기를 표현하도록 할 수도 있다고 합니다. (주기의 종류가 늘어나면 AR(I)MA가 좋다고 하고요, 주기가 1 종류인 경우에는 Winter's Model이 좋다고 합니다.) Winter's Model을 수학적으로 설명하는 것도 시간과 노력이 많이 들기에 모델을 수립하는 과정만 설명드리도록 하겠습니다. 

       
      간단한 Winter's Model 
      1. 먼저, Permanent part라고 불리는 값을 구합니다.
      2. 경향을 나타내는 trend component를 구합니다.
      3. 다음 주기성(계절성)을 나타내는 component를 구합니다.
      4. 과거의 데이터를 이용해서 수요를 예측합니다.

     MRP/ERP 팩키지들이 지원하는 수요 예측 기법들 

      여러분이 별도의 코딩 작업 없이 바로 사용할 수 있는 형태의 수요 예측 기법은 이동평균법(Moving Average), 지수평활법(Exponential Smoothing)입니다. 그리고, 팩키지에 따라서, Winter's Model을 지원합니다. 만일 이러한 형태가 아닌 다른 수요 예측 모형을 만들고 싶고, 이를 사용하고 싶다면 여러분은 코딩 작업을 하셔야 할 것입니다. 상용 ERP 팩키지들은 대개 customization 기능을 제공합니다. 필요에 따라서는 여러분이 직접 Interface 화면도 만들고, 실행시킬 프로그램도 작성해서 이런 수요 예측 기능을 구현하실 수 있습니다.


     DRP와 수요 예측 

      여기까지 정리하다 보니, DRP와 수요 예측의 관계에 대해 보다 자세히 설명할 공간(?)이 부족하군요. 게다가 오늘 제가 홈페이지 정리에 할당하기로 한 시간도 다 된 것 같습니다. DRP와 수요 예측과의 관계에 대해서는 내일(1월 22일) 중에 정리해서 올리도록 하겠습니다. ^_^

    1998년 1월 21일에 최종 갱신되었습니다.