분류와 회귀 분석을 위한 대표적인 머신러닝 기법인 SVM에 대한 정리
SVM (Support Vector Machine)
개요
_image_1.png)
- SVM(Support Vector Machine)은 전통적인 이진 분류를 위한 기법 중 하나로, N 차원 공간을 N-1 차원으로 나눌 수 있는 초평면(hyper plane)을 찾는 분류 기법.
- 초평면은 어떤 N차원 공간에서 한 차원 낮은 N-1차원의 subspace을 의미하며 예를 들어, 2차원에서 데이터를 다룰 경우 2차원 데이터를 분류할 수 있는 1차원 선으로 초평면이 결정된다.
- 두 클래스(데이터) 사이에 존재하는 ‘여백(margin)을 최대화’ 하려는 목적으로 설계됨.
- 비선형 데이터의 경우 커널 트릭(Kernel Trick)을 활용하여 고차원 공간으로 변환하여 분류함.
SVM의 Decision Rule
결정 초평면(Decision Hyperplane)
_image_2.png)
- 법선 벡터와 임의의 실수를 이용하면 n차원 공간에서의 초평면(hyperplane)을 알아낼 수 있다.
- SVM의 결정 규칙(Decision Rule) 은 학습된 모델을 사용하여 새로운 데이터 포인트 가 어떤 클래스로 분류되는지를 결정하는 규칙.
- SVM의 목표는 데이터를 가장 잘 구분하는 결정 초평면(Decision Hyperplane) 을 찾는 것으로 2차원 데이터를 예로 들어, 직선의 방정식은 아래와 같다.
- 이때, 는 초평면의 법선 벡터(normal vector) 이고 는 바이어스(bias)를 의미함.
- 따라서, 초평면 직선을 기준으로 법선 벡터 와 임의의 데이터 에 대해 의 값이 특정 상수보다 큰지 작은지를 확인하여 클래스를 분류할 수 있다.
Margin
- 최대화하려는 m argin을 정의하기 전에 먼저 임의로 2개의 평행한 직선을 정의해야 한다.
_image_3.png)
- 초평면에 가장 가까운 샘플(support vector)을 이용하여 초평면에 평행하고 임의의 만큼 동일하게 떨어진 두 직선은 아래 조건을 만족해야 한다.
- 는 임의의 + 클래스의 데이터, 는 임의의 - 클래스의 데이터
- 위 식을 정규화하여 단순하게 만들면 아래와 같다.
- + 클래스를 +1로, -클래스를 -1로 두어 클래스를 나타내는 를 표현하면 아래와 같다.
- 를 이용해 두 평행한 직선 조건을 하나의 식으로 만들면 아래와 같다. 제약식이라 할 수 있다.
- 이때 두 평행한 직선(초평면) 위에 있는 모든 점들을 Support Vector라 한다.
- 마진은 +초평면과 -초평면 사이의 거리를 의미함. 위 그림에서 직선 과 사이의 거리를 의미하며 마진은 다음과 같이 유도할 수 있다.
- 서포트 벡터 와 는 각 평행초평면에 가장 가까운 데이터 포인트이며, 각각 다음을 만족한다.
- 점과 평면 사이의 거리 공식을 이용하여 결정 초평면과 서포트 벡터 와 각각의 거리를 계산하면 아래와 같다.
- 따라서, 마진(Margin)은 두 서포트 벡터 사이의 거리 이므로, 아래와 같다.
Optimization
Linear SVM 정의
- SVM의 목적은 마진을 최대화하는 경계면을 찾는 것.
- 수학적 계산의 용이함을 위해 마진의 절반을 제곱한 것에 역수를 취한 뒤 그 절반을 최소화하는 문제로 바꿀 수 있다.(이 제곱근을 포함하고 있기 때문에 풀기 어렵다)
- 위 식이 SVM 문제를 해결하기 위한 목적식(Objective) 이며, 만족해야하는 제약식(Constraint) 은 아래와 같다.
- 위에서 정의된 목적식과 제약식이 선형 분리를 위한 Hard Margin SVM 최적화 방법이며 모든 데이터 포인트가 결정 초평면으로부터 일정 거리 이상 떨어져 있어야 하므로, 완전히 선형 분리가 가능한 경우에 적용된다.
- Soft Margin SVM은 실제 데이터는 완벽하게 선형 분리가 되지 않는 경우가 많으므로, 허용 오차를 추가하여 최적의 초평면을 구하도록 설계되었다.(완벽한 선형 분리가 불가능할 때 오류를 허용하는 방법)
라그랑주 함수(Lagrangian) 정의
- 제약 조건을 포함한 최적화 문제를 풀기 위해 라그랑주 승수법(Lagrange Multipliers) 을 사용함.
- 제약 조건을 라그랑주 승수 를 사용하여 라그랑주 함수를 아래와 같이 구성할 수 있다.
- 여기서, 위 식은 아래를 만족함.
- 목적 함수에 제약 조건이 포함되었음
- 는 라그랑주 승수 (각 데이터 포인트에 대해 하나씩 존재)
- (KTT* 조건에 의해)
KTT(Karush-Kuhn-Tucker) 조건은 제약이 있는 최적화 문제의 해가 되기 위한 필수 조건이며, 아래 조건을 포함 한다.
- 모든 변수에 대한 미분값은 0이다.
- 모든 라그랑주 승수값과 제약 조건 부등식의 곱은 0이다.
- 라그랑주 승수값은 음수가 아니다.
- 목적함수 를 와 에 대해 편미분하여 0으로 설정하면 다음과 같다.(각 편미분 0이 되는 지점에서 최소값을 가지므로)
- 즉, 는 일부 데이터 샘플(서포트 벡터)들의 선형 합으로 나타 낼 수 있다.
- 서포트 벡터는 인 데이터 포인트가 된다. 경계선에 존재하는 샘플 를 제외하고 모든 샘플에서의 값은 0이 된다.
- 따라서, 값만 알게되면 를 구할 수 있다.
듀얼 문제(Dual Problem) 유도 및 해결
- 라그랑주 함수식(1)에 와 의 편미분 식 (2), (3)을 대입하여 정리하면, 라그랑주 함수 식을 변형한 목적 함수의 dual problem(쌍대 형식)을 유도할 수 있다.
- 아래와 같이 에 대한 최적 문제로 정리된다.
- 듀얼 형태로 변환 과정을 통해 에 관한 식()으로 간단해지고, 의 최고차항의 계수가 음수이므로 최소값을 찾는 문제가 최대값을 찾는 문제로 바뀌었다. 즉, 풀고자하는 전체 라그랑주 식을 정리하면 아래와 같다.
- 위 문제를 풀어 를 구할 수 있고, 를 식 (2)인 에 대입하여 를 구할 수 있게 된다.
- 를 알게되면 제약식 을 이용해 역시 구할 수 있게 된다.
- 따라서 support vector들로 이루어진 decision boundary가 가장 최적의 boundary라고 할 수 있다.
Soft Margin
- 모든 샘플들이 경계선 바깥쪽에 올바르게 분류되어 있다면 하드 마진이라고 하지만, 데이터가 선형적으로 구분되어 있어야 제대로 동작하고, 이상치(Outlier)에 민감하다.
- 데이터 포인트가 초평면을 잘못 분류하는 정도를 나타내는 허용 오차(Slack Variable) 를 도입하여 Margin을 가능한 최대로 유지하는 것을 Soft Margin이라함.
- 따라서, Soft Margin은 마진 오류를 최소화하기 위해 가능한 를 작게 만드는 것과 마진의 역수 를 가능한 작게 만드는 것, 두 가지 목표를 가진다.
- 허용오차 를 적용하고, 두 목표 사이의 trade-off 를 조절하는 하이퍼파라미터 를 정의해 아래와 같이 제약과 함께 정의할 수 있다.
- 하드 마진과 동일할게 KKT 조건을 만족하도록 라그랑주 승수법을 적용하면 아래와 같은 듀얼 문제의 최적화를 얻을 수 있다.
- 적절한 를 적용하여 Soft Margin 최적화를 수행할 수 있다.
- 값이 크면 오차에 대한 강한 패널티 → Hard Margin에 가까움, 오버피팅 가능성
- 값이 작으면 오차를 어느 정도 허용 → 오버피팅 방지, 언더피팅 가능성
Kernel Trick (Non-Linear)
_image_4.png)
- 기본적으로 SVM은 선형 분류기이며, 선형적으로 구분 가능한 데이터를 다룬다. 하지만 현실에서는 비선형적으로 분포한 데이터가 많아 데이터를 단순한 직선또는 초평면으로 분류할 수 없다.
- 커널 트릭(Kernel Trick)은 비선형 데이터를 다루기 위해, 데이터를 더 높은 공간의 차원으로 변환하여 선형 분리가 가능해지도록 하는 효과를 이용함.
고차원으로의 매핑
- 예를 들어, 다음과 같은 1차워 데이터는 선형으로 분류하기가 힘들다.
_image_5.png)
- 기저함수(Basis function) 를 이용하여 2차원 feature space로 1차원 데이터를 2차원으로 매핑(mapping)하면 다음과 같이 선형 분류 가능한 공간이 생성된다.
_image_6.png)
- 아래와 같이 2차원 데이터도 마찬가지로, 선형 분리가 어려운 데이터를 고차원으로 변환하여 선형 분리가 가능한 초평면을 찾을 수 있다.
_image_7.png)
_image_8.png)
_image_9.png)
- 이처럼, 적절히 좋은 mapping function을 찾는 것이 핵심.
참고
- Support vector machine - Wikipedia
- 서포트 벡터 머신 - 위키백과, 우리 모두의 백과사전
- Jaejun Yoo’s Playground: 초짜 대학원생의 입장에서 이해하는 Support Vector Machine (1)
- 16. Learning: Support Vector Machines - YouTube
- [파이썬/머신러닝] SVM(Support Vector Machine) 분류 - 이론 : 네이버 블로그
- 서포트 벡터 머신 (Support Vector Machine) · ratsgo’s blog
- [데이터마이닝] Support Vector Machine (SVM)
- [ML] Support Vector Machine(SVM)
- [머신러닝] Kernel/Kernel trick(커널, 커널트릭)
- (Code) Linear vs. Non-linear Classification: Analyzing Differences Using the Kernel Trick - GeeksforGeeks