데이터분석/Machine Learning

일반인을 위한 머신러닝 (3) - Cost Function 비용함수

늘근이 2015. 8. 17. 23:03

이제예측된 추론결과가 얼마나 파워풀한지를 따져봐야한다.

 

전에 보았던 지도학습에서 나이와 섹시함에 대한 선형함수를 그렸던 것이 기억나는가? 물론 나이를 먹을수록 섹시함이 늘어난다는 가정은 별로 상식에 벗어나 있지만, 어쩌다 보니 위와같은 직선의 함수가 나왔다고 치자. 그렇다면, 이 직선의 함수가 얼마나 효용성이 있는가는 각 데이터가 표시하고 있는 곳에서 얼마나 멀리 떨어져있는지 거리를 측정한 후 그것을 적당히 합해서 평균친 결과일 것이다.

여기서 바로 다음과 같은 Cost Function의 공식이 나온다.

Hypothesis 의 식은, 바로 위의 추론식을 나타낸다. 기본적인 y절편값이 있고 선형적으로 증가한다.

결국 Cost Function이란, 위와같은 그래프에서 얼마나 점들이 추론식에 가까이 붙어있는가 (얼마나 효율적으로 추론하는가?) 라는 것들을 계산하는 공식으로써, 위의 그림에서 점에서 추론식까지 내려찍는 선의 길이의 양을 말하는 것이고, 이가 적을수록 상당한 식이라는걸 알수 있다.


다만, 위의 그림에서는 직선이 제대로 점들의 분포상태를 잘 설명해주지 못하는것 같기도 하다. 나이와 섹시함은 솔직히 비례하진 않지 말이다..다만, 그렇다면 점들을 정확히 추론한다고 그 추론력이 올라가는 것일까? 사실 여러 과거자료를 통해 아래와 같은 결과를 뽑아낼수있다.

 

 

Cost Function으로 나온 값(선형을 가정하지만 뭐 어쨌든) 이 0인 아름다운 곡선을 가진 최적의 추론식이다. 그렇지만 이 그래프로 도대체 무엇을 할수 있겠는가? 이걸로 뭔가를 예측할수있는가?

 

이에 관련된 정말 흥미로운 주제로 바로 주식투자이다. 주식에서의 알고리즘 투자를 통한 효용성 분석을 할때 이러한 실수를 범하기가 쉽다. 기계가 정해진 공식에 의해 감정에 휩쓸리지 않고 투자를 해서 떼돈을 번다. 생각하기는 쉽다. 이 글을 쓰는 나도 이러다 빌게이츠되는거 아냐? 라는 꿈에 부풀었을때가 있다.

알고리즘 투자는 몇가지 변수를(거래량, 가격, 여러가지 기술적지표) 기초로 신호를 받으면 사고 파는 기계적인 투자를 하는데, 이 변수는 대체로 다섯개가 넘어가면 과최적화(overfitting)가 되버린다. 과거의 결과는 너무나 설명을 잘하지만, 미래를 예측하기에는 터무니없다. 몇십개의 변수를 가지고 과거에 끼워맞추는 투자공식은 투자가 시작되자마자 하향곡선을 그린다.  

 

 

위의 스크린샷은 별로 극단적인 스크린샷은 아니지만, 실제로 fntec에 올라왔던 몇천만원주고 샀다던 시스템이 사자마자 우하향곡선을 그리면서 땅바닥으로 처박히던 케이스도 존재한다. 머신러닝에서도 너무 많은 학습데이터를 컴퓨터에게 주어 과최적화(자꾸 맞춤법을 틀려 과체적화라고 하는 분들이 많은데.. 참말로..참..) 가 되어 오히려 학습능력이 떨어지는 경우도 있다. 너무 공부를 많이하면 미쳐버리는것과 마찬가지이다. (응? 아닌가?)