이번 장에서는 이론적으로 가장 논의가 활발하고, 또한 가장 효과적인 분류 알고리즘으로 평가받는 SVM, 서포트 벡터 머신에 대해 알아보겠습니다. 편의 상 SVM 으로 통칭하겠습니다. 우선 '분류'라는 문제 상황에 대해 좀 더 자세히 알아본 후, 마진에 기반한 SVM 의 이론적 기반을 간단히 제시할 예정입니다.
선형 분류의 문제란?
X 가 N개의 차원을 갖는 공간이고, Y = {-1, +1} 그리고 f: X→ Y 라고 정의하자. 쉽게 말해, N차원의 변수 X 를 함수 f 에 대입 하였을 때 +1 또는 -1 을 결과값으로 갖는 관계라는 말이다. 예를 들어, 과일의 무게 및 부피를 입력했을 때 이 과일이 수박인지 (+1), 사과인지 (-1) 를 알려주는 함수를 생각해 볼 수 있다.
우리의 목표는 실제 데이터의 관계를 나타내는 f(x) 와 최대한 비슷하게 데이터를 분류해 낼 수 있는 분류기 h(x) 를 만드는 것이다. f(x)는 +1 이라고 판별 했는데 h(x)가 -1 이라고 판별 했다면 오류가 될 것이다. 따라서, 우리의 목표는 누적된 오류 값이 가장 작은 함수를 찾는 것이다!
여기서 문제는 주어진 학습데이터를 선형적으로 (하나의 직선으로) 완벽하게 분리해 낼 수 있느냐 없느냐에 따라 접근법이 달라진다. 이번 편에서는 전자의 경우에 집중합니다.
보충 설명을 위해 아래 그림을 참고하자. 위의 그림은 하나의 직선으로 파란 점과 주황 점을 완벽하게 구분하는 직선(분류기)를 생성하는 것이 가능하다. 반면 아래의 그림에서는 경계선에서 주황 점과 파랑 점이 혼합되어 나타나므로, 하나의 직선으로 이들을 완벽하게 분류하는 것이 불가능하다. 그렇다면 각각의 경우에 따라 '어떤 기준을 가지고' 이들을 분류하는 직선(분류기)을 선택해야 하는지 알아보자.
SVM - 완벽히 분리가 가능한 경우
서로 다른 두 라벨을 갖는 점들을 완벽하게 분리해 낼 수 있는 경우, 우리는 이들의 경계를 구분하는 직선을 분류기로 선정한다. 문제는, 아래 그림과 같이 파랑색과 주황 점을 구분하는 영역 사이에는 (이론적으로) 무수한 수의 직선이 존재할 수 있다는 점이다. 그렇다면 이 무수한 직선 중 어느 직선이 '최선'일까? 정답은 각 집단에서 가장 가까이 위치한 점들과의 거리(마진)가 가장 큰 직선이다.
마진은 중요한 개념이므로 정확히 이해할 필요가 있다. 이미 주어진 학습데이터는 완벽하게 구분할 수 있지만, 해당 데이터들 사이에 새로운 점이 추가된다면 어떤 기준으로 새로운 점을 분류해야할까? 아마도 이 점이 어느 집단에 더 가까운지를 기준으로 판별할 것이다. 따라서 우리는 두 집단의 딱 중간 위치에 선을 긋고, 이 직선을 기준으로 어느쪽에 위치했는가에 따라 점을 분류한다.
빨강점의 영역과 파랑점의 영역 딱 중간에 위치한다고 함은, 1) 각 집단 최근접점과 분류기 사이의 거리가 (즉 마진의 크기가) 모두 동일하고, 2) 가능한 마진 값 중 최대값을 취한다는 의미이다. 아래 이미지를 통해 예시를 확인할 수 있다.
어떤 조건으로 알고리즘을 학습 시키는지 수학적으로 살펴보자!
1. 파랑과 빨강 데이터를 완벽히 구분해야해!
하나의 점에 대한 함수값과, 결과값 y의 부호가 같다면 우리는 그 점이 올바르게 분류 되었다고 할 수 있다. 위 이미지를 예시로 들어보자. 분류기 w · x + b = 0 을 기준으로, 파랑색 점은 +1보다 크거나 같은 양수의 함수값을 갖고, 빨강색 점은 -1보다 작거나 같은 음수의 함수값을 갖는다. 그리고 앞서 정의한 Y = {-1, +1}에 의해 빨강점이라면 -1, 파랑점이라면 +1을 라벨 (y값)로 갖는다.
따라서, 하나의 데이터 포인트 xi 에 대하여 xi가 빨강점 이라면 (w · x + b) <= -1 그리고 yi 는 -1 이라는 값을 갖고, (w · x + b)yi >= 1 이다.
마찬가지로, 하나의 데이터 포인트 xi 에 대하여 xi가 파랑점 이라면 (w · x + b) >= 1 그리고 yi 는 1 이라는 값을 갖고, (w · x + b)yi >= 1 이다.
즉, '모든 점 xi에 대하여 (w · x + b)yi >= 1 이다!' 라는 조건을 걸어둠으로써, '두 영역을 완벽하게 구분할 수 있으며, 모든 점은 각각의 영역에 올바르게 속한다' 점을 알고리즘에 학습시킬 수 있는 것이다.
2. 마진의 크기를 최대로 하는 분류기를 선택해!
우리가 찾고자 하는 분류기의 함수를 w · x + b = 0 으로 정의하자. 그리고 해당 분류기로부터 가장 가까운 점이 (분류기와 같은 기울기를 갖는) 직선 w · x + b = 1 을 지난다고 하자. (w는 계수를 정의한 벡터, x는 변수값의 벡터, b 는 스칼라이다)
우리는 선형대수학을 통해 하나의 점과 직선 사이의 최단 직선 거리, 즉 마진 p = ( |w · x + b|) / ∥w∥ 이라고 배웠다. 따라서 해당 식은 p = 1 / ∥w∥ 로 아래와 같이 정리할 수 있다.
따라서, 마진 p의 최대값을 찾는다는 것은 곧 ∥w∥ (x에 대한 계수들의 유클리드 노름) 의 최소값을 찾는다는 것과 동일합니다. 노름에 대한 정의가 어렵다면 아래 링크를 참고하자.
https://leebaro.tistory.com/entry/norm%EB%85%B8%EB%A6%84%EC%9D%98-%EC%A0%95%EC%9D%98
따라서 위 식을 통해, 우리는 분류기와 가장 가까운 빨강점 사이의 마진, 그리고 분류기와 가장 가까운 파랑점 사이의 마진을 최대로 하는 분류기를 도출할 수 있는 것이다!
이번 글을 통해 대표적인 분류 문제 알고리즘 SVM, 그 중에서도 집단을 완벽하게 분류할 수 있는 경우를 살펴보았습니다! 다음 장에서는 조금 다른 경우, 즉 두 집단의 데이터가 섞여서 완벽하게 분류해 내기 어려운 경우를 살펴보겠습니다!
'🧑💻 IT 범생이 Finn > 🤖 데이터 석사 생존기' 카테고리의 다른 글
미국 조지아텍 OMSA 온라인 석사, 이 학점으로도 가능한가요? (데이터 사이언스 석사 Q&A) (13) | 2022.01.02 |
---|---|
SVM 서포트 벡터 머신 알고리즘 개념 정리 (2): 불완전한 분류편 (0) | 2021.07.01 |
꼭 알아야 하는 머신러닝 필수 개념 (3): 학습방법 편 (2) | 2021.06.28 |
꼭 알아야 하는 머신러닝 필수 개념 (2): K-fold CV 교차검증 (0) | 2021.06.26 |
꼭 알아야 하는 머신러닝 필수 개념 (1): 기초용어 및 활용분야 예시 (0) | 2021.06.24 |