[mysql] 테이블 상태 보기

까먹지 말자!

개발하기 전에 반드시 먼저 확인해 보아야 하는 것이 Transaction 지원 여부다.

Mysql에서는 엔진마다 트렌젝션 정책이 다르기 때문에 개발 전에 확인이 필요하다.

use ‘databasename’;
SHOW TABLE STATUS WHERE `Name` = ‘tablename’;

engine : MyISAM, InnoDB..등등..

Advertisements

[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 가 효율적이라 했던 것으로 기억한다.