KNN 모델

즐겁고치열하게·2022년 8월 23일
0

머신 러닝

목록 보기
4/12

KNN (k-Nearest Neighbor)

 알고리즘 원리
1. 예측할 데이터와 실제 데이터의 거리를 계산
2. 거리가 가까운 K개의 데이터를 선택
3. K개의 데이터의 평균을 계산 후 값 예측(분류)

전처리 요소들

  1. NaN 조치
  2. 가변수화
import pandas as pd

X = pd.DataFrame({'컬럼1': [A, B, C], '컬럼2': [,,], '컬럼3': [12, 4, 5]})

가변수화_대상 = ['컬럼1', '컬럼2']
X = pd.get_dummies(data = X, columns=가변수화_대상, drop_first=True)
  • 거리 계산을 위해 가변수화는 필수임.
  1. 스케일링
from preprocessing import MinMaxScaler, StandardScaler
from sklearn.model_selection import train_test_split

X, y = np.arange(10).reshape((5, 2)), range(5)

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=.3)

# 에시로 MinMaxScaler만 적용
scaler = MinMaxScaer()

X_train = scaler.fit_transform(X_train)
X_val = scaler.transform(X_val)
  • fit : 스케일러에 집단(X_train)의 기초통계량-min, max, std, mean, ...-을 적용, 기준을 정함
  • transform : 스케일러의 기준에 맞게 집단(X_train, X_val)의 값의 범위를 맞춰줌 (MinMax, Standard, ...)
  • fit_transform : fit과 transform 둘 다 적용 - train 집단에만 사용

성능에 영향을 미치는 요소들

  1. K값

  1. 거리 계산법

기본 계산법은 민코프스키(minkowski) 이지만 유클리드(Euclidean), 맨해튼(cityblock), 체비쇼브(chevyshev) 방식 등 여러가지 계산법이 있고
그에 따라 성능이 달라질 수 있따.

  • 맨해튼(cityblock)
  • 체비쇼브(chevyshev)
  • 유클리드(euclidean)
  • 민코프스키(minkowski)

출처: Distance Metrics
sklearn 레퍼런스: minkowski 거리 계산법

  1. 스케일링
종류설명
StandardScaler기본 스케일. 평균과 표준편차 사용
MinMaxScaler최대/최소값이 각각 1, 0이 되도록 스케일링
MaxAbsScaler최대절대값과 0이 각각 1, 0이 되도록 스케일링
RobustScaler중앙값(median)과 IQR(interquartile range) 사용. 아웃라이어의 영향을 최소화

[Python] 어떤 스케일러를 쓸 것인가?

KNN 모델의 장단점

장점

  • 데이터의 분포 형태(선형 유무, 산포도 등)과 상관이 없다.
  • 설명 변수의 개수가 많아도 사용 가능

단점

  • 계산 시간이 길다
  • 훈련 데이터를 모델에 함께 저장함
  • 해석이 어려움
profile
기술을 공부하는 기술자

0개의 댓글