반응형


+최소제곱법

샘플데이터들을 최대한 근사할 수 있는 하나의 직선이나 평면으로 모델링하여 다른 샘플들도 모델링한 시스템으로 예측할 수 있다.

실제 해(샘플데이터)와 모델이 예측한 결과와의 차이가 최소가 되게하는 방식.

샘플데이터 (x, Y)

y=ax+b 인 모델로 예측. 

에러값을  오차^2의 합으로 한다.  (Y-(ax+b))^2 으로 해야 맞는데, 제곱이므로 상관없다.

J(Cost) =  

위 Cost Function을  a, b로 각각 편미분하여 0이 되도록 한다. 최적화 문제.  (위 cost function이 convex 형태이기 때문에 가능하다. 아니면 local minima 문제가 있음.)



위 식을 정리하면

 : 1번식 

   : 2번식

2식을 n으로 나누면

   : 3번식

3번식에서 b를 구해 번식에 대입한다.

a로 묶어주면

양변을 n으로 나눠주면

a를 뺀 왼쪽부분을 잘 보면 (제곱의 평균 - 평균의 제곱)이다.  어디서 많이 본 형태이다. 이것은 x의 분산이다.

분산은 또 편차 제곱의 평균이다. 즉, 왼쪽 부분을  다르게 표현하자면 아래와 같다... (전개해서 계산하면 똑같다는 것을 알 수 있다.)

양변에 n을 곱하면 

오른쪽 부분을 정리하면 = Sigma (xy) - n * m_x * m_y
= Sigma (xy) + ( -n -n +n ) * m_x * m_y
 Sigma (xy) - m_y*n*m_x - m_x *n * m_y + m_x m_y n
 = Sigma (xy) - m_y Sigma(x) - m_x Sigma(y) + m_x m_y Sigma(1)
= Sigma (  xy  - x m_y - y m_x + m_x m_y )
= Sigma ( (x- m_x ) ( y - m_y ) ) 

따라서 a를 구할 수 있다.

a의 의미를 보자면, 

a= 편차곱의 합 / 편차제곱의 합

같은 값으로 분자 분모를 각각 n으로 나누게 되면 

a = 편차 곱의 평균 / x의 편차제곱의 평균이 되고, 이것은 

   =  x,y 공분산 / x의 분산.

결국 a 는 공분산을 x의 분산으로 나눈 값이된다.


a를 구한다음에는  b를 쉽게 구할 수 있다.  (3번식에 대입)



+예제)  임의의  점 7개를 생성. (black box 모델을 임의로 만들고 노이즈를 추가하였음.)

[Python Code]

import numpy as np
import matplotlib.pyplot as plt

# some data
x=np.random.rand(7)*10
print('x=',x)

# black box + noise
y=x*1.5 + np.random.rand(len(x))*3
print('y=', y)

# model : y = ax + b
mx = np.average(x)
my = np.average(y)

print('mx=', mx, ' my=', my)
a1=np.average((x-mx)*(y-my))
a2=np.average(np.power((x-mx), 2))
a=a1/a2
b=my - a * mx
print('a=',a, 'b=',b)

plt.figure()
plt.scatter(x,y, marker='o', c='blue')

# predict
newx=np.arange(0, 10, 0.2)
yy = a*newx + b
print('predict yy=', yy)
plt.scatter(newx,yy, marker='+', c='red')

plt.show()
[결과]
x= [ 5.91242894  8.31159962  5.84424276  1.6816099   3.96831144  5.44434753
  4.99976856]
y= [ 11.3111561   14.27345181   9.25338631   4.42757815   7.11410915
   8.43423682   7.51826014]
mx= 5.16604410833  my= 8.90459692524
a= 1.49495983563 b= 1.18156847417

임의의 파란점을 기반으로 최소제곱법으로 주어진 모델로 추정선을 만들어 그림.







'Math' 카테고리의 다른 글

integral sec(x)  (0) 2019.03.28
integral csc(x)  (0) 2019.03.27
[선형대수] 프로젝션, 최소제곱법  (0) 2019.03.26
[미분] 미분  (0) 2017.05.08
[적분] 곡선의 길이 계산2  (0) 2017.05.08

+ Recent posts