KNN(K-nearest Neighbor) Classifier
- 최근접 이웃 알고리즘
- 가장 간단한 지도학습 머신러닝 알고리즘
- 훈련데이터를 저장해두는 것이 모델을 만드는 과정의 전부
- k -> 몇 개의 이웃(가장 가까운 훈련 데이터)을 확인할 것인지. 홀수로 지정하는 게 일반적
- k의 결정
- k가 작으면 이상점 등 노이즈에 민감하게 반응해 과적합 문제 발생
- k가 크면 자료의 패턴을 잘 파악할 수 없어 예측 성능이 저하됨 -> 과소적합
- 검증용(validation) 데이터를 이용해 주어진 훈련 데이터에 가장 적합한 k를 찾아야함
- 거리의 측정
- n개의 특성변수를 가지는 자료에서 두 개의 관찰점
- 유클리디안 거리
- 맨해튼 거리
- 자료 스케일에 차이가 있는 경우, 스케일이 큰 특성변수에 의해 거리가 결정되어버릴 수 있음
- 표준화 변환(Z score) 또는 min-max 변환으로 스케일링 후 거리를 재는 것이 적절함
- 원핫인코딩된 범주형 자료는 min-max 스케일링 선호
SVM(Support Vector Machine)
- SVM 알고리즘
- 분류를 위한 기준선을 정의하는 모델(회귀는 예측을 위한 직선을 정의)
- 분류되지 않은 새로운 점이 나타나면 경계의 어느 쪽에 속하는지 확인해서 분류 과제를 수행
- 속성이 3개로 늘어나면 3차원이 됨 -> 결정 경계는 선이 아닌 평면
- 최적 결정 경계(Decision Boundary)
- 결정 경계는 데이터군으로부터 최대한 멀리 떨어지는게 좋음
- Support Vectors는 결정경계과 가까이 있는 데이터 포인트(샘플)들을 의미함
- 마진(Margin)
- 결정 경계와 서포트 벡터 사이의 거리를 의미
- 서포트 벡터만 적합하게 선정한다면 나머지 포인트(이상치)는 무시할 수 있음
- 이상치(Outlier)
- 하드 마진 : 서포트 벡터와 결정 경계 사이의 거리가 매우 좁다. 마진이 매우 작아진다 -> 오버피팅
- 소프트 마진 : 서포트 벡터와 결정 경계 사이의 거리가 멀어졌다. 마진이 매우 커진다 -> 언더피팅
- 커널(Kernel)
- 다항식(Polynomial)
- 직선으로 분류하기 어려운 경우 3차원으로 만들어 면적으로 결정 경계를 그려줌으로써 분류할 수 있음
- 방사 기저 함수(RBF: Radial Bias Function)
- 사이킷런에서 모델을 불러올 때 커널 옵션의 기본값 rbf
- RBF 커널은 2차원의 점을 무한한 차원의 점으로 변환
- 복잡한 선형대수 사용됨
- 파라미터 C
- 모델이 오류를 어느정도 허용할 것인지 파라미터 C를 통해 지정
- 마진의 값을 지정
- C값이 클수록 하드마진(오류 허용 안함). 작을수록 소프트마진(오류 허용)
- 파라미터 gamma
- 결정 경계를 얼마나 유연하게 그을 것인지 정함
- 면을 선으로 바꾸는 과정에서 곡선 그려짐
- 마찬가지로 값이 커질수록 하드마진, 작아질수록 소프트마진