Ответ 1
Я признаюсь, я не специалист по статистике. Но раньше я сталкивался с такими проблемами. На самом деле мы говорим о том, что у вас есть некоторые наблюдаемые дискретные события, и вы хотите выяснить, насколько вероятно, что вы увидите их в любой момент времени. Проблема заключается в том, что вы хотите взять дискретные данные и сделать из него непрерывные данные.
Термин, который приходит на ум, - это оценка плотности. В частности, оценка плотности ядра. Вы можете получить некоторые из результатов оценки плотности ядра путем простого биннинга (например, подсчитать количество событий за промежуток времени, например, каждый четверть часа или час.) Оценка плотности ядра имеет несколько более качественные статистические свойства, чем простое бининг. (Полученные данные часто "более плавные".)
Это только позаботится об одной из ваших проблем. Следующая проблема по-прежнему гораздо интереснее: как вы берете временную строку данных (в данном случае, только данные принтера) и вывели из нее прогноз? Первое, что вам нужно, - это то, как вы настроили проблему, возможно, не то, что вы ищете. Хотя идея чуда о наличии ограниченного источника данных и прогнозировании следующего шага этого источника кажется привлекательной, гораздо более практично интегрировать больше источников данных для создания фактического предсказания. (например, может быть, принтеры сильно ударятся сразу после того, как в некоторых компаниях может быть очень сложно предсказать активность в телефоне). Netflix Challenge - довольно сильный пример этого момента.
Конечно, проблема с большим количеством источников данных заключается в том, что есть дополнительные возможности для создания систем, которые собирают данные.
Честно говоря, я бы назвал эту проблему специфичной для домена и использовал два подхода: находить зависящие от времени шаблоны и находить зависящие от времени шаблоны.
Примером временного шаблона будет то, что каждый будний день в 4:30 Сьюзи распечатывает свой отчет о конце дня. Это происходит в определенное время каждый день недели. Такие вещи легко обнаружить с фиксированными интервалами. (Каждый день, каждую неделю, каждый выходной день, каждый вторник, каждый 1-й месяц и т.д.). Это чрезвычайно просто для обнаружения с заранее определенными интервалами - просто создайте кривую оценочной функции плотности вероятности, которая одна неделя долгое время и вернуться во времени и усреднить кривые (возможно, средневзвешенное значение с помощью функции окна для лучшего прогноза).
Если вы хотите стать более сложным, найдите способ автоматизировать обнаружение таких интервалов. (Вероятно, данные не были бы настолько ошеломляющими, что вы могли бы просто грубо заставить это.)
Пример независимой от времени шаблона заключается в том, что каждый раз, когда Майк в бухгалтерском учете распечатывает лист списков счетов, он переходит к Джонатану, который через несколько часов печатает довольно большую партию полных счетов-фактур. Такие вещи сложнее обнаружить, потому что это более бесплатная форма. Я рекомендую смотреть различные промежутки времени (например, 30 секунд, 40 секунд, 50 секунд, 1 минута, 1,2 минуты, 1,5 минуты, 1,7 минуты, 2 минуты, 3 минуты,... 1 час, 2 часа, 3 часа,....) и подвыразить их с помощью красивого способа (например, повторная выборка Lanczos) для создания вектора. Затем используйте алгоритм стиля vector-quantization, чтобы классифицировать "интересные" шаблоны. Вам нужно будет тщательно подумать о том, как вы будете иметь дело с определенностью категорий, хотя, если ваша результирующая категория имеет очень мало данных в ней, она, вероятно, не является надежной. (Некоторые алгоритмы векторного квантования лучше, чем другие.)
Затем, чтобы создать прогноз относительно вероятности печати чего-либо в будущем, найдите самые последние интервалы активности (30 секунд, 40 секунд, 50 секунд, 1 минута и все остальные интервалы) с помощью векторного квантования и взвешивают результаты на основе их уверенности в создании средневзвешенного прогноза.
Вы хотите найти хороший способ измерить определенность зависимых от времени и независимых по времени выходов для создания окончательной оценки.
Подобная ситуация типична для схем интеллектуального сжатия данных. Я рекомендую вам взглянуть на PAQ, так как у него появилось много концепций, которые я здесь рассмотрел, и могу предоставить очень интересную информацию, Исходный код даже доступен вместе с отличной документацией по используемым алгоритмам.
Вы можете использовать совершенно иной подход от векторного квантования и дискретировать данные и использовать что-то более похожее на схему PPM. Это может быть намного проще реализовать и по-прежнему эффективно.
Я не знаю, каковы временные рамки или масштаб этого проекта, но такого рода вещи всегда можно отнести к N-й степени. Если у вас есть крайний срок, я хотел бы подчеркнуть, что вы беспокоитесь о том, чтобы сначала начать что-то, а затем заставить его работать хорошо. Что-то не оптимальное лучше, чем ничего.
Этот проект круто. Этот проект может помочь вам в работе, если вы закончите правильно. Я бы рекомендовал вам не торопиться, сделать это правильно и опубликовать его как функцию, с открытым исходным кодом, полезное программное обеспечение. Я настоятельно рекомендую использовать открытый исходный код, так как вы захотите создать сообщество, которое может предоставить поставщикам источников данных в других средах, к которым у вас есть доступ, для поддержки или времени для поддержки.
Удачи!