ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 차원 축소
    전공 서적/핸즈온 머신러닝 2018. 9. 25. 16:05
    1. 차원 축소
      1. 차원의 저주 : 많은 특성은 훈련을 느리게 하고 좋은 솔루션을 찾기 어렵게 만든다.
      2. 차원 축소를 통해 고차원의 훈련 세트를 하나의 그래프로 그릴 있다.
        이같은 과정에서 군집 같은 시각적인 패턴을 감지할 있다.
    2. 차원의 저주
      1. 고차원의 데이터셋에서는 대부분의 훈련 데이터가 서로 멀리 떨어져 있다.

    훈련 세트의 차원이 클수록 과대적합 위험이 커진다.

    1. 차원의 저주를 해결하는 해결책 하나는 훈련 샘플의 밀도가 충분히 높아질 때까지 훈련 세트의 크기를 키우는 것이다.

    일정 밀도에 도달하기 위해 필요한 훈련 샘플 수는 차원 수가 커짐에 따라 기하급수적으로 증가한다.

    1. 차원 축소를 위한 접근 방법
      1. 투영
        1. 대부분의 실전 문제는 훈련 샘플이 모든 차원에 걸쳐 균일하게 퍼져 있지 않고,

    고차원 공간 안의 차원 부분 공간 놓여 있다.

    1. 많은 경우 부분 공간이 뒤틀리거나 휘어 있기도 한다.
    1. 매니폴드 학습
      1. 훈련 샘플이 놓여 있는 매니폴드 모델링하는 방법

    이는 대부분의 실제 고차원 데이터셋이 낮은 저차원 매니폴드에 가깝게 놓여 있다는 매니폴드 가설 근거한다.

    1. 매니폴드 가정은 회귀, 분류 등의 작업이 저차원의 매니폴드 공간에 표현되면 간단해질 것이라는 가정과 병행된다.

    따라서 모델을 훈련시키기 훈련 세트의 차원을 감소시키면 훈련 속도는 빨라지지만
    항상 낫거나 간단한 솔루션이 되지는 않는다.

    1. PCA
      1. PCA
        1. 데이터에 가장 가까운 초평면을 정의한 다음, 데이터를 정의한 평면에 투영시키는 방법
      2. 분산 보존
        1. 데이터의 분산이 최대로 보존되는 축을 선택하는 것이 정보가 가장 적게 손실된다.

    때문에 데이터셋과 투영된 사이의 평균 제곱 거리를 최소화 하는 축을 찾게 된다.

    1. 주성분
      1. 먼저 훈련 세트에서 분산이 최대인 축을 찾는다.

    다음으로 번째 축에 직교하고 남은 분산을 최대한 보존하는 번째 축을 찾는다.

    PCA 데이터셋에 있는 차원의 만큼 i번쨰 축을 찾는다.

    1. i번째 축을 정의하는 단위 벡터를 i번째 주성분이라고 부른다.
    2. 특이값 분해를 통해 훈련 세트 행렬 X U∙∑∙V^T 분해할 있다.
      여기서 찾고자 하는 모든 주성분이 V 담겨있다.
    1. d차원으로 투영하기
      1. 주성분을 모두 추출했다면 처음 d개의 주성분으로 정의한 초평면에 투영하여
        데이터셋의 차원을 d차원으로 축소시킬 있다.
      2. 훈련 세트를 d차원으로 투영하기
    2. 설명된 분산의 비율
      1. 주성분의 축을 따라 있는 데이터의 분산 비율을 나타낸다.
    3. 적절한 차원수 선택하기
      1. 축소할 차원 수를 임의로 정하기보다는 충분한 분산이 때까지 필요한 차원의 수를 선택한다.
      2. 데이터 시각화를 위해 차원을 축소하는 경우에는 차원을 2, 3개로 줄이는 것이 일반적이다.
      3. 차원 수에 대한 함수로 나타낸 설명된 분산
    4. 압축을 위한 PCA
      1. 차원을 축소하게 되면 훈련 세트의 크기가 줄어든다.

    이는 분류 알고리즘의 속도를 크게 높일 있다.

    1. 압축된 데이터셋에 PCA 투영의 변환을 반대로 적용하여 원래의 차원으로 되돌릴 수도 있다.

    투영 과정에서 일정량의 정보를 잃어버렸기 때문에 원본 데이터를 얻을 수는 없다.

    원본 데이터와 재구성된 데이터 사이의 평균 제곱 거리를 재구성 오차라고 한다.

    1. 원본의 차원 수로 되돌리는 PCA 역변환
    1. 점진적 PCA
      1. 일반적 PCA에서 SVD 실행하기 위해 전체 훈련 세트를 메모리에 올려야 한다는 점을 해결한 방법
      2. 훈련 세트를 미니배치로 나눈 IPCA 알고리즘에 번에 하나씩 주입하는 방법
      3. 비슷한 방법으로 Numpy memmap 클래스를 사용하여 하드 디스크의 이진 파일에 저장된
        매우
        배열을 메모리에 들어 있는 것처럼 다루는 방법이 있다.
    2. 랜덤 PCA
      1. d개의 주성분에 대한 근사값을 빠르게 찾는다.
      2. d n보다 많이 작으면 일반적인 PCA 알고리즘보다 매우 빨라진다.
      3. PCA 시간 복잡도
    3. 커널 PCA
      1. 커널 PCA
        1. 커널 기법을 PCA 적용해 복잡한 비선형 투영으로의 차원 축소를 가능하게 있다.
        2. 투영된 후에 샘플의 군집을 유지하거나 꼬인 매니폴드에 가까운 데이터셋을 펼칠 때에도 유용하다.
    4. LLE
      1. 투영에 의존하지 않는 매니폴드 학습
      2. 높은 차원에서 국부적인 관계가 가장 보존되는 훈련 세트의 저차원 표현을 찾는 방법
      3. 대량의 데이터셋에 적용하기는 어렵다.
      4. LLE 시간 복잡도
        1. k개의 가장 가까운 이웃을 찾는데 소요되는 시간
        2. O(m log⁡(m)n log(k)) + O(mnk^3 ) + O(dm^3)


    '전공 서적 > 핸즈온 머신러닝' 카테고리의 다른 글

    인공 신경망 소개  (0) 2018.11.04
    앙상블 학습과 랜덤 포레스트  (0) 2018.09.23
    결정 트리  (0) 2018.09.13
    서포트 벡터 머신  (0) 2018.09.12
    모델 훈련  (0) 2018.08.30

    댓글