개발/Data Science

머신러닝 지도학습 - KNN알고리즘

huiyu 2023. 4. 7. 05:17

k-NN(k-Nearest Neighbor, k-최근접 이웃)

- 특정 데이터를 k개의 인접한 요소를 기반으로 예측하는 지도학습 알고리즘
- 종속변수에 따라 분류모델과 회귀모델로 나눔
- k값이 1에 가까우면 과적합이 되며, 값이 커질수록 과소적합이 되기에 적절한 k값을 선택해야 한다.
- 이진 분류시 k값을 짝수로 지정하는 경우 그 분류가 제대로 되지 않을 수 있기에 홀수로 지정
- 거리 기반 알고리즘이기 때문에 각 변수의 단위 및 정규화에 유의

- Test데이터와 가까운 k개의 Train 데이터의 y값들을 비교
- 분류와 회귀 문제를 모두 다룰 수 있음
  1) 분류 문제를 다룰 때는 class 다수결로 결과 class 를 예측
  2) 회귀 문제를 풀 때는 평균값을 결과값으로 예측
- 비모수 방식이며 instance-based 알고리즘
- Train과 Test 세트로 데이터를 분리하지만, 실제로 Train은 존재하지 않는 '게으른'알고리즘
- 구체적인 데이터를 가지고 예측을 요청할 때, K개의 가장 가까운 사례를 Train Data Set에서 찾아 해당하는 데이터의 y값을 기반으로 예측 결과 제시

k-NN 분류(Classification)

- 새로운 값은 기존의 데이터를 기준으로 가장 가까운 k개의 최근접 값을 기준으로 분류
- k가 1에 가까울수록 과적합 k가 클수록 과소적합이 되기 때문에 적절한 k값 선정 필요

*k값에 따라 결과가 달라진다!
-> k가 작을수록 과적합

k-NN 회귀(Regression)

 - 기본 개념은 분류모델과 같으며 k개의 인접한 자료의 (가중)평균으로 예측
  > k개의 최근접 이웃을 찾고 해당 이웃이 가지고 있는 값의 평균 output 값이 됨.
  > 구체적인 k는 실험을 여러번 돌리면서 찾는다.

거리측정

 - 거리 기준 :Minkowski Distance with parameter p(Default p = 2)
 (유클리디안 거리와 맨하탄 거리의 일반화 형태) p=1일때 유클리디안, p=2일때 맨해턴

*'거리'개념을 사용하는 알고리즘의 경우 Normalization 사용을 항상 검토!
 - normalization이 적용되지 않은 경우, 좁은 범위에 축을 따라 나열되는 짧은 거리로 인하여 반영이 덜 되어 적절하지 않은 결과를 나을 수 있다.

**K값

 - 내부 알고리즘 구현에 따라 k값은 계산 시간에 영향이 적음
 - k 값의 변화에 따른 오분류는 일반성이나 경향성을 가지고 있지 않기 때문에 최적의 k값을 찾긴 쉽지 않다.

KNN 장점 & 단점

1) 장점
 - 단순한 알고리즘으로 이해하고 해석하기 쉬움
 - 데이터에 대한 기본 가정이 없으므로 비선형 데이터에 매우 유용
 - 분류와 회귀 모두에 사용 가능하고 이상값 찾기에도 활용 가능
 - 대체로 우수한 결과를 보여줌

2) 단점
 - 상대적으로 높은 계산 비용
 - 데이터 양이 매우 큰 경우 계산 속도가 느려지고 데이터의 지역 구조에 민감
 - 최적의 K값을 정하는 것이 쉽지 않다
  -> k가 너무 작으면 잡음에 영향을 받을 가능성(Overfitting)
  -> k가 너무 크면 지나치게 평활될 가능성(Underfitting)

 

728x90
반응형