사용하기 편하면서 높은 정확도를 보이는 지도학습 머신러닝 알고리즘
<kNN 알고리즘>
'여기가 강남일까요, 강북일까요?'를 해결하는 알고리즘
< SVM >
'지금 현재 이곳이 한강의 북쪽인가요, 남쪽인가요?'를 해결하는 알고리즘
후보 1이 후보 2보다 더 좋은 결정 경계선으로 보임.
why?
결정 경계선을 찾는 데 사용되는 개념
vector
2차원 공간 상에 나타난 데이터 포인트
벡터 공간에서 점은 벡터로 표현될 수 있음.
점이 단순히 (0,0) 위치에서 특정 지점까지 벡터를 점으로 형상화 한 것으로 생각할 수 있기 때문
support vector
결정 경계선과 가장 가까이 맞닿은, 최전방 데이터 포인트를 의미
위 사진에서 한남, 동작, 압구정이 서포트 벡터임
서포트 벡터와 결정 경계 사이의 거리
SVM의 목표는 이 마진을 최대로 하는 결정 경계를 찾는 것 (학습 단계)
마진이 클수록 우리가 알지 못하는 새로운 데이터에 대해 안정적으로 분류할 수 있기 때문
성능이 좋은 모델 학습 시 에러가 적은 모델
성능이 좋은 모델 = 테스트 및 운용 시 에러가 적은 모델
약간의 오류를 허용하기 위해 비용(C)이라는 변수를 사용
cost margin , 학습 에러율 + (과대적합의 위험)
cost margin , 학습 에러율 + (과소적합의 위험)
서로 다른 분류값을 결정하는 경게 (ex. 경계 위는 강북, 경계 아래는 강남)
결정경계 = N - 1 차원
ex1
데이터가 2차원 공간에 존재하는 경우 결정 경계선(1차원)
ex2
데이터가 3차원 공간에 분포하는 경우 결정 경계 초평면(2차원, hyperplane)
문제 상황
1차원의 결정 경계는 0차원. 점으로 집단을 구분하기 어려움
해결
1차원 데이터를 2차원으로 옮겨서 y축을 만듦
=> 매핑 함수(mapping function) : 저차원의 데이터를 고차원의 데이터로 옮겨주는 함수
so, 커널 트릭이 고안됨
- 선형 SVM : 커널을 사용하지 않고 데이터를 분류. 비용(C)를 조절해서 마진의 크기를 조절.
- 커널 트릭 : 선형 분리가 주어진 차원에서 불가능할 경우, 고차원으로 데이터를 옮기는 효과를 통해 결정 경계를 찾음.(실제로 데이터를 고차원으로 보내는 것은 아님) 비용(C)와 gamma를 조절해서 마진의 크기를 조절.
즉, SVM이 2차원 벡터 공간 상에서 직선이 아닌 결정 경계선으로 데이터를 분류한 경우는 모두 커널 트릭의 결과임.
비용과 감마 수치를 조정함으로써 정확도를 높일 수 있음