학습 자료

K-최근접 이웃을 이용한 분류

K-최근접 이웃(KNN)은 분류 문제에 사용되는 가장 단순한 머신러닝 알고리즘 중 하나입니다.

훈련 데이터에서 가장 가까운 이웃들의 다수 클래스를 기준으로 새 데이터의 클래스를 결정합니다.


KNN의 동작 방식

  1. 전체 훈련 데이터를 저장합니다.
  2. 새로운 데이터 포인트에 대해:
    • 모든 훈련 샘플과의 거리를 계산합니다(일반적으로 유클리드 거리).
    • k개의 가장 가까운 이웃을 선택합니다.
    • 그 이웃들 중 가장 많이 등장한 클래스를 할당합니다.

예시: Iris 데이터셋에 KNN 적용

아래 예시는 KNN을 사용해 Iris 데이터셋을 분류하는 방법을 보여줍니다.

KNN 분류 예제
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import classification_report, accuracy_score # 데이터셋 로드 iris = load_iris() X, y = iris.data, iris.target # 데이터 분할 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42 ) # KNN 모델 생성 knn = KNeighborsClassifier(n_neighbors=3) # 모델 학습 knn.fit(X_train, y_train) # 예측 y_pred = knn.predict(X_test) # 평가 print(f"정확도: {accuracy_score(y_test, y_pred):.2f}") print("분류 보고서:", classification_report(y_test, y_pred))

k 값 선택하기

  • 작은 k: 유연성이 높지만 노이즈에 민감합니다.
  • k: 결정 경계가 매끄럽지만 과소적합될 수 있습니다.

여러 k 값을 시도해 보고 검증 정확도가 가장 높은 값을 선택하는 것이 좋습니다.

Quiz
0 / 1

K-최근접 이웃(KNN) 알고리즘은 새로운 데이터 포인트를 분류할 때 무엇을 사용하나요?

모든 학습 샘플까지의 거리의 합

데이터 포인트들의 평균값

최근접 이웃들의 다수 클래스

전체 데이터셋에서 가장 많은 샘플을 가진 클래스

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말