반응형
- 지도 학습 방법
- 새로운 데이터 포인트를 예측할 때 가장 가까운 k개의 데이터 포인트를 참고
- 거리 기반 분류 및 회귀 알고리즘
1. KNN의 기본 개념
KNN은 기존 데이터의 분포를 활용하여 예측을 수행합니다. 모델 학습 중에는 명시적인 학습 단계가 없으며, 대신 모든 데이터 포인트를 저장하고 예측 시 계산을 수행합니다.
이러한 특징 때문에 KNN은 비모수(non-parametric), 게으른 학습(lazy learning) 알고리즘으로 분류됩니다.
1.1 KNN의 작동 원리
- 새로운 데이터 포인트(예측 대상)가 주어지면:
- 기존 데이터와의 거리를 계산합니다.
- 가장 가까운 K개의 데이터 포인트를 선택합니다.
- 분류 문제: K개의 이웃에서 가장 많이 등장한 클래스를 예측값으로 선택.
- 회귀 문제: K개의 이웃의 평균값 또는 중앙값을 예측값으로 반환.
2. KNN의 주요 구성 요소
2.1 거리 측정 방법
KNN은 데이터 포인트 간의 유사성을 판단하기 위해 거리 계산을 사용합니다.
대표적인 거리 측정 방법은 다음과 같습니다:
- 유클리드 거리
- 맨해튼 거리
- 민코프스키 거리
- 코사인 유사도(주로 텍스트 데이터)
2.2 K값(K의 이웃 개수)
- K는 가장 가까운 이웃의 개수를 의미합니다.
- 의 선택은 모델 성능에 큰 영향을 미칩니다.
- K값이 작을수록:
- 모델이 민감해지고 과적합(Overfitting) 가능성이 커짐.
- 노이즈에 영향을 많이 받음.
- K값이 클수록:
- 모델이 일반화되지만, 과소적합(Underfitting) 가능성이 있음.
- K값이 작을수록:
2.3 가중치 적용
모든 이웃이 동일한 중요도를 갖지 않을 수도 있습니다. 따라서 거리에 따라 가중치를 적용할 수 있습니다.
- 가까운 이웃일수록 더 높은 가중치를 부여합니다
3. KNN의 특징
3.1 장점
- 단순하고 직관적:
이해하기 쉬운 알고리즘이며, 별도의 학습 단계가 필요 없습니다. - 비모수적:
데이터 분포에 대한 사전 가정이 필요하지 않습니다. - 다양한 데이터 유형에 적용 가능:
숫자형 데이터, 범주형 데이터 모두에서 동작합니다.
3.2 단점
- 계산 비용이 높음:
새로운 데이터 포인트를 예측할 때 전체 데이터와 거리를 계산해야 하므로, 데이터 크기가 커질수록 속도가 느려집니다. - 메모리 소모:
모든 데이터를 저장해야 하므로 메모리 사용량이 많습니다. - 특성 스케일의 민감성:
거리 기반 알고리즘이므로, 특성의 단위 차이가 크면 성능이 저하됩니다. 이를 해결하기 위해 정규화(Normalization) 또는 **표준화(Standardization)**가 필요합니다. - 노이즈에 민감:
데이터에 이상치(Outliers)가 많으면 성능이 저하될 수 있습니다.
4. KNN의 작동 과정
4.1 훈련 단계
- KNN은 별도의 훈련 과정이 없습니다. 주어진 데이터를 단순히 저장만 합니다.
4.2 예측 단계
- 입력 데이터와 저장된 모든 데이터 간의 거리를 계산.
- 가장 가까운 K개의 이웃 선택.
- K개의 이웃으로부터 예측값 도출.
- 분류 문제: K개의 이웃 중 가장 많이 등장한 클래스 선택.
- 회귀 문제: K개의 이웃의 평균값 또는 중앙값 반환.
5. KNN의 성능 최적화 방법
5.1 K값의 선택
- 교차 검증(Cross-Validation)을 통해 최적의 K값을 찾습니다.
- 보통 K값은 홀수로 설정하여 동점 상황을 방지합니다.
5.2 거리 척도의 선택
- 데이터 유형과 특성에 따라 적절한 거리 척도를 선택해야 합니다.
5.3 특성 스케일 조정
- 특성 간의 단위 차이를 보정하기 위해 데이터 정규화(0~1 범위) 또는 표준화(평균 0, 분산 1)를 수행합니다.
5.4 차원 축소
- 고차원 데이터에서는 거리가 왜곡될 가능성이 있으므로, PCA(주성분 분석)와 같은 차원 축소 기법을 활용할 수 있습니다.
7. KNN의 장단점 요약
장점 / 단점
| 간단하고 직관적 | 계산 비용이 높음 |
| 비모수적 특성 | 메모리 소모가 큼 |
| 데이터 분포에 대한 사전 가정이 필요 없음 | 특성 스케일과 이상치에 민감 |
| 분류 및 회귀 문제 모두에 사용 가능 | 고차원 데이터에서 성능 저하 (차원의 저주) |
반응형
'AI' 카테고리의 다른 글
| [머신러닝 알고리즘] Linear Regression, 선형 회귀에 대해서 (0) | 2025.01.21 |
|---|---|
| [머신러닝 알고리즘] Random Forest, 렌덤 포레스트에 대해서 (0) | 2025.01.21 |
| [머신러닝 알고리즘] SVM, support vecotr macine에 대해서 (0) | 2025.01.21 |
| [데이터 분류] 범주형 데이터, 수치형 데이터 (0) | 2025.01.21 |
| [캐글] 타이타닉 튜토리얼_1 (0) | 2025.01.14 |