A. Optimization Objective
1. Linear Regression이나 Logistic Regression과 같이, 업계에서 자주 사용되는 최적화 알고리즘 중 하나가 SVM이다. 이 SVM의 수학적인 개념을 살펴 보는 것이 이번 강의의 목표다.
2. Logistic Regression의 비용 함수는 위와 같다. 또 그래프로 그려보았을 때는 파랑색 선과 같다. SVM은 이 파랑 곡선보다, 그에 근사한 보라색 직선을 비용함수로 사용하는 것이다.
1. Logistic Regression의 공식은 위와 같다. SVM은 약간 변형된다. 이전 슬라이드의 직선 그래프를 SVM의 비용함수1, 비용함수 0이라고 할 때, log부분을 치환할 수 있다.
2. 그리고, 식 안의 m을 지운다. m은 상수로서 우리가 구하려고 하는 최소값에는 영향르 주지 않는다.
3. 이 식을 간단히 하고 나서, B부분에 람다를 곱하는 대신 A부분에 C라는 상수를 곱해준다. 여기에서 Logistic Regression과 SVM의 차이가 있다. 람다나 C를 곱한다는 것은 가중치를 조절한다는 것이다. 로지스틱 리그레션에서는 람다의 값을 작게 설정해 줌으로써, A에 더 높은 가중치를 주었다. 하지만 SVM에서는 C에 적은 값을 줌으로써 B에 더 큰 가중치를 주게 된다.
B. Large Margin Intuition
1. SVM의 비용함수는 위에서 보는 것처럼, y값이 1일 때는 z가 1보다 커야 0이며, y값이 0일 때는 z가 -1보다 작아야 비용이 0이된다.
1. SVM이 Decision Boundary를 만드는 과정을 보여주는 그래프이다. SVM의 Decision boundary에는 margin이라는 개념이 있다. 이 margin이 최대가 되는 지점에 boundary가 그어진다.
1. 상수 C가 무척 크다는 것은 1/lambda에서 lambda가 무척 작아진다는 것과 같다. C가 커질수록 boundary는 이상치에 민감해진다. 왜냐하면, 단 하나의 작은 오차(이상치)라도 크게 반응 하게 되는 것이다.
C. Mathmatics Behind Large Margin Classification
1. 벡터의 내적을 표현하는 것에 있어서, 두가지 방법이 있다. 첫 째는 하나의 벡터를 전치한 뒤 곱하는 방법이다.
2. 또 다른 하나가, Norm(노름)을 이용하는 것이다. 여기서 사용되는 노름은 유클리디안 노름으로 피타고라스 정의를 생가하면 쉽다. 위에서는 u의 노름에 v가 u에 투영된 길이인 p를 곱한다. 반대 역시 같은 내적 값을 얻을 수 있다.
3.내적은 어떤 상징을 가지는 것일까, 서로 다른 두 방향의 힘이 하나가 되는 것. 단순히 숫자적으로는 곱해지는 것이 행렬로의 접근이라면, 투영시킨 길이와 노름은 선형대수적 접근이다. 서로 다른 방향의 둘은 어찌되었든 서로를 반영해야 하기에 projection이 이루어지고, 투영된 대상에게 비친 길이와, 투영 대상의 norm을 곱해 내적이 이루어진다.
1. 우리가 해야 할 것은, 가설 h의 세타가 적용된 m개의 사례가 적용될 때, 비용이 가장 최소가 되는 h를 구하는 것이다.
x와 세타를 우리는 벡터로 볼 수 있고, 하나의 가설이 적용된 것을 두 벡터의 내적이라고 볼 수 있다. 그리고 투영 대상을 트레인 데이터 벡터 x라고 볼 때, 내적 값은, 벡터 세타에 투영된 x, p와 세타의 노름을 곱하면 하나의 사례에 대한 하나의 예측 값이 나온다.
1. 지금 햇갈리는 것은 경계면으로부터 수직인 직선이 세타 벡터라는 것이다. 경계선이 세타 벡터가 아니라. 수식적으로 우리가 최소화 해야 하는 것은 벡터 세타의 노름이고, 이 노름을 최소화 하기 위해서는 p값이 커야한다. p값이 크다면, 1보다 크거나 작음을 만족하기 위해, 세타는 작은 값을 가질 수 있다. 하지만 p 값이 작다면 세타는 큰 값을 가져야 한다. 이 p가 SVM에서 margin이 되는 것이며, SVM은 이 margin이 가장 크게 되는 방향으로 세타를 정하게 된다.
2. 간단히 보자면 두가지 분류를 가르는 어떤 평면이나 직선을 만드는 거싱고, 그로부터 가장 가까운 x값의 p값을 최대화 하는 방향으로 세타가 조정되는 것이다.
'2019년 혁신성장 청년인재 집중양성(빅데이터) > [COURSERA] Machine Learning Stanford Uni' 카테고리의 다른 글
[week7] SVMs in Practice (0) | 2019.10.28 |
---|---|
[week7] Kernel (0) | 2019.10.28 |
[week6] Handling Skewed Data (0) | 2019.10.11 |
[week6] Building a Spam Clasifier (0) | 2019.10.10 |
[week6] Evalutating a Learning Algorithm (0) | 2019.10.10 |