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

week7

by tryotto 2019. 8. 14.

1. Alternative view of Logistic Regression

      - Logistic regression의 Cost Function 모양

- 하나로 통합된 식을 만들 수 있었음

- y=0, y=1일때의 식이 다름 (why? Cost Function 식에 직접 넣어보면 됨)

- 직접 그려보면, 하강 곡선과 상승 곡선을 그린다

-> 이걸 Alternative 한 시각으로 재해석하자

-> Elbow 모양처럼 생긴 두 개의 함수가 나온다.



2. Support Vector Machine의 유래

       - Logistic Regression 식을 Vector로 해석한다

- 이때, 람다 값 (λ) 대신에 c 값으로 대체한다

- c*A + B :   c값이 크다 -> A 의 가중치 값이 크다, low bias, high variance

** why? c값이 크다-> λ값이 작다 -> 변수가 많다

      c 값이 작다 -> A 의 가중치 값이 작다, high bias, low variance

** why? c값이 작다-> λ값이 크다 -> 변수가 적다

-> 이런 식으로 이해만 하면 된다


3. Linear Regression 과 Support Vector Machine 과의 차이점

      - h(x) 산출값 :

1) Linear Regression : 확률값을 산출한다 (probability)

2) Support Vector Machine : 0, 1 두 값만 산출한다 



4. Support Vector Machine 값

      - y=1 인 경우

- Θ^T >= 1 인 상황을 원함

   why? minimize 하는게 내 목표이기 떄문


      - y=0 인 경우

- Θ^T <= -1 인 상황을 원함

   why? minimize 하는게 내 목표이기 떄문


-> 이 과정이 Margin을 설정하는데에 있어서 중요한 역할을 한다



5. Support Vector Machine의 다른 이름 = margin classifier

      - 이유 : Margin의 크기를 결정하는데에 중요한 역할을 하는게 SVM이기 떄문



6. C 값에 따른 SVM의 다른 점

      - C 값이 클 경우 : 조금이라도 error를 발생시키는 경우가 있다면, 새로운 선을 작도해야 함

      - C 값이 작을 경우 : 어느 정도의 error는 허용 해준다. 융통성있게 데이터를 다뤄준다



7. Kernels의 의의 

      - 어떤 SVM을 구했다고 했을때, 그 SVM 안에 있는 변수들이 과연 최선일까?

-> 변수를 더 줄일 순 없을까? 더 효율적인 경우는 없을까?

** 이떄, SVM이라 함은, h(x) 함수 안에 들어가는 x를 의미한다


      - 그렇다면, 새로운 features 들을 설정할 수 있는 방법은 무엇일까?

1) 세 개의 landmarks들을 우선 선정한다 : l_1, l_2, l_3

2) 세 개의 함수를 정한다 : f_1, f_2, f_3

- f_1 = (x와 l_1가 갖는 거리의 크기)

   -> 이 값이 작으면, f_1은 1을 산출하고

       이 값이 크면, f_1은 0을 산출한다

3) 이런 방식으로, 여러 개의 x 를 대입할 경우 Decision Boundary가 결정된다

       - Θ_0 + Θ_1 * f1 + Θ_2 * f2 ... >=0 이면 :  y=1 바운더리 안에 들어가게 됨

- 이때, 그 바운더리 안에  속하는 랜드마크는, 그 x값에 가까운 랜드마크임

   그 랜드마크만 바운더리에 속함. (그 이외의 랜드마크는 out)


       - Θ_0 + Θ_1 * x + Θ_2 ... < 0 이면 : y=0 바운더리에 속하게 됨. 즉, 쉽게 말하면,

    y=1 바운더리 밖에 속하게 됨.


8. Landmark는 어디에다가 설정해야 하는가?

       - landmark 를  x 값에다가 둔다



9. SVM 의 변수에 따른 bias, variance 정도 

       - C 값

- c값이 크다 -> A 의 가중치 값이 크다, low bias, high variance

** why? c값이 크다-> λ값이 작다 -> 변수가 많다

  - c 값이 작다 -> A 의 가중치 값이 작다, high bias, low variance

** why? c값이 작다-> λ값이 크다 -> 변수가 적다


       - δ 값

- δ 값이 크다 -> similarity가 작다 -> (Θ^T >= 0)이 될 수 있는 확률이 낮다

   -> y=1이 될 확률이 적다 -> y=1에 들어올 수 있는 변수의 수가 적어진다 

       -> high bias, low variance



10. 실제 SVM을 적용하기 - software에 library를 끌어와서

       - 내가 선택해야 하는 것들

1) C값 : high variance, high bias를 방지하기 위해, 적절한 크기의 C값을 설정해야 함

2) kernel을 사용할것인가?

      - 사용하지 않는다(=linear kernel) : (Θ^T >= 0 이면 y=1) 이것만 사용한다

      - 사용한다 (보통, Gaussian kernel) : ( Θ_0 + Θ_1 * f1 + Θ_2 * f2 ... >=0 이면 y=1) 

   이것만 사용한다

** 단!! 이때, δ 값을 설정해줘야 한다!!

** Gaussian 말고도 여러 kernel들이 존재!! 잘 안  쓸 뿐임!!


       - Gaussian Kernel을 사용할 떄 주의점 : feature scaling을 반드시 해줘야 한다!!



11. Logistic Regression을 사용할건가, SVM을 사용할건가?

       - (n = 변수의 갯수), (m = trainning example의 갯수) 라 할때,

1) n > m 일 경우 : Logistic regression을 사용하거나, Linear kernel을 사용한 SVM 활용

2) n < m, m이 적당한 크기일 경우 : Gaussian kernel을 사용한 SVM을 활용하기

3) n < m, m이 너무 클 경우 : 더 많은 변수를 추가하고, Linear regression을 사용한 SVM 활용





 

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

week8 (2)  (0) 2019.08.14
week8  (0) 2019.08.14
week6  (0) 2019.08.14
week5  (0) 2019.08.14
week4  (0) 2019.08.14