2016-11-20 7 views
3

Я пытаюсь понять это из не байесовского фона.Прогнозирование по выведенным параметрам в pymc3

В инструментах обучения линейной регрессии или черных ящиков рабочий процесс выглядит следующим образом.

  1. Получить данные
  2. подготавливают данные
  3. модели данных (извлечь из него [или его части, подготовка набора])
  4. испытания модели (как правило, на тестовом наборе)
  5. Если модель хорош в соответствии с некоторыми показателями, goto 6, else
    исследовать и пересматривать работу.
  6. Модель достаточно хороша; использовать его для прогнозирования/классификации и т. д.

Итак, скажем, я использую pymc3, чтобы попытаться понять взаимосвязь между расходами на рекламу и выручкой от проданных товаров. Если все этапы от 1 до 5 идут хорошо, то в частых статистических данных, используемых в R и машинных пакетах обучения, таких как scikit-learn, мне нужно только передать новые невидимые данные в изученную модель и вызвать метод прогнозирования. Обычно это печатает прогнозируемое значение Y (выручка от проданных товаров), учитывая некоторые невидимые значения X (рекламные расходы), с некоторыми доверительными интервалами или некоторой другой погрешностью, которые все еще принимаются во внимание.

Как можно было бы это сделать в pymc3? Если в итоге у меня будет много склонов и много бета, то что я должен использовать для прогнозирования? И не будет означать, что все склоны и все бета-версии должны быть похожими на то, чтобы отбросить много полезных полезных знаний?

Я нахожу, если трудно понять, как помощь в этом может помочь выборка из заднего. Можно представить себе, что боссы, которым нужно рассказать о ожидаемой выручке от проданных товаров, фигурируют с учетом некоторых расходов на рекламу X, с некоторой достоверностью и ошибкой. Помимо заговора, я не знаю, как выборка из задней части может быть включена в отчет управления и сделать ее полезной для планирования движения денежных средств заинтересованными сторонами.

Я знаю, что некоторые из нас испорчены, исходя из R и, возможно, scikit-learn, но было бы неплохо, если бы был метод прогнозирования, который касался этого вопроса более унифицированным и стандартизованным способом?

Благодаря

ответ

2

Одним из способов учета неопределенности в параметрах при прогнозировании с помощью модели является использование posterior predictive distribution. Это распределение сообщает вам вероятность нового наблюдения, обусловленного данными, которые вы использовали для ограничения параметров модели. Если доход Y, то расходы на рекламу является X, параметры модели тета и данные, используемые для ограничения модели X», то вы можете написать

Левая вероятность получая доход Y с учетом расхода X и данные, используемые для ограничения модели X '. Это последующее прогностическое распределение вашей модели и должно использоваться при прогнозировании. p (Y | X, theta) - вероятность дохода Y при заданном наборе параметров модели theta, а расход X. p (theta | X ') - это последующее распределение по параметрам модели, учитывая данные, которые вы использовали для ограничения модель.

При использовании программного обеспечения, такого как pymc3, вы получаете образцы из p (theta | X ').Вы можете использовать их, чтобы сделать интеграл выше в стиле Монте-Карло. Если у вас есть N выборок из задней в вашей цепи MCMC, то вы можете сделать на сумму

другими словами, Вы можете вычислить P (Y | X, theta_n) для каждого набора параметров в вашем MCMC , а затем возьмите среднее значение (обратите внимание, что это не то же самое, что «принимать среднее значение всех склонов и всех бета-версий», как вы упомянули в своем вопросе, потому что вы вычисляете среднее значение pdf, а не самих параметров). На практике это должно быть легко кодировать, вам просто нужно реализовать функцию p (Y | X, theta), а затем подключить ваши образцы задних параметров, а затем взять среднее значение в конце. Это дает вам самое прекрасное представление вашего прогноза модели с учетом выборки MCMC.