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 활용