블랙 박스 비선형 모델의 예측에 대한 다른 입력의 중요성을 어떻게 시각화 할 수 있습니까?


9

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

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

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

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

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


1
당신은 무엇으로 끝나게 되었습니까? 또한 "한 예측 변수를 제외한 모든 값을 0으로 설정"-0이 아닌 현재 최상의 값 주위의 기울기를 원하지 않습니까?
8:26에

답변:


4

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

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

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


환상적입니다! 내가 가지고있는 다른 곳 에서이 문제에 도움이 될 매우 유용한 참조 자료.
Bogdanovist

2

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

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


1
먼저 기능의 중요도를 계산하는 것이 도움이 될 수 있다고 생각했지만 결국 특정 인스턴스에 대해 예측 된 값을 설명 할 때는 비교적 좋지 않은 접근 방식입니다. 기능 중요성은 인간 전문가에게 모호한 힌트 만 제공합니다.
steffen


가변 중요도 측정의 문제점은 특정 경우에 실제로 중요한 것이 무엇인지 알려주지 않고 평균적으로 전체 데이터 세트에 적용된다는 것입니다.
Bogdanovist

실제로 이것은 모델 독립적 인 접근 방식이라고 생각하며 실제로 임의의 포리스트 이외의 다른 분류 자에 적용 할 수 있습니다. Breiman의 웹 사이트에는 단일 사례에 대한 변수 중요도를 계산하는 방법에 대한 미묘한 언급이 있습니다. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (마지막 문장) 나는 이것이 아직 광범위하게 연구되지 않았거나 적어도 광범위하게 테스트되지 않았다고 생각합니다. 평균 변수의 중요성이 항상 원하는 것은 아닙니다. 예를 들어 의사가 한 사례에 대한 결정을 내 리도록 도와주는 것은 아닙니다. 이것은 정말 흥미로운 주제입니다.
시몬

Breiman이 로지스틱 회귀 분석에 대한이 방법에 대해 논의하는 흥미로운 논문이 있습니다 : "통계 모델링 : 두 문화". 잘 읽었습니다. 내가 가장 좋아하는 문장은 다음과 같습니다. "변수 중요도에 대한 나의 정의는 예측을 기반으로합니다. 변수를 삭제하면 예측 정확도에 심각하게 영향을 미치는 경우 변수가 중요하다고 간주 될 수 있습니다." 이 문장은 사용할 수있는 분류기에 적용됩니다.
시몬
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.