블랙 박스 비선형 모델의 예측에 대한 다른 입력의 중요성을 어떻게 시각화 할 수 있습니까? 값으로 표시되는 이벤트에 의해 때로는

내 조직에서 수행되는 예측을 돕기 위해 대화식 예측 도구 (파이썬)를 작성 중입니다. 현재까지 예측 과정은 인간이 주도 해 왔으며, 예측 자들은 자연 신경망의 데이터를 동화하고 학습 된 직감을 사용하여 예측을합니다. 내가 한 장기 예측 검증 및 예측 모델링 연구에서 나는 당신이 기대할 수있는 것을 발견했습니다. 다른 예측 자들은 다른 편견을 보이며, 일부 예측 자의 영향은 과장되어 있고 다른 중요한 예측 자들은 무시되는 것처럼 보이며 일반적으로 예측 성능은 비교적 단순한 경험적 모델에 비해 평범합니다.

예측은 계속 수동으로 진행되지만 예측 자에게 예측 변수의 상대적 효과를 더 잘 정량화 할 수있는 유용한 도구를 만들려고합니다. 도구가 사용자에게 강조 표시되기를 간과하는 계절적 영향과 같은 중요한 효과도 있습니다. 나는 좀 더 경험이 많은 예측 자 (많은 통계에 대한 공식적인 지식이 거의없는)들로부터 모델링 과정에 대한 백래시와 회의론을 기대하고 있으므로 의사 소통은 적어도 중요하고 모델 성능 자체는 예측 정확도를 크게 향상시킵니다.

내가 개발하고있는 모델에는 강력한 자동 회귀 구성 요소가있어 이벤트가 아닌 시간 동안 0에 가까운 일부 예측 변수에서 측정 된 값으로 표시되는 이벤트에 의해 때로는 크게 수정됩니다. 이것은 예측자가 사용하는 정신 모델과 일치합니다. 핵심 부분은 어떤 예측에 대한 자동 회귀 값에서 예측을 이끌어내는 데 가장 큰 영향을 미치는 ‘이벤트’측정을 보여줄 수 있다는 것입니다. 이런 식으로 프로세스를 이미징합니다. 예측자는 최고의 추측 가치를 지니고, 모델은 다른 것을 제안하고 예측자는 그 이유를 묻습니다. 모델은 “여기에서이 예측 변수의 값은 여름의 예측 값을 증가시킵니다. 겨울이면 다른 방향으로 이동할 것입니다. 다른 측정 값이 있음을 알고 있습니다.

이제 모형이 단순한 선형 회귀라고 상상해보십시오. 값에 모델 계수를 곱하고 간단한 막대 차트로 표시하여 이벤트 기반 예측 변수의 상대적 ‘효과’를 표시하는 것을 상상할 수 있습니다. 다른 예측 변수의 모든 막대는 AR 값과의 총 편차를 합하여이 경우 강력한 영향을 미치는 막대를 간결하고 명확하게 보여줍니다.

문제는 예측되는 프로세스가 예측 변수에 높은 비선형 성을 표시하거나 적어도 GLM보다 블랙 박스 비선형 머신 러닝 알고리즘 (랜덤 포레스트 및 GBM)에서 훨씬 더 많은 성공을 거두었다는 것입니다. 이 데이터 세트. 이상적으로는 사용자 경험을 변경하지 않고 ‘후드 하에서’작동하는 모델을 완벽하게 변경할 수 있기를 원하므로 알고리즘 특정 접근법을 사용하지 않고 다양한 측정의 중요성을 간단한 방식으로 보여주는 일반적인 방법이 필요합니다. 현재 접근 방식은 하나의 예측 변수를 제외한 모든 값을 0으로 설정하여 효과를 준 선형화하고 예측 편차를 기록한 다음 모든 예측 변수에 대해 반복하여 결과를 위에서 언급 한 막대 차트에 표시하는 것입니다. 강한 비선형 성이 존재하는 경우에는 이것이 잘 작동하지 않을 수 있습니다.



답변

예측에 대한 예측 변수의 영향을 평가할 수있는 한 가지 방법은 예측 변수에 대한 출력의 기울기를 추정하는 것입니다. 이것은 유한 차분에 의해 각각의 예측 자에 대한 비선형 예측 함수의 부분 도함수를 추정함으로써 수행 될 수있다.

이상적으로는 실제로 관찰 된 테스트 입력에서이 작업을 수행합니다. 예를 들어, 지난 2 일 동안의 모든 테스트 입력에서 추정 기울기의 절대 값을 평균화 할 수 있습니다. 이 평균 기울기의 크기를 사용하여 예측 변수의 중요도를 정렬 할 수 있습니다. (z- 점수 또는 일부 방법으로 적절한 단위를 사용하려면 기울기 추정에주의해야합니다.) 비교 분석을 위해 계절별로 이러한 추정 된 기울기를 저장할 수 있습니다.

David Baehrens 등의 ” 개별 분류 결정을 설명하는 방법 “을 참조하십시오 . 알. 이 아이디어에 대한 자세한 내용은 JMLR에서. 이 논문은 분류를 다루고 있지만 쉽게 회귀로 일반화합니다.


답변

파이썬에서 scikit-learn 모듈 을 사용해 보셨습니까 ?

randomForestClassifier의 기능에 대해 “computer_importance”를 사용할 수 있습니다