인프런 커뮤니티 질문&답변

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

PCA를 이용한 신용카드 데이터 세트의 차원 축소 실습

차원축소 목적

작성

·

458

0

피처가 많을 경우 개별 피처간의 상관관계가 높을 가능성이 크고, 모델의 예측능력이 저하된다고 책에 나와있습니다.

그런데 피처가 4개인 붓꽃데이터는 10퍼센트 가량 예측성능이 저하되었고, 피처개수가 상당히 많은 신용카드 데이터세트에도 적게나마 예측성능이 저하됐네요.

PCA를 사용하는 목적이 피처 개수가 많을 때 예측성능을 향상시키는 것이 맞나요? 아니면 차원축소를 하면 예측성능이 떨어지는 것이 일반적인가요?

그리고 피처가 많을 때 사용한다는 것이, 상관관계가 높은 피처가 많을 때 사용한다는 것인지, 피처의 개수가 많다는 것이 어느정도를 말하는 지 궁금합니다.

답변 2

4

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

PCA를 사용하는 목적은 차원 축소를 통해 기존의 데이터 세트의 새로운 면을 발견하는것이 주요 목적입니다.

원본 데이터가 아닌 PCA변환된 데이터 세트를 기반으로 Classification/Regression의 수행성능을 높일 수 있는 경우는 그리 흔하지 않습니다. 그 흔하지 않은 경우중에 만일 상관 관계가 높은 피처들이 많은 데이터 세트가 있을 경우에는 PCA로 변환을 한 데이터 세트에 변환을 해서 예측 성능이 좋아 질 수도 있지만, 근래 머신러닝 알고리즘들은 성능 자체가 좋아져서 그런 경우가 나오기도 어렵습니다.

과거에 차원 축소를 해서 Classification/Regression에 적용한 경우에는 예측 성능을 향상 시키려는 목적 보다는 학습/예측 수행 시간을 줄이려는 목적이 더 강합니다. 요즘은 H/W(특히 메모리 크기)가 좋아져서 크게 속도 차이도 나지 않습니다.

Classification/Regression에 PCA를 활용하는 경우는 주로 원본 데이터 세트에 PCA 변환된 데이터 세트를 피처로 추가한 데이터 세트에 학습/예측을 수행하는 것입니다. 즉 원본 데이터가 A,B,C  피처, PCA 변환된 데이터를 A-1, B-1 로 하면, A,B,C,A-1,B-1 데이터 세트를 학습/예측에 사용하는 것입니다. 이런 방식을 Semi-supervised 방식이라고 합니다. 하지만 이 방법은 실시간 예측을 할 수 없습니다. 학습 데이터는 미리 이런 방식으로 만들 수 있지만, 예측 데이터는 실시간으로 pca 변환한 데이터를 만들기 어렵기 때문에 이 방식은 배치 기반의 예측 데이터를 기반으로 할때 적용해 볼 수 있는 방식입니다.

질문에 대한 답변을 요약드리면 아래와 같습니다.

1. PCA를 비롯한 차원 축소 알고리즘을 차원 축소를 통해 기존의 데이터 세트에서 새로운 면을 발견하는 것이며, 또한 기존 데이터 세트에서 중요한 FEATURE 들의 영향력이 얼마나 되는지를 파악하는 것입니다.

2. 차원 축소를 하면 일반적으로 예측 성능이 떨어집니다.  Classification/Regression (약간의) 수행 성능을 향상시키는 기법으로 원본 데이터 세트에 PCA 차원 축소된 데이터 세트를 추가하여 학습/예측하는 Semi-supervised 기법이 있습니다.

3. 피처가 많을 때 사용한다는 것이, 상관관계가 높은 피처가 많을 때 사용한다는 것이 일반적이나 피처의 갯수가 수백개를 넘어서는 경우 메모리 사이즈의 이슈가 있다면 pca 적용을 고려해 볼수 있습니다.

4. Regression에서 동일하게 적용됩니다.

감사합니다.

0

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi
질문자

추가로 강의에서는 classification에만 차원축소를 적용하셨는데, regression에서도 동일하게 적용해도 무방한가요?

Yoonseok Choi님의 프로필 이미지
Yoonseok Choi

작성한 질문수

질문하기