Feature Engineering
머신 러닝에서 중요한 과정 중 하나로, 알고리즘의 성능 향상을 위해 새로운 features를 생성 또는 기존 features를 변형하는 과정이다. 데이터 셋을 구성하는 변수가 매우 많거나 변수 간 상관 관계가 존재하는 경우 데이터 수집 배경(도메인), 데이터 셋의 분포, 결측치, 이상치 등에 대한 내용 파악을 바탕으로 진행한다. 구체적인 방법으로는 정규화(Regularization), 차원 축소(Dimension Reduction) 등이 있으며, 차원 축소는 특성 선택(Feature Selection), 특성 추출(Feature Extraction) 등의 기법을 통해 가능하다. 이러한 기법들을 바탕으로 알고리즘의 학습 시간을 단축시키고 일반화 성능을 향상하고 간단한 알고리즘으로 문제를 해결할 수 있게 된다.
1. 정규화
2. 차원 축소: 특성 선택(Filter Methods, Wrapper Methods, Embedded Methods) , 특성 추출(PCA, t-SNE)
■ 특성 추출
PCA
PCA(Principal Component Analysis)에서 주성분 PC는 데이터에 존재하는 특성들이 가지고 있는 정보를 설명하는 축을 의미한다. 참고로 특성들이 가지고 있는 정보는 분산, 즉 값들이 흩어진 정도를 이용해서 표현한다. 전체 주성분의 수는 데이터에 존재하는 원래 특성의 수와 같고 이러한 주성분이 생성하고자 하는 새로운 특성이 된다. 각 주성분에 의해 설명되는 정보의 양이 다르므로 원래 데이터의 정보를 많이 설명하는 일부의 주성분만을 최종 분석에서 사용하게 된다. 이렇게 하면 원래 데이터가 갖고 있는 정보에 대한 손실은 줄이면서 최종 분석에서 사용되는 특성의 수는 줄이는 차원 축소의 효과를 달성할 수 있다. 그리고 주성분 분석은 기본적으로 고유분해(Eigen Decomposition) 또는 그의 사촌 격인 특이값분해(Singular Value Decomposition)을 활용하여 작동한다.
고유분해
고유분해는 정방행렬을 해당 행렬의 고유값과 고유벡터를 이용하여 분해하는 과정이다. A라고 하는 정방행렬이 있는 경우 다음과 같이 분해된다. A = VΛV-1, V는 A의 고유벡터를 열로 갖는 행렬이 되고, 대문자 람다 Λ는 A의 고유값을 대각성분으로 갖는 대각행렬이 된다. 행렬의 고유값과 고유벡터는 해당 행렬이 갖고 있는 고유한 특성을 나타내는 값과 벡터라고 생각할 수 있고, 수학적으로는 다음 방정식을 만족시키는 0이 아닌 벡터 v가 고유벡터가 되고 𝜆가 고유값이 된다. Av = 𝜆v, A는 nxn 행렬, v는 nx1 벡터, 𝜆는 하나의 숫자이고 nxn 행렬의 고유벡터(고유값)는 n개 존재한다.
고유벡터 v는 행렬 A에 선형 변환되는 경우 방향은 바뀌지 않고 길이만 달라지는 벡터를 의미한다. 다르게 표현하면 Av는 벡터 v의 방향은 바꾸지 않고, 크기만 변경시킨다는 것을 의미하고 그때의 𝜆가 고유값이 된다. 그리고 0이 아닌 벡터가 존재하기 위해서는 (A-𝜆In)의 역행렬이 존재하지 않아야 하므로 (즉, 특이 행렬이어야 하므로) 행렬식의 값이 0이 되는 𝜆를 구하면 된다.
특이값분해
특이값 분해는 X가 사각행렬일 때 적용하는 고유분해의 일반화된 행렬 분해 방법이다. U는 XXᵀ 행렬의 고유벡터를 열로 갖는 행렬이고, V는 XᵀX 행렬의 고유벡터를 열로 갖는 행렬이다. Σ는 대각 행렬인데 대각원소는 X의 특잇값이 되고 특잇값은 XXᵀ 혹은 XᵀX의 고유값(λ)에 루트를 씌운 값이다. (둘의 값은 같음)
X = UΣVT
- X : mxn, 정방행렬이 아닌 사각행렬
- U : XXᵀ 행렬(mxm)의 고유벡터(m개)를 열로 갖는 행렬 → XXᵀ는 데이터 포인트 간의 유사도를 나타내는 행렬이다. 따라서 데이터의 중요도에 따라 데이터의 수를 줄이는 역할을 한다. (불필요한 이상치를 제거함)
- V : XᵀX 행렬(nxn)의 고유벡터(n개)를 열로 갖는 행렬 → 1/mXᵀX은 변수 간의 공분산을 나타내는 공분산 행렬로 데이터의 분산과 상관관계를 이해하는 데 사용된다. 따라서 이는 V는 변수의 중요도에 따라 차원 축소의 역할을 한다.
- Σ : mxn, X의 특잇값(singular values)을 대각원소로 갖는 대각행렬, 특이값은 XXᵀ 혹은 XᵀX의 고유값(λ)에 루트를 씌운 값(두 가지 경우에 그 값이 동일함) 즉, det(XXᵀ-𝜆I) = 0을 만족하는 λ에 제곱근을 말한다.
결국 주성분 분석은 우리가 가지고 있는 원래 데이터셋에 특잇값 분해를 적용하거나 원래 데이터셋의 공분산 행렬에 고유분해를 적용한 결과를 사용하는 것이다.
주성분 분석 과정
1) 데이터 centering: 관측치에서 변수별 관측치 평균값을 빼어 centering 해준다. (변수별 관측치의 평균이 0으로 맞춰짐) 원 데이터의 특성이 갖는 값에서 해당 특성의 평균을 빼주는 평균 중심화 (mean centering)를 하는 이유는 각 특성이 취하는 값의 단위가 달라서 발생할 수 있는 문제를 방지하기 위함이다.
2) centering된 데이터 셋(X)의 공분산(Σ = 1/(n-1)XᵀX)을 계산한다.
3) 공분산 행렬의 고유값과 고유벡터를 계산한다. (Σv = 𝜆v)
4) 고유값을 크기순으로 정렬하고 상위 k개의 고유값에 대응하는 고유벡터를 선택한다. (고유값 λ는 데이터의 변동성을 설명하는 양을 나타내고, 고유벡터 v는 그 변동성의 방향을 나타내므로 고유값이 큰 고유벡터를 선택하여 주성분으로 사용함) 각 고유값을 전체 고유값의 합으로 나눈값이 해당 주성분이 가지는 정보 비율이다.
5) 선택된 고유벡터를 이용해 모든 데이터를 주성분 공간으로 변환한다. PCi = Xvi
6) 차원 축소: 상위 N개의 주성분만을 사용하여 데이터를 차원 축소된 주성분 공간으로 변환한다. Xpc = XVn
t-SNE
t-SNE는 고차원 데이터를 저차원 공간에 매핑하기 위해 활용되는 비선형 차원 축소 기법으로 데이터의 시각화가 주요 목적이다. 작동 순서는 다음과 같다.
1) 고차원 공간에서의 데이터 xi와 xj의 유사도(유클리디안 거리)를 구한다. 그리고 데이터 xi를 기준으로 xj가 선택될 확률은 pj|i로 표현할 수 있다.
2) 고차원 공간에서의 데이터간 유사도를 저차원 공간에서 유지하기 위하여 t-분포를 활용한다. 데이터 xi와 xj가 저차원 공간에서 yi, yj로 정의될 때 표현식이다.
3) 고차원 공간에서의 데이터 분포와 저차원 공간에서의 데이터 분포의 차리를 최소화하기 위하여 KL Divergence를 최소화한다.
4) Gradient descent를 이용해 최적화를 하게 된다.
■ 특성 선택
Filter Methods: Pearson correlation coefficient, Mutual information, and inter/intra class distance 등의 척도를 이용하여 feature와 target variable 간의 관계를 측정
- Pearson correlation coefficient: feature별 target variable과의 correlation coefficient 계산
- Mutual information: feature별 target variable과의 mutual information 계산
Wrapper Methods: feature subset을 선택하고 그 subset에 대해 모델을 학습시켜 성능을 평가하는 방법
- Forward Selection: feature 하나씩 추가하면서 모델의 성능을 평가하여 최적의 feature 조합을 선택
- Backward Elimination: 모든 feature를 포함한 조합에서 feature를 하나씩 제거하면서 모델의 성능을 평가
- Recursive Feature Elimination(RFE): 반복적인 학습 과정을 통해서 중요도가 낮은 feature를 제거하여 최적의 feature 조합 선택
Embedded Methods: 모델 구성 과정에서 feature를 선택, 대표적인 방법으로는 LASSO, Decision Tree 기반 방법이 있음
- LASSO: 회귀 계수에 패널티 항을 부여하여 일부 계수를 0으로 만들어 feature를 선택
- Decision Tree: 하위 노드를 생성하는 과정에서 중요도가 가장 높은 변수를 활용, depth가 제한된 트리의 경우 중요도가 높은 변수 몇 개만을 활용하는 효과 생성
Pearson correlation coefficient
Pearson 상관 계수는 두 변수 간의 선형 상관 관계를 측정하는 통계적 지표로 -1에서 1사이의 값을 가진다. 1은 완전한 상관 상관 관계, -1은 완전한 음의 상관 관계, 0은 상관 관계가 없다고 해석한다. 그리고 일반적으로 0.5 이상(절대값)인 변수들을 선택한다. ρXY = Cov( X, Y) / ρXρY → X, Y의 공분산을 X의 표준 편차와 Y의 표준 편차로 나누어 계산한다.
Mutual information
두 변수 X와 Y간에 X를 알았을 때 Y에 대한 불확실성이 줄어드는 정도 즉, 한 변수가 다른 변수에 대해 얼마나 많은 정보를 제공하는지를 나타낸다. Pearson 상관 계수와 달리 X와 Y간의 비선형 관계까지도 측정 가능하다. I(X; Y) = 0이면 서로 독립적이고, I(X; Y) > 0이면 X와 Y간 상관 관계가 존재한다고 해석한다.

I(X; Y) = H(X) - H(X|Y) = H(X) - (H(X, Y) - H(Y)) = H(X) + H(Y) - H(X, Y) = H(Y) - H(Y|X) = I(Y; X) 즉, 변수 X와 Y간의 불확실성 감소량이 상호 대칭적이다. 이는 X와 Y간의 정보 공유량을 의미한다.
Recursice feature elimination
1. 초기 모델 학습: 전체 특징을 사용하여 선형 회귀, 결정 트리, SVM 등의 모델을 학습시킨다.
2. 특징별 중요도 측정: 학습된 모델에서 각 특징별 중요도를 계산한다. 중요도는 모델에 따라 다르게 정의될 수 있다. 예를 들어, 선형 모델에서는 회귀 계수의 크기로, 결정 트리에서는 정보 이득으로 중요도를 평가할 수 있다.
3. 전체 n개의 특징 중 중요도의 크기가 낮은 k개의 특징을 제거하고 남은 특징들을 사용하여 모델을 다시 학습한다.
4. 최종 모델에 활용할 특징의 개수를 설정, 해당 개수에 도달할 때까지 반복해서 2~3번 과정을 반복하거나 모델의 성능에 대한 임계치를 만족할 때까지 2~3번 과정을 반복한다.
장점은 반복적인 학습 과정에서 feature가 줄어듦으로 인하여 모델의 복잡도가 감소, 이와 동시에 과적합을 방지할 수 있고, 모델의 설명력이 증가한다는 것이다. 단점은 모델 의존성이 크고 최적의 feature 개수를 정해야 하며 반복적인 모델 학습으로 인하여 계산 비용이 증가한다는 것이다.
'머신러닝 > 지도학습' 카테고리의 다른 글
| Ensemble (0) | 2024.06.11 |
|---|---|
| Neural Networks3 (0) | 2024.06.09 |
| Neural Networks2 (0) | 2024.06.07 |
| Neural Networks (0) | 2024.05.13 |
| 기계학습 - SVM (0) | 2024.04.18 |