PCA와 열차 / 시험 분할


35

이진 레이블 집합이 여러 개인 데이터 집합이 있습니다. 각 레이블 집합에 대해 분류기를 훈련시켜 교차 유효성 검사로 평가합니다. 주성분 분석 (PCA)을 사용하여 차원을 줄이려고합니다. 내 질문은 :

전체 데이터 세트에 대해 PCA를 한 번 수행 다음 위에서 설명한대로 교차 검증에 더 낮은 차원의 새 데이터 세트를 사용할 수 있습니까? 또는 모든 트레이닝 세트에 대해 별도의 PCA 를 수행해야합니까 (모든 분류 자 ​​및 모든 교차 검증 폴드마다 별도의 PCA를 수행해야 함)?

한편으로 PCA는 레이블을 사용하지 않습니다. 반면에 테스트 데이터를 사용하여 변환을 수행하므로 결과가 바이어스 될 수 있습니다.

작업을 절약하는 것 외에도 전체 데이터 세트에서 PCA를 한 번 수행하면 모든 레이블 세트의 데이터 세트를 한 번에 시각화 할 수 있습니다. 각 레이블 세트마다 다른 PCA가있는 경우 각 레이블 세트를 별도로 시각화해야합니다.


나중에 참조하십시오. R caret패키지의 PCA와 PCA를 교차 검증하는 방법에 대한이 질문을 참조하십시오 : PCA 및 k-fold Cross Validation in Caret .
아메바는 9


답변:


34

일반화 오류를 측정하려면 후자의 작업을 수행해야합니다. 모든 교육 세트마다 별도의 PCA (모든 분류 자 ​​및 모든 CV 접기마다 별도의 PCA를 수행해야 함).

그런 다음 동일한 변환을 테스트 세트에 적용합니다. 즉 테스트 세트 에서 별도의 PCA를 수행 하지 않습니다 ! 여기에 설명 된대로 훈련 세트의 평균 (필요한 경우 표준 편차로 나눈 값)을 뺍니다. 훈련 세트에서 PCA 후 테스트 세트 제로 센터링 . 그런 다음 훈련 세트의 PC에 데이터를 투사합니다.


  • 사용할 PC 수에 대한 자동 기준을 정의해야합니다.
    "실제"분류 이전의 첫 번째 데이터 축소 단계이므로 너무 많은 PC를 사용하면 성능이 저하되지 않습니다. 경험을 통해 얼마나 많은 PC가 좋을지 기대하고 있다면 그것을 사용할 수 있습니다.

  • 또한 모든 대리 모델에 대해 PCA를 다시 실행해야하는지 여부를 테스트 할 수도 있습니다 (하나의 PCA 모델만으로 분석 반복). 이 테스트의 결과는보고 할 가치가 있다고 생각합니다.

  • 한 번 PCA를 반복하지 않는 치우침을 측정 한 결과, 분광학 분류 데이터를 사용하여 모든 대리 모델에 대해 PCA를 다시 실행하지 않을 때 일반화 오류 비율의 절반 만 발견했습니다.

즉, 설명 (예 : 시각화) 목적으로 전체 데이터 세트의 추가 PCA 모델을 구축 할 수 있습니다 . 두 접근 방식을 서로 분리하여 유지하십시오.


여전히 전체 데이터 세트의 초기 PCA가 클래스 레이블을 보지 않고 결과를 바이어스하는 방법에 대한 느낌을 얻는 것이 어렵다는 것을 알고 있습니다.

그러나 데이터를 볼 수 있습니다. 클래스 간 분산이 클래스 내 분산에 비해 크면 클래스 간 분산이 PCA 투영에 영향을 미칩니다. 일반적으로 PCA 단계는 분류를 안정화해야하기 때문에 수행됩니다. 즉, 추가 사례 모델에 영향을 미치는 상황에서 .

클래스 간 분산이 작 으면이 편향은 크지 않지만 PCA는 분류에 도움이되지 않습니다. PCA 프로젝션은 클래스 간 분리를 강조하는 데 도움이되지 않습니다.


고마워, 이것은 내가 생각한 것과 똑같으므로 독립적 인 출처에서 듣는 것이 좋습니다. 여전히 전체 데이터 세트의 초기 PCA가 클래스 레이블을 보지 않고 결과를 바이어스하는 방법에 대한 느낌을 얻는 것이 어렵다는 것을 알고 있습니다.
Bitwise

@Bitwise : 내 편집 내용을 참조하십시오
cbeleites는 Monica를 지원합니다.

안녕하세요 @cbeleites, 나는이 스레드를 PCA 및 기차 / 테스트 분할 (많은 있습니다!)에 대한 질문에 대한 "정식"스레드로 만들고 중복으로 표시하고 싶습니다. 중복 질문에서 종종 발생하는 오해를 해결할 수있는 한 문장을 귀하의 답변에 추가 할 자유를 가졌습니다. 내 편집에 만족하기를 바랍니다.하지만 확인하십시오! +1, btw.
amoeba 말한다 Reinstate Monica

@amoeba, 대단히 감사합니다. 네, 그것은 당신이 추가 한 중요한 점입니다. 질문 모음 정리 작업에 감사드립니다.
cbeleites 지원 모니카

1
@FelipeAlmeida : 그렇습니다
cbeleites는

2

이 질문에 대한 답변은 실험 설계에 따라 다릅니다. 예측하려는 데이터를 알기 전에 모델을 구축 할 필요가없는 한 전체 데이터 세트에서 PCA를 수행 할 수 있습니다. 많은 샘플을 보유하고 있고 일부는 알려지지 않았으며 일부는 알려지지 않았으며 PCA의 미지수를 포함하여 미지수를 예측하려는 경우 데이터 다양성에 대한보다 풍부한 시각을 제공하고 성능을 향상시킬 수 있습니다. 모델의. PCA는 감독되지 않기 때문에 알려지지 않은 샘플에 대해 알려진 것과 동일한 작업을 수행 할 수 있기 때문에 "말하기"가 아닙니다.

반면에 지금 모델을 구축해야하는 데이터 세트가 있고 향후 어느 시점에서 사전 구축 된 모델을 사용하여 예측해야하는 새로운 샘플을 얻는 경우 각 폴드마다 별도의 PCA를 수행해야합니다. 그것이 일반화 될 것입니다. 이 경우 새 기능의 모양을 알 수없고 새 기능을 설명하기 위해 모델을 다시 작성할 수 없으므로 테스트 데이터에 대해 PCA를 수행하면 "피킹"이됩니다. 이 경우 모델을 실제로 사용할 때는 알 수없는 샘플의 기능과 결과를 모두 사용할 수 없으므로 모델을 학습 할 때 사용할 수 없습니다.


0

후자, 매번 훈련 세트에 대한 PCA

: PCA에서, 우리는 감소 된 매트릭스 배울 U 우리가 투사를 얻을 수 있습니다Z_train = U x X_train

테스트 시간 에는 훈련 단계에서 배운 것과 동일한 U를 사용한 다음 투영을 계산합니다.Z_test = U x X_test

따라서 기본적으로 훈련 중에 얻은 축소 된 기능 공간에 테스트 세트를 투사합니다 .

기본 가정은 테스트와 기차 세트가 동일한 분포에서 나온 것이므로 위의 방법을 설명합니다.

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