본문 바로가기
스터디 열기

예측의 기초, 이동평균과 추세와 계절

1. 예측의 기초, 이동평균과 추세와 계절

5장에서 우리 쇼핑몰의 매출이 연말에 오른다는 것을 확인했습니다. 그 사실을 아는 순간 곧바로 다음 질문이 따라옵니다. "그럼 12월에는 재고를 얼마나 준비하지?" 패턴을 알았다면, 그 패턴으로 미래의 숫자를 그려 보는 것이 예측입니다. 여기서는 거창한 도구 없이 시작할 수 있는 세 가지 예측 방법을 배우고, 예측을 대하는 태도까지 함께 정리합니다.

1.1 예측의 목적

예측의 목적은 미래를 맞히는 것 자체가 아니라, 미래를 미리 준비하는 것입니다.

예측하면할 수 있는 일
다음 달 매출이 오를 것 같다재고를 미리 확보
주말에 주문이 몰릴 것 같다인력을 추가 배치
내년 성장이 예상된다예산과 투자 계획

5장과 이어서 보면 위치가 분명해집니다. 5장은 추세와 계절성이라는 패턴을 읽는 단계였고, 6장은 그 패턴을 미래에 적용하는 단계입니다.

과거 데이터의 패턴으로 미래 값을 추정하는 기법을 시계열 예측(time series forecasting)이라고 합니다. 머신러닝이나 복잡한 통계 모델을 떠올릴 필요는 없습니다. 이동평균, 추세, 계절 반영 세 가지만으로도 충분히 시작할 수 있고, 실무의 많은 예측이 실제로 이 수준에서 이루어집니다.

1.2 방법 1, 이동평균으로 최근 흐름 보기

첫 번째 방법은 이동평균(moving average)입니다. 최근 몇 개의 값을 평균 내서 흐름을 보는 방법입니다.

시험 점수로 비유해 보겠습니다. 어제 시험 한 번 망쳤다고 실력이 그 점수인 것은 아닙니다. 최근 세 번의 평균이 진짜 실력에 더 가깝습니다. 매출도 마찬가지입니다. 한 달 한 달은 들쭉날쭉하지만, 최근 몇 달의 평균을 보면 진짜 흐름이 보입니다.

최근 석 달 매출이 1,800만 원, 2,000만 원, 2,200만 원이었다면 이동평균은 이렇습니다.

(1,800 + 2,000 + 2,200) ÷ 3 = 2,000만 원

다음 달도 대략 2,000만 원 근처일 것이라고 보는 것이 이동평균 예측입니다. 들쭉날쭉한 선을 부드럽게 펴서 흐름을 읽는 데 강합니다.

1.3 방법 2, 추세선으로 전체 방향 잇기

두 번째 방법은 추세선(trend line)입니다. 전체 방향을 직선으로 나타내고, 그 직선을 미래로 연장하는 방법입니다.

흩어진 점들 위에 자를 대고 쭉 그어 보는 장면을 떠올리면 됩니다. 선을 그으면 "이대로 가면 다음은 여기"가 보입니다. 우리 데이터는 1월 941만 원에서 12월 2,240만 원까지 상승 추세였습니다. 그 방향으로 자를 대고 연장하면, 다음 달도 더 오를 것이라는 예측이 나옵니다.

이동평균이 "최근 흐름은 어떤가"를 답한다면, 추세선은 "전체적으로 어디로 가고 있는가"를 답합니다.

1.4 방법 3, 계절 반영으로 작년 같은 때 보기

세 번째 방법은 계절 반영입니다. 성수기와 비수기처럼 반복되는 패턴을 예측에 적용하는 것입니다.

매년 12월에는 선물 수요가 폭발합니다. "작년 12월에 확 올랐으니 올해 12월도 그럴 것"이라고 보는 것이 계절 반영입니다. 우리 데이터에서는 5장에서 확인한 대로 11월과 12월이 성수기이고 1월과 2월이 비수기입니다. 예측할 때 이 성수기 효과를 반영하면 "12월은 평소보다 훨씬 높게, 1월은 훨씬 낮게" 잡게 됩니다.

세 방법을 나란히 놓으면 이렇습니다.

방법보는 것비유우리 데이터에서는
이동평균최근 흐름최근 시험 3번의 평균최근 몇 달 평균으로 다음 달 가늠
추세선전체 방향자를 대고 긋기상승 추세를 연장
계절 반영작년 같은 때연말 선물 수요11~12월 성수기 효과 반영

세 방법은 경쟁 관계가 아니라 짝꿍입니다. 이동평균으로 흐름을 보고, 추세로 방향을 잡고, 계절을 얹어 보정하는 식으로 함께 씁니다.

1.5 충분히 좋은 예측

예측을 처음 배우면 완벽하게 맞히고 싶어집니다. 그런데 미래를 완벽하게 맞히는 것은 불가능하고, 그것을 좇다 보면 아무것도 못 하게 됩니다. 이 과정이 권하는 태도는 다릅니다.

완벽한 예측을 좇다 아무것도 못 하느니, 빠르게 80점짜리 예측을 하고 계속 수정한다.

"대략 이 정도"만 있어도 재고와 인력 계획은 세울 수 있습니다. 12월 매출이 정확히 2,240만 원인지 2,300만 원인지는 몰라도, "1월의 두 배가 넘는다"는 것만 알면 재고를 두 배로 준비할 수 있습니다. 예측은 한 번 하고 끝내는 것이 아니라, 새 데이터가 들어올 때마다 고쳐 나갑니다.

1.6 검증이라는 조건

검증하지 않은 예측은 예측이 아니라 그냥 추측입니다.

구분결과
검증 없는 예측그냥 추측
검증한 예측믿을 수 있는 예측

3장에서 AI의 답을 검증했듯이, 내가 만든 예측도 검증해야 합니다. 방법은 과거 데이터로 미리 시험해 보는 것입니다. 이미 결과를 아는 과거 구간의 일부를 "아직 모르는 척" 가리고 예측한 뒤, 실제 값과 얼마나 다른지 재 보면 됩니다. 이 기법을 백테스트라고 부르며 6장 3절에서 직접 해봅니다.

"충분히 좋은 예측"과 "검증 안 한 예측"은 다릅니다. 80점짜리 예측이어도 괜찮지만, 그것이 80점인지 30점인지는 반드시 확인해야 합니다. 검증이 있어야 "충분히 좋다"고 말할 자격이 생깁니다.

1.7 더 알아보기, 머신러닝의 세 갈래

1.1절에서 "머신러닝을 떠올릴 필요는 없다"고 했지만, 예측 이야기를 하다 보면 이 단어를 피할 수 없습니다. AI에게 예측을 시키면 답에 "회귀 모델", "학습 데이터" 같은 말이 섞여 나오기도 합니다. 그 말을 알아듣고 검증할 수 있을 정도로만 짚고 갑니다.

머신러닝(기계학습)은 사람이 규칙을 일일이 적어 주는 대신, 기계가 데이터에서 규칙을 스스로 찾게 하는 방법입니다. 요즘 많이 듣는 딥러닝은 머신러닝 안에 들어 있는 한 방식이고, 학습하는 방법에 따라 크게 세 갈래로 나뉩니다.

머신러닝의 세 갈래. 지도 학습은 분류와 회귀, 비지도 학습은 군집화와 변환과 연관으로 나뉘고, 강화 학습은 보상을 주며 학습시킵니다. 딥러닝은 머신러닝 안에 포함됩니다.

갈래학습 방법비즈니스에서 이런 질문에 씁니다
지도 학습데이터와 정답을 함께 주고 둘 사이의 관계를 배우게 합니다. 정답이 범주면 분류, 숫자면 회귀입니다.이 고객이 다음 달에 이탈할까(분류), 광고비를 늘리면 매출이 얼마나 될까(회귀)
비지도 학습정답 없이 데이터만 주고 비슷한 것끼리 묶거나 구조를 찾게 합니다. 군집화, 변환(열이 많을 때 핵심만 남기기), 연관으로 나뉩니다.구매 패턴이 비슷한 고객끼리 묶으면 몇 무리가 나올까(군집화), 커피와 함께 잘 팔리는 상품은 무엇일까(연관)
강화 학습행동할 때마다 보상이나 벌점을 주며 더 나은 행동을 스스로 찾게 합니다.시간대별 가격을 어떻게 바꿔야 수익이 가장 클까, 물류 로봇은 어떤 경로로 움직여야 할까

이 과정에서 이미 써 본 것도 있습니다. 1.3절의 추세선은 시간을 넣으면 매출을 내놓는 가장 단순한 회귀, 곧 지도 학습입니다. 6장 3절의 백테스트에서 앞부분으로 예측을 만들고 뒷부분으로 맞혀 보는 것은 머신러닝에서 데이터를 학습용과 검증용으로 나누는 것과 같은 생각입니다. 3장 1절 KDD 절차의 3단계(데이터 변환)에서 "학습용과 검증용으로 나눈다"고 한 것이 바로 이것입니다.

갈래마다 대표 기법도 이름만 알아 두면 AI의 답을 읽을 때 도움이 됩니다.

갈래세부대표 기법
지도 학습분류kNN(최근접 이웃), Naive Bayes(나이브 베이즈), SVM(서포트 벡터 머신), Decision Tree(의사결정나무)
회귀Linear Regression(선형 회귀), Locally Weighted Linear Regression(국소 가중 선형 회귀), Ridge(릿지), Lasso(라쏘)
비지도 학습군집화K-Means(K 평균), DBSCAN, Expectation Maximization(EM, 기댓값 최대화)
밀도 추정Density Estimation(밀도 추정), Parzen Window(파젠 윈도)
강화 학습문제 정의와 학습MDP(마르코프 결정 과정, 문제를 정의하는 틀), DQN, A3C

강화 학습은 그림으로 보면 더 쉽습니다. 탁구 치는 로봇을 학습시킨다고 해 봅시다.

탁구 로봇으로 보는 강화 학습. 로봇(에이전트)이 탁구대(환경)의 상태를 관찰하고 행동하면, 공을 상대 쪽으로 넘기면 플러스 보상, 밖으로 날려 보내면 마이너스 보상을 받으며 정책과 판단을 강화합니다.

  • 에이전트(Agent): 배우는 주체, 여기서는 로봇입니다.
  • 환경(Environment): 에이전트가 상대하는 세계, 탁구대와 공을 쏘는 기계입니다.
  • 상태(State): 지금 공이 어디에 있고 어떻게 날아오는지입니다. 로봇은 이것을 관찰합니다.
  • 행동(Action): 라켓을 어느 쪽으로 얼마나 휘두를지입니다.
  • 보상(Reward): 공을 상대 쪽 탁구대로 넘기면 플러스, 밖으로 날려 보내면 마이너스를 받습니다.

로봇은 처음에는 아무렇게나 휘두르지만, 보상을 받을 때마다 "이런 상태에서는 이렇게 치는 것이 낫다"는 정책을 조금씩 강화합니다. 정답을 알려 주는 지도 학습과 달리, 강화 학습은 정답 대신 결과에 대한 점수만 줍니다.

머신러닝 기법을 직접 고르고 튜닝할 일은 이 과정에 없습니다. 기억할 것은 하나입니다. 어떤 기법이든 학습에 쓰지 않은 데이터로 검증해야 믿을 수 있다는 원칙은 이동평균이나 추세선과 똑같습니다. AI가 "정확도 98%짜리 모델을 만들었다"고 하면, 그 98%를 학습용 데이터로 잰 것인지 검증용 데이터로 잰 것인지부터 물어보세요.

1.8 생각해보기

Gemini로 실제 예측을 돌리기 전에 두 가지를 먼저 생각해 두세요.

  1. 우리 쇼핑몰의 다음 달 매출을 예측한다면, 세 방법 중 무엇을 쓰면 좋을까요? 하나만 골라야 한다면 어느 것이고, 이유는 무엇인가요?
  2. 우리 데이터에는 상승 추세와 연말 성수기가 함께 있었습니다. 이 둘을 어떻게 예측에 동시에 반영할 수 있을까요?

1.9 직접 해보기

  1. 최근 석 달 매출이 1,500만 원, 1,700만 원, 1,900만 원일 때 3개월 이동평균을 손으로 계산하고, 다음 달 예측값을 적어 봅니다.
  2. 내 업무나 일상에서 반복되는 계절성 하나를 찾아 적어 봅니다. 그 패턴을 안다면 무엇을 미리 준비할 수 있을지도 함께 적어 봅니다.
  3. 들쭉날쭉한 매출의 흐름을 부드럽게 보려면 세 방법 중 어떤 것이 좋은지, 이유와 함께 설명해 봅니다.
  4. "정교한 모델보다 충분히 좋은 예측"이 무슨 뜻인지, 그리고 그것이 "검증하지 않아도 된다"는 뜻은 왜 아닌지 한 문장씩 정리해 봅니다.

마지막 수정