본문 바로가기
기계학습/코세라 - 기계학습 (Andrew Ng)

week8 (2)

by tryotto 2019. 8. 14.

1. Dimensionality Reduction 의 장점

      - Data Compression

1) 이를 통해, 컴퓨터 메모리를 절약할 수 있다

2) 학습 알고리즘의 속도를 더 높일 수 있다



2. Principal Component Analysis (PCA algorithm)

      - 목적 : 각각의 데이터들의 차원을 줄이려 할 때, 어떤 차원으로 줄일 것인지 결정해줌

    -> reduce할 surface를 구하는 알고리즘이라고 생각


      - 방법 : reduce 할 surface를 찾기 위해서, 각각의 data들로부터의 합이 최소가 되는 surface를 찾는다

** 이러한 data들로부터의 거리 합을 "projection error"이라고 부른다


      - 다른 해석 : 사실상, 특정 값을 구성하는 함수의 "벡터"들의 갯수를 줄인 것이라고 봐도 됨

-> 이렇게 해서 줄여진 벡터들이 구성하는 걸 "surface"라고 부른다



3. PCA 와 Linear Regression 의 차이점

       - projection error (PCA) 와 cost function (linear regression) :

-> PCA의 경우, "surface로부터의" 수직거리 합을 최소화 하는걸 목표로 함

-> linear regression의 경우, "x축, y축으로부터의" 수직거리 합을 최소화 하는걸 목표로 함


       - prediction 의 유무

-> PCA의 경우, 따로 predict 하려는 y 값이 없다

-> linear regression의 경우, predict하려는 y값이 있다



4. PCA에서 surface를 찾는 과정

       1) Data preprocessing 

- trainning set들의 변형 :

      - trainning set들의 mean(평균값)을 구한다

      - 각각의 trainning set들을 mean normalization(또는 feature scaling) 해준다

      -> ( x - μ ) 처리를 해준다

- data들의 scale이 너무 심하게 다를 경우, 정규화를 시켜준다

      -> ( x - μ ) / S   처리를 해준다


        2) "covariance matrix"를 계산

        3) "eigenvectors"를 계산한다 ( 2번 과정의 결괏값을 넣어서 ) -> 이걸 octave에 svd 함수에 적용하면 됨

-> svd 함수의 출력값 중 U : n*n 매트릭스 꼴이다

-> 만약, n차원에서 k 차원으로 줄이고싶다면, U에서 1~k 번쨰 매트릭스만 선택하면 된다

-> z = U^T * x 이므로, U^T에 의해 k차원으로 축소됨



5. PCA를 통해 k차원으로 줄이고자 할 때, 어떤 값을 k값으로 설정할 것인가?

        - k차원으로 줄였을때, 얼만큼의 데이터가 정확하게 보존이 되는가?

1) projection error값을 구한다 (각 데이터들과 sirface 사이의  거리**2 평균)

2) 전체 데이터의 variance값을 구한다

3) 1번 값을 2번값으로 나눈다 

      ex. 3번값이 1%보다 작은 경우 -> 99%의 데이터가 보존된다

         4%보다 작은 경우 -> 96%의 데이터가 보존된다 ....등등


        - 방법(1) : k=1 에서부터 시작해서 하나씩 늘려간다

1) k=1일때, 99%가 보존되는지 확인한다

2) 만족하지 않을 경우, k+=1 을 한 다음에, 1번부터 다시 시작한다


        - 방법(2) : svd를 octave에서 실행하면 S 매트릭스가 산출된다

- 이때의 S 매트릭스를 이용해서 보존률이 99%가 되는지를 확인한다 (훨씬 계산이 간단)

why? S 매트릭스의 경우, 대각성분만 존재하는 간단한 매트릭스이다



'기계학습 > 코세라 - 기계학습 (Andrew Ng)' 카테고리의 다른 글

week10  (0) 2019.08.14
week9  (0) 2019.08.14
week8  (0) 2019.08.14
week7  (0) 2019.08.14
week6  (0) 2019.08.14