Я создаю интерактивный инструмент прогнозирования (на python), чтобы помочь прогнозированию, которое делается в моей организации. До настоящего времени процесс прогнозирования был в значительной степени ориентирован на человека, так как синоптики ассимилировали данные в своих естественных нейронных сетях и использовали свое научное настроение для прогнозирования. Из проведенного мною долгосрочного подтверждения прогноза и прогнозного моделирования я нашел то, что вы могли ожидать; разные прогнозисты демонстрируют разные предубеждения, эффекты некоторых предикторов кажутся завышенными, а другие важные, кажется, игнорируются, и в целом эффективность прогноза посредственная по сравнению с относительно простыми эмпирическими моделями.
Прогнозы по-прежнему будут ручными, но я пытаюсь создать полезный инструмент, который обеспечит прогнозистов лучшей количественной оценкой относительного влияния предикторов. Существуют также важные эффекты, такие как сезонные влияния, которые часто упускаются из виду, и я хотел бы, чтобы инструмент выделил их пользователю. Я ожидаю некоторой негативной реакции и скептицизма в отношении процесса моделирования со стороны некоторых из более «опытных» прогнозистов (многие из которых имеют мало формальных знаний о статистике), поэтому коммуникация по крайней мере так же важна, а сама производительность модели с точки зрения достижение ощутимого улучшения точности прогноза.
Модели, которые я разрабатываю, имеют сильный авторегрессивный компонент, который иногда значительно изменяется в результате событий, которые отображаются в виде измеренных значений в некоторых предикторах, которые во время отсутствия событий близки к нулю. Это согласуется с ментальной моделью, которую используют синоптики. Ключевой частью является возможность продемонстрировать, какие из измерений «события» являются наиболее влиятельными в отклонении прогноза от значения авторегрессии для любого данного прогноза. Я представляю процесс таким образом; предсказатель угадывает их лучшее предположение, модель предлагает другое, и предсказатель спрашивает, почему. Модель отвечает примерно так: «смотрите здесь, это значение этого предиктора увеличивает прогнозное значение летом. Если бы это была зима, она бы пошла в другую сторону. Я знаю, что есть и другие измерения,
Теперь представьте, что модель представляет собой простую линейную регрессию. Можно представить себе отображение относительного «эффекта» предикторов, основанных на событиях, путем умножения значения на коэффициент модели и отображения в виде простой гистограммы. Все столбцы от разных предикторов складываются в общее отклонение от значения AR, и это кратко и ясно показывает те, которые в данном случае оказывают сильное влияние.
Проблема в том, что прогнозируемый процесс демонстрирует высокую степень нелинейности в предикторах, или, по крайней мере, у меня был гораздо больший успех с черными ящиками нелинейных алгоритмов машинного обучения (случайный лес и GBM), чем с GLM для этот набор данных. В идеале я хотел бы иметь возможность беспрепятственно менять модель, работающую «под колпаком» без изменения пользовательского опыта, поэтому мне нужен какой-то общий способ простой демонстрации важности различных измерений без использования какого-либо алгоритмического подхода. Мой текущий подход будет состоять в том, чтобы квазилинейзировать эффекты, устанавливая все значения на ноль, за исключением одного предиктора, записывать прогнозируемое отклонение и затем повторять для всех предикторов, отображая результаты в столбчатой диаграмме, упомянутой выше. При наличии сильной нелинейности это может работать не так хорошо.
источник
Ответы:
Одним из способов оценки влияния предикторов на прогнозы является оценка градиента выходных данных относительно предикторов. Это может быть сделано путем оценки частных производных функции нелинейного предсказания по каждому из предикторов с помощью конечных разностей.
В идеале вы будете делать это на фактически наблюдаемых тестовых входах. Например, вы можете усреднить абсолютные значения оценочных градиентов на всех входах теста за предыдущие 2 дня. Величину этого среднего градиента можно использовать для сортировки важности предикторов. (Вам нужно быть осторожным с оценкой градиента, чтобы использовать соответствующие единицы с помощью z-скоринга или каким-либо другим методом.) Вы можете сохранить эти оценочные градиенты по сезонам для сравнительного анализа.
См. « Как объяснить индивидуальные решения по классификации», David Baehrens et. и др. в JMLR для получения дополнительной информации об этой идее. В статье рассматривается классификация, но также легко обобщается регрессия.
источник
Вы пробовали модуль scikit-learn в python.
Вы можете "computer_importance" для функций его randomForestClassifier
источник