ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Week#5 주성분 분석
    쿠다 4기/<혼공> 머신러닝& 딥러닝 2023. 8. 29. 11:25

    차원이 너무 많으면 데이터 크기가 너무 커 문제가 생길 수 있다. 데이터를 가장 잘 나타내는 일부 특성을 선택하여 데이터 크기를 줄이고 지도 학습 모델의 성능을 향상시킬 수 있는 방법은 차원 축소이다. 또한 줄어든 차원에서 다시 원본 차원으로 손실을 최대한 줄이면서 복원도 할 수 있다. 대표적인 차원 축소 알고리즘인 주성분 분석(PCA) 에 대해 알아보자.

     

    먼저 주성분 분석이란, 데이터에 있는 분산이 큰 방향을 찾는것이다. 여기서 분산이 크다는 것은 데이터가 널리 퍼져있다, 길게 늘어져있다 정도로 받아들이면 된다

     

    그림1

    .예를들어 그림1에서 분산이 가장 큰 방향은 어디일까? 

    그림2

    그림2의 보라색 화살표 방향이다. 이 벡터(2,1)가 데이터의 분포를 가장 잘 표현하는 방향이다. 이 벡터를 주성분이라고 한다. 주성분 분석을 이용해 차원을 줄이는 것의 원리는, 샘플 데이터를 주성분에 직각으로 투영하는 것이다. 주성분 벡터는 원본 데이터에 있는 어떤 방향이기에 원본 차원과 같지만, 주성분으로 바꾼 데이터는 차원이 줄어든다. 

    첫 번째 주성분을 찾은 다음 이 벡터에 수직이고 분산이 가장 큰 다음 방향을 가진 벡터가 두 번째 주성분이다. 일반적으로 주성분은 원본 특성의 개수만큼 찾을 수 있다.

     

    이제 과일 사진 데이터로 PCA를 진행하여 분석해보자.

    데이터를 불러온다.

    50개의 주성분을 찾기로 하였다. 비지도학습이기에 fit()메서드에 타깃값은 제공하지 않는다.

    이제 주성분을 100x100크기의 이미지처럼 출력해보자.

    이제 원본 데이터를 주성분에 투영하여 특성의 개수를 10,000개에서 50개로 줄이자. transform()메서드를 이용하면 된다.

     

    50개로 차원이 줄어든 것을 확인할 수 있다.

     

    줄어든 데이터를 다시 복구할 수도 있을까?

    원본 데이터 재구성

     

    inverse_transform()메서드로 특성을 복원하자.

    일부 흐린 부분이 있지만 50개의 특성을 10,000개로 늘렸음에도 상당히 잘 복원되었음을 확인할 수 있다.

     

    그렇다면 이 주성분이 원본 데이터의 분산을 얼마나 잘 나타냈을까?

    이를 나타내는 값을 설명된 분산이라고 한다. 당연히 첫 번째 주성분의 설명된 분산이 가장 클 것이다. 이 분산 비율을 모두 더하면 50개의 주성분으로 표현하고 있는 총 분산 비율을 얻을 수 있다.

    92%가 넘는 분산을 유지하고 있어 원본 이미지를 잘 복원했다.

     

    로지스틱 회귀 + PCA

     

    PCA로 축소한 데이터를 3개의 과일 사진으로 분류하는 로지스틱 회귀 모델을 사용해 지도학습에 적용해보겠다.

    교차 검증의 점수는 약 0.997정도로 높지만 훈련 시간이 너무 느리다.

     

    이번에는 PCA로 축소하여 진행했더니 정확도는 100%, 훈련시간도 훨씬 짧아졌다.

    주성분 개수가 아니라 원하는 설명된 분산의 비율을 입력하여 구할 수도 있다. PCA클래스는 지정된 비율에 도달할 때까지 자동으로 주성분을 찾는다. 이번엔 설명된 분산의 50%에 달하는 주성분을 찾도록 PCA모델을 만들겠다.

    주성분을 2개만 이용하여 진행해보겠다.

    99%의 정확도를 달성했다.

    클러스터링 결과도 확인해보았다. 완벽하지는 않지만 대체로 잘 분류하였다.

     

    이렇게 차원 축소를 이용하면 데이터셋의 크기를 줄일 수 있고 시각화하기쉬우며 다른 지도/비지도 학습 알고리즘에 재사용해 성능을 높이거나 훈련 속도를 빠르게 만들 수 있다.

    '쿠다 4기 > <혼공> 머신러닝& 딥러닝' 카테고리의 다른 글

    Week #5 k-평균  (0) 2023.08.29
    Week#5 군집 알고리즘  (0) 2023.08.29
    Week #4 트리의 앙상블  (0) 2023.08.18
    Week#4 교차 검증과 그리드 서치  (0) 2023.08.18
    Week #4 결정 트리  (0) 2023.08.18
Designed by Tistory.