랜덤 포레스트 : 변수가 중요하다는 것을 알고 있다면


12

임의의 포리스트가 무작위로 mtry 변수를 선택하여 각 의사 결정 트리를 작성한다는 것을 이해합니다. 따라서 mtry = ncol / 3 인 경우 각 변수는 평균적으로 나무의 1/3에서 사용됩니다. 그리고 나무의 2/3는 그것을 사용하지 않을 것입니다.

그러나 단일 변수가 매우 중요하다는 것을 알고 있다면 각 트리에서이 변수를 선택할 확률을 수동으로 높이는 것이 좋을까요? R의 randomForest 패키지로 실현 가능합니까?

답변:


6

참고 mtry을각 분할에서 후보로 무작위로 샘플링 된 변수의 수입니다. 그리고이 후보들 중에서 가장 좋은 것이 분리를 수행하도록 선택됩니다. 따라서 언급 한 비율이 완전히 만족스럽지 않습니다. 더 중요한 변수가 더 자주 나타나고 덜 중요해집니다. 따라서 변수가 실제로 매우 중요한 경우 트리에서 선택 될 가능성이 높으며 수동 수정이 필요하지 않습니다. 그러나 때로는 회귀에서 변수의 존재를 중요하게 생각할 수있는 경우가 있습니다. 내가 아는 한 R 패키지 임의 포리스트는 이러한 가능성을 지원하지 않습니다. 그러나이 변수에 다른 변수와의 상관 관계가없는 경우이 변수를 단일 용어로 일반 회귀 분석 한 다음이 일반 회귀의 잔차에 대해 임의의 포리스트 회귀 분석을 실행할 수 있습니다. 미리 지정된 변수를 선택할 가능성을 여전히 수정하려면 다음 컴파일시 소스 코드를 수정하는 것이 좋습니다.


2
대상 함수에 알맞은 근사값을 얻기 위해 n 개의 나무가 필요하지만 변수의 중요성을 찾고 있다면 포리스트에서 5 * n 또는 10 * n 나무와 같은 것을 설정할 수 있습니다. "적합 오류"가 아니라 변수 중요도의 변화에 ​​따라 더 많이 수렴됩니다.
EngrStudent

5

2015 년 6 월부터 'ranger'라고하는 R-CRAN의 새로운 유망한 RF 알고리즘에이 기능이 있습니다. 또, 불통으로되고 split.select.weights : "숫자 벡터를 0과 1 사이의 가중치를, 분할을위한 변수를 선택하는 확률을 나타내는."

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