본문 바로가기
Data Science/Machine Learning

[Machine Learning] 특징추출(feature extraction)

by AI_Wooah 2022. 10. 2.

 

 

선형 변환에 대한 특징추출

 

특징추출이란?

입력 데이터가 $x_i$로 주어지고 출력 데이터가 $y_i$로 주어질 수도 있다.

주어진 데이터에 대해서 n차원의 랜덤벡터를 통해 변환함수 Φ(파이)를 찾게 된다.

변환함수의  Φ를 찾으면 입력 데이터를 $y_{new}$라는 m차원의 특징벡터로 변환해서 표현된다.

 

특징추출은 크게 두가지의 목적을 가지고 수행된다.

1) 분류를 하거나 군집 등의 분석을 할 때 불필요한 정보들을 제거하고 핵심적인 정보만 추출하기 위함이다.

2) 원래의 n차원의 데이터를 m차원으로 차원축소해서 계산량을 줄이고 메모리를 감소시켜서 분석 시스템의 효율과 성능을 향상시키기 위함이다.

 

변환함수(Embedding Function, Transformation Function)란?

n차원의 입력값을 받아서 m차원의 특징벡터로 변환하는 것을 특징추출이라고 한다.
Φ의 특징에 따라서 두 종류로 나눌 수 있다.

 

1. 선형 변환

n차원 열벡터 x에 대해서 변환행렬 W(n x m)을 곱해서 m차원의 특징을 획득하는 것이다.

이 수식을 쉽게 이해하기 위해서는 변환행렬에 벡터의 크기를 함께 표시해주면 된다.

특징벡터 y가 원하는 분포가 되도록 W를 찾는 것이 목적이다.

 

먼저 선형변환에 의한 특징추출은 데이터의 특징에 크게 의존하지 않으며 6가지로 나눌 수 있다.

1) 차원 축소 관점에서의 특징추출

데이터의 차원이 크면 처리하는데 많은 자원이 소모된다. 하지만 많은 데이터 중 불필요한 데이터가 섞여있으면 자원이 낭비된다. 차원과 성능의 관계를 봤을 때 차원이 커질수록 성능이 늘어나기만 하는 것이 아닌 조금 올라가다가 어느 지점에서 오히려 성능이 떨어지는 것을 확인할 수 있다. 이것을 차원의 저주라고 한다.

y를 구하기 위해서는 각각의 열벡터에 트랜스포즈 해서 x를 곱한다.

* x를 W의 열벡터 w_i 위로 사영한 값을 특징값 y_i라고 한다. 여기서 w_i는 단위벡터다.

 

2) 2차원 데이터 x를 1차원 특징 y로 변환

벡터 x를 w 위로 사영 → y = w^t x (단, w는 단위벡터다)

w

 

3) 3차원 데이터 → 2차원 특징추출

y는 x를 열벡터 w_1, w_2가 이루는 2차원 평면 위로의 사영으로 얻어지는 2차원 벡터다.

 

4) n차원 데이터 → m차원 특징추출

 

5) 전체 데이터 집합 X에 대한 특징추출

하나의 데이터에 대해서 선형변환 한 것을 모아 전체데이터에 대해서 실행한 것이 W_T X다.

왼쪽 그림에서 아래 색칠된 부분이 Y다

오른쪽 그림에서 전체 데이터 집합에서도 해당 축에 대해서 사영하면 프로젝션 할 수 있다.

주어진 데이터를 변환행렬 W에 의해 정해진 방향으로 사영해서 차원이 낮은 특징값을 얻는 것이 선형변환에 의한 특징추출이다.

 

6) 변환행렬에 따른 특징의 분포

변환행렬이 다르기 때문에 서로 얻어지는 특징값 결과도 다르다.

Wa는 x1과 x2로 이루어진 아래쪽 평면으로 사영된다.

Wb는 x2과 x3로 이루어진 뒤쪽 평면으로 사영된다.

Wc는  x3과 x1로 이루어진 왼쪽 평면으로 사영된다.

 

다양한 변환행렬에 대한 특징추출을 보면 좋은 특징추출에 대한 인사이트를 얻을 수 있다.

좋은 특징추출이란 변환행렬 W를 적절하게 조절해서 분류/분석 목적에 맞게 특징 분포를 만드는 것이다.

 

 

선형변환을 사용하는 대표적인 통계적 특징추출 방법은 크게 주성분분석법(PCA), 선형판별분석법(LDA)두 가지가 있다.

입력값에 대해서 랜덤으로 사용했을 때 아래처럼 구분없이 무분별하게 나온다

- 주성분분석법(PCA:Principal Component Analysis)은 클래스 정보를 사용하지 않는 비지도 학습이다

- 선형판별분석법(LDA:Linear Discriminant Analysis)은 클래스 정보를 사용하는 지도학습이다.

 

 

2. 비선형 변환

복잡한 비선형함수 Φ(x)를 이용해서 n차원 벡터를 m차원 벡터로 매핑하는 것이다.

사용 방법은 크게 수작업과 표현학습 두가지로 구분할 수 있다.

 

1) 수작업에 의한 특징추출

입력 데이터의 특성과 분석 목적에 맞도록 특징을 개발자가 직접 설계한다.

예를 들어,

- 숫자인식을 위한 특징을 뽑을 때 격자특징을 사용했다.

- 영상 분석을 위해서는 엣지, 가로/세로 방향 성분 등의 특징을 추출했다.

- 문서 분석을 위해서 단어의 발생 빈도 등의 특징을 추출했다.

 

2) 특징추출을 위한 접근법

최근 딥러닝이 활발해지면서 특징추출의 접근법으로 표현학습을 많이 사용한다.

표현학습은 특징추출을 위한 비선형 변환함수를 신경망 등의 머신러닝 모델로 표현한 것이다.

학습을 통해서 분석이 잘 되도록 변환함수의 최적화가 가능하기 때문에 많이 사용되며 대표적으로 CNN, ResNet, DenseNet, EffiNet 등의 모델이 있다.

 

 

주성분 분석법

 

목적

변환 전의 데이터 X가 가지고 있는 정보를 차원 축소 후에도 최대한 유지하는 것이 목표다.

데이터의 고유한 정보가 가지는 차이점을 최대한 유지하면서 불필요한 정보를 제거한다.

2차원이었던 데이터를 1차원으로 만들 때 사영하는 방향에 따라서 정보를 얼마나 담아내는지가 결정된다.

최대한 데이터를 넓게 퍼져있는 방향으로 사영시키는 것이 좋은 차원축소 방법이다.

데이터의 분산이 가장 큰 방향으로 선형변환을 수행해야 한다.

분산이 가장 큰 방향을 찾기 위해서는 공분산행렬의 최대 고유값과 고유벡터를 찾으면 된다

공분산행렬에 대해서 고유값 분석을 해서 고유값의 분산이 가장 큰 값부터 순서대로 이에 대응하는 m개의 고유벡터를 찾아서 행렬 W를 구성한다. 

 

 

PCA 알고리즘 수행 단계

1) 입력 데이터 집합 X의 평균 $μ_x$와 공분산 $Σ_x$ 계산하면 입력의 차원이 nxn이 된다

2) 고유값 분석을 통해 공분산의 합을 고유값행렬 Λ(람다)와 고유벡터행렬 U로 계산한다.

여기서 중요한건 $Λ_1$에 대응하는게 $U_1$이고 $Λ_2$에 대응하는게 $U_2$다.

2차원이니까 고유값이 두개가 나오고 그때 고유벡터가 두개 만들어진다.

3) 고유값이 큰 것부터 순서대로 m개의 고유값{$λ_1$, $λ_2$, ..., $λ_m$}을 선택한다

4) 선택한 고유값에 대응되는 고유벡터를 열벡터로 가지는 변환행렬 W를 생성한다.

5) W에 의한 선형변환으로 특징 데이터 Y를 얻는다.

 

PCA 적용의 예

순서대로 원본 데이터에 대해 1차 2차 3차원 주성분 분석을 실행한 결과다.

마지막 1, 2, 3차 주성분 벡터에 의한 특징추출에서는 차원의 축소는 없지만 데이터간의 상관관계가 사라졌다. 이것을 대각화변환이라고 한다.

 

수학적 사용

- 손실되는 정보량의 비중

m개의 특징으로 표현 가능한 정보의 비율

전체중에 손실되는 $Λ_m$의 비율을 보면 손실되는 정보량의 비중을 찾을 수 있다.

 

- 선택할 고유벡터의 수(특징의 차수) m

선택할 고유벡터 수(특징의 차수) 를  m이라고 두고

세타를 0.98이라고 두게 되면 전체 손실되는 양의 2%미만인 것을 찾을 수 있다.

 

 

얼굴 영상의 표현 예시

 

n차원의 얼굴 영상을 m개의 기저벡터를 사용해서 표현한다. 차원을 축소하기 위해 열벡터가 필요하고 이 열벡터는 기저벡터라고 한다. 이 기저벡터를 아이겐페이스라고 부른다.

얼굴영상에서 pca를 적용해서 찾아진 고유벡터를 영상으로 표현한 것이 아이겐페이스다.

y는 차원이 축소돼서 정보가 손실된 영상이다. 원래 n차원으로 되어있는것을 69차원으로 축소했다가 복원해보자.

y는 x랑 얼마나 유사할지 살펴보면 양변에 w를 곱했을 때 x는 복원된 영상이고 이걸 만드는 방법이 w랑 y를 특징값들을 곱해서 더해준 것이다. 복원된 것을 원래의 것과 비교해보면 원본이랑 완벽하게 똑같지는 않지만 비슷하게 재현된 것을 확인할 수 있다.

 

주성분분석의 특성과 문제점

데이터 양이 많아서 라벨링하기 힘들거나 특별한 목적이 없는경우에 주로 주성분분석을 사용한다.

주성분분석은 비지도학습이고 클래스 레이블 정보를 활용하지 않는다. 그렇기 때문에 분류의 핵심 정보를 손실할 가능성이 있다.

따라서 클래스 정보를 이용하기 위해 등장한게 선형판별분석법(LDA)이다.

 

주성분분석법 즉, 선형변환의 한계는 데이터의 구조를 나타내지 못한다. 

 

 

 

 

 

 

 

 

반응형

댓글