Please enable JavaScript.
Coggle requires JavaScript to display documents.
Support vector machine (SVM) - Coggle Diagram
Support vector machine (SVM)
What is SVM?
분류 (Classify)를 위한 기준 선 (결정 경계, decision boundary)을 정의하는 모델
최적의 Decision boundary
Decision boundary 는 데이터 군으로부터 최대한 멀리 떨어지는게 좋다.
Margin은 decision boundary와 support vector 사이의 거리
마진을 크게 하려면 결국 이상치 (Outlier)을 잘 다루는것이 중요하다.
아웃라이어란 혼자 튀어있는 포인트들로, 이로 인해서 마진이 작아지고, 커질 수 있다.
다루는방법
1) 아웃라이어를 허용하지 않고 기준을 까다롭게 세우면: 하드 마진 (hard margin)
2) 아웃라이어들이 마진 안에 어느정도 포함되도록 너그럽게 기준 세우면 : 소프트 마진 / but, 너무 대충학습하는 꼴이라 언더피팅 (underfitting) 문제 발생할 수 있ㅏ
오버피팅 (Overfitting) 문제
모델의 파라미터들을 학습 데이터에 너무 가깝게 맞출 때 발생하는 현상
해결하는 방법
https://hleecaster.com/ml-overfitting/
너무 세밀하게 학습 데이터 하나 하나를 다 설명하려고 하다보니, 정작 중요한 패턴을 설명할 수 없게되는 현상
학습데이터 세트에 속한 각각의 개별 데이터들을 완벽하게 설명하기 위한 모델을 생성 -> 요리조리 따라가며 선을 그려버림
언더피팅 (Underfitting) 문제
Optimal decision boundary는 margin을 최대화 !!
실제로 Support vector은 decision boundary와 가까이 있는 데이터 포인트들을 의미함. 이 데이터들이 경계를 정의하는 결정적인 역할을 하는 셈
SVM 알고리즘의
장점
: 대부분의 머신러닝 지도 학습 알고리즘은 학습 데이터 모두를 사용하여 모델을 학습. 그런데
SVM에서는 결정 경계를 정의하는 게 결국 서포트 벡터이기 때문에 데이터 포인트 중에서 서포트 벡터만 잘 골라내면 나머지 쓸 데 없는 수많은 데이터 포인터들을 무시할 수 있다. => 그래서 빠르다
SVM에서 decision boundary 구하는 건 상당히 복잡한 최적 화 문제.
파이썬 scikit-learn 라이브러리로 SVM을 구현
scikit-learn을 활용하면 모델을 구현할 때 사용되는 추가적인 개념 익힐 수 있음
https://hleecaster.com/ml-svm-concept/
summary
위에서 다룬 내용을 가볍게 요약하면 아래와 같다.
SVM은 분류에 사용되는 지도학습 머신러닝 모델이다.
SVM은 서포트 벡터(support vectors)를 사용해서 결정 경계(Decision Boundary)를 정의하고, 분류되지 않은 점을 해당 결정 경계와 비교해서 분류한다.
서포트 벡터(support vectors)는 결정 경계에 가장 가까운 각 클래스의 점들이다.
서포트 벡터와 결정 경계 사이의 거리를 마진(margin)이라고 한다.
SVM은 허용 가능한 오류 범위 내에서 가능한 최대 마진을 만들려고 한다.
파라미터 C는 허용되는 오류 양을 조절한다. C 값이 클수록 오류를 덜 허용하며 이를 하드 마진(hard margin)이라 부른다. 반대로 C 값이 작을수록 오류를 더 많이 허용해서 소프트 마진(soft margin)을 만든다.
SVM에서는 선형으로 분리할 수 없는 점들을 분류하기 위해 커널(kernel)을 사용한다.
커널(kernel)은 원래 가지고 있는 데이터를 더 높은 차원의 데이터로 변환한다. 2차원의 점으로 나타낼 수 있는 데이터를 다항식(polynomial) 커널은 3차원으로, RBF 커널은 점을 무한한 차원으로 변환한다.
RBF 커널에는 파라미터 감마(gamma)가 있다. 감마가 너무 크면 학습 데이터에 너무 의존해서 오버피팅이 발생할 수 있다.