009. Week 02. Fundamentals of Machine Learning - 05. How to create a Disicion tree

@
Housing dataset :
13개의 numerical independant values + 1개의 numerical dependent value

@
hypothesis 를 function 의 형태로 정의해 보자.
$h:\hat{f}(x;\theta)=\sum\limits_{i=0}^{n}\theta_{i}x_{i} \rightarrow f=X\theta$

@
실제 f라고 하는것은 에러가 붙어있다. 현실에서는 에러가 많이 포함되어있다. 에러 term 이 붙은걸 true dependent 값이 될것이다.
$f(x;\theta)=\sum\limits_{i=1}^{n}\theta_{i}x_{i}+e$
$f(x;\theta)= y\rightarrow f $
$f(x;\theta) = X\theta+e=Y$
$f(x;\theta) = Y$

위의 $h:\hat{f}(x;\theta)=\sum\limits_{i=0}^{n}\theta_{i}x_{i} \rightarrow f=X\theta$ 이 수식에서는 에러값인 e를 표현하고 있지 않다. 그래서 e가 없어진 dependent variable 에 대한 function 이다 라는 의미로 이건 좀 가짜일거야 라는걸 나타내기 위해 hat 을 붙여준다.


@
$\theta$ 에 대해 optimize 를 더 해보자.
Optimized $\theta$
$\hat{\theta} 은 arg\;\underset{\theta}{min}(\theta^{T}X^{T}X\theta-2\theta^{T}X^{T}Y)$ 이 공식에서 가져올 것이다. 압정놀이 할때 MLE 구할때 우리 어떻게 했지? 참고로 거기서도 있었던 $\theta$ 를 어떻게 잘 정할수 있었지? 미분을 활용해 기울기가 0가 되는 극점을 활용한 방식으로 찾았다. 여기서도 마찬가지로 $\theta$ 에 대해 미분 $\triangledown_{\theta}$ 을 해보도록 하겠다.
$\hat{\theta} = arg\;\underset{\theta}{min}(\theta^{T}X^{T}X\theta-2\theta^{T}X^{T}Y)$

We can do the same technique as we did before in Thumbtack.
$\triangledown_{\theta}(\theta^{T}X^{T}X\theta-2\theta^{T}X^{T}Y)=0$
미분하면, 2가 내려오면서 $\theta$ 는 하나의 차수가 되면서 앞에 있는 계수 $X^{T}X$ 는 그대로 내려오는 형태가 될 것이다. 오른쪽 항의 경우는 쉽다. 왜냐하면 $\theta$ 가 하나밖에 없으니까. $X^{T}Y$ 이 파트만 살아남아서 내려감.
$2X^{T}X\theta-2X^{T}Y=0$
위 수식에서 $\theta$ 는 하나밖에 없고 X, Y 는 우리가 아는 term 들이다. $\theta$ 로 정리하기위해 옮기고 나눠주고 역행렬을 사용하면 아래와 같다.
X, Y 는 우리가 아는 term 들 이니까, 이제는 $\theta$ 를 확실하게 얘기, 계산할 수 있다. linear regression 모델을 만들수 있다.
$\theta = (X^{T}X)^{-1}X^{T}Y$

@
하우징 데이터에 대해 linear regression 해볼수 있을까? 아마 할수있겠다.
Let's calculate and watch the performance.
하우징 데이터는 13개의 feature 들이 있다고 가정했는데 1차원만 활용해서 첫번째 feature 만 활용해서 그래프를 그려보자. x축을 나타내는 independant variable인 첫번째 feature 가 이렇게 증가하고 있을 경우에 세로축의 dependent variable 들인 빨간점들은 다음과 같이 분포되어있다.
For demonstration purpose, we will limit the dimension to the constant and the first feature.
MLE if error follows the normal distribution.

@
hat 이 없는 true f 값은 빨간점으로 표현이 된것이고, f에 hat 이 붙은 추정치들은 파란점으로 표현이 되었다. 그런데 왠지 안맞는거 같다. 처음부분에서 내려오는건 맞는거 같은데 후반부에 실제 데이터분포는 살짝 올라간다. 이부분은 hypothesis function 이 linear 이기 때문에 잘 표현이 안된다. $\theta$ 를 optimize 해서 실제데이터를 표현해주는 파란점들의 선을 찾아냈는데 뒤에 있는 실제데이터 파트는 linear 한 가정을 고쳐주지 않으면 안될것 같다. linear 하다는 가정도 조금 고쳐보도록 하겠다. 어떻게 하면 좋을까?

@
x 라고 하는 feature 의 셋을 $\phi$ 라는 function 에 넣어서 새로운 벡터로 만들것이다. 새로운 벡터를 활용해서 $\theta$ 를 다시 만들어 보자. 같은 방법이 되겠다. $\phi$ 를 어떻게 정의할 거냐면 x 값이 하나가 들어가면은 나오는 벡터는 2개, 3개, 4개,.. ($x^{2}, x^{3}, x^{4}$, ...) 데이터를 뻥튀기 시키고 있다.

@
$\theta$ 값을 변환 해가지고 하는데, $\theta$ 를 $x^{2}, x^{3}, x^{4}$, ... 이런식으로 좀 뻥튀기 해서 보도록 하겠다. 어려운 내용은 아니다. x라고 하는 값이 하나가 있었는데 이값을 계속 곱하기, 곱하기, ... 한것일 뿐이다. $x^{9}$ 까지 해보았다.

@
이렇게 하니까 초록색 점들로 이루어진 선이 나왔다. $x^{9}$ 까지 한 결과물을 가지고 초록색을 만든것이다. 2승, 3승, 4승 해도 실제 feature 는 x 하나 밖에 없었는데 하나인 그것을 가지고 숫자를 9개로 뻥튀기 한것이다. 그 결과를 활용해서 $\hat{f}$ 를 추정을 해봤다는 것이다. 그렇게 되면 당연히 non linear 한 factor 가 들어가게 되어있다. 선형이지 않은 factor 때문에 나오는 선도 곡선이 된다. 승수를 높여가지고 정보를 뻥튀기한 정보를 쓰니까 실제 데이터 분포인 빨간색과 좀 비슷해 졌다.

@
그런데 또 생각해보면 앞부분은 잘 피팅되었다고 보는데 후반부도 올라가는거 잘 표현된거 같긴한데 동시에 이게 맞는건가 하는 생각도 든다. 왜냐하면 관측치가 한곳, 두곳 밖에 없으니까. 이 불확실한 올라가는 파트를 설명하려고 승수를 올리는게 맞았나 라는 생각이든다. 이건 마치 DT 에서 DT 노드를 점점 높힌거랑 동일한 현상이 되었다. 승수를 높여서 관측된 실제데이터를 잘 설명하는 초록색 곡선을 만들었지만 미래에 올값은 이 초록선 선으로 잘 설명이 될까 좀 의문의 여지가 있다.

@
룰베이스도 해봤고, DT 도 해봤고, linear regression 도 해봤다. 이런 방식들이 아직도 많이 쓰이고 훌륭하신 분들도 현실적인 문제를 다룰때는 deploy 할 모델을 만들때는 오히려 이런 방식을 더 선호할 수도 있다. 심플하면서 또 심플한 걸 이용하는 기계는 잘 고장나지도 않고 또 우리의 예상 하에서 행동을하고, 이런면에서 참 좋은 모델이라고 생각한다. 하지만 반대로 많은 데이터가 들어와서 이러한 방식을 기반으로 트레이닝하고 파라미터 inference 를 해가지고 실제 어떤 값을 예측 하는 과정에 있어서는 한계성도 존재한다. 왜냐하면 데이타셋이 많아지면 많아질수록 억지스럽게 모델이 복잡해지고(승수올라감) 그러면서 에러도 늘어나지 않을까 하는 생각도 들고, 이런 한계점들이 존재하는 모델이었다. 한계는 있지만 기초가 되는 모델이어서 배워봤다.

다음주는 여전히 심플한 모델이지만 조금더 통계적 접근에 근접해 가는 나이브 베이즈 classifier 를 배우도록 하겠다.