• Tistory
    • 태그
    • 위치로그
    • 방명록
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

주성분분석 ( Principal Component Analysis ) - PCA

전공관련/Algorithm 2014. 9. 17. 14:58





PCA에 대해 이해하기 위해 공부하며 정리한 글.

개인적인 이해이므로 정확하지 않을 가능성이 다분... 


우리말로 주성분분석이라 불리는 PCA 는 특징값의 차원을 낮추고 중요한 정보들은 보존하기 위한 방법으로

Feature Space를 변환하여 특징값을 중요도 순으로 구한뒤 이중 일부만을 선택함으로써 차원은 낮추며 정보손실은 최소화 하는 것을 기본 전제로 한다.


이해하기 쉽도록 2차원의 데이터를 가지고 시작.




PCA의 목적이 정보의 손실을 최소화 하면서 차원을 낮추는 것이라 하였으니 2차원의 데이터를 1차원으로 낮춰야 한다.

2차원의 데이터가 1차원으로 낮아지기 위해서는 projection 을 이용한다. 

2차원 상의 데이터를 임의의 한 축으로 projection 하면 2차원의 데이터가 1차원의 데이터로 선형변환 된다.

이때 우리가 알고싶은 것은 선형변환하기위한 무수히 많은 축들 중에서 어떤 축이 기존 특징의 정보를 가장 적게 손실하는가 가 된다.


아래의 그림에서 볼 수 있듯이 여러 축으로 projection이 가능하지만 그 결과는 모두 같지 않다.

두 projection 결과중 왼쪽의 것은 특징값이 일부 overlap 되면서 그만큼 특징값의 정보를 손실했다고 볼 수있다.

반면 오른쪽의 것은 왼쪽의 것에 비해 정보의 손실없이 차원이 낮아진 것을 볼 수있다.
















위에서 볼 수 있듯이 정보의 손실이 가장 적은 축은 데이터의 분산이 가장 큰 방향의 벡터값이라고 할 수 있을 것이다.

분산이 가장 큰 방향을 찾기 위해서는 covariance(공분산) 과 eigenvector(고유벡터) 를 이용한다.

원 데이터의 covariance 를 구하고 이들의 eigenvalue에 해당하는 eigenvector를 찾아서 matrix를 구성하면 

이 matrix가 데이터를 projection 하는 변환행렬이 된다.


이때 eigenvalue 는 원 정보의 차원만큼 구할 수 있고 eigenvalue의 값이 클수록 원 정보의 대표적인 정보를 가지고 있는 

더 중요한 값이고 값이 작아질수록 덜중요한 혹은 노이즈 성분이 될 수 있다.

이러한 이유로 모든 eigenvector 를 이용하면 역변환을 통해 원본 정보를 그대로 복원이 가능하고, 중요하다고 판단되는 상위 일부의 정보만을 이용하면 정보의 손실을 최소화 하면서 차원을 줄일 수 있게 된다.


==============================================================================================


아직 PCA에 대한 이해도가 낮아 너무 개념적인 내용밖에 파악하지 못한 상태...

조금더 살펴 보는 걸로 하자.




저작자표시 비영리 (새창열림)

'전공관련 > Algorithm' 카테고리의 다른 글

배경 근사화를 이용한 조명 제거 및 이진화  (0) 2016.05.17
Bagging vs Boosting 비슷한듯 비슷하지 않은 개념.  (3) 2014.12.24
Local Patch Descriptor - Ferns Feature  (0) 2014.11.20
K-Mean Clustering  (0) 2013.08.13
Hidden Markov Model ( HMM )  (0) 2013.08.06
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

카테고리

  • 살다보니.. (449)
    • 주절거림 (3)
    • 취미생활 (36)
      • 지식과 지혜 (3)
      • 풍경이 되어 (4)
      • Memories (17)
      • 엥겔지수를 높여라 (2)
    • mathematics (6)
      • Matrix Computation (2)
      • RandomProcesses (3)
    • English.. (8)
    • Programming (147)
      • C, C++, MFC (51)
      • C# (1)
      • OpenCV (17)
      • Python (58)
      • Git, Docker (3)
      • Matlab (4)
      • Windows (3)
      • Kinect V2 (2)
      • 기타 etc. (8)
    • 전공관련 (80)
      • Algorithm (6)
      • Deep Learning (54)
      • 실습 프로그램 (4)
      • 주워들은 용어정리 (8)
      • 기타 etc. (8)
    • Computer (118)
      • Utility (21)
      • Windows (31)
      • Mac (4)
      • Ubuntu, Linux (58)
      • NAS (2)
      • Embedded, Mobile (2)
    • IT, Device (41)
      • 제품 사용기, 개봉기 (14)
      • 스마트 체험단 신청 (27)
    • Wish List (3)
    • TISTORY TIP (5)
    • 미분류. 수정중 (1)

태그목록

  • 스마트체험단
  • SVM
  • ColorMeRad
  • 딥러닝
  • 매트랩 함수
  • 포르투갈
  • 후쿠오카
  • Deep Learning
  • LIBSVM
  • ReadString
  • function
  • 큐슈
  • review
  • 칼로리 대폭발
  • matlab function
  • 오봉자싸롱
  • Computer Tip
  • CStdioFile
  • 매트랩
  • Convolutional Neural Networks
  • DSLR
  • 크롬
  • portugal
  • matlab
  • utility
  • random variable
  • 갤럭시노트3
  • DeepLearning
  • 에누리닷컴
  • 일본

달력

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
06-21 21:00

LATEST FROM OUR BLOG

RSS 구독하기

BLOG VISITORS

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바