반응형


+최소제곱법

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

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

샘플데이터 (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
반응형


+ Projection / 프로젝션 / 투영

a벡터에 b벡터를 프로젝션시키면, b에서 a로 수선의 발을 내린다.  

project b onto a 라고 표현. (b를 a에 수직으로 내림. 수직으로 내리면 최단거리가 됨.)

수선의 발을 p라 하면. p점은 a 선상에 있고 p벡터를 a벡터의 상수배로 볼 수 있다.

   

b벡터 끝에서 p벡터에 가는 벡터와 a 벡터는 수직이다. 따라서 

수직인 벡터의 내적은 0이다. 열벡터에서 내적은 transpose의 곱으로 표현.

   ,     

여기서 매트릭스 연산식으로 바꾸고, 파라미터를 b로 보고 시스템을 꺼내보면. 프로젝션한 포인트 p는 

    ,    


이렇게 된다. 프로젝션 시스템 P는

이 변환 시스템이 어떤 점을 a 벡터로 프로젝션시키는 시스템이다.


프로젝션의 의미?

project b onto a (b를 a로 프로젝션 시킨다.)

     여기에서 는  a,b의 내적이다.  b를 a에 내린 사영의 크기 * a벡터의 크기이고,      는  a벡터 / a 벡터크기의 제곱.  즉, a 방향의 단위벡터 / a벡터의 크기가 되고,  이 둘을 곱하면  a벡터 크기 부분이 없어지므로  a 방향이고, 크기가 b를 a에 내린 사영의 크기인 벡터가 된다. 즉, 프로젝션이 된다.

b벡터에서 a벡터의 성분을 얼만큼 갖고있는지를 나타냄. 내적은 닮은 정도를 나타내기도 한다. 해당 성분이 얼만큼 있는지 나타내므로 닮은 정도이기도 하다. ( 내적이 a b cos (theta) 라는 의미를 생각해 보면 알 수 있다. 닮은 정도를 cos 유사도로 표현하는 것도 비슷하다. 두 벡터의 사이 각도가 0에 가까울 수록 비슷하고 cos값이 최대가 된다. 반대 방향으로 갈수록 작아진다.) 



+ 벡터의 투영과 최소 제곱

벡터와 평면이 수직인가를 알려면? 평면을  구성하는 기저벡터를 구하여 해당 벡터와 모두 수직인지 확인하면 된다.

임의 평면 x+2y+3z=0 의 기저 벡터를 구하려면?

위 방정식을 만족하는 독립인 벡터 두 개를 구하면 된다.

[1 1 1 ], [3 0 1]

위 두 개 벡터로 위 평면위의 모든 점을 스팬할 수 있다.

A는 위 기저벡터를 컬럼벡터로 하는 매트릭스로 어떤 시스템으로 볼 수 있다.

Ax는 위 평면위의 임의의 점이다. 기저벡터들의 선형결합으로 구성된 평면위의 점을 가리키는 벡터.

만약  평면 밖에 있는 b벡터를 A 평면에 내부의 벡터로 가장 가깝게 표현하려면??? 프로젝션!

즉, ||Ax-b||^2이 최소값이 되도록 한다. 최소제곱법.


Ax-b 벡터는 A 평면과 수직이다. 여기서 Ax는 b를 A 평면위에 프로젝션한 벡터이다. --> 최단 거리 지점.

b를 A에 프로젝션한 결과 : 




+ 실전

그렇다면 여러 점들을 가장 최적의 라인(또는 평면) 하나로 표현하려면?

측정값: (x1,y1), (x2,y2), (x3, y3), ...

피팅라인: y=ax+b   : 구하고자 하는 값 (a,b)

y1=ax1+b

y2=ax2+b

..

위 식을 모두 만족하는 a,b는 보통 존재하지 않는다. 다만 거리가 최소가 되도록 최적화된 라인을 찾을 수는 있다.

A x = b ( 왼쪽의 b는 위의 a,b 게수의 b와는 다른 것. y1,y2,y3를 말함)

x를 구하는 문제의 방정식을 만든다.

||Ax-b||^2 이 최소가 되게 하는 해를 구한다.

최소 거리를 만드는 문제는 프로젝션이다.

스페이스 밖의 점 b, 시스템은 A,   Ax는 b를 A에 프로젝션한 A 내부의 최적화된 점(p, 프로젝션)이 된다.

여기서 x를 구하면 최적화된 방정식의 계수인 a,b가 나온다.


) (x1,x2) -> y    이러한 함수가 y=ax1+bx2+c 이 모델로 만들어진다고 한다. 아래 점들에 최대한 근사한  평면으로 표현하라면 최적의 계수 a,b,c?

(0,0) -> 1

(2,2)->6

(1,4)->2

(4,6)->10



A=np.array([[0,0,1],[2,2,1],[1,4,1],[4,6,1]])

b=np.array([[1],[6],[2],[10]])

np.dot( np.dot( np.linalg.inv( np.dot(np.transpose(A), A)), np.transpose(A) ) , b)

Out[72]: 

array([[ 3. ],

       [-0.5],

       [ 1. ]])



+ python source  

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


A=np.array([[0,0,1],[2,2,1],[1,4,1],[4,6,1]])
b=np.array([[1],[6],[2],[10]])

x = np.dot( np.dot( np.linalg.inv( np.dot(np.transpose(A), A)), np.transpose(A) ) , b)

print('A=',A)
print('b=',b)
print('x=',x)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.scatter(A[:,0], A[:,1], b[:,0], marker='o', label='sample')

ax.set_xlabel('x1')
ax.set_ylabel('x2')
ax.set_zlabel('Y')
y = x[0]*A[:,0] + x[1]*A[:,1]+ x[2]
print('y=', y)
ax.scatter(A[:,0], A[:,1], y, marker='+', label='fitting')

# predict plane
x1=np.arange(0, 7, 0.2)
x2=np.arange(0, 7, 0.2)
x1,x2 = np.meshgrid(x1,x2)
Y = x[0]*x1 + x[1]*x2+ x[2]
ax.plot_surface(x1, x2, Y, alpha=0.2)


ax.legend()

plt.show()




파란점이 샘플 포인트이고 샘플 포인트에 최적화된 평면을 찾아 그 평면으로 다시 샘플포인트의 값을 추정하여 +로 표시하였음.   (거의 일치)

이렇게 프로젝션을 이용하여 최적화 할 수 있다. 


'Math' 카테고리의 다른 글

integral csc(x)  (0) 2019.03.27
최소제곱법  (0) 2019.03.26
[미분] 미분  (0) 2017.05.08
[적분] 곡선의 길이 계산2  (0) 2017.05.08
[적분] 곡선의 길이 계산  (0) 2016.09.06
반응형

미분은 한 자로는 작을 미, 나눌 분. 즉, 아주 작게 나눈다는 뜻이다.

[]  


어느 정도 작게 나눠야하느냐면 극한으로 작게 나누는데, 0은 아니지만, 0에 가까울 정도로 나눈다. 이렇게 말로만 하면 애매할 수 있다.

더 정확히하면 제곱해서 무시될 수 있을 정도로 작은 값이다.

f(x+h) = f(x) + f'(x) h + O(h^2) 에서 lim h->0 일때,   O(h^2)이 무시될 수 있을 정도라면, 

f'(x) = lim ( f(x+h)-f(x) ) / h 이렇게 성립될 수 있다.



먼저 차분은 증가량, 변화량이다. 크기는 상관없다.


미분은 차분의 극한으로 x에 대해 크기가 아주 작아야 한다.

즉, 미분에서의 x의 변화량은 극소.


차분은 두 지점에서의 차이로 본다면 미분은 거의 한 점에서의 차이로 볼 수 있다.


미분은 혼자 존재하는게 아니다.  x를 파라미터로 하는 함수 무엇을 x에 대해 미분하는 것처럼. 기준이 있어야 한다. 

이렇게 무엇(y)을 무엇(x)으로 미분한다는 것이 순간 변화율(dy/dx)인 것이다. 그래프로 치면 접선의 기울기.


함수의 그래프상에서 두 점사이의 평균기울기가 x의 차분(x2-x1)에 대한 y의 차분(y2-y1)을 의미한다면,  한 점에서의 기울기(접선의 기울기, 순간변화율)가 해당 지점에서의 미분값이다.




미분

함수 f(x)에서 주어진 점(a,   x가 a일 때)에서의 접선의 기울기. (기울기=탄젠트 값)

= f'(a) 


미분값이 존재하려면? 좌극한=함수값=우극한   (-> 해당 점에서 이 함수는 당연히 연속이다.)


위와 같이 미분을 정의할 수 있다. x의 극소변화에 대한 함수의 출력값의 변화량의 비율;   y변화량/x변화량  =>  기울기   => x변화량이 극한으로 0에 가깝게 한다. 순간변화율. 접선의 기울기.



다른 방법으로는

x-a를 h로 치환하면 위와 동일하다.



ex)

f(x) = x^2

미분 정의로 부터 주어진 함수를 미분할 수 있다.




다른 방법으로는

일 때 C가 바로 f'(x)이다.. 

Taylor Series 나 Geometric Series 등을 이용하여 h에 대한 power series로 정리하여 미분을 구할 수도 있다.



ex) 

위에서 C를 구하면 x에서의 미분값이 된다.

따라서 C 값인 n x^(n-1)이 바로 f'(x)가 된다.


ex)

따라서 f'(x) = -sin x



ex)

따라서 f'(x) = e^x




'Math' 카테고리의 다른 글

최소제곱법  (0) 2019.03.26
[선형대수] 프로젝션, 최소제곱법  (0) 2019.03.26
[적분] 곡선의 길이 계산2  (0) 2017.05.08
[적분] 곡선의 길이 계산  (0) 2016.09.06
[적분] 적분에 대하여... 넓이,부피,겉넓이  (1) 2016.09.06
반응형

전에는 곡선 좌표들이 (x,y)일때, y=f(x)와 같은 함수가 있을 경우에 구해봤다.


이번에는 x=f(t), y=g(t)라는 각각의 함수들이 존재할 경우이다.

x=f(t)에서 t를 구해 g(t)에 대입하여 y=h(x)꼴로 구할수 있다면 이전 방식으로도 가능하지만, h(x)를 구하기 어려운 경우에는 f와 g를 이용하여 구해야 한다.


전과 마찬가지로 곡선의 작은 조각을 적분하는 방식으로 길이를 구한다.


t 지점에서 t의 미세변화량(dt)에 대한 x의 변화량(dx)과 y의 변화량(dy)은 아래와 같다.

따라서 t 지점에서의 미세한 곡선의길이는 

이 delta l을 모두 합친다.

아래와 같이 길이를 구할 수 있는데,

여기서 t가 a~b구간이라고 하면,  t = a+ ((b-a)/n) * i 이고  dt=(b-a)/n 이다.

(Sigma에 대해 극한을 하게 되면 이를 적분으로 계산할 수 있다.  무한급수를 정적분으로 변환.)


위 dl에서 dt를 밖으로 빼주게 되면 아래와 같이 되고



이를 t가 a~b로 변화할때의 곡선의 길이













'Math' 카테고리의 다른 글

최소제곱법  (0) 2019.03.26
[선형대수] 프로젝션, 최소제곱법  (0) 2019.03.26
[미분] 미분  (0) 2017.05.08
[적분] 곡선의 길이 계산  (0) 2016.09.06
[적분] 적분에 대하여... 넓이,부피,겉넓이  (1) 2016.09.06
반응형


곡선의 길이를 측정해 보자.


 그래프가 있다고 하자.

특정 구간 x가 a~b 범위에 있을 때 f(x) 그래프가 그어진 길이를 계산하자.


직접 길이를 구할 수 없으니, 쪼개서 합치자... 적분...


작은 곡선 조각의 길이를 구해서 합치면 전체 곡선의 길이는 아래와 같이 된다. 



먼저 x축을 아주 작게 쪼갠다...   이 한 조각의 가로 길이는 

로 0에 아주 가깝다.   

그리고 이렇게 쪼갠 조각의 곡선을 보면 직선과 같은 형태로 직각삼각형의 빗변의 길이가 된다. 

피타고라스 정리로 계산해 보면...

 이 된다.

y의 변화량은 f(x)의 변화량이다. 

dy = f(x+dx)-f(x)





작은 곡선 조각을 dx의 배수 형태로 만들었다.

이제 이 조각을 적분 기호로 합치면 전체 곡선의 길이가 된다.


따라서

x가 a~b 구간에서 y=f(x)가 움직인 곡선의 길이는





 







'Math' 카테고리의 다른 글

최소제곱법  (0) 2019.03.26
[선형대수] 프로젝션, 최소제곱법  (0) 2019.03.26
[미분] 미분  (0) 2017.05.08
[적분] 곡선의 길이 계산2  (0) 2017.05.08
[적분] 적분에 대하여... 넓이,부피,겉넓이  (1) 2016.09.06
반응형


적분에 대하여... 넓이,부피,겉넓이




적분은 적(쌓을 적.. 쌓는다..). 분(나눌 분.. 아주 작게 쪼갠다.) 積分

아주 작게 쪼개서 쌓는 것을 말한다.


왜 굳이 쪼개서 합칠까? 쪼개서 합치면 원래 대로 되는 것인데...


어디에 활용될 수 있을까?


이상하게 생긴 모양의 컵에 물이 담겨있다고 생각해 볼 때, 물의 부피를 알고 싶을 것이다.


그렇다면 물을 비커에 따라 보면 눈금을 읽어보면 바로 부피가 나온다.

이것도 적분으로 볼 수 있을 것이다. 물을 쪼개서 다시 새로운 용기에 담았으니 물의 부피는 그대로이다. 


 의 그래프에서 x축과  x=a, x=b 구간으로 구성된 도형의 넓이를 구하고 싶을 때. 바로 이 적분을 쓰면 된다. 넓이를 계산하기 위해 y 방향으로 촘촘히 자른다고 생각해 보자. 이 때 아주 촘촘하게 자른다면 사각형 모양에 가깝고, 

가로 길이는 0에 가깝지만 0은 아니고, 이를 dx라 한다. 

이 작은 하나의 사각형의 넓이가 f(x) dx 이를 다 합치면 되는데...


넓이

넓이 S = 


는 S자 같이 생겼고, Sum 즉, 합을 의미,  dx라는 것은 x를 아주 작게 쪼갠 값(가로길이)이다.  

f(x)는 y값. 즉 높이이다. f(x) dx 는 가로를 아주 작게 쪼갠 사각형의 넓이가 되고

이를 x가 a에서 b구간까지 변할 때의 S ; 즉 합을 구한다는 의미이다.





여기서 dx의 의미가 중요하다.  

 이렇게도 쓰는 델타 x.

x에 대해 적분한다는 것이다.  x의 아주 작은 변화량.






회전체의 부피


그렇다면 위 그래프를 x축을 기준으로 회전했을 때 생기는 물체의 부피를 계산해보자.



회전체를 y축 방향으로 계속 자르면 모든 조각이 높이가 아주 작은 원기둥이 된다.


이 하나의 원기둥의 부피를 합치면 전체 회전체의 부피가 되는 것이다.


먼저 아주 작은 원기둥  

 에서 r은  이고 높이 h를 자세히 보면 를 의미하게 된다.

즉, 이를 x가 a에서 b까지 dx 로 적분하면 된다.





예를 들어

  라는 직선을 x가 0에서 2r 범위에서 x축으로 회전하면 원뿔이 되는데, 

우리가 아는 원뿔 부피 공식을 적용하면,

 밑넓이는 원인데, 반지름이 x가 2r일때의 y값이다.   x가 2r일때 y값은 r이다. 

즉 반지름이 r인 원의 넓이가 밑넓이가 되고, 

높이 h는 x가 0~2r 범위이니까,  2r이 된다.


그러면 이번엔 적분으로 풀어보자. 동일한 결과가 나오는지...





회전체의 옆면적


선을 적분하면 면이되고 면을 적분하면 부피가 된다. 차원이 올라가는 것이다. 미분은 반대로 차원이 내려간다.


옆면적을 생각해 보니, 선을 적분하면 된다. 이 선은 바로 위에서 아주 작게 쪼갠 원기둥의 둘레이니 원주이다. 그래서 원주를 적분하면 면적이 나오겠다.


그러나 틀렸다. 왜 그런 것인가......

dx가 문제다... 생각해 보면,  dx는 x축 방향을 작게 쪼갠 값이다. 


부피를 구할 때는 dx가 원기둥의 높이의 의미가 있었지만......

옆넓이를 계산할 때는 dx를 사용하면 안된다.... ????  원기둥이 아닌 띠를 잘라폈을 때의 가로길이, 세로길이를 봐야 하는 것이다......  여기서 이 사각형(거의 사각형)의  세로 길이는 원주인  2 pi f(x)이지만,   가로는 dx가 아니라  바로 dx동안 f(x)가 움직인 거리이다.... 

즉, dx를 곱하는게 아니고, 저 작게 자른 f(x) 이동 거리를 곱해야  한다.


곡선의 이동 거리 공식은 (다음에 증명하기로 하고)


 이것을 합친것이 전체 곡선의 길이인데,


위 공식에서 우리가 원하는 것은  x 지점에서의 아주 작은 가로길이 을 dx 대신 사용해야 한다.

.

따라서 옆면적 


결국 적분을 자세히 보면 dx로 적분된 것의 의미를 다시 한 번 관찰해보니,


dx는 x를 0에 가깝게 아주 작게 쪼갰을 때의 값. 즉 극한 0값이 dx인데.

우리가 어떤 넓이든 부피를 구할 때 구하고자 할때 이 dx만큼  y방향으로 자른  조각들의 합으로 볼 수 있다. 


이 아주 작은 조각의 넓이 또는 부피값의 합 (위 공식에서는 옆면적)


(작은조각).  

즉 작은 조각들의 범위가 x가 a~b까지이고, 이 조각들을 합친다.


작은 조각의 크기는 공식에서 위 기호를 뺀 나머지다.





이렇게 생각하고 보니, 적분은 작은조각(작은 길이나 작은 넓이)과 합(integral, sum) 기호로 구성된 것. 

작은 조각은 dx의 몇 배 형태로 나타낸 것.


'Math' 카테고리의 다른 글

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

+ Recent posts