본문 바로가기
컴퓨터공학과/기계학습

1.1. K-NN classifier (이론)

by 수학과인데 공대생 2023. 9. 14.
728x90

본 포스팅은 충남대학교 박정희 교수님의 기계학습 수업과 으뜸 머신러닝 (강영민 , 박동규 저)를 참고하였습니다.

 

K-NN classifier

k-NN 알고리즘은 k-Nearest Neighbor의 약자입니다. k-최근접 이웃이라고 번역할 수 있습니다.

이름에서 알 수 있듯이 k-NN 알고리즘은 feature에 분포하는 데이터에 대하여 k개의 가장 가까운 neighbor을 살펴보고 다수결 방식(majority voting) 으로 데이터의 레이블을 할당 하는 분류방식을 말합니다.

 

위 그림을 살펴보면 k값은 하이퍼파라미터임을 알 수 있습니다. k = 3일 때와 k = 5일 때로 나누어 집니다.

좀 더 자세히 살펴보면 초록색으로 칠해진 오각형 데이터가 다음과 같은 2차원 feature좌표 축에 자리잡혔습니다.

k = 3일 때는 초록색 데이터로부터 가장 가까이에 있는 3개를 찾습니다.

초록색 데이터로 부터 가까이 있는 3개의 데이터는 파란색 데이터 2개, 빨간색 데이터 1개입니다.

majority voting 즉 다수결 방식을 채택한다고 k = 3일 때는 파란색 데이터로 분류하는 것이 가장 맞을 것입니다.

 

k = 5일 때는 초록색 데이터로부터 가장 가까이에 있는 5개를 찾습니다.

이번엔 파란색 2개, 빨간색 3개가 가장 근접해 있습니다.

이럴 때는 초록색 데이터빨간색 클래스에 더 가까운 데이터라고 예측할 수 있습니다. 

 

이처럼 k = 3일 때와 k = 5일 때의 예측 결과는 다릅니다. 어떤 k값을 이용해야할 것인가는 우리 인간이 정해주어야 합니다.

 

 

또 다른 예제를 살펴보겠습니다.

k = 4일 때를 살펴보면 초록색 데이터 주위에 파란색 데이터 2개, 빨간색 데이터 2개가 있습니다.

이런 경우는 majority voting을 했을 때 동률이 나오게 됩니다.

이를 예방하기 위해 각 데이터들에 대해 가중치를 둘 수 있습니다.

 

초록색 데이터로부터 가까이에 있을 수록 더 높은 점수를 부여하는 것 입니다.

 

초록색 데이터로부터 각각 떨어져 있는 거리를 계산해 모두 더하고 각 데이터 별로 비율을 구해 1에서 빼는 방식으로 가중치를 구합니다. 예를 들어보면 좀 더 쉽게 이해할 수 있습니다.

파란색 1번 데이터는 6/9

파란색 2번 데이터는 6/9

빨간색 3번 데이터는 8/9

빨간색 4번 데이터는 7/9

이므로 거리 별로 가까이에 있을 수록 높은 가중치로 계산 되는 것을 확인할 수 있습니다.

 

 

데이터 정규화

특정 feature가 다른 feature들에 비해 값이 터무니 없이 큰 경우가 존재합니다.

이런 경우 큰 feature에 대해 정규화를 할 필요가 있습니다.

 

1). Min_Max Normalization

Min_Max Normalization은 데이터의 최대 최소 값을 이용해 정규화 하는 방식입니다.

정규화 공식은 아래와 같습니다.

x틸다가 정규화된 값이고 x(max)는 최대값, x(min)은 최소값입니다.

x(max)x(min)은 constant한 값이기 때문에 위 식을 1차 함수로 생각할 수 있습니다.

그래프에서 보듯이 [0, 1]에서 정규화 됩니다.

 

 

2). standardization

standardization은 말 그대로 표준화입니다. 데이터들의 평균을 0으로 분산을 1인 데이터로 표준화 시키는 것입니다.

표준화를 시키는 과정은 고등학교 통계시간에 배운 것과 같습니다.

평균과 분산을 각각 구하고 이를 이용해 표준화를 시켜주면 됩니다.

 

Evaluation

모델을 만드는데 성공했다면 그 모델이 얼마나 좋은지 성능을 평가해야합니다.

우선 이진분류(binary classification)에 대해 평가 score를 메기는 방법을 알아보겠습니다.

아래 주어진 Table은 Confusion Matrix입니다.

'Yes'클래스와 'No'클래스

총 2개의 클래스로 나누어진 binary classification입니다.

좌측의 'ACTUAL CLASS'는 실제 값에 해당하고 우측 상단의 'PREDICTED CLASS'는 예측 값에 해당합니다.

우리는 예측값과 실제값이 같을 때 (실제값 = 예측값) 예측에 성공했다고 이야기할 수 있으며

위 Table에서는 a값과 d값이 예측에 성공한 값이 됩니다.

우리는 모델을 만들 때 a와 d값을 높이기 위해 노력해야합니다.

 

그리고 a~d까지 각각의 이름을 붙여주겠습니다.

a와 d는 모두 예측에 성공한 값이므로 'true'라는 단어로 시작하고 'Yes'클래스를 positive한 클래스라고 봤을 때

a : TP (true positive)

d : TN (true negative)

라고 합니다.

b와 c는 예측에 실패한 경우이므로 'false'로 시작합니다. b는 negative라고 예측했는데 실제 값은 positive이고 반대로 c는 positive라고 예측했는데 실제 값은 negative입니다.

b : FN (false negative)

c : FP (false positive)

 

 

이제 Accuracy를 구하는 방식을 보겠습니다. a와 d가 예측에 성공한 경우라고 했으므로 a와 d를 합한 값의 비율을 Accuracy로 정의하면 간단합니다.

Error rate는 a와 d의 합이 아닌 b와 c를 합한 값의 비율입니다.

 

 

binary classification이 아닌 multiclass classification의 경우에도 비슷합니다.

Accuracy는 matrix의 대각성분의 합이되고 Error rate는 나머지 값의 합입니다.

 

728x90

'컴퓨터공학과 > 기계학습' 카테고리의 다른 글

2.1. Decision Tree (의사결정 나무)  (0) 2023.09.22
1.2. K-NN classifier (실습)  (2) 2023.09.18