K Nearest Neighbors
KNN 알고리즘은 간단한 분류 알고리즘으로 거리에 따라 새로운 데이터의 class를 분류한다.
별 모양의 새로운 데이터가 들어오면 하이퍼파라미터 k를 기준으로 새로운 데이터에서 가장 가까운 k개의 데이터를 찾고 해당 데이터중에서 가장 많은 데이터를 가진 Class로 분류를 한다.
아래 그림의 경우에서 k = 3일때 3개의 데이터 중에서 class 1이 1개, class 2가 2개이므로 class 2로 분류한다.
반면에 k = 5일때 5개의 데이터 중에서 class 1이 3개, class 2가 2개이므로 class 1으로 분류한다.
KNN 알고리즘의 과정은 다음과 같다.
- 데이터를 분석하고
- 기존 데이터와 새로운 데이터의 거리를 계산
- k개의 가장 가까운 샘플을 선정하고
- 가장 많은 class를 선정한다.
KNN 알고리즘에서 일반적으로 k값은 동률인 경우를 막기 위해서 홀수를 사용한다.
Decision boundary
Decision boundary란 두 개의 서로 다른 클래스의 기준이 되는 선이다.
하지만 decision boudary는 이상치(outlier)에 의해 이상한 부분에 존재할 수 있다.
이러한 것처럼 경계면을 부드럽게 만들기 위해서는 k의 값을 키우는 것이 하나의 방법이 될 수 있다.
k = 1로 하면 이론상 훈련 데이터에 완벽하게 동작한다. 하지만 실제 데이터에서는 아마 제대로 동작을 안할 것이다.
Train Test Split
따라서, 우리는 전체 훈련 데이터를 Train Validation Test 데이터로 나눠서 Train data로 훈련을 하고 validation으로 검증을 해서 hyperparameter 값을 최적화한다. 이 경우에는 k값을 수정한다. 이후에 Test data로 최종 검증을 한다.
Cross Validation
Cross validation은 전체 데이터에서 test 데이터를 제한 나머지를 fold로 나눈 후 학습시마다 각 fold를 돌아가면서 validation으로 사용하고 결과의 평균을 사용한다.
KNN 장단점
KNN의 장점은 모델 자체가 단순하는 것이다. 그리고 학습이 필요 없다. 왜냐하면 label 단 데이터만 있으면 되니까.
반대로 단점은 메모리를 많이 사용하고 연산이 많다는 점이다. 학습시마다 모든 데이터와 거리 계산이 필요하기 때문이다.
'인공지능 > 인공지능 기초 개념' 카테고리의 다른 글
기초 개념편 (4) - SVM (0) | 2024.04.14 |
---|---|
벡터의 크기와 거리(Norm and Distance) (0) | 2024.04.14 |
기초 개념편 (3) Gradient Descent (0) | 2024.04.14 |
기초 개념편 (2) Linear Regression (0) | 2024.04.14 |
기초 개념편 (1) Machine Learning이란? (0) | 2024.04.13 |