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
'AI' 카테고리의 다른 글
[머신러닝] 특성 공학과 규제 (0) | 2021.07.17 |
---|---|
[머신러닝] 선형회귀(Linear Regression) (0) | 2021.07.17 |
[데이터 전처리] titanic data 전처리 (0) | 2021.07.17 |
[머신러닝 데이터] 전처리 (0) | 2021.07.16 |
[머신러닝 데이터] 훈련 세트와 테스트 세트 (0) | 2021.07.15 |