1. 최근접 이웃 알고리즘이 필요한 이유
일단 선형 회귀 분석이 왜 필요한지 이해해야 한다.
머신 러닝을 공부하는 사람이라면 K-최근접 알고리즘을 사용하여 테스트 데이터의 타깃 값을 알아내는 걸 첫 번째로 공부했을 것이다.
하지만, k최근접 알고리즘의 한계는 바로, 트레인 데이터 범위 밖의 테스트 데이터의 값의 타깃 값을 알아낼 수 없다는 것이다.
예를 들자면, 개미의 길이 별 무게 데이터를 가지고, 새로운 개미의 무게를 측정하는 프로젝트가 있다고 하자.
우리가 가지고 있는 교육 데이터는 다음과 같다.
길이 |
무게 |
1cm |
1g |
2cm |
2g |
3cm |
3g |
만약 k최근접 알고리즘을 사용하여 주변의 3개의 데이터 값을 참고하여 길이 4cm인 개미의 무게를 측정한다고 해보자.
k최근접 알고리즘의 예측값은 가장 근접한 점들의 값의 평균값이므로 (1g+2g+3g)/3 = 2g이 나올 것이다.
누가 봐도 길이 4cm인 개미의 몸무게는 4g일 터인데, k최근접 알고리즘은 기존의 데이터 셋의 평균값 밖에 못 구하기 때문에, 학습 데이터 세트의 외각에 있는 데이터에 대한 값을 구하지 못하는 것이다.
2. 최근접 이웃 알고리즘의 한계
3. 이를 보완하는 선형 회귀 분석
선형 회귀 분석이란 학습 데이터의 추세에 대한 1차원 그래프를 그려서 새로운 테스트 값의 특성 값을 구하는 것이다.
예를 들어 우리가 가지고 있는 개미 3마리의 학습 데이터를 가지고 xy축의 그래프를 그린다고 하면
y=x라는 그래프가 나올 것이다.
그렇다면 새로운 개미 (4cm)를 해당 선형 그래프에 대입한다고 하면 y값은 당연히 4g이 나오는 것이다.
4. 선형 회귀 분석은 완벽한가?
이제 이런 생각이 들 수 있다. '와 간단한 선형 회귀 분석을 통해 세상 모든 것들을 귀납적으로 구할 수 있겠구나!'
그렇지 않다. 우리는 몸매가 날씬한 개미의 무게를 구했기 때문에 선형 회귀 분석을 구했던 것이다. 변수가 하나밖에 없다는 가정하에 말이다.
사람의 몸무게를 구한다고 할 때 '키'라는 값만 가지고 몸무게를 유추할 수 있을까? 아니다, 허리둘레와 같은 또 다른 변수를 통해 몸무게에 대한 키와 허리둘레의 식을 구할 수 있겠다 예를 들자면 이런 거다.
사람 몸무게 값 : y
사람 키 : h
사람 허리둘레 : r
y = ah +r (a는 변수 h의 계수)
이때 사람 허리둘레가 키로 유추할 수 있다는 가정하에
사람의 허리둘레 r은 사람 (h의 제곱)/10이라고 치자.
그렇다면 사람의 몸무게 y = ah * h^2/10
이라는 미지수 h의 이차 방정식이 생겨나는데, 해당 모델로 사람의 몸무게를 평균적으로 구할 수 있다는 말이다.
근데 이러한 2차 방정식도 '선형 회귀 분석'이라 부르는데, 변수가 하나이기 때문에, 허리둘레 값도 결국 'avgh'라는 특정 변수로 치환하여 쓸 수 있기 때문이다.
정리하자면,
5. 각 분석의 필요성
k최근접 알고리즘으로 구할 수 없는, 이전에 없었던 일을 예측하기 위해서는, 선형 회귀 분석이 필요하다.
그리고, 선형 회귀분석으로 구할 수 없는 여러 변수를 가지는 값 (예를 들어 사람의 몸무게)를 구하기 위해서는 다차원의 다항 회귀 분석이 필요한 것이다!