Machine Learning in Action ch.8.1 & 8.2 Regression
8.1 회귀로 최적선 찾기 우리가 회귀를 사용하는 이유는 수치형 목적 값을 예측하기 위해서이다. 그 방법은 입력에 대한 목적 값의 방벙식을 세우는 것이다. 예를 들면, 행복 = 돈 * 0.4 + 지혜 * 0.8 이것이 곧 회귀 방정식이다. 여기서 0.4 와 0.8은 가중치라고 한다. 즉, 예측이란 회귀 가중치로 입력된 값을 곱하고 , 곱한 값을 모두 더하여 얻어진다. 위와 같은 회귀를 선형 회귀라고 한다. 다른 회귀 유형도 있다. 비선형 회귀는 출력을 위해 입력 된 모든 값을 곱하는 기능을 가지고 있다. 예를 들면, 행복 = 0.002 * 돈/ 지혜 이것이 비선형 회귀에 대한 예제이다. 데이터로부터 어떻게 회귀 방정식을 구할 수 있을까? 입력 데이터는 행렬 X에 있고, 벡터 w에는 회귀 가중치가 담겨있다. 예측 값은 y1 = X1^T * w 로 구하게 된다. w를 찾는 방법은 오류를 최소하하는 것이다. 여기서 제곱 오류를 사용한다. 수학적인 표현이 많아 스킵한다. 실습 예제를 해보면 위와 같이 코드를 작성해 보면 아래와 같은 선형 회귀를 플롯할 수 있다. 8.2 지역적 가중치가 부여된 선형 회귀 선형 회귀의 한 가지 문제점은 데이터에 대한 부족적합 경향을 보인다는 것이다. 그래서 여기에 추정 값에 성향을 추가하여 평균 제곱 오류를 줄일 수 있는 방법을 다룬다. 평귭 제곱을 오류를 줄이는 방법 중 지역적 가중치가 부여된 선형 회귀 또는 줄여서 LWLR이라는 방법이 있다. 이것은 관심이 있는 데이터 점 근처에 있는 다른 데이터 점들에 가중치를 부여한다. 약간 kNN과 비슷한 느낌이다. (출처 : http://javacan.tistory.com/entry/MachineLearningInAction-08-Regression) 가우스 확률 분포 같은 수학적 계산은 넘어가고 LWLR 함수를 보면 아래와 같다. def lwlr(testPoint,xAr...