220929

AIVILLAIN·2022년 9월 29일
0

오공완

목록 보기
14/25

차원 축소 (Dimensionality Reduction)

PCA, LDA, SVD, NMP

매우 많은 피처로 구성된 다차원 데이터 세트에서 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것
차원이 증가할수록 데이터 포인트 간 거리가 기하급수적으로 멀어지게 되고 희소한 구조를 가지게 됨
수백 개 이상의 피처로 구성된 데이터 세트의 경우 상대적으로 적은 차원에서 학습된 모델보다 예측 신뢰도가 떨어짐
피처가 많을 경우 개별 피처 간 상관관계가 높을 가능성이 큼
선형 회귀 등의 선형 모델에는 입력 변수 간 상관관계가 높을 경우 이로 인한 다중 공선성 문제로 모델의 예측 성능이 저하됨

다차원 피처를 차원 축소해 피처를 줄이면 더 직관적으로 데이터 해석이 가능
피처 선택(feature selection), 피처 추출(feature extraction)으로 나눌 수 있음

  • 피처 선택 (특성 선택)
    특정 피처에 종속성이 강한 불필요한 피처는 아예 제거하고 데이터의 특징을 잘 나타내는 주요 피처만 선택
  • 피처 추출
    기존 피처를 저차원의 중요 피처로 압축해서 추출
    기존의 피처가 압축된 것이므로 완전히 다른 값

피처 추출은 단순 압축이 아닌 피처를 함축적으로 더 잘 설명할 수 있는 공간으로 매핑해 추출

ex)
학생 평가를 위한 요소
모의고사 성적, 종합 내신성적, 수능성적, 봉사활동, 대외활동, 수상경력 등
이를 학업 성취도, 커뮤니케이션 능력, 문제 해결력과 같은 더 함축적인 요약 특성으로 추출할 수 있음
기존 피처가 인지하기 어려웠던 잠재적인 요소를 추출

차원 축소를 통해 좀 더 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출
PCA, SVD, NMF는 잠재적인 요소를 찾는 대표적인 차원 축소 알고리즘
매우 많은 차원을 갖는 이미지, 텍스트에서 차원 축소를 통해 잠재적인 의미를 찾아 주는 데 이 알고리즘이 잘 활용됨

매우 많은 픽셀로 이뤄진 이미지 데이터에서 잠재된 특성을 피처로 도출해 함축적인 형태의 이미지 변환, 압축 수행 가능
원본 이미지보다 훨씬 적은 차원이기 때문에 이미지 분류 등 분류 수행 시 과적합 영향력이 작아져서 원본 데이터로 예측하는 것보다 더 좋은 성능을 낼 수 있음

사람의 경우 문서를 읽으면서 문서가 어떤 의미, 의도를 가지고 작성되었는지 쉽게 인지 가능
차원 축소 알고리즘은 문서 내 단어들의 구성에 숨겨져 있는 시맨틱 의미나 토픽을 잠재 요소로 간주하고 찾을 수 있음
SVD와 NMF는 시맨틱 토픽 모델링을 위한 기반 알고리즘으로 사용됨

PCA (Principal Component Analysis)

실습 코드

가장 대표적인 차원 축소 기법

여러 변수 간 존재하는 상관관계를 이용하여 이를 대표하는 주성분을 추출하여 차원을 축소하는 기법
기존 데이터의 정보 유실이 최소화되어야 함
가장 높은 분산을 가지는 데이터의 축을 찾아 이 축으로 차원을 축소
이 데이터 축이 주성분이 됨
(분산이 데이터의 특성을 가장 잘 나타내는 것으로 간주)
데이터 변동성이 가장 큰 방향으로 축을 생성, 새롭게 생성된 축으로 데이터를 투영

가장 큰 데이터 변동성(분산)을 기반으로 첫 번째 벡터 축 생성, 두번째 축은 이 벡터 축에 직각이 되는 직교 벡터를 축으로 함
세 번째 축은 다시 두 번째 축과 직각이 되는 벡터를 설정하는 방식
벡터 축의 개수만큼 차원으로 원본 데이터가 차원 축소됨

PCA를 선형대수 관점에서 해석하면 입력 데이터의 공분산 행렬을 고유값 분해, 이렇게 구한 고유벡터에 입력 데이터를 선형 변환하는 것
고유벡터가 PCA의 주성분 벡터로서 입력 데이터의 분산이 큰 방향을 나타냄
고윳값은 고유벡터의 크기를 나타내며 동시에 입력 데이터의 분산을 나타냄

일반적으로 선형 변환은 특정 벡터에 행렬 A를 곱해 새로운 벡터로 변환하는 것을 의미
특정 벡터를 하나의 공간에서 다른 공간으로 투영하는 개념

보통 분산은 한 개의 특정 변수의 데이터 변동을 의미하나 공분산은 두 변수 간의 변동을 의미
공분산 행렬은 여러 변수와 관련된 공분산을 포함하는 정방형 행렬

고유벡터는 행렬 A를 곱하더라도 방향이 변하지 않고 그 크기만 변하는 벡터
정방 행렬은 최대 그 차원 수 만큼 고유 벡터를 가질 수 있음
고유벡터는 행렬이 작용하는 힘의 방향과 관계가 있어 행렬을 분해하는데 사용됨

공분산 행렬은 정방행렬이며 대칭행렬
정방행렬은 열과 행이 같은 행렬
대각 원소를 중심으로 원소 값이 대칭되는 행렬
공분산 행렬은 개별 분산값을 대각 원소로 하는 대칭 행렬
대칭행렬은 항상 고유벡터를 직교행렬로 고유값을 정방 행렬로 대각화할 수 있음

입력 데이터의 공분산 행렬이 고유벡터와 고유값으로 분해될 수 있으며, 이렇게 분해된 고유벡터를 이용해 입력 데이터를 선형 변환하는 방식이 PCA

PCA 스탭

  • 입력 데이터 세터의 공분산 행렬 생성
  • 공분산 행렬의 고유벡터와 고유값 계산
  • 고유값이 가장 큰 순으로 K개 만큼 고유벡터 추출
  • 고유값이 큰 순으로 추출된 고유벡터를 이용하여 새로운 입력 데이터 변환

iris 데이터로 실습

PCA는 여러 속성의 값을 연산해야 하므로 값의 스케일에 영향을 받음
따라서 여러 속성을 PCA 적용 전 동일한 스케일로 변환해야 함

UCI Machine Learning Repository Credit Card Clients Dataset)

LDA (Linear Discriminant Analysis)

실습 코드

선형 판별 분석법
PCA와 유사하게 입력 데이터 세트를 저차원 공간에 투영하여 차원을 축소하는 기법
지도학습의 분류에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원을 축소
PCA는 입력 데이터의 변동성의 가장 큰 축을 찾았지만, LDA는 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾음

LDA는 특정 공간 상 클래스 분리를 최대화하는 축을 차직 위해 클래스 간 분산과 클래스 내부 분산의 비율을 최대화하는 방식으로 차원 축소

클래스 간 분산은 최대한 크게, 클래스 내부 분산은 최대한 작게
PCA와 가장 큰 차이점은 공분산 행렬이 아니라 클래스 내부 분산 행렬을 생성하여 이 행렬에 기반해 고유벡터를 구하고 입력 데이터를 투영

  • 클래스 내부와 클래스 간 분산 행렬 생성
    (입력 데이터의 결정 값 클래스별로 개별 피처의 평균 벡터를 기반으로)
  • 클래스 내부 분산 행렬와 클래스 간 분산 행렬을 고유벡터로 분해
  • 고유값이 가장 큰 순으로 K개 추출
  • 고유값이 가장 큰 순으로 추출된 고유벡터를 이용하여 새로운 입력 데이터 반환

LDA는 지도학습
클래스의 결정값이 변환 시 필요

SVD (Singular Value Decomposition)

실습 코드

PCA의 경우 정방행렬만을 고유벡터로 분해할 수 있지만, SVD는 정방행렬 뿐만 아니라 행과 열의 크기가 다른 행렬에도 적용할 수 있음

SVD는 특이값 분해로 불리며 분해시 사용되는 벡터는 특이벡터, 모든 특이벡터는 서로 직교하는 성질을 가짐

A=UVTA = U\sum V^T

A의 차원이 m x n일 때, U의 차원은 m x n, Sum의 차원이 m x n, V^T의 차원이 n x n으로 분해됨

일반적으로 비대각인 부분과 대각원소 중 특이값이 0이 부분도 모두 제거하고 제거된 부분에 대응되는 U와 V 원소도 함께 제거하여 차원을 줄인 형태로 SVD를 적용 (따로 찾아서 정리해야할듯)

Truncated SVD는 희소 행룔로만 지원
Truncated SVD로 분해된 행렬로 다시 복원할 경우 근사적으로 복원됨

사이킷런의 TrunctaedSVD 클래스는 U, Sigma, Vt를 반환하지는 않음
사이킷런의 SVD와 PCA는 동일 변환을 수행
PCA는 밀접 행렬에 대한 변환만 가능하며 SVD는 희소 행렬에 대한 변환도 가능
토픽 모델링 기법인 LSA(Latent Semantic Analysis) 기반 알고리즘

NFM(Non-Negative Matrix Factorization)

실습 코드

Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사 방식의 변형
원본 행렬 내의 모든 원소 값이 모두 양수라는게 보장되면 좀 더 간단하게 두 개의 기반 양수 행렬로 분해
4 x 6 원본 행렬은 4 x 2, 2 x 6 행렬로 근사해 분해될 수 있음

이미지 압축을 통한 패턴 인식, 텍스트의 토픽 모델링 기법, 문서 유사도 및 클러스터링에 잘 사용됨
(잠재 요소 기반 추천 방식)

정리

PCA는 입력 데이터의 변동성이 가장 큰 축을 구하고, 이 축에 직각인 축을 반복적으로 축소하려는 차원 개수만큼 구한 뒤 입력 데이터를 이 축들에 투영하여 차원을 축소
LDA는 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾는 방식으로 차원 축소
SVD와 NMF는 매우 많은 피처를 가진 고차원 행렬을 두 개의 저차원 행렬로 분리하는 행렬 분해 기법
원본 행렬에서 잠재된 요소를 추출하기 때문에 토픽 모델링이나 추천 시스템에서 활발하게 사용됨

profile
소신있는 오픈마인드

0개의 댓글