미누에요
[Machine Learning] KNN(K-nearest Neighbor) 본문
분류를 할 때 사용하는 알고리즘 중 주변 데이터에 따라 분류를 하는 방법이 존재한다.
예시를 들자면 공부 잘하는 놈 주변에는 다 공부 잘하는 놈들이 모여있을거라는 생각을 하듯 이 KNN도 근처에 있는 데이터가 비슷한 양상을 띌거라는 이론에서 시작된 분류 알고리즘이다.
KNN(K-nearest Neighbor)
쉽게 말해서 근처에 있는 K개의 데이터를 보고 이 데이터를 판별하는 방식이다.
위 사진을 보면 이해가 빠를 것이다.
위 사진에서 ? 라는 데이터가 ★에 속하는지, 혹은 ▲ 에 속하는지 분류하는 경우이다.
만약 K=3으로 둔다면 주변의 가장 가까운 3개의 데이터를 골라보니 ★이 1개, ▲가 2개이다.
K=3으로 KNN 알고리즘을 통해 분류하면 결과적으로 ? 데이터는 ▲라고 판별하게 된다.
반면에, K=7으로 두고 KNN 알고리즘을 사용한다면, ★이 4개, ▲가 3개이다.
결론적으로 K=7으로 KNN 알고리즘을 사용하면 ?는 ★이라고 모델이 판단하게 된다.
이렇듯 KNN 알고리즘은 K의 크기에 따라 분류 결과가 다르게 나올 수 있다.
KNN 의 장점
- 복잡한 수학적 식이 없어, 단순하고 직관적이다.
- 근처의 데이터를 가지고 판단하기 때문에 학습 단계가 거의 없다.
- 데이터가 선형적이지 않더라도 근처의 데이터를 가지고 판단하기에 상관이 없다.
KNN 의 단점
- 가까운 데이터를 찾을 때 전체 데이터와의 거리를 계산해야하므로 데이터 양이 많아질수록 속도가 느려진다.
- 거리 기반 알고리즘으로, 정규화가 필수적이다.
- 적절한 K값을 설정하는 것이 어렵다.
- 고차원 데이터에 취약하다.
- 이상치에 매우 민감하다.
결론적으로 KNN은 소규모 데이터셋에서 단순한 문제를 처리하는 데 매우 효과적이지만, 대규모 데이터셋이나 복잡한 문제에서는 효율적이지 않아 보통 다른 알고리즘과 함께 사용하게 된다.
'AI' 카테고리의 다른 글
[Deep Learning] 딥러닝과 인공신경망(Neural Network), 퍼셉트론(Perceptron) (0) | 2024.12.24 |
---|---|
[Machine Learning] 혼동 행렬(Confusion Matrix), 정확도(Accuracy), 정밀도(Precision), 재현율(Recall) (0) | 2024.12.23 |
[Machine Learning] 나이브 베이즈 분류(Naive Bayes Classification) (0) | 2024.12.12 |
[Machine Learning] SVM(Support Vector Machine) (0) | 2024.12.11 |
[Machine Learning] 로지스틱 회귀(Logistic Regression) (0) | 2024.11.11 |