AI

KNN(K-Nearest Neighbors) 회귀(regression)

땅콩새싹 2021. 7. 17. 11:16

 


 

K-Nearest Neighbors 회귀의 원리

K-Nearest Neighbors 알고리즘을 활용한 회귀도 분류의 원리와 같습니다.

예를 들어 기존에 있던 생선의 데이터를 가지고 새로 잡은 생선의 무게를 예측해야 할 때, 무게를 모르는 새로운 생선 데이터가 들어오면 가장 가까운 k개의 이웃을 찾아 그 이웃들의 평균을 계산해 값을 예측합니다. k = 3이라고 가정했을 때 새로 잡은 생선과 가장 근접한 3개의 이웃의 무게가 125, 130, 120이라면 세 값의 평균인 125로 예측합니다.

 

Weighted Regression(가중 회귀)

가까운 이웃들의 단순 평균을 구하는 것이 아닌 각 이웃이 얼마나 가까이 있는지에 따라 가중 평균을 구할 수 있습니다. 다시  말해 거리가 가까울수록 데이터가 더 유사할 것이라고 보고 가중치를 부여하는 것 입니다.

예를 들어 생선 X의 무게를 예측하기 위해 가장 가까운 이웃 3개를 찾았다고 생각해보겠습니다.

  *생선1 /무게 : 50 / X까지의 거리 : 1

  *생선2 /무게 : 70 / X까지의 거리 : 3

  *생선3 /무게 : 30 / X까지의 거리 : 7

생선 X는 생선 1과 거리가 가장 가깝기 때문에 가장 유사한 데이터라고 보고 가중 평균을 구할 수 있습니다.

(50/1 + 70/3 + 30/7) / (1/1 + 1/3 + 1/7) = 55.4

분자는 생선의 무게를 각 X로부터 떨어진 거리로 나눈 값의 합, 분모는 1을 각 X로부터 떨어진 거리로 나눈 값의 합입니다. 가중 회귀를 이용하면 값을 더 유사하게 예측할 수 있습니다.

 

결정계수(R²)

모델의 정확도를 평가할 때 분류의 경우에서는 정답을 맞힌 개수의 비율을 수치로 나타냈습니다.

회귀에서 정확한 숫자를 맞힌다는 것은 거의 불가능하기 때문에 다른 값으로 정확도를 평가하게 되는데 이 점수를 결정계수(coefficient of determination, R²)라고 부릅니다.

R² = 1 - (타깃 - 예측)²의 합 / (타깃 - 평균)²의 합

각 샘플의 타깃과 예측한 값의 차이를 제곱하여 더합니다. 그다음 타깃과 타깃 평균의 차이를 제곱하여 더한 값으로 나눕니다. 만약 타깃의 평균 정도를 예측하는 수준이면 R²는 0에 가까워지고, 예측이 타깃에 아주 가까워지면 1에 가까운 값이 되어 정확도를 판단합니다.

 

 

github 코드 첨부

https://github.com/erdnussretono/K-Nearest-Neighbors_4/blob/main/KNN_4.ipynb

 

erdnussretono/K-Nearest-Neighbors_4

Contribute to erdnussretono/K-Nearest-Neighbors_4 development by creating an account on GitHub.

github.com