Размышляя о предположительно простой, но интересной проблеме, я хотел бы написать код для прогнозирования расходных материалов, которые мне понадобятся в ближайшем будущем, учитывая полную историю моих предыдущих покупок. Я уверен, что проблема такого рода имеет более общее и хорошо изученное определение (кто-то предположил, что это связано с некоторыми понятиями в системах 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 листов бумаги)?
Пожалуйста, не стесняйтесь редактировать вопрос, заголовок и теги, если вы знаете лучшую терминологию для этого.
РЕДАКТИРОВАТЬ: для чего это стоит, я буду пытаться кодировать это в Python. Я знаю, что есть много библиотек, которые реализуют более или менее любой алгоритм. В этом вопросе я хотел бы изучить концепции и методы, которые можно было бы использовать, а реальную реализацию оставить читателю в качестве упражнения.
Ответы:
Вопрос касается зависимости потребления от времени. Это требует регрессии цены в зависимости от времени ( не регрессии общего количества покупок в зависимости от времени). Экстраполяция достигается путем построения пределов прогнозирования для будущих покупок.
Возможны несколько моделей. Учитывая переезд в безбумажный офис (который продолжается уже около 25 лет :-), мы можем принять экспоненциальную (уменьшающуюся) модель. Результат представлен следующей диаграммой рассеяния потребления, на которой нарисована экспоненциальная кривая (приведенная через обычные наименьшие квадраты к логарифмам потребления) и ее 95% -ые пределы прогнозирования. Ожидается, что экстраполированные значения будут лежать вблизи линии и между пределами прогнозирования с вероятностью 95%.
На вертикальной оси показаны страницы в день в линейном масштабе. Темно-синяя сплошная линия подходит: она действительно экспоненциальная, но очень близка к линейной. Эффект экспоненциальной подгонки появляется в полосах предсказания, которые в этом линейном масштабе расположены асимметрично вокруг подгонки; в логарифмическом масштабе они будут симметричными.
Более точная модель будет учитывать тот факт, что информация о потреблении является более неопределенной в течение более коротких периодов времени (или когда общее количество покупок меньше), что может быть установлено с использованием взвешенных наименьших квадратов. Учитывая изменчивость этих данных и грубое равенство размеров всех покупок, дополнительные усилия не стоят.
Этот подход учитывает промежуточные данные инвентаризации , которые можно использовать для интерполяции норм потребления в промежуточное время. В таком случае, поскольку промежуточные объемы потребления могут значительно различаться, целесообразно использовать метод взвешенных наименьших квадратов.
Какие веса использовать? Мы могли бы рассмотреть потребление бумаги, которое обязательно возрастает в целых количествах бумаги, как число, которое изменяется независимо от дня в день. Таким образом, в течение коротких периодов разница в количестве будет пропорциональна продолжительности периода. Дисперсия счета за день будет обратно пропорциональна длине периода. Следовательно, веса должны быть прямо пропорциональны периодам между запасами. Так, например, потребление 1000 листов в период между 2007-05-10 и 2007-11-11 (около 180 дней) будет почти в пять раз больше веса потребления 1000 листов в период между 2007-11-11 и 2007-12- 18, срок всего 37 дней.
Один и тот же вес может учитываться в интервалах прогнозирования. Это приведет к относительно широким интервалам для прогнозов потребления в течение одного дня по сравнению с прогнозом для потребления в течение, скажем, трех месяцев.
Обратите внимание, что эти предложения сосредоточены на простых моделях и простых предсказаниях, подходящих для предполагаемого применения и очевидной большой изменчивости данных. Если прогнозы включают, скажем, расходы на оборону для большой страны, мы бы хотели учесть гораздо больше объяснительных переменных, учесть временную корреляцию и предоставить гораздо более подробную информацию в модели.
источник
Это определенно проблема машинного обучения (я обновил теги в вашем посте). Скорее всего, это линейная регрессия . Короче говоря, линейная регрессия пытается восстановить связь между 1 зависимой и 1 или более независимыми переменными. Зависимой переменной здесь является использование расходных материалов . Для независимых переменных я предлагаю интервалы времени между покупками. Вы также можете добавить больше независимых переменных, например, количество людей, которые использовали расходные материалы в каждый момент, или что-либо еще, что может повлиять на количество покупок. Вы можете найти хорошее описание линейной регрессии вместе с реализацией на Python здесь .
Теоретически также возможно, что на суммы влияют не только временные интервалы между покупками, но и сами моменты времени. Например, по какой-то причине в январе люди могут захотеть больше бумаги, чем, скажем, в апреле. В этом случае вы не можете использовать номер месяца как самостоятельную переменную из-за характера самой линейной регрессии (номер месяца является просто меткой, но будет использоваться как сумма). Таким образом, у вас есть 2 способа, как это преодолеть.
Во-первых, вы можете добавить 12 дополнительных переменных , по одной на каждый месяц , и установить для каждой переменной значение 1, если оно представляет месяц покупки, и значение 0, если это не так. Затем используйте ту же линейную регрессию.
Во-вторых, вы можете использовать более сложный алгоритм, такой как M5 ' , который представляет собой смесь линейной регрессии и деревьев решений (подробное описание этого алгоритма можно найти в Data Mining: Практические инструменты и методы машинного обучения ).
источник
Вот идея о том, как прогнозировать покупки: рассмотрите данные как прерывистый ряд спроса . То есть у вас есть временные ряды, сэмплированные с регулярными интервалами, но положительные значения явно нерегулярно разнесены. У Роба Хиндмана есть хорошая статья об использовании метода Кростона для прогнозирования прерывистого ряда спроса. В то время я также программировать много в Python, вы сэкономите много времени на разведку с использованием метода Croston, так же , как и другие методы прогнозирования временных рядов, легко доступны в отличном R пакет Роба прогноза .
источник
Я почти уверен, что вы пытаетесь провести некоторый регрессионный анализ, чтобы согласовать линию с вашими точками данных. Есть много инструментов , чтобы помочь вам - MS Excel является наиболее доступным. Если вы хотите найти собственное решение, лучше освежить статистику (возможно, здесь и здесь ). Как только вы подстроите линию под свои данные, вы можете экстраполировать в будущее.
РЕДАКТИРОВАТЬ: Вот скриншот примера Excel, который я упомянул в комментариях ниже. Даты, выделенные жирным шрифтом, - это случайные даты в будущем, которые я напечатал в себе. Значения, выделенные полужирным шрифтом в столбце B, представляют собой экстраполированные значения, рассчитанные с использованием экспоненциальной регрессии Excel.
РЕДАКТИРОВАТЬ 2: Хорошо, чтобы ответить на вопрос: «Какие методы я могу использовать?»
Пожалуйста, смотрите эту страницу для небольшого введения по каждому: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm
источник
Начал как комментарий, вырос слишком долго ...
Это ошибочный вывод - это, безусловно, временные ряды. Временной ряд может быть нерегулярно выбран, он просто требует отличаться от обычных подходов, когда это так.
Эта проблема, по-видимому, связана со стохастическими проблемами, такими как уровни плотины (вода обычно используется с довольно стабильной скоростью во времени, иногда увеличиваясь или уменьшаясь более или менее быстро, в то время как в других случаях она довольно стабильна), в то время как уровни плотины имеют тенденцию только увеличиваться быстро (в основном в прыжках), так как происходит дождь. Схемы использования и пополнения бумаги могут быть несколько схожими (хотя заказанное количество может иметь тенденцию быть гораздо более стабильным и иметь гораздо большее количество чисел, чем количество осадков, и возникать всякий раз, когда уровень становится низким).
Это также относится к капиталу страховой компании (но отчасти наоборот) - помимо начального капитала, деньги от премий (чистые операционные расходы) и инвестиций поступают довольно стабильно (иногда более или менее), в то время как платежи по страховым полисам, как правило, осуществляются в относительно больших объемах. суммы.
Обе эти вещи были смоделированы, и могут дать небольшое представление об этой проблеме.
источник
Вы должны взглянуть на WEKA. Это инструмент и API Java с набором алгоритмов машинного обучения. В частности, вы должны искать алгоритмы классификации.
Удачи
источник
Я бы использовал линейные наименьшие квадраты, чтобы приспособить модель к совокупному потреблению (т. Е. Общее количество страниц по дате). Первоначальным предположением было бы использование полинома первой степени. Однако, остатки указывают, что первая степень не соответствует данным в примере, поэтому следующим логическим шагом будет увеличение их до второй степени (т.е. квадратичной). Это устраняет кривизну остатков, а слегка отрицательный коэффициент для квадрата означает, что скорость потребления уменьшается со временем, что кажется интуитивным, учитывая, что большинство людей, вероятно, склонны использовать меньше бумаги со временем. Для этих данных я не думаю, что вам нужно выходить за рамки подгонки второй степени, поскольку вы можете начать переобучение, и в результате экстраполяция может не иметь смысла.
Вы можете увидеть подгонки (включая экстраполяцию) и остатки на графиках ниже.
Если вы можете, было бы хорошо выполнить начальную загрузку, чтобы получить лучшую оценку ошибок предсказания.
источник
Я думаю, что вы можете получить свои данные, используя исследование операций .
Почему бы вам не попытаться найти некоторые уравнения, которые принимают в качестве переменных количество бумаги, использованной за период времени, пользователей бумаги и т. Д.?
источник