[math] Standard Normal Distribution(Gaussian distribution)

double std_normal() /* normal random variate generator */
{
double x1, x2, w, y1;
static double y2;
static int use_last = 0;

if (use_last) /* use value from previous call */
{
y1 = y2;
use_last = 0;
}
else
{
do {
x1 = 2.0 * uniform_rv() - 1.0;
x2 = 2.0 * uniform_rv() - 1.0;
w = x1 * x1 + x2 * x2;
} while ( w >= 1.0 );

w = sqrt( (-2.0 * log( w ) ) / w );
y1 = x1 * w;
y2 = x2 * w;
use_last = 1;
}

return(y1);
}

[Math] 최소제곱법(Least squares method)

기계학습을 공부하는 도중에 최소제곱법이라는 용어가 나와 간단히 정리 하는 차원에서 포스팅을 한다.

이론을 공부하기 전에 가장 먼저 해야 할 일은 정의를 이해하는 것이며 더 중요한 것은 왜 이것이 필요한지 니즈를 이해하는 것이 좋다.

정체를 알 수 없는 함수 f(x)가 있다고 가정해 보자.

함수 f(x)의 입력값 x에 대응하는 출력값 y에 대한 데이터만 구할 수 있다면
함수 f(x)를 정확하게 아는 것은 어렵지만 근사적 접근으로 함수 f(x)를 구할 수 있다.

y = f(x,\beta)라고 하면

각 대응되는 점 (x_i,y_i)\!에 대해 
(y – y_i)의 차이를 r_i라고 하면 r_i=y_i-f(x_i,\boldsymbol \beta)

r_i의 합은 최소제곱법의 오차 S로 

S=\sum_{i=1}^{n}{r_i}^2 
S의 값이 최소가 되었을 때의 beta vector \boldsymbol \beta 값이 가장 함수 f(x)에 근접한다는 원리 이다.

그럼 beta vector는 어떻게 찾는 것이 좋을까? 일일히 값을 대입해볼까?

최소 제곱법을 Cost Function으로 정의하고 Cost Function 값을 최소값으로 만드는 최적화 알고리즘중 하나인 Gradient Decent Algorithm을 공부했다.

Cost Function은 Bow Shape 즉 둥그런 그릇 모양을 하고 있는데

바닥이 Cost Function의 최소 값이 되는 부분이다.

http://ko.wikipedia.org/wiki/%EA%B2%BD%EC%82%AC_%ED%95%98%EA%B0%95%EB%B2%95

특정한 지점에서 시작해서 Cost Function이 일정  부분 지점까지 기울기가 하강하게 되면은 최적화가 완료 된 것이다.

다른 방법으로는 선영대수 역함수를 이용하여 하는 방법이 있는데 이는 차원의 값이 적을 때 (대략 엔드류 교수님이 말씀하시길… n값이 1000~1500정도 이하면) 계산이 빠르고 그 이상이면 Gradient Decent 가 효율적이라 했던 것으로 기억한다.

 

[수치해석] 기본 개념 정리

용어

a = ±m · 10^n,  (0.1 <= |m| < 1), n은 정수
m : 가수(man-tissa)
n : 지수(exponent)

지수의 범위

IEEE-754 및 single precision, double precision 참고(컴퓨터 OS bit에 따라 연산 범위가 다를 수 있으니 CAD 개발 또는 이용시 문서 이용하여 계산 범위가 어디까지인지 미리 알아두는 것이 좋다.

underflow : 수가 너무 작어 표현할 수 없는 경우 0으로 처리하고 계산을 진행한다.

overflow : 수가 너무 커서 표현하기 어려울 때 발생하는데 IMSL, NAG 등 대부분의 표준 코드에서 overflow 발생을 방지하고 있다고 한다. Math library를 이용하여 개발할 때 underflow, overflow에 대한 가드(guard)가 있는지 확인해볼 필요가 있다.

끝처리(Round off)
계산상의 오차는 숫자의 끝처리를 chooping(버림)하거나 rounding(반올림)하면서 발생하는데 버림이나 반올림에 의한 오차를 round-off error라고 한다.
chooping은 계산이 빠르다는 장점이 있지만 오차가 반올림보다 크다.

 

[Math] 가설 검정

중학교, 고등학교, 대학교를 나오면서 통계학에 대해 깊계 공부 해본 적이 없어서 그런지 head first 통계학 책에서 가설검정이라는 낮선 단어를 보면서 가슴이 두근 거렸다.

  • 가설 검증은 언제 사용하는가?
    통계적 주장이 어느정도 사실인지 여부를 판단하기 위해 표본을 이용하여 통계학적 근거가 얼마나 믿을만 한지에 대해 테스트 하기 위한 방법이다.

가설 검증 6단계

1. 검정할 가설을 결정한다.
2. 검정통계를 선택
3. 기각역(critical region)을 정한다.
4. 검정통계를 위한 p-값을 찾는다.
5. 표본결과가 기각역 안에 들어오는지 확인한다.
6. (소신있게)결정을 내린다.

용어

영가설(null pypothesis) : 강력한 증거가 나타나지 않는 이상 사실로 받아 들여야 하는 가설.

대립가설(alternate hypothesis) : 영가설에 반하는 강력한 증거가 나와 널가설을 기각하는 경우 받아들이는 주장을 의미한다.