임의 포리스트를 사용한 기능 선택


16

나는 주로 재정적 변수가 많은 데이터 세트 (120 가지 특징, 4k 예제)를 가지고 있으며 상관 관계가 높고 소음이 심합니다 (예 : 기술 지표). 나중에 모델 훈련 (이진 분류)과 함께 사용하기 위해 최대 20-30을 선택하고 싶습니다. - 증가 감소).

기능 순위에 임의 포리스트를 사용하려고 생각했습니다. 재귀 적으로 사용하는 것이 좋습니다? 예를 들어, 첫 번째 라운드에서 원하는 수의 기능을 얻을 때까지 최악의 20 %, 두 번째 등을 떨어 뜨립니다. RF와 교차 검증을 사용해야합니까? (CV를 사용하지 않는 것은 직관적입니다. RF가 이미하는 일과 거의 비슷하기 때문입니다.)

또한 임의의 포리스트를 사용하는 경우 기능 중요도를 얻기 위해 실제 증가 / 감소를 위해 이진 또는 회귀의 분류기로 사용해야합니까?

그런데 기능 선택 후 시도하려는 모델은 SVM, 신경망, 로컬 가중치 회귀 및 임의 포리스트입니다. 나는 주로 파이썬에서 일하고 있습니다.


2
교환 통찰력에 연결하고 싶습니다. 내가 뭔가 비슷한 작업입니다
user670186

아무도 그냥 사용하도록 제안하지 어떤 이유가 built-in의 속성 RandomForestClassifier 에서 sklearn전화가 feature_importances_....? 링크에서 볼 수 있습니다.
Candic3

multicollinearity기능 중요도 및 기능 선택이 왜곡 될 수 있으므로 주의하십시오 . 여기를
Candic3

기본 알고리즘에주의하십시오 : parrt.cs.usfca.edu/doc/rf-importance/index.html
Tim

답변:


12

기능 선택을 위해서는 스코어링 기능스코어링 기능 을 최적화하기 위한 검색 방법 이 필요합니다.

관련 중요도 점수를 정의한 경우 RF를 기능 순위 방법으로 사용할 수 있습니다. RF는 대체 방법으로 랜덤을 기반으로 기능을 선택하고 모든 서브 세트를 별도의 서브 스페이스 (랜덤 서브 스페이스라고 함)로 그룹화합니다. 중요한 하나의 스코어링 기능은 임의의 하위 공간에있는 모든 기능에 대해 모든 트리의 정확도를 할당하는 것을 기반으로 할 수 있습니다. 그런 다음 모든 별도의 트리에 대해이 작업을 수행합니다. 부분 공간을 생성하는 소스는 무작위이므로 중요도 점수를 계산하기위한 임계 값을 지정할 수 있습니다.

요약:

1 단계 : 기능 X2가 나무의 25 %에 나타나면 점수를 매 깁니다. 그렇지 않으면 기능에 대한 충분한 정보가 없으므로 기능 순위를 고려하지 마십시오.

2 단계 : 이제 X2가 나타나는 모든 트리의 성능 점수를 X2에 할당하고 점수를 평균합니다. 예를 들면 다음과 같습니다. perf (Tree1) = 0.85 perf (Tree2) = 0.70 perf (Tree3) = 0.30

그런 다음 기능 X2 = (0.85 + 0.70 + 0.30) / 3 = 0.6167의 중요성

의사 결정 트리에 기능의 분할 깊이 또는 정보 획득 값을 포함시켜보다 고급 설정을 고려할 수 있습니다. 의사 결정 트리 및 RF를 기반으로 스코어링 기능을 설계하는 방법에는 여러 가지가 있습니다.

검색 방법과 관련 하여 재귀 방법은 최상위 순위를 선택하는 방법으로 합리적입니다.

마지막으로, 두 기능 모두 성능 점수를 제공하므로 기능 선택시 RF를 분류기 또는 회귀 모델로 사용할 수 있습니다. 점수는 OOB (Out-of-Bag) OOB 샘플을 기반으로하기 때문에 표시되며 더 간단한 설정에서는 교차 검증을 고려하지 않을 수 있습니다.


입력 주셔서 감사합니다. 그것을 지적하고 싶었다 (0.85+0.70+0.30)/3 = 0.6167.
Hendy

5
파이썬으로 작업하는 경우 임의 포리스트를 호출 할 때 sklearn에서 계산 된 변수 중요도를 직접 사용할 수 있습니다.
스크래치

5

나는 주로 재정적 변수가 많은 데이터 세트 (120 가지 특징, 4k 예제)를 가지고 있으며 상관 관계가 높고 소음이 심합니다 (예 : 기술 지표). 나중에 모델 훈련 (이진 분류)과 함께 사용하기 위해 최대 20-30을 선택하고 싶습니다. - 증가 감소).

4k 예제는 매우 복잡한 것을 추정하기에는 충분하지 않습니다. 가능한 가장 간단한 모델 (선형 / 물류 회귀, 선형 svm)과 적은 수의 변수를 사용해야합니다.

데이터가 시끄럽고 상관 관계가있는 경우 PCA는 아마도 가장 좋은 방법 일 것입니다. [개별 지표에 대해 평균화 된 공통 신호를 효과적으로 식별합니다]

L2 정규화 (선형 모델의 경우)는 노이즈를 평균화하는 데 도움이됩니다 (예 : 동일한 신호의 노이즈가 많은 사본이있는 경우 l2 정규화는 가중치를 동일하게 권장합니다 (n 개의 변수 평균).

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