PCA 및 임의 포리스트


12

최근의 Kaggle 경쟁을 위해, 나는 (수동으로) 내 훈련 세트에 대해 10 개의 추가 기능을 정의했으며,이 기능은 임의의 숲 분류기를 훈련시키는 데 사용됩니다. 새로운 기능으로 데이터 세트에서 PCA를 실행하여 서로 비교하는 방법을 확인하기로 결정했습니다. 분산의 ~ 98 %가 첫 번째 성분 (첫 번째 고유 벡터)에 의해 전달됨을 발견했습니다. 그런 다음 분류기를 여러 번 훈련하여 한 번에 하나의 기능을 추가하고 교차 유효성 검사 및 RMS 오류를 사용하여 분류 품질을 비교했습니다. 나는 각각의 추가 기능으로 분류가 개선되었으며 최종 결과 (모든 10 개의 새로운 기능 포함)가 첫 번째 실행 (예 : 2 기능)보다 훨씬 우수하다는 것을 알았습니다.

  • PCA가 분산의 ~ 98 %가 내 데이터 세트의 첫 번째 구성 요소에 있다고 주장한 경우 분류의 품질이 왜 그렇게 많이 향상 되었습니까?

  • 다른 분류 자에게도 해당됩니까? RF는 여러 코어에 걸쳐 확장되므로 SVM보다 학습 속도가 훨씬 빠릅니다.

  • 데이터 세트를 "PCA"공간으로 변환하고 변환 된 공간에서 분류기를 실행하면 어떻게됩니까? 결과가 어떻게 바뀔까요?


2
PCA를 실행하기 전에 데이터를 정규화 했습니까? 만약 내가 당신의 특징 중 하나가 다른 것보다 훨씬 더 큰 규모라고 생각했을 것입니다.
Marc Shivers

1
PCA 기능은 계산을 수행 할 때 모든 것을 자동으로 정규화합니다.
Vishal

1
어쩌면 그것은 나뿐이지만 다음을 분명히 할 수 있습니다. 첫 번째 단계는 한 번에 하나씩 10 개의 원시 기능을 추가하거나 PCA 구성 요소로 직접 작업 했습니까? 언급 한 바와 같이, 이것이 첫 번째 사례라는 것을 이해하고 PCA의 결과를 직접 처리 할 수 ​​있는지 궁금합니다. 두 경우 모두, 새로운 기능을 포함한 모든 변수 또는 그 이후에 PCA를 적용 했습니까?
chl

10 가지 추가 기능을 사용하여 PCA를 원본 매트릭스에 적용했습니다. 그런 다음 한 번에 하나의 기능을 추가하여 분류자를 훈련 시켰으므로 각 기능의 추가로 제공되는 점진적 개선을 측정 할 수있었습니다. 내 질문에 내가 PCA 공간에 (10 개 새로운 기능) 데이터 집합을 변환 한 다음, PCA 공간에서 데이터 세트에 직접 분류를 실행 한 경우 무엇 이었습니까
이씨

답변:


7

예측 모델링을 수행 할 때 피처의 변형이 아니라 반응의 변형을 설명하려고합니다. 하나의 새로운 기능으로 변형 된 많은 기능을 크 래밍하면 전체적으로 기능의 많은 예측 능력을 포착 할 것이라고 믿을 이유가 없습니다.

이것은 부분 최소 제곱 대신에 주성분 회귀의 차이로 설명되는 경우가 많습니다.


"하나의 새로운 기능으로 변형 된 많은 기능을 만들면 전체적으로 기능의 많은 예측 능력을 포착 할 것이라고 믿을 이유가 없습니다." 그것은 결코 요점이 아니며, 이렇게하면 분류가 매우 혼란스러워 질 것입니다! 목표는 일반화 오류를 줄이기 위해 데이터 집합의 다양한 측면을 보여주는 다양한 기능을 갖는 것이 었습니다. PCA를 취한 시점은 기능이 얼마나 다른지 알았습니다. 그리고 게시 지점은 기능이 다르지 않았지만 RF의 결과는 여전히 향상되었다는 것입니다.
Vishal

1
여전히 같은 논리가 적용될 수 있습니다. 새로운 기능은 이전 기능과 매우 유사하며 더 많은 예측력을 가져올 수 있습니다. 특히 randomForest의 경우 : 거의 중복 기능이 일반적으로 중요한 경우 이제 하나 이상의 버전이 분할 후보로 선택 될 가능성이 높습니다.
시어 파크

이것은 후속 질문을 제기합니다. 실제로 분류기를 실행하지 않고 임의의 포리스트 분류기에 대한 기능을 미리 선택하여 분류를 향상시키는 방법은 무엇입니까? 선별 과정이 있습니까? 어떻게합니까? :)
Vishal

유용한 사전 선발 방법을 모릅니다. 와 같은 일부 R 패키지를 통해 중요하고 선택적인 많은 중첩 루프를 수행 할 수 있습니다 Boruta. 나는 그것들도 유용하지 않다. 주어진 기능이 효과가 없다고 믿는 것은 부당합니다. 특정 기능을 다른 기능보다 강조하는 것이 유용 할 수 있다고 생각할 수 있지만 기본 randomForest 알고리즘은 이미 이것을 잘 수행합니다. 모델링에 깊이 빠져 있고 더 많은 성능을 원한다면 randomForest를 사용하여 다른 알고리즘을 부스트 트리로 쌓아 두는 것이 좋습니다.
시어 파크

1
당신은 당신의 특징 (Jeffries-Matusita distance, Divergence 등)에 기초하여 당신의 클래스에 대한 분리 성 측정을 우선적으로 계산할 수 있습니다. 클래스를 구별하는 데 도움이되는 기능을 일반적으로 파악하는 데 도움이 될 수 있지만 RF의 작동으로 인해 분류에 가장 적합한 기능을 제공하는 기능을 선택하기가 쉽지 않습니다. 여기서 한 가지 분명한 장애물은 RF가 자체적으로 다양한 상호 작용을 찾는다는 것입니다.
JEquihua

6

첫 번째 주요 구성 요소는 모든 기능의 선형 조합입니다. 거의 모든 변동성을 설명한다는 사실은 첫 번째 주성분의 변수 계수가 대부분 중요하다는 것을 의미합니다.

이제 생성하는 분류 트리도 약간 다른 동물입니다. 분류하려는 범주를 가장 잘 구분하는 연속 변수에서 이진 분할을 수행합니다. 그것은 가장 큰 분산 방향을 제공하는 연속 변수의 직교 선형 조합을 찾는 것과 정확히 동일하지 않습니다. 실제로 우리는 최근 PCA가 클러스터 분석에 사용 된 CV에 관한 논문을 논의했으며 저자는 첫 번째 주요 구성 요소가 아니라 마지막 구성 요소에서 최상의 분리가 발견되는 상황이 있음을 발견했습니다.


3
"사실 PCA가있는 CV에 관한 논문을 최근에 논의했습니다"링크가 있습니까? 나는 매우 관심이있다 :)
user603

나는 토론을 찾을 것이다.
Michael R. Chernick

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