랜덤 포레스트 모델로부터의 예측을 설명하는 방법이 있습니까?


11

임의 포리스트 (R의 randomForest 패키지 사용)를 기반으로 예측 분류 모델이 있다고 가정합니다. 최종 사용자가 예측을 생성 할 항목을 지정할 수 있도록 설정하고 분류 가능성을 출력하려고합니다. 지금까지 아무런 문제가 없습니다.

그러나 변수 중요도 그래프와 같은 것을 출력 할 수 있지만 훈련 세트가 아닌 특정 항목에 대해 예측할 수 있으면 유용하고 멋집니다. 다음과 같은 것 :

항목 X는 개일 것으로 예상됩니다 (73 % 가능성)
:
다리 = 4
호흡 = 나쁜
털 = 짧은
음식 = 불쾌한

당신은 요점을 얻습니다. 훈련 된 임의의 포리스트에서이 정보를 추출하는 표준 또는 적어도 정당화 가능한 방법이 있습니까? 그렇다면 randomForest 패키지 에서이 작업을 수행하는 코드가 있습니까?


약간의 복잡성 ... Legs 변수가 결정 경로에 포함 된 횟수를 계산하는 것을 상상할 수 있습니다. 그러나 대다수의 대답을 예측 한 나무 또는 모두를 위해 그렇게 하시겠습니까? 아니면 차이점?
Harlan

모든 m예측 변수를 하나씩 변경 하고 포리스트가 어떻게 다르게 예측하는지 살펴 보는 것은 다소 비싸 보입니다. 더 좋은 방법이 있습니다.
Harlan

내 첫 번째 생각은 당신이하고 싶은 것이 훈련 데이터의 가변적 중요성과 어떻게 다른지 궁금해하는 것입니다. 다른 값이있는 경우 다리 = 4 대 다리 = 2 또는 다리 = 0에 대한 예측의 민감도는 어떻습니까? randomforest 패키지에서 부분 플롯 기능을 보았습니까?
B_Miner

변수의 중요성은 일반적으로 전체 훈련 세트 (또는 가정 된 인구 등)에 따라 조건부로 정의됩니다. 그러나 내가 원하는 것은 단일 예측 항목 의 변수 중요성입니다 . 숲이 매우 일방적 인 결정 트리로 구성된 경우를 상상해보십시오. 테스트 인스턴스 1은 1 또는 아주 적은 의사 결정 노드로 설명 될 수있는 반면 테스트 인스턴스 2는 훨씬 더 큰 의사 결정 노드 세트로 설명 될 수 있습니다. 나는 결정 가능한 일련의 의사 결정과 같이 내가 이해할 수있는 상위 5 가지 인간 해석 가능한 버전을 원합니다. 단일 의사 결정 트리의 경우, 나는 그것들을 읽었습니다.
Harlan

답변:


3

첫 번째 아이디어는 변수 중요도에서 녹아웃 전략을 모방하고 각 속성을 혼합하여 객체 분류 (OOB 및 일부 반복)에서 포리스트 신뢰를 어떻게 저하시키는 지 테스트하는 것입니다. 이를 위해서는 약간의 코딩이 필요하지만 확실히 달성 할 수 있습니다.

그러나 나는 그것이 나쁜 생각이라고 생각합니다. 결과는 아마도 지옥 (객체에 대한 평균의 영향을 안정화시키지 않고), 시끄러운 (그렇지 않은 객체의 경우 말도 안되는 속성이 큰 영향을 줄 수 있음)과 같이 변할 것입니다. 해석 (두 개 이상의 속성 협력 규칙이 각 기여 속성에 임의의 영향을 줄 수 있음).

부정적인 대답을 남기지 않기 위해 근접 매트릭스와 그것이 공개 할 수있는 가능한 원형을 보려고합니다. 훨씬 안정적이고 간단 해 보입니다.


협동 규칙 / 상관 예측 변수는 훌륭한 비판입니다. 이 작업을 수행하려면 미리 줄어든 변수 집합에 대해 RF를 훈련 시키거나 RF가 예측 변수의 하위 집합에 집중하도록하는 일종의 벌점 전략을 통합해야 할 수 있습니다.
Harlan

0

나는 라임 프레임 워크로 시도 할 것 입니다.

많은 모델 (임의의 포리스트 포함)에서 작동합니다. 그것은 사용할 수 있습니다 지방 해석 (하나의 예측을 설명입니다,) 또는 대한 글로벌 해석 (전체 모델을 설명한다).

asbtract에서 인용

이 연구에서는 예측 주위의 해석 가능한 모델을 학습함으로써 해석자 및 충실한 방식으로 분류 자의 예측을 설명하는 새로운 설명 기법 인 LIME을 제안합니다. 또한 대표 개별 예측과 설명을 비 중복 방식으로 제시하여 과제를 하위 모듈 식 최적화 문제로 구성함으로써 모델을 설명하는 방법을 제안합니다.

Rpython 용 패키지가 있으며 Google의 경우 많은 예제가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.