Який алгоритм може бути використаний для прогнозування використання витратних матеріалів за даними минулих покупок?


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 місяця.

Поки я дізнався, що те, що я шукаю, називається Екстраполяція і не набагато більше :)

Який алгоритм можна використати в такій ситуації?

І який алгоритм, якщо він відрізняється від попереднього, також може скористатися ще деякими точками даних, що дають поточні рівні подачі (наприклад, якщо я знаю, що на XI дату залишилось Y аркушів паперу)?

Будь ласка, відредагуйте питання, заголовок та теги, якщо ви знаєте кращу термінологію для цього.

EDIT: для чого це варто, я спробую це кодувати в python. Я знаю, що існує багато бібліотек, які реалізують більш-менш будь-який алгоритм. У цьому питанні я хотів би вивчити поняття та методи, які можна використати, а фактичну реалізацію можна залишити читачеві як вправу.


1
шановні статистики, я просто хочу повідомити вам, що це питання не залишалося. Я повернусь до цієї конкретної проблеми, як тільки знайду час і мотивацію (читайте: начальник каже мені це зробити) і досліджу ваші дорогоцінні відповіді і врешті позначу одну як прийняту (що для мене буде означати "реально реалізована").
Лука404

Відповіді:


12

Питання стосується норми споживання порівняно з часом. Це вимагає регресії курсу до часу (а не регресу загальної кількості покупок у часі). Екстраполяція здійснюється шляхом побудови лімітів прогнозування майбутніх закупівель.

Можливо кілька моделей. З огляду на переїзд до офісу без паперу (який триває вже близько 25 років :-), ми можемо прийняти експоненціальну модель (зменшення). Результат зображений наступним розсіювачем споживання, на якому намальована експоненціальна крива (встановлена ​​через звичайні найменші квадрати до логарифмів споживання) та її 95% межі прогнозування. Екстраполіровані величини, як очікується, будуть лежати біля лінії та між межами прогнозування з надійністю 95%.

Малюнок

Вертикальна вісь показує сторінки в день у лінійному масштабі. Цілком синя суцільна лінія підходить: вона справді експоненціальна, але надзвичайно близька до лінійності. Ефект експоненціальної прилягання виявляється в смугах прогнозування, які в цій лінійній шкалі асиметрично розміщуються навколо пристосування; в масштабі журналу вони були б симетричними.

Більш точна модель враховує той факт, що інформація про споживання є більш невизначеною протягом коротших періодів часу (або коли загальна кількість покупок менша), що може бути встановлено за допомогою зважених найменших квадратів. Враховуючи мінливість цих даних та грубу рівність розміру всіх покупок, зайвих зусиль не варто.

Цей підхід містить проміжні дані про запаси , які можуть бути використані для інтерполяції норм споживання в проміжні моменти. У такому випадку, оскільки проміжні обсяги споживання можуть суттєво відрізнятися, доцільним буде підхід до найменш зважених квадратів.

Які ваги використовувати? Ми можемо розглянути витрату паперу, яка обов'язково накопичується в цілісних обсягах паперу, як кількість, яка змінюється незалежно від дня на день. Отже, протягом коротких періодів дисперсія підрахунку була б пропорційною тривалості періоду. Відхилення підрахунку за день було б обернено пропорційним тривалості періоду. Отже, ваги повинні бути прямо пропорційними періодам, що минули між запасами. Так, наприклад, споживання 1000 аркушів між 2007-05-10 та 2007-11-11 (приблизно 180 днів) матиме майже п’ять разів більше ваги споживання 1000 аркушів між 2007-11-11 та 2007-12- 18, термін всього 37 днів.

Таке ж зважування може бути розміщене в інтервалах прогнозування. Це призведе до порівняно широких інтервалів прогнозування споживання протягом одного дня порівняно з прогнозуванням споживання протягом, скажімо, трьох місяців.

Зауважте, що ці пропозиції зосереджуються на простих моделях та простих прогнозах, що підходять для передбачуваного програми та очевидною великою мінливістю даних. Якщо прогнози передбачають, скажімо, витрати на оборону для великої країни, ми б хотіли врахувати ще багато пояснювальних змінних, враховувати часову кореляцію та надавати набагато більш детальну інформацію в моделі.


якби дані були вибірені через регулярні проміжки часу, чи було б використання підрахунків на відміну від ставок ?
MannyG

1
@MannyG Так, але тільки тому, що підрахунки були б прямо пропорційними ставкам, а не тому, що було б доцільно використовувати самі рахунки. Необхідність використання тут ставок зрозуміла, коли ми розглядаємо, що насправді означає прогнозувати майбутнє значення: потрібно вказати часовий інтервал передбачуваного споживання. Один, таким чином, передбачає кількість разів, щоб отримати кількість, маючи на увазі, що ця сума повинна бути кількістю в одиницю часу: нормою споживання .
whuber

@whuber Вибачте, але я не можу чітко зрозуміти, які моделі описані у вашій відповіді та в яких точках одна закінчується, а починається інша. У мене є аналогічна проблема, і частини вашої відповіді здаються саме тим, що мені потрібно, але мені потрібно ще трохи вивчити цю справу, і я не можу сказати, прочитавши вашу відповідь, якщо ви говорите про окремі моделі чи певну, що вдосконалюється поступово. Чи існує формальна назва моделі з вагами, які ви описуєте? Чи передбачає ваша перша модель (експоненціальне зниження) ваги? Заздалегідь спасибі.
Агіс

@rensokuken Я описую одну модель і варіацію, яка важить дані. Друга половина цієї відповіді говорить про те, як визначити ваги. Я не знаю жодної формальної назви за межами "найменш зважених квадратів".
whuber

@whuber Я бачу. Спочатку ви описуєте це, а потім, коли додаєте ваги, ви описуєте це , правда? Крім того, чи є у вас ресурси, на які варто звернути увагу, пов'язані з конкретним рішенням і для початківця в прогнозуванні? Дякуємо за роз’яснення.
Агіс

5

Це, безумовно, проблема машинного навчання (я оновив теги у своєму дописі). Швидше за все, це лінійна регресія . Коротше кажучи, лінійна регресія намагається відновити зв'язок між 1 залежною та 1 або більше незалежними змінними. Залежною змінною тут є використання витратних матеріалів . Для незалежних змінних пропоную інтервали часу між покупками. Ви також можете додати більше незалежних змінних, наприклад, кількість людей, які використовували витратні матеріали в кожен момент, або що-небудь інше, що може вплинути на кількість покупок. Ви можете знайти хороший опис лінійної регресії разом з реалізацією в Python тут .

Теоретично також можливо, що на суми впливають не лише часові інтервали між покупками, але й самі моменти часу. Наприклад, чомусь у січні люди можуть захотіти більше паперу, ніж, скажімо, у квітні. У цьому випадку ви не можете використовувати число місяця як самостійну змінну через характер лінійної регресії (число місяця є лише міткою, але буде використовуватися як кількість). Отже, у вас є 2 способи, як це подолати.

По-перше, ви можете додати 12 додаткових змінних , по одній на кожен місяць , і встановити кожну змінну на 1, якщо вона представляє місяць покупки, і 0, якщо вона не є. Потім використовуйте ту ж лінійну регресію.

По-друге, ви можете використовувати більш складний алгоритм, такий як M5 ' , який є сумішшю лінійних регресій та дерев рішень (детальний опис цього алгоритму ви можете знайти в Data Mining: Practical Machine Learning Tools and Techniques ).


Це залежить від того, скільки даних про користувача у вас є. Якщо цілком достатньо (скажімо,> 100 транзакцій понад> 1 рік), ви можете навчити модель для цього конкретного користувача. В іншому випадку загальна модель для всіх користувачів може дати кращі результати. Ви можете використовувати перехресну перевірку для вимірювання ефективності обох підходів.
подруга

5

він не "вибірку" через регулярні проміжки часу, тому я думаю, що він не кваліфікується як дані часових рядів.

Ось ідея про те, як прогнозувати покупки: розгляньте дані як періодичний ряд попиту . Тобто, ви маєте вибірку часових рядів через рівні проміжки часу, але позитивні значення, очевидно, розташовані нерегулярно. Роб Хайндман є приємним документом щодо використання методу Кростона для прогнозування періодичного ряду попиту. Хоча я також багато програмую в Python, ви заощадите багато часу на дослідження, використовуючи метод Кростона, а також інші методи прогнозування часових рядів, які легко доступні у відмінному прогнозі пакета Роб .


1
+1 За пропозицію нової ідеї. Хоча, використовуючи вступ та висновки доповіді Shenstone & Hyndman, напрошується метод Кростона, як правило, не дуже добре: у роботі зосереджено увагу на спробах виправдати та зрозуміти популярну процедуру, яка виявляється обмеженою; найкраще, що автори можуть сказати, це те, що, незважаючи на це, "прогнози ... все ще можуть бути корисними". Крім того, схоже, що ця модель не може вмістити додаткові дані про "поточні рівні поставок", як цього вимагає ОП.
whuber

3

Я впевнений, що ви намагаєтесь зробити аналіз регресії, щоб відповідати лінії до ваших точок даних. Існує безліч інструментів , які допоможуть вам - MS Excel є найбільш доступним. Якщо ви хочете розробити власне рішення, краще уточнити свою статистику ( можливо, тут і тут ). Після того, як ви підберете рядок до своїх даних, ви можете екстраполювати в майбутнє.

EDIT: Ось скріншот прикладу excel, який я згадав у коментарях нижче. Жирними шрифтами дати є випадкові дати в майбутньому, які я вписав у себе. Сміливі значення в колонці B - це екстрапольовані значення, обчислені за ароматом Excel експоненціальної регресії. введіть тут опис зображення

EDIT2: Гаразд, щоб відповісти на запитання: "Які методи я можу використовувати?"

  • експоненціальна регресія (згадана вище)
  • Метод Холта
  • Метод Зимового
  • АРІМА

Перегляньте цю сторінку, щоб ознайомитись з інформацією про кожну сторінку : http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


Це змусило мене запитати себе: що це мої точки даних? не поодинокі закупівлі - це не враховувало б скільки часу проходить між ними, а значить, і загальне споживання даного ресурсу. Можливо, я повинен інтерполювати їх, щоб отримувати середнє значення через рівні проміжки часу (наприклад, кількість на тиждень), а потім використовувати це як введення даних часових рядів для екстраполяції майбутніх даних?

Подумайте про різницю у часі як про різницю ваших значень 'x' на графіку. Більшість видів регресійного аналізу враховують різноманітні відмінності. Спробуйте свої вибіркові дані за допомогою функції GROWTH в Excel, яка використовує експоненціальну регресію. Якщо ви зміните дати, ваші прогнозовані значення відповідно зміняться.

3

Розпочався як коментар, занадто довго рос ...

він не "вибірку" через регулярні проміжки часу, тому я думаю, що він не кваліфікується як дані часових рядів

Це помилковий висновок - це, безумовно, часовий ряд. Часовий ряд може бути нерегулярно відібраний, він просто вимагає відмінності від звичайних підходів, коли він є.

Ця проблема, як видається, пов'язана зі стохастичними проблемами, такими як рівень греблі (вода зазвичай використовується з досить стабільною швидкістю з часом, іноді збільшується або зменшується більш-менш швидко, в інший час досить стабільно), тоді як рівень греблі, як правило, збільшується стрімко (по суті, у стрибках), коли трапляються опади. Шаблони використання та поповнення паперу можуть бути дещо схожими (хоча замовлена ​​кількість може бути набагато стійкішою та в набагато більшій кількості, ніж кількість опадів, і виникати, коли рівень знижується).

Це також пов'язано з капіталом страхової компанії (але видозміненим) - окрім початкового капіталу, гроші від премій (чисті операційні витрати) та інвестиції надходять стабільно (іноді більше чи менше), тоді як виплати страхового полісу, як правило, здійснюються порівняно великими сум.

Обидва ці речі були змодельовані і можуть дати трохи уявлення про цю проблему.


-1

ви повинні подивитися на WEKA. Це інструмент та Java API з набором алгоритмів машинного навчання. Зокрема, слід шукати алгоритми класифікації.

Удачі


Як алгоритм класифікації дасть мені кількісне прогнозування?

@ Luke404: У Weka є 3 типи алгоритмів (класифікація, кластеризація та майнінг асоціацій), і вони вирішили внести регресію в розділ класифікації. Але в цілому ви праві, класифікація та кількісне передбачення - це дещо інші речі.
подруга

-1

Я б використав лінійні найменші квадрати, щоб підходити до моделі до сукупного споживання (тобто загальна кількість сторінок за датою). Початковим припущенням буде використання многочлену першого ступеня. Однак залишки вказують на те, що перша ступінь недоотримує дані у прикладі, тому наступним логічним кроком буде збільшення її до другого ступеня (тобто квадратичного) пристосування. Це знімає кривизну в залишках, і незначно негативний коефіцієнт для прямокутного квадрата означає, що швидкість споживання з часом зменшується, що здається інтуїтивно зрозумілим, враховуючи, що більшість людей, ймовірно, використовують час менше паперу. За цими даними я не думаю, що вам потрібно виходити за межі другого ступеня, оскільки ви можете почати переозброєння, і отримана екстраполяція може не мати сенсу.

Ви можете побачити пристосування (включаючи екстраполяцію) та залишки на графіках нижче.

підходить залишковий

Якщо можете, може бути корисно виконати завантаження, щоб отримати кращу оцінку помилок прогнозування.


Оскільки залишки в кумулятивному споживанні були б сильно корельованими, цей метод не видається статистично обґрунтованим. Використовуючи квадратичну підгонку лише документи щодо цієї основної проблеми; вона не може її вилікувати.
whuber

-2

Я думаю, ви можете отримати свої дані, використовуючи операційні дослідження .

Чому б не спробувати знайти деякі рівняння, які б у якості змінних приймали кількість паперу, використаного за певний проміжок часу, користувачів паперу тощо?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.