Feature Demention

이수진·2023년 12월 2일
0

차원의 저주

: 샘플 차원이 커지면 커질수록 해당 데이터를 잘 대변하지 못함을 말한다. (샘플 밀도가 너무 낮아짐)

  • 새로운 인스턴스 넣었을 때 주변 인스턴스가 넘 떨어져있어 그 인스턴스 설명 불가능
  • 오차 커질 수 있음
  • 데이터가 주변에 너무 없어서 과도하게 다른 인스턴스와 연결해 설명이 안됨

해결방법

  1. 샘플밀도가 높아질때 까지 Training set의 크기를 키우는 방법 → 아주 많은 데이터가 필요하다(기하급수적으로 feature 수 증가)
    너무 차원크면 채워넣는 것도 의미 없음
  2. 차원축소 진행 (하지만 데이터가 일부 손실되기 때문에 미리 원본으로 돌려보고 진행하는 것을 추천)

차원축소

장점

  1. 계산비용 줄어든다
  2. 차원이 줄어들기 때문에 시각화가 가능하다.
  3. 노이즈와 불필요한 디테일이 사라져 좋은 결과를 낸다

단점

  1. 정보손실 우려
  2. 파이프라인을 복잡하게 만들 수 있다.

차원축소의 방법

  1. 투영방법 → 고차원을 저차원 공간에 투영하는 방법
    하지만 항상 좋은 것은 아니다 → swiss roll(매니폴드)과 같은 형태는 데이터 형태를 잘 표현하지 못하는 경우가 있다.
  2. PCA → 주성분 분석
    subspace(초평면)로 축소하여 투영한다.
    분산이 최대로 보존되는 것이 목표이며 이러한 반영 축(초평면)을 C라고 한다.
    가장 큰 분산을 갖는 축 순서로 제1, 2, 3주성분이라고 한다.
    이는 특이값 분해로 정할 수 있다. U(시그마)V^T (여기서 V가 축의 집합)
    주성분 분석을 하기 전에 데이터들은 모두 원점(중심화)에 있어야 한다.

X_d = XW_d 이고, W_d는 V의 d열이다. (d개만 뽑아 축소할 수 있다)

X_d는 축소된 행렬을 말한다.

만약 2개의 주성분을 썼는데 98%의 설명력을 가진다면, 나머지 남은 주성분들이 2%를 설명하는 것과 같음

올바른 차원의 수 고르기

그래프를 그려 찾을 수 있다. → PCA 주성분에 따른 설명력 그래프 (차원에 따른 분산을 그래프로 그린 것)

기울기 급감하는 부분이 최적의 주성분 개수이다.

재구성오차(reconstruction errror)

차원을 줄여 재구성했을 때 발생하는 오차를 말한다.

이미 손실 된 데이터는 줄이고자 했던 주성분의 역행렬을 곱해주면 다시 돌릴수있다.

svd_solver를 randomized로 설정하면 확률적 알고리즘을 사용해 처음 d개의 주성분의 근사값을 찾는다.

줄일 차원이 원래 차원보다 작으면 (많이 줄여야하면) 기본값보다 randomized가 빠르다.

반대라면 full svd가 낫다.

강제로 full svd로 바꿀수도 있음

Incremental PCA (점진적 주성분분석)

기존 PCA문제: 전체 훈련셋을 메모리에 올려야 한다.

그러나 점진적 주성분분석은 훈련 데이터셋을 mini batch로 나누어 PCA알고리즘에 하나씩 주입한다.

→ 데이터셋이 클 때 유용하다.

fit 대신 Partial_fit()을 사용해야 한다.

Numpy memmap 사용하며 fit() 사용 가능 (메모리문제 피하기 가능)

kernel PCA

Kernel trick 사용한 주성분 분석

KPCA : 비선형 투영이 가능하다 (매니폴드와 같은)

  • 투영 후 샘플 군집을 유지한다.
  • 매니폴드 펼칠때 사용한다.
  • 사용할 커널을 정할 수 있다 (차원 늘리기용)

Linear, RBF, Sigmoid 사용 가능 (목적에 따라 다름)

주로 커널 PCA는 비지도학습이지만 지도학습의 전처리과정으로도 사용 가능하다.

그리드 서치 사용해 최적의 파라미터값과 커널을 찾을 수 있음

  1. 커널PCA로 차원 줄이기
  2. 로지스틱 회귀(분류)를 사용하기

커널 선택하고 파라미터 튜닝하기

  • 가장 낮은 재구성오차를 갖도록 하이퍼파라미터와 커널을 선택한다.
  • 커널트릭을 사용하면 나타나는 피처맵은 무한차원 가진 특성공간에 옮겨지고, linear PCA사용해 2차원으로 축소된다.
  • 재구성 포인트에 가장 가깝게 매핑된 포인트를 찾은 뒤 다시 특성공간에 놓은 것(재구성한 것)을 pre-image라고 한다.
  • pre-image 찾으면 여기서 재구성 오차 가장 적게 하는 커널, 파라미터 찾는다.

재구성 과정

프로젝션 된 인스턴스를 트레이닝셋으로, 오리지널 인스턴스를 타겟으로 하여 지도학습 회귀모델을 훈련시킨다.

에러가 작으면 작을수록 좋다.

MSE가 가장 작은 커널과 하이퍼파라미터로 설정하는 것이 좋다.

profile
뇽안

0개의 댓글