과거 구매 데이터에서 주어진 소모품 사용량을 예측하는 데 어떤 알고리즘을 사용할 수 있습니까?


10

아마도 간단하지만 흥미로운 문제에 대해 생각하면서, 나는 이전 구매의 전체 역사를 고려할 때 가까운 미래에 필요할 소모품을 예측하는 코드를 작성하고 싶습니다. 나는 이런 종류의 문제가 좀 더 일반적이고 잘 연구 된 정의를 가지고 있다고 확신합니다 (누군가 이것이 ERP 시스템 등의 일부 개념과 관련이 있다고 제안했습니다).

내가 보유한 데이터는 이전 구매 내역입니다. 종이 소모품을보고 있는데 데이터가 (날짜, 시트)와 같다고 가정 해 보겠습니다.

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

정기적으로 '표본'되지 않으므로 시계열 데이터 로 적합하지 않습니다 .

매번 실제 재고 수준에 대한 데이터가 없습니다. 이 단순하고 제한된 데이터를 사용하여 3,6,12 개월 동안 필요한 용지의 양을 예측하고 싶습니다.

지금까지 내가 무엇을 찾고있는 것이라는 것을 알게 외삽 이 아니라 훨씬 더 :)

그러한 상황에서 어떤 알고리즘을 사용할 수 있습니까?

그리고 이전 알고리즘과 다른 알고리즘은 현재 공급 수준을 제공하는 더 많은 데이터 포인트를 활용할 수있는 알고리즘은 무엇입니까?

더 나은 용어를 알고 있다면 질문, 제목 및 태그를 자유롭게 편집하십시오.

편집 : 그만한 가치가 있기 때문에 파이썬으로 이것을 코딩하려고합니다. 나는 알고리즘을 구현하는 라이브러리가 많이 있다는 것을 알고 있습니다. 이 질문에서는 실제 구현을 독자에게 연습으로 남겨 두면서 사용할 수있는 개념과 기술을 탐구하고 싶습니다.


1
통계 학자 여러분,이 질문이 포기되지 않았다는 것을 알려 드리고자합니다. 나는 시간과 동기를 발견하자마자이 특정 문제로 되돌아 가고 (읽기 : 상사가 나에게 이렇게 지시한다) 당신의 소중한 답변을 조사하고 결국 받아 들여진 것으로 표시 할 것이다.
Luke404

답변:


12

문제는 소비 속도 대 시간에 관한 것입니다. 이것은 시간에 대한 비율의 회귀를 요구합니다 ( 시간에 대한 총 구매의 회귀는 아님 ). 외삽은 향후 구매에 대한 예측 한계 를 구성하여 수행됩니다 .

여러 모델이 가능합니다. 약 25 년 동안 지속 된 종이없는 사무실로의 이전을 고려할 때, 우리는 지수 (감소) 모델을 채택 할 수 있습니다. 결과는 소비의 다음 산점도로 표현되며, 여기에는 지수 곡선 (일반 최소 제곱을 통해 소비 로그에 적합)과 95 % 예측 한계가 그려집니다. 외삽 된 값은 선 근처와 95 % 신뢰도로 예측 한계 사이에있을 것으로 예상됩니다.

그림

세로 축은 하루에 페이지를 선형 배율로 표시합니다. 진한 파란색 실선이 적합합니다. 이것은 실제로 지수 적이지만 선형에 매우 가깝습니다. 지수 적합의 영향은 예측 대역에 나타나며,이 선형 스케일에서 적합 주위에 비대칭 적으로 배치됩니다. 로그 스케일에서는 대칭입니다.

보다 정확한 모델 은 소비 정보가 더 짧은 기간 (또는 총 구매가 적을 때)에 대해 더 불확실하다는 사실을 고려할 것이며, 이는 최소 가중치 제곱을 사용하여 적합 할 수 있습니다. 이러한 데이터의 변동성과 모든 구매 규모의 대략적인 평등을 감안할 때 추가 노력을 기울일 가치가 없습니다.

이 접근법은 중간 재고 데이터를 수용 하며, 이는 중간 시간에 소비율을 보간하는 데 사용될 수 있습니다. 그러한 경우에, 중간 소비량이 상당히 변할 수 있기 때문에, 가중 최소 제곱 접근법이 바람직 할 것이다.

어떤 무게를 사용해야합니까? 우리는 필연적으로 종이에 필연적으로 발생하는 용지 소비량을 매일 독립적으로 변하는 수로 간주 할 수 있습니다. 짧은 기간 동안 카운트의 분산은 기간의 길이에 비례합니다. 그러면 하루 수의 편차 는 기간의 길이에 반비례 합니다. 결과적 으로 가중치는 인벤토리 사이의 경과 시간에 정비례해야합니다 . 따라서 예를 들어 2007-05-10과 2007-11-11 (약 180 일) 사이의 1000 매 소비는 2007-11-11과 2007-12-1000 사이의 1000 매 소비 무게의 거의 5 배입니다. 18, 단지 37 일의 기간.

예측 구간에서 동일한 가중치가 수용 될 수있다. 이는 3 개월 동안의 소비 예측과 비교하여 하루 동안의 소비 예측 간격이 비교적 넓을 것이다.

이러한 제안은 의도 된 적용 및 데이터의 명백한 변동성에 적합한 간단한 모델과 간단한 예측에 중점을 둡니다. 예를 들어, 대국의 국방비 지출과 관련한 예측에 대해서는 더 많은 설명 변수를 수용하고 시간적 상관 관계를 설명하며 모델에 훨씬 더 자세한 정보를 제공하고자합니다.


데이터가 정기적으로 샘플링 되었습니까? 비율 과 반대로 카운트 를 사용하는 것이 적절 했습니까?
MannyG

1
@MannyG 예. 그러나 카운트 자체가 비율에 직접 비례하기 때문에 카운트 자체를 사용하는 것이 적절하지 않기 때문입니다. 미래의 가치를 예측하는 것이 실제로 무엇을 의미하는지 고려할 때 여기에서 요율을 사용해야 할 필요성은 분명합니다. 예측 소비의 시간 간격을 지정해야합니다. 하나는 따라서 그 금액을 암시 양을 얻기 위해 양의 시간을 시간을 예측되어 있어야 소비 : 단위 시간 당 수량 수 비율 .
whuber

@whuber 실례합니다.하지만 어떤 모델이 귀하의 답변에 설명되어 있고 어떤 모델이 어떤 끝을 끝내고 다른 것을 시작하는지 명확하게 이해할 수 없습니다. 비슷한 문제가 있으며 답변의 일부가 정확히 필요한 것 같습니다.하지만이 문제에 대해 더 많은 연구를해야하며 독특한 모델이나 특정 모델에 대해 이야기하고 있다면 답변을 읽으면 말할 수 없습니다 점차 향상됩니다. 설명하는 가중치가있는 모델의 공식 이름이 있습니까? 첫 번째 모델 (지수 감소)에 가중치가 포함됩니까? 미리 감사드립니다.
Agis

@rensokuken 나는 데이터에 가중치를 부여하는 하나의 모델과 변형을 설명합니다. 이 답변의 후반부는 가중치를 결정하는 방법을 제안합니다. 나는 "가중 최소 제곱"이외의 공식적인 이름을 모른다.
whuber

@ whuber 알겠습니다. 처음에는 이것을 설명 하고 가중치를 추가 할 때 이것을 설명 하고 있습니다. 또한 특정 솔루션 및 예측 초보자와 관련하여 살펴볼 리소스가 있습니까? 설명 주셔서 감사합니다.
Agis

5

이것은 기계 학습 문제입니다 (귀하의 게시물에서 태그를 업데이트했습니다). 아마도 이것은 선형 회귀 입니다. 간단히 말해서, 선형 회귀는 1 개의 종속 변수와 1 이상의 독립 변수 간의 관계를 회복하려고 시도합니다. 여기서 종속 변수는 소모품 사용량 입니다. 독립 변수의 경우 구매 사이의 시간 간격을 제안합니다. 예를 들어, 매 순간 소모품을 사용한 사람 수 또는 구매 수량에 영향을 줄 수있는 다른 변수와 같이 더 독립적 인 변수를 추가 할 수도 있습니다. 파이썬 에서 구현과 함께 선형 회귀에 대한 좋은 설명을 여기서 찾을 수 있습니다 .

이론적으로, 구매 간의 시간 간격뿐만 아니라 시간 자체도 금액에 영향을 줄 수 있습니다. 예를 들어, 1 월에 어떤 이유로 사람들은 4 월보다 더 많은 종이를 원할 수 있습니다. 이 경우 선형 회귀 자체의 특성으로 인해 월 수를 독립 변수 자체로 사용할 수 없습니다 (월 수는 레이블이지만 금액으로 사용됨). 이를 극복하는 방법에는 두 가지가 있습니다.

먼저, 매월 하나씩 12 개의 변수를 추가 하고 구매 월을 나타내는 경우 각 변수를 1로 설정하고 그렇지 않은 경우 0으로 설정할 수 있습니다. 그런 다음 동일한 선형 회귀를 사용하십시오.

둘째, 선형 회귀 및 의사 결정 트리가 혼합 된 M5 ' 와 같은보다 정교한 알고리즘을 사용할 수 있습니다 (이 알고리즘에 대한 자세한 설명은 데이터 마이닝 : 실제 기계 학습 도구 및 기술 ).


사용자에 대한 데이터 양에 따라 다릅니다. 충분하다면 (예 :> 1 년에 100 회 이상),이 특정 사용자에 대한 모델을 훈련시킬 수 있습니다. 그렇지 않으면 모든 사용자에 대한 일반적인 모델로 더 나은 결과를 얻을 수 있습니다. 교차 검증을 사용하여 두 가지 접근 방식의 성능을 측정 할 수 있습니다.
ffriend

5

정기적으로 '표본'되지 않으므로 시계열 데이터로 적합하지 않습니다.

구매 예측 방법에 대한 아이디어는 다음과 같습니다. 데이터를 간헐적 수요 시리즈 로 고려하십시오 . 즉, 일정한 간격으로 샘플링 된 시계열이 있지만 양수 값의 간격은 불규칙합니다. Rob Hyndman은 간헐적 수요 시리즈를 예측하기 위해 Croston의 방법을 사용 하는 것에 관한 훌륭한 논문 을 가지고 있습니다. 필자는 Python으로도 많은 프로그램을 작성하지만 Robston의 우수한 R 패키지 예측 에서 쉽게 사용할 수있는 Croston의 방법과 다른 시계열 예측 방법을 사용하여 많은 탐색 시간을 절약 할 수 있습니다 .


1
+1 새로운 아이디어를 제공합니다. 그러나 Shenstone & Hyndman 논문의 도입과 결론을 숙지하는 것은 Croston의 방법이 일반적으로 좋지 않다는 것을 시사합니다. 저자가 말할 수있는 가장 좋은 점은 그럼에도 불구하고 "예측은 ... 여전히 유용 할 수있다"는 것입니다. 또한이 모델은 OP의 요청에 따라 "현재 공급 수준"에 대한 추가 데이터를 수용 할 수없는 것으로 보입니다.
whuber

3

데이터 포인트에 선을 맞추기 위해 회귀 분석 을 시도하고 있다고 확신합니다 . 많은 있습니다 도구 - 당신을 도울 거기 MS Excel에서 가장 accessable 한 것입니다. 자신의 솔루션 을 롤링 하려면 통계를 정리하는 것이 가장 좋습니다 ( herehere ). 데이터에 한 줄을 맞추면 미래를 예측할 수 있습니다.

편집 : 다음은 아래 의견에서 언급 한 Excel 예제의 스크린 샷입니다. 굵게 표시된 날짜는 내가 입력 한 미래의 임의 날짜입니다. B 열의 굵은 체 값은 Excel의 기하 급수 회귀 분석에 의해 계산 된 외삽 된 값입니다. 여기에 이미지 설명을 입력하십시오

EDIT2 : 좋습니다. "어떤 기술을 사용할 수 있습니까?"

  • 지수 회귀
  • 홀트의 방법
  • 겨울의 방법
  • 아리마

각각에 대한 약간의 소개는이 페이지를 참조하십시오 : http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


이것은 자신을 물어 저를 인도 : 어떤 있습니다 내 데이터 포인트는? 단 한 번의 구매가 아니라 그 사이에 시간이 얼마나 걸리고 주어진 리소스의 총 소비량을 고려하지 않습니다. 아마도 일정한 간격 (예 : 주당 수량)으로 평균을 구한 다음 미래 데이터를 추정하기 위해 시계열 데이터 입력으로 사용해야합니까?

시간의 차이를 플롯의 'x'값의 차이로 생각하십시오. 대부분의 회귀 분석 유형에는 다양한 차이가 고려됩니다. 지수 회귀를 사용하는 Excel에서 GROWTH 함수를 사용하여 샘플 데이터를 사용해보십시오. 날짜를 변경하면 예상 값이 변경됩니다.

3

댓글로 시작하여 너무 오래 성장했습니다 ...

정기적으로 '표본'되지 않으므로 시계열 데이터로 적합하지 않다고 생각합니다.

이것은 잘못된 결론입니다-확실히 시계열입니다. 시계열은 불규칙적으로 샘플링 될 수 있으며 일반적인 경우와는 다른 방식을 요구하는 경향이 있습니다.

이 문제는 댐 수준과 같은 확률 적 문제와 관련이있는 것으로 보입니다 (물은 일반적으로 시간이 지남에 따라 상당히 안정적인 속도로 사용되며, 때로는 다소 빠르게 증가 또는 감소하는 반면 다른 시간에는 상당히 안정적 임). 강우량이 발생할 때 급격히 증가합니다. 종이 사용량 및 보충 패턴은 다소 유사 할 수 있지만 (주문 된 양은 강우량보다 훨씬 더 안정적이고 훨씬 더 많은 수로 나타날 수 있으며, 레벨이 낮아질 때마다 발생합니다).

또한 보험 회사 자본과 관련이 있지만 초기 자본, 보험료로 인한 돈 (순 운영 비용) 및 투자는 상당히 꾸준히 이루어지며 (때로는 다소) 보험 정책 지불은 비교적 큰 경향이 있습니다 금액.

이 두 가지가 모델링되었으며이 문제에 대한 약간의 통찰력을 제공 할 수 있습니다.


-1

WEKA를 살펴 봐야합니다. 이 도구는 일련의 기계 학습 알고리즘을 갖춘 도구 및 Java API입니다. 특히 분류 알고리즘을 찾아야합니다.

행운을 빕니다


분류 알고리즘은 어떻게 정량적 예측을 제공합니까?

@ Luke404 : Weka에는 3 가지 유형의 알고리즘 (분류, 클러스터링 및 연관 마이닝)이 있으며 회귀를 분류 섹션에 넣기로 결정했습니다. 그러나 일반적으로 당신은 옳습니다. 분류와 정량적 예측은 약간 다릅니다.
ffriend

-1

선형 최소 제곱 을 사용 하여 모델을 누적 소비량에 맞 춥니 다 (예 : 날짜 별 총 페이지 수). 초기 가정은 1 차 다항식을 사용하는 것입니다. 그러나 잔차는 1 차도가 예제의 데이터에 적합하지 않다는 므로 다음 논리 단계는 2 차 (즉 2 차) 적합치로 늘리는 것입니다. 이것은 잔차의 곡률을 제거하고, 제곱 항에 대한 약간의 음의 계수는 시간이 지남에 따라 소비율이 감소하고 있음을 의미합니다. 이는 대부분의 사람들이 시간이 지남에 따라 더 적은 용지를 사용하는 경향이 있다는 점에서 직관적입니다. 이 데이터의 경우 초과 피팅을 시작하고 결과 외삽이 의미가 없을 수 있으므로 2도 이상으로 넘어갈 필요는 없다고 생각합니다.

아래 그림에서 적합치 (외삽 포함)와 잔차를 볼 수 있습니다.

적당한 잔여

가능하면 부트 스트랩 을 수행 하여 예측 오류를 더 잘 추정하는 것이 좋습니다.


누적 소비의 잔차는 서로 밀접하게 관련 되어 있기 때문에이 방법은 통계적으로 정당화되지 않습니다. 2 차 적합 법을 사용하면이 근본적인 문제에 대한 논문 만 작성됩니다. 치료할 수 없습니다.
whuber

-2

나는 당신이 운영 연구를 사용하여 데이터를 얻을 수 있다고 생각합니다 .

시간당 사용되는 용지의 양, 용지 사용자 등을 변수로하는 방정식을 찾지 않으시겠습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.