2025년 설 연휴, 여러분은 어떻게 보내고 있나요? 새로운 시작을 위해 준비하는 분도, 다시 달리기 위해 푹 쉬는 분도 있을 텐데요. 요즘IT에서 설 연휴를 맞아 국내 주요 기업의 특색 있고 유익한 블로그 콘텐츠를 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요? 이번 글에서는 국내 대표 이커머스 기업 ‘SSG’ 데이터예측팀에서 상품 수요를 예측하고 활용한 경험에 대해 소개합니다. 안타깝게도 이 글에서 낚싯대라는 단어는 더 이상 나오지 않습니다. 안녕하세요, 데이터예측팀 수요예측 파트 진대현입니다. 저희 수요예측 파트에서는 SSG.COM의 다양한 물류센터 유형(PP, EOS, NE.O)에서 운영되는 SKU(Stock Keeping Unit)의 수요 예측 문제를 다루고 있습니다. 이 과정에서 여러 머신러닝 및 통계적 모델을 활용하고 있으며, 정교하고 실효성 높은 예측을 목표로 하고 있습니다. 수요예측은 전자상거래와 공급망 관리 분야에서 가장 클래식한 문제 중 하나입니다. 유통 환경의 변화, 다품종소량생산 시대의 도래, 고객 니즈 다각화 등의 요소들이 맞물리면서 새로운 문제들이 계속해서 파생되고 있는데요. 새로이 발생하는 수요예측 문제 중에서도 ‘롱테일 상품(Long-tail items)의 수요예측 문제’와 ‘간헐적 수요 패턴을 갖는 상품의 수요예측 문제’는 서로 유사한 점이 많아 혼동되기 쉬운 문제들입니다. 이번 글에서는 간헐적 수요 패턴을 갖는 상품의 수요예측 문제를 다뤄보기 위해, 롱테일 상품, 수요 패턴, 간헐적 수요의 개념을 정의하고, 해당 유형의 수요 예측 문제를 효과적으로 해결하기 위해 고려해 볼만한 이론과 알고리즘에 대해서도 논의해 보도록 하겠습니다. 롱테일 상품의 수요예측롱테일 상품이란우선, ‘롱테일’이라는 개념부터 살펴보겠습니다. 이 용어는 미국 기술 전문지 Wired의 편집장이었던 크리스 앤더슨(Chris Anderson)이 처음으로 제안한 개념입니다. 롱테일이란 개별 상품의 판매 빈도는 낮지만, 이런 상품들이 모여 전체 매출의 중요한 부분을 차지하는 현상을 의미합니다. 즉, 소수의 인기 상품만이 매출을 책임지는 것이 아니라, 수많은 비인기 상품들의 중요도도 결코 무시할 수 없다는 뜻이죠. 조금 더 정량적으로 설명하면, 하위 80%의 상품이 전체 매출의 20%를 차지하는 경향을 롱테일 법칙이라고 부릅니다. 이는 소수의 인기 상품이 매출 대부분을 차지한다는 파레토 법칙(Pareto Principle)과 반대되는 개념인데요. 파레토 법칙: 상위 20%의 상품이 전체 매출의 80%를 견인한다.롱테일 법칙: 하위 80%의 상품도 전체 매출에 중요한 기여를 한다. 흥미롭게도, 이 두 법칙은 상반된 것처럼 보이지만 결국 같은 시장의 다른 시각을 보여줍니다. 파레토 법칙이 상위 상품의 중요도를 강조했다면, 롱테일 법칙은 하위 상품의 가능성과 역할에 주목한 것이죠. 이 현상을 설명하는 데 자주 쓰이는 게 바로 파레토 분포입니다. 파레토 분포는 소수의 특정 값이 전체에 큰 영향을 미치는 불균형적인 분포를 수학적으로 모델링한 것입니다. Pareto Type 1 분포의 확률밀도함수 그래프(wikipedia) 이미지는 파레토 분포의 확률밀도함수 그래프입니다. 마음속으로 전자상거래를 통해 판매되는 상품별 매출 분포도를 그려봅시다. 아마도 이 그래프와 유사하게 좌측에 해당하는 ‘머리’ 부분은 극소수의 인기 상품이 차지하고, 우측에 해당하는 ‘꼬리’ 부분은 판매량이 적은 수많은 상품들이 끝없이 길게 늘어지게 될 것입니다. 롱테일 상품의 수요를 예측해야 할까? 잘할 수 있을까? 두 개 상품의 일자별 판매 수량을 행렬로 표현해 보았습니다. 한쪽은 데이터가 충분하고, 다른 한쪽은 그렇지 않네요. 하지만 매출에서 차지 하는 비율은 양쪽 모두 낮기 때문에 롱테일 상품입니다. 그렇다면 수요예측의 관점에서 롱테일 상품, 즉 ‘꼬리’ 부분의 상품들도 ‘머리’ 부분(인기 상품)만큼 중요하게 다뤄야 할까요? 네, 물론입니다. 개별 롱테일 상품의 판매량은 적지만, 수많은 롱테일 상품들이 모이면 전체 매출에서 무시할 수 없는 비중을 차지하기 때문입니다. 특히 전자상거래처럼 SKU가 다양하고 재고 관리가 중요한 시장에서는 ‘꼬리’에 있는 상품들도 최대한 정확하게 예측할 필요가 있습니다. 이번에는 질문을 바꿔보겠습니다. ‘꼬리’ 칸의 상품들도 머리 칸의 상품들만큼 그 중요도를 높여 최대한 정밀하게 예측할 수 있을까요? 아쉽게도 현실적인 제약이 있습니다. 모든 롱테일 상품들이 그런 것은 아니지만, 롱테일 상품들은 대체로 판매 빈도가 낮아 데이터가 부족하거나 수요 패턴이 불규칙적일 확률이 높습니다. 데이터가 부족하면, 머신러닝 모델은 올바른 예측을 할 수 없습니다. 수요 패턴이 불규칙하면, 예측이 어렵구요. 이러한 제약으로부터 오늘의 주제인 ‘간헐적 수요 패턴을 갖는 상품의 수요예측 문제’가 시작됩니다. 이제는 이 이야기를 해보겠습니다. 수요 패턴수요 패턴의 분류‘간헐적 수요 패턴을 갖는 상품의 수요예측 문제’를 다루려면, 이 문제의 구성 요소가 되는 수요 패턴의 분류 방법과 간헐적 수요 패턴에 대해 이야기해야합니다. 수요 패턴의 분류 방법에 대해 다루는 여러 연구가 존재하지만, 이번 글에서는 논문 “On the categorization of demand patterns(Syntetos, A. A., Boylan, J. E., & Croston, J. D. (2005). )”의 기준을 이용해 봅니다. 이 논문에서 저자들은 다음 두 가지 주요 지표를 도입했는데요. 각각은 ADI(Average Demand Interval ; 평균 수요 간격), CV²(Square of the Coefficient of Variation)입니다. ADI는 그 의미 그대로 어떤 상품의 수요 발생 간격들을 구하여 평균을 계산한 것으로, 높은 ADI는 간헐적 수요 그 자체를 의미합니다. CV²의 경우에는 통계학에서 사용되는 변동 계수(Coefficient of Variation)를 제곱한 것으로, 변동 계수는 표준 편차를 산술 평균으로 나눈 것이므로 수요의 크기(즉, 판매 수량)의 상대적인 변동을 설명하는 것이며 높은 CV²는 불규칙적 수요를 나타낸다고 할 수 있습니다. ADI와 CV²를 이용한 수요 패턴 분류(frepple.com) 이 두 가지 지표를 각각 X, Y 축에 두면 각 SKU들의 수요 패턴을 4개로 분류해 볼 수 있는데, 도식화해 보면 위 이미지와 같으며 각 패턴은 다음과 같은 기준으로 수요 패턴이 분류됩니다: Smooth: 안정적 수요(ADI < 1.32 & CV² < 0.49)Intermittent: 간헐적 수요(ADI ≥ 1.32 & CV² < 0.49)Erratic: 불규칙적 수요(ADI < 1.32 & CV² ≥ 0.49)Lumpy: 간헐적이고 불규칙한 수요(ADI ≥ 1.32 & CV² ≥ 0.49) 간헐적 수요 패턴여러 종류의 수요 패턴 중 간헐적 수요 패턴에 대해 이야기해 봅시다. 독자분들께 이런 질문을 드려보고 싶은데요. 간헐적 수요를 갖는 상품의 매출은 전체 매출에서 낮은 비율을 차지할 가능성이 있을까요? 그렇다면, 롱테일 상품은 반드시 간헐적인 수요를 갖게 되는 것일까요? 라고요. 그럴 수도 있지만, 반드시 그런 것은 아닙니다. 이는 롱테일 상품의 정의가 매출을 기준으로 이루어지며, 각 SKU의 수요 패턴과는 직접적으로 연관되지 않기 때문입니다. 예를 들어, 다음 세 가지 상품을 생각해 볼 수 있습니다: 상품 A: 매일 1~2개씩 꾸준히 판매되는 상품상품 B: 일주일에 한 번 꼴로 1,000개씩 대량 판매되는 상품상품 C: 연중 산발적으로 일정하지 않은 수량이 판매되는 상품 상품 A는 안정적인 수요 패턴을 가지지만, 매출 규모가 크지 않아 롱테일 상품에 해당할 가능성이 높습니다. 반면, 상품 B는 간헐적인 수요 패턴을 가지고 있지만, 매출 규모가 크기 때문에 상위 매출 상품으로 분류될 가능성이 높습니다. 상품 C는 어떨까요? 이러한 상품은 데이터의 기간을 어떻게 정의하느냐에 따라 수요 패턴의 분류와 매출에 따른 롱테일 상품 분류가 변화하게 될 것입니다. 그러므로 이러한 분류 방식은 절대적이거나 정답이 존재하는 것이 아니며, 문제를 정의해 가장 일반화된 해답을 찾아 나가기 위한 수단에 불과할 것입니다. 상품 A~C의 예시에서 알 수 있듯이, ‘롱테일 상품’과 ‘간헐적 수요’는 서로 연관성이 있어 보이지만 실제로는 별개의 문제이고, 상황에 따라 상대적으로 정의됩니다. 롱테일 상품은 매출의 관점에서 정의되고, 간헐적 수요패턴은 시간에 따른 판매 패턴을 분류한 것이기 때문입니다. 이 두 가지 문제는 함께 발생할 수도, 따로 발생할 수도 있습니다. SSG.COM의 수요예측 모델링 과정에서 수요패턴 분류에 사용된 지표들을 직접적으로 사용하고 있지는 않습니다. 그러나 이러한 이론적 지표들은 우리가 보유한 데이터를 탐색하는 EDA(Exploratory Data Analysis) 과정에서 매우 유용한 도구로 활용될 수 있습니다. 간헐적 수요패턴을 갖는 상품의 수요예측 문제데이터 부족 현상과 외삽우리는 지금까지 간헐적 수요 패턴에 대해 이야기 나눴습니다. 그렇다면, 이러한 패턴은 수요예측 문제에서 어떤 ‘문제’가 될까요? 이 주제를 이야기하기 위하여 이번에는 데이터 부족 현상과 외삽(Extrapolation)에 대해 다뤄보도록 하겠습니다. “어떤 상품의 판매량이 0인 날은 데이터가 존재하는 것일까, 존재하지 않는 것일까….” 하는 철학적인 고민은 잠시 마음 깊은 곳에 묻어두고, 판매량이 0인 날은 데이터가 존재하지 않는 것이라 가정하도록 하겠습니다. 머신러닝, 또는 더 나아가 딥러닝 모델들은 어떤 현상의 패턴을 찾아내는 데에 탁월한 도구입니다. 하지만, 그렇기에 필연적으로 많은 양의 데이터가 모델의 학습에 요구됩니다. 때문에 모델의 학습 관점에서 판매량이 0인 날이 많은 상품이라면, 데이터 부족 현상을 겪는다고 볼 수 있습니다. ‘Garbage-In, Garbage-Out’이라는 격언을 떠올렸을 때, 데이터가 많기만 하면 무조건 좋은 것은 아니겠습니다만, 넓은 범위의 예측을 수행하려 한다면 훈련 데이터의 범위가 넓고 갖고 있는 훈련 데이터가 촘촘할수록 좋을 것입니다. 머신러닝 모델이 인지하는 패턴이라는 것은, 결국 훈련 데이터 범위 내에서 이뤄지기 때문입니다. 훈련 범위를 초과하는 문제에 대해 예측을 시도하면 예측의 정확도를 담보하기 어려워질 것입니다. 수요예측이란 문제를 조금 더 크게 보면, 회귀 모형(Regression model)으로 풀어내는 회귀 문제의 한 장르라고 볼 수 있는데요. 회귀 문제에서는 ‘훈련 범위를 초과한 문제에 대한 예측’을 외삽에 의한 위험이라고 표현하기도 합니다. Extrapolation problem(IBM Data Science in Practice) 이해를 돕기 위해, 도표를 참고해 봅시다. Training values의 최소, 최대값 영역을 벗어나는 범위에서 계산된 예측값들이 외삽에 의한 예측값입니다. 이 영역에서는 훈련 데이터의 패턴이 보장되지 않기 때문에 외삽에 의한 예측값은 데이터의 실제 분포와 큰 차이를 보일 수 있으며, 모델이 훈련 데이터의 범위 밖에서는 일반화되지 못할 수 있습니다. 특히, 비선형적 관계를 가진 데이터나 극단적인 값이 포함된 데이터에서는 이러한 문제가 더욱 심화될 수 있습니다. 요약해 보면, ‘데이터가 충분하지 않은 상태에서 모델이 학습 범위를 벗어난 입력값에 대해 예측을 시도하면, 비현실적이고 왜곡된 예측 결과를 초래할 가능성이 크다.’고 정리할 수 있습니다. “판매량이 0인 날이 많은 상품이라면, 데이터 부족 현상을 겪는다.”고 말씀드렸죠? 그렇다면 이러한 상품들에 대한 수요 예측은 실패할 가능성이 상대적으로 높습니다. 데이터가 충분하지 않은 상황에서는 머신러닝 모델의 성능이 제한적일 수 있기 때문입니다. 데이터가 충분한 상품의 경우에는 머신러닝 모델을 통해 복잡한 패턴을 학습하고 정확한 예측을 도출할 수 있습니다. 그러나 간헐적 수요를 갖는 상품의 경우에는 머신러닝 모델만을 사용하는 것이 최선의 선택이 아닐 수 있습니다. 간헐적 수요 예측에 특화된 모델들앞서 소개한 “On the categorization of demand patterns” 논문의 저자 중 하나인 Croston, J. D.는 이러한 문제 해결을 위해 Croston method라는 기법을 1972년에 제안하였습니다. 이론적으로는 SES(Single Exponential Smoothing) 방법의 한계점을 개선한 것인데, 쉽게 풀어서 표현하면 수요 간격(판매 발생 주기)과 수요 크기(판매량)의 불규칙성을 별도로 예측하게끔 모델링 되어있어 간헐적 수요 예측에 특화된 모델이라고 볼 수 있습니다.수학적인 표현이 궁금하다면, 이 링크를 참고해 보세요. 알고리즘의 개선은 계속됩니다. 논문의 저자 중 나머지 두 명인 Syntetos와 Boylan은 Croston method가 실제 수요보다 그 예측값을 과대추정하는 경향이 있음을 지적하고, 예측값이 positive biased임을 증명했습니다. 이들은 뒤이어 이러한 한계를 개선한 SBA(Syntetos-Boylan Approximation)를 제안합니다. Croston method, TSB, Simple Smoothing의 예측값 비교(Nicolas Vandeput, “Croston Model for Intermittent Demand Forecasting) 한편, Croston method는 ‘수요가 없는 기간’을 고려하지 않는 방식으로 모델링 되었기 때문에 상품의 운영 중단이나 품절로 인해 ‘수요가 완전히 사라지는 경우’를 고려하지 않습니다. 즉, 운영 중단 또는 품절이 되더라도 수요가 발생할 것이라 가정하고 예측값이 업데이트가 되지 않는 현상을 겪습니다. TSB(Teunter, Syntetos and Babai)는 이러한 현상을 개선한 방법입니다. 위 이미지의 Period 52~58 구간에서 이러한 현상의 예시를 확인할 수 있습니다. 와, 생각보다 많은 방법이 있네요? 알고리즘 및 모델들에 덧붙여 이동평균과 같은 ‘값’들도 간헐적 수요의 예측 방법으로 동원될 수 있습니다. 이동평균은 데이터의 변동성을 줄이는 모든 기법을 일컫는 ‘Smoothing’의 일종으로 볼 수 있고, 간헐적 수요 발생을 데이터의 높은 변동성이라 정의한다면 Smoothing의 일종인 이동평균도 이러한 문제를 해결하는 데에 사용될 수 있기 때문입니다. 수요예측 모델로써의 Croston method이다음 문단에서 다루겠지만, 데이터예측팀에서는 수요예측 문제를 해결하기 위하여 여러 통계적 방법과 머신러닝 모델을 혼합하여 상품별 수요예측 모델로 사용하고 있습니다. 우리 팀에서 Croston method를 이러한 모델 목록에 추가하는 것을 고려하기 시작한 계기는 출하량 하위에 해당하는 상품들의 결품 문제를 보완하기 위함이였습니다. 그러나 문제 정의를 롱테일 상품 분류에서부터 시작하니, 기존 운영 모델들이 사용하고 있는 데이터의 여러 시간적 특성(학습, 검증에 사용되는 데이터 기간 등)에 의하여 문제 정의에 괴리가 발생했습니다. 이를 보완하기 위해 상품들을 수요 패턴으로 분류해 보았습니다. 각각의 패턴에 해당하는 상품들의 출하량이 상위인지 하위인지, 데이터가 충분한지 그렇지 않은지, 기간에 따라 수요 패턴은 변화하는지를 분석하였습니다. 결과적으로는 통계적 방법과 머신러닝 모델들이 갖는 특징의 어느 중간쯤에 있는 ‘무언가’가 필요했습니다. 통계적 방법(정확히는 그 중 Smoothing)처럼 안정적인 값이면서도, 머신러닝 모델처럼 새로운 데이터에 반응을 하는 값이면서도, 무엇보다 기존의 결품 문제를 조금이라도 더 보완할 수 있는 값. 앞서 소개했듯, Croston method는 Smoothing의 일종이면서도 수요 간격과 크기를 별도 예측하게끔 모델링 되어있으며 과대 추정하는 경향이 있어 이러한 필요에 부합했습니다. 기존에 지적되었던 단점을 장점으로 승화할 수 있는 문제 상황과 정의 덕분이었습니다. 이 이미지는 MS Bing Image Creator를 이용해 만들어졌습니다. 하지만 여전히 한계도 존재합니다. 이 방법은 비유하자면 ‘N일 전부터 오늘까지 마신 커피의 맛에 대해서만 기록하는 일기장’과 같습니다. 그리고 이 일기장을 이용해 오늘의 커피 맛을 예측하는 것이 Croston method를 이용한 수요예측 방법이 됩니다. 커피를 마시지 않는 날의 기록은 업데이트되지 않습니다. 그러므로 마지막 예측 또한 바뀔 수 없습니다.설정된 N 일에 따라 첫 커피 맛이 어땠는지 매일매일 바뀝니다.예측을 위해 최근 맛본 커피 맛을 얼마나 더 참고할지 정해야 합니다. 정량적으로는 0.1이 참고치로써 사용됩니다. 0 초과 1 이하의 값을 갖고 이 값이 크면 최근 맛본 커피 맛을 많이 참고합니다. 이것을 smoothing parameter alpha라고 부릅니다. 어떤 값으로 N과 alpha를 설정할지에는 선택이 따릅니다. 중요한 것은 이 선택에 따라 결품 문제가 완화될 수도, 악화될 수도 있다는 것입니다. 모델의 예측 정확도 또한 그렇구요. 우리 팀의 Croston method 모델은 현재 이러한 요소를 고려하지 못하였으므로 지속적인 EDA를 통해 개선될 것입니다. 이 방법을 만든 사람들이 그렇게 했듯이. SSG.COM의 수요예측 전략지금까지 논의했듯이, 롱테일 상품의 간헐적 수요 예측은 데이터 부족과 외삽 문제로 인해 정의 자체가 복잡합니다. 모든 상품의 수요 패턴이 Smooth하다면 머신러닝 모델로 문제를 해결할 수 있겠지만, 현실은 그렇게 간단하지 않습니다. 수요예측에서 예측 정확도를 높이는 것만이 최종 목표는 아닐 수 있습니다. 사업적 관점에서는 정확한 예측뿐만 아니라, 적정 수준의 예측값을 도출하는 것이 더 중요할 때가 있습니다. 예를 들어: 간헐적 수요를 가진 상품의 경우, 결품 문제는 매출 손실의 주요 원인이 될 수 있습니다.결품을 줄이기 위해 때로는 과다 예측이 더 나은 선택이 될 수 있습니다.이는 고객 만족도를 유지하고, 주문 이행 실패를 방지하기 위함입니다. 때문에, 우리는 간헐적 수요를 가질 가능성이 높은 하위 상품군에 대해서는 Smoothing 기법들이 적용되도록, 상위 상품군에 대해서는 머신러닝 모형이 적용되도록 하였습니다. 상품에 따라 적합한 모형이 선택되도록 한 것인데요. 머신러닝 모형에 의한 예측값에는 앙상블 기법 또한 적용하여서 안정적인 예측값이 발생하도록, Smoothing 기법들에 의한 기초적인 예측값을 생성하는 경우 가능하다면 결품을 방지하기 위해 일정 수준의 정확도가 담보되면서도 때에 따라 과다 예측을 수행하도록 수요예측 모형을 정의하였습니다. 실제로, PP센터를 기준으로 EDA해보면 영업점 별로 상이하지만 상위 11~12%의 상품군은 머신러닝 모형이, 그 외 하위 상품군은 Smoothing 기법들에 의한 기초적인 예측 방법이 선택되어 수요예측값으로 활용되고 있습니다. 마치며저희의 수요예측 방법이 완벽한 최적해를 도출한다고 보기는 어렵습니다. 하지만, 다양한 요소의 중요도를 종합적으로 고려한 ‘전략적 접근’으로 표현하기에는 적합하다고 생각합니다. 앞으로도 다양한 가능성과 기회를 탐색하며, 가장 적합한 해결책을 제시하는 문제 해결사가 되고자 합니다. 이를 통해, 수요예측 분야에서의 도전과 성장을 계속 이어갈 수 있기를 희망합니다. 끝으로, 긴 글을 읽어주신 분들께 감사의 말씀을 전합니다. 앞으로도 많은 관심과 의견 부탁드립니다. 감사합니다.<원문>이번 주에 낚싯대는 몇 개가 팔릴까? ©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.