머신러닝 개요, 데이터 표현: 특징 추출
특징 추출이란, 기계 학습을 위해 원시 데이터로부터 유용한 특징들을 선택, 조합, 생성하는 과정이다. 이 과정은 다량의 원시 데이터에서 주요 정보를 식별하여 관련이 높고 차원이 낮은 표현을 제공하는 것을 목표로 한다. 특징 추출은 주로 분류, 군집화, 회귀, 예측 등의 과제에서 사용된다.
특징 추출은 전통적인 기계 학습에서 매우 중요한 역할을 하며, 주로 사람이 수행하거나 특화된 알고리즘을 이용한다. 이는 종종 높은 수준의 도메인 지식을 필요로 한다. 그러나 딥러닝이 등장하며, 인공신경망이 데이터의 원시 표현에서 복잡한 특징까지 직접 학습하는 end-to-end 학습이 가능해졌다. 따라서 딥러닝은 사람의 개입 없이 특징 추출을 자동화하고, 특징 선택의 편향을 줄이며, 복잡한 패턴을 식별할 수 있게 하였다.
1. 선형변환에 의한 특징추출
- 특징추출 → n차원의 입력 벡터에 대해 변환함수를 적용하여 m차원의 특징벡터를 얻는 변환
- 선형변환에 의한 특징추출 Y=WTX → 주어진 데이터 X를 변환행렬 W에 의해 정해지는 방향으로 사영함으로써 저차원 특징값 Y를 얻는 것 → 변환행렬을 적절히 조정함으로써 분석 목적에 맞는 특징을 추출하는 것이 필요
- 선형변환에 의한 대표적인 통계적 특징추출 방법 → 주성분분석(PCA), 선형판별분석(LDA)
2. 주성분분석법
- 목적 → 변환 전의 데이터 X가 가지고 있는 정보를 차원 축소 후에도 최대한 유지하도록 하는 것
- 변환행렬 W를 어떻게 찾는가? → 데이터 손실량을 최소로 하는 사영 벡터를 찾음 → 데이터 집합의 분산이 가장 큰 방향을 찾음 → 데이터의 공분산행렬에 대한 고유치 분석을 통해 고유치와 고유벡터를 찾아 고유치가 가장 큰 값부터 순서대로 m개에 대응하는 고유벡터로 변환행렬을 구성함
- 알고리즘의 수행 단계
- ① 입력 데이터의 평균과 공분산을 계산함
- ② 공분산에 대한 고유치 분석을 통해 고유치행렬과 고유벡터행렬을 계산함
- ③ 고유치가 큰 것부터 순서대로 m개의 고유치를 선택함
- ④ 선택한 고유치에 대응되는 고유벡터를 열벡터로 가지는 변환행렬을 생성함
- ⑤ 생성된 변환행렬에 의한 선형변환으로 특징 데이터를 얻음
- 특징 → 데이터 분석에 대한 특별한 목적이 없는 경우에 유용. 클래스 레이블 정보를 활용하지 않는 비지도학습에 해당. 데이터 분포가 비선형적인 경우에는 부적합
3. 선형판별분석법
- 클래스 레이블 정보를 적극 활용하여 클래스 간의 거리는 가능한 멀어지게 하고, 같은 클래스 내에서는 결집되도록 하여 분류에 적합한 특징으로의 변환을 유도함
- 알고리즘의 수행 단계
① 입력 데이터를 각 클래스 레이블에 따라 M개의 클래스로 나누어 각각 평균과 클래스 간 산점행렬 SB, 그리고 클래스 내 산점행렬 SW을 계산함
② 행렬 SW-1SB 의 고유치 분석을 통해 고유치행렬과 고유벡터행렬을 계산함
③ 고유치가 큰 것부터 순서대로 m개의 고유치를 선택함
④ 선택한 고유치에 대응되는 고유벡터를 열벡터로 가지는 변환행렬을 생성함
⑤ 생성된 변환행렬에 의한 선형변환으로 특징 데이터를 얻음
- 특징 → 데이터가 복잡한 비선형 구조를 가진 경우에는 부적합. 고유치 분석을 통해 찾아지는 고유벡터의 개수가 제한됨(클래스의 개수가 M이라면 특징벡터의 차원도 최대 M-1로 제한됨). 데이터의 수가 입력 차원보다 크지 않으면 클래스 내 산점행렬의 역행렬을 구할 수 없어 적용 불가
4. 거리 기반 차원 축소 방법
- 두 데이터 간의 거리(또는 유사도)를 핵심 정보로 사용하여 차원을 축소하는 방법 → 현재 주어진 데이터 간의 거리가 추출된 저차원 특징들 사이에서도 최대한 유지하는 방향으로 차원 축소
- 거리의 정의에 따라 매우 다양한 방법이 있음 → MDS, t–SNE, Isomap 등
- 다차원 척도법(MDS): 원래 데이터 쌍의 거리와 추출된 특징 쌍의 유클리디안 거리에 대한 분석을 통해 차원 축소
- t-SNE → 확률밀도함수의 조건부확률을 이용하여 유사도를 정의하며, 특히 추출된 특징 쌍의 유사도를 정의할 때 t–분포를 사용
- Isomap → 기하학적 다양체(매니폴드)상에서의 측지 거리를 사용하는 차원 축소 방법
- 특징 → 특징값을 얻기 위하여 입력 데이터와 특징 데이터 간의 매핑 함수를 정의하지 않으므로 새로운 데이터에 대해서는 특징값을 찾지 못함 → 데이터 시각화의 용도로 주로 사용