피처 선택에 PCA (Principal Component Analysis) 사용


54

저는 기능 선택을 처음 사용했으며 PCA를 사용하여 기능 선택을 수행하는 방법이 궁금합니다. PCA는 정보가없는 입력 변수를 필터링하는 데 사용할 수있는 각 입력 변수에 대한 상대 점수를 계산합니까? 기본적으로 포함 된 정보의 양 또는 차이에 따라 데이터의 원래 기능을 주문할 수 있기를 원합니다.

답변:


75

피처 선택 도구로 PCA를 사용할 때의 기본 아이디어는 계수 ( 부하 ) 의 크기 (절대 값에서 최대 값에서 최소값까지)에 따라 변수를 선택하는 것 입니다. PCA가 (상관 관계가있는) 변수를 원래 변수의 k < p 상관 관계가없는 선형 조합 (프로젝션)으로 바꾸려고한다는 것을 기억할 것입니다 . 당면한 문제에 대해 최적의 k 를 선택하는 방법을 무시합시다 . 이러한 K 개의 주요 구성 요소는 자신의 설명을 통해 분산 중요성에 의해 평가하고, 각각의 변수는 각 구성 요소도 변화에 기여한다. 가장 큰 분산 기준을 사용하는 것은 특징 추출 과 유사합니다.pk<pkk 여기서 주성분은 원래 변수 대신 새로운 기능으로 사용됩니다. 그러나 첫 번째 성분 만 유지하고 절대 계수가 가장 높은 변수를 선택할 수 있습니다. 숫자 j 는 변수 수의 비율 (예를 들어, p 변수 의 상위 10 % 만 유지 ) 또는 고정 컷오프 (예를 들어, 정규화 된 계수에 대한 임계 값을 고려)에 기초 할 수있다. 이 접근법 은 벌점 회귀 (또는 PLS 회귀) 에서 올가미 연산자 와 유사합니다 . j 의 값 이나 보유 할 구성 요소의 수는 분명한 선택이 아닙니다.j<pjpj

PCA 사용의 문제점은 (1) 모든 원래 변수로부터의 측정이 낮은 차원 공간으로의 투영에 사용되며, (2) 선형 관계 만 고려되고, (3) PCA 또는 SVD 기반 방법도 고려된다는 것입니다 단 변량 스크리닝 방법 (t- 검정, 상관 관계 등)으로서 데이터 구조의 잠재적 인 다변량 특성 (예 : 변수 간 고차 상호 작용)을 고려하지 않습니다.

포인트 1에 대해,보다 정교한 선별 방법, 예를 들어 유전자 발현 연구에서 ' 유전자 면도 '에 사용 된 것과 같은 주요 특징 분석 또는 단계적 방법 이 제안되었다 . 또한 스파 스 PCA를 사용하여 결과 변수로드를 기반으로 치수 축소 및 변수 선택을 수행 할 수 있습니다. 포인트 2에 대해, 비선형 관계를 낮은 차원 공간에 포함 해야하는 경우 커널 PCA ( 커널 트릭 사용)를 사용할 수 있습니다. 의사 결정 트리 또는 랜덤 포레스트 알고리즘이 개선되면 포인트 3을 더 잘 해결할 수 있습니다. 후자는 가변 중요성 의 Gini 또는 순열 기반 측정 값을 도출 할 수 있습니다 .

마지막 요점 : 분류 또는 회귀 모델을 적용하기 전에 기능 선택을 수행하려는 경우 전체 프로세스를 교차 검증해야합니다 ( 통계 학습 요소 §7.10.2 또는 Ambroise and McLachlan, 2002 참조 ).


R 솔루션에 관심이있는 것처럼 분류 또는 회귀 컨텍스트에서 데이터 사전 처리 및 변수 선택을위한 많은 편리한 기능을 포함하는 캐럿 패키지를 살펴 보는 것이 좋습니다 .


1
여기에 좋은 정보가 많이 있지만 EFA에 대한 언급이 없다는 것이 놀랍습니다. 요인 분석은 피처 선택 / 차원 축소, PCA는 변수가 서로 관련되지 않도록 데이터를 다시 표현하는 데만 적합한 것으로 생각합니다. 당신이 동의하지 않는 것 같아요?
gung-복직 모니카

3
np

분명히 어렵고 미묘한 문제입니다. 당신이 나보다 그것에 대해 더 많이 알고 있기 때문에, 나는 당신의 의견에 관심이있었습니다. +1, btw.
gung-복직 모니카

2
두 의견. 먼저 kPCA를 요점 2에 대한 하나의 가능한 솔루션으로 언급합니다. 그러나 고유 벡터 / 로딩을 사용할 수없는 경우 kPCA를 기능 선택에 어떻게 사용할 수 있습니까? 그것에 대한 추가 질문이 있으며, 나는 할 수 없다고 주장했습니다 . 둘째, 마지막 단락 이전의 두 번째 문단은 LASSO를 언급 한 경우 회귀 분석에서 피처 선택을 선호하는 (?) 방법으로 많이 개선 할 수 있습니다. 이 글은 여전히 ​​인기가 많으며 많은 질문이 중복되어 닫히므로 가능한 한 훌륭한 답변이 중요합니다!
amoeba는 Reinstate Monica가

@chl, 유익한 답변에 감사드립니다. "첫 번째 구성 요소 만 유지하기로 결정"에 대해 이야기합니다. 왜 첫 번째 컴포넌트 만? 하나의 구성 요소를 사용하면 기능 / 변수의 순위를 쉽게 지정할 수 있습니다. 3과 같은 여러 구성 요소로 어떻게 그렇게 할 수 있습니까? 구성 요소에서 변수의 순위를 어떻게 정합니까? 각 주 구성 요소를 살펴보고 아직 선택하지 않은 기능 집합에서 해당 주 구성 요소에서 가장 큰 로딩 기능을 선택할 수 있다고 가정합니다. 이것들은 다시 숫자 (j) 또는 정규화 된 계수의 임계 값에 의해 선택 될 수 있습니다. 동의하십니까?
Sother

6

N 개의 피처 집합이 주어지면 PCA 분석은 (1) 가장 큰 분산을 갖는 피처의 선형 조합 (첫 번째 PCA 구성 요소), (2) 첫 번째 PCA 구성 요소 등과 직교하는 부분 공간에서 가장 큰 분산을 갖는 선형 조합을 생성합니다. (조합의 계수가 단위 규범을 가진 벡터를 형성한다는 제약 조건 하에서) 최대 분산을 갖는 선형 조합이 "양호한"기능인지 여부는 실제로 예측하려는 대상에 따라 다릅니다. 이러한 이유로 저는 PCA 구성 요소가되고 "좋은"기능은 일반적으로 두 가지 관련이없는 개념이라고 말합니다.


(-1) 이것이 원래의 질문에 어떻게 대답하는지 알 수 없습니다.
amoeba 말한다 Reinstate Monica

-1

PCA에 사용 된 분산은 기본적으로 다차원 엔터티이므로 분산에 따라 피처를 주문할 수 없습니다. 선택한 특정 방향으로 분산을 투영하여 형상을 주문할 수 있습니다 (일반적으로 첫 번째 주요 구성 요소 임). 즉, 형상이 다른 형상보다 분산이 더 큰지 여부는 투영 방향을 선택하는 방법에 따라 다릅니다.


2
이해할 수 없습니다. 각 원래 지형지 물에는 차이가 있으므로 "그 차이에 따라 지형지 물을 정렬" 할 수 있습니다 . 또한, "선택한 특정 방향으로의 차이를 투영하여"주문할 수있는 방법을 이해하지 못합니다. 그게 무슨 뜻 이니?
amoeba는

실제로 분산을 사용하여 기능을 주문할 수 있으며 모든 기능을 함께 처리하는 PCA와 관련이 있습니다.
James LI

투영 정보 : n 개의 피처가있는 경우 방향 벡터는 n 차원 공간의 단위 벡터 일뿐입니다. m 개의 인스턴스 벡터의 투영은 해당 단위 벡터를 가진 인스턴스 벡터의 스케일 곱이며, 결과적으로 차원 벡터가됩니다. 그리고이 m- 차원 벡터의 분산은 선택된 방향으로의 데이터 세트 분산의 "투영"입니다.
James LI

1
-1. 귀하의 답변에있는 세 문장 중 하나가 모두 잘못되었거나 명확하지 않아 오해의 소지가 있다고 생각합니다. 나는 당신이 의견에 쓴 모든 것에 동의하지만, 당신의 대답이 그것을 의미하는 것으로 어떻게 해석 될 수 있는지 전혀 모른다. "차이에 따라 기능을 주문할 수 없습니다"-?? "특정 방향으로 분산을 투영하여 형상 만 주문할 수 있습니다"-?? "기능에 더 많은 차이가 있는지 여부는 ... 의존합니다 ..."-?? 이 모든 것이 잘못되었습니다.
amoeba는

2
나는이 질문이 오래 전에 요청 된 것을 알지 못했다. 그리고 나는 대부분의 응답에 동의합니다. 요점은 : PCA는 기능 선택에 적합하지 않습니다. 여기서 아무도 직접 말하고 싶지 않습니다.
James LI
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.