logo

Contact

If you want to contact us, please use following emails. Any enquiries will be welcomed. :)

Technical stuff


james@deepnumbers.com

Marketing stuff


jenny@deepnumbers.com

로보어드바이져를 개발하면서 알게 된 것들 2 – 역시 세상에 공짜는 없더라.

lunch

로보어드바이져를 개발하면서 알게 된 것들 2 – 역시 세상에 공짜는 없더라.

알고리즘에 대한 지평의 확장

 

오직 딥러닝에 대한 깊은 애정이 있어, 그동안 별 관심을 기울이지 않았던 Random Forest 같은 다소 전통적인(?) 알고리즘이 딥러닝보다 좋은 결과를 보여주자 딥러닝에 대한 애정이 급격히 식어가기 시작했다.

그동안 쏟아부은 노력이 적지 않은 딥러닝이 그렇게 허무하게 RandomForest보다 좋지 않을수 있다는 사실을 명확하게 인식하고는 다음의 평범한 사실을 깨달았다.

약은 약사에게, 진료는 의사에게

처음 딥러닝을 적용할때는 이것이 만병통치약처럼 생각되어, 어떠한 질병이라도 딥러닝이라는 마법의 묘약을 복용하는 순간, 고통은 사라지고 즐거움만이 있을 것이라 생각했던 것은 순진한 바램이었다.

세상은 결코 그렇게 단순하지 않은 것 같다. 각각의 질병들은, 각자의 특성을 가지고 있고, 그 특성에 가장 좋은 결과를 안겨주는 약은 따로 있다고 생각하게 되었다.

잠깐만 생각해봐도 당연한 것이 다양한 머신러닝 알고리즘들은 저마다의 수학적 이론을 가지고 있다. 그리고 그 수학적 이론들은 어떤 조건에 대한 공리와 정리를 바탕으로 전개된 것이다.

예를 들어 알고리즘 트레이딩에서 많이 사용하는 모델들은 기본적으로 “Stationarity”라는 성질을 가지고 있다는 가정하에 만들어 졌는데, 우리가 다 주지하다시피, 주가데이터는 “Stationarity”가 없다고 알려져 있다.

“Stationarity”가 없는 주가데이터에 “Stationarity”가 있다고 가정해 만들어진 모델들을 적용하면 당연히 좋은 성능을 기대하기 어렵다.

머신러닝 알고리즘들은 저마다의 공리와 정리가 있기 때문에 내가 해결하려는 문제가 알고리즘의 공리와 정리와 부합된다면 큰 노력을 기울이지 않고 좋은 결과를 볼 수도 있다.

그래서 딥러닝을 제외한 다양한 머신러닝 알고리즘들을 공부하고 적용하기 시작했다.

 

다양한 머신러닝 알고리즘들…

 

조사를 해보니 사용할 수 있는 알고리즘들이 생각보다 많고 특성 또한 다양했다.

논문이나 자료들을 보면 저마다 알고리즘의 명쾌한 이론과 우수성을 자랑하고 있었다.  하긴 논문에 발표된 내용으로 본인이 아닌 제 3자가 라이브러리로 구현했다고 하면 확실한 이유가 있기 때문이다. 성능이 별로 좋지 않고, 쓰임새가 많지 않다면 누군가가 수고를 할 필요가 없을테니 말이다.

내가 애용하고 있는 scikit에서 제공하는 거의 모든 머신러닝 알고리즘들을 적용하기로 결정하고 코드를 작성한 후에 테스트를 실시해보았다.

 

  • Ridge Regression
  • Lasso
  • Elastic Net
  • Bayesian Regression
  • Linear Regresssion
  • Support Vector Machine
  • Stochastic Gradient Descent
  • Gaussian Process
  • Gradient Boosting Tree
  • Extra Tree
  • AdaBoost
  • ……

 

위의 언급된 머신러닝 알고리즘들은 기억나는 것들만 언급한 것이고, 실제 테스트했던 것은 이것들보다 많았다.

내 마음이 간사한 것인지, 아니면 원래 사람의 마음이 그런지는 모르겠지만 “혹시나” 하는 기대감이 있었다.

RandomForest가 보여주었던 것처럼 생각지도 않은 알고리즘이 도탄에 빠진 나를 구원해주지 않을까 하는 생각을 가지고 테스트 결과를 보았다.

그런데 그 결과를 보고 좋은지, 나쁜지 뭐라 형용할 수 없었다.

언제나 그렇듯이 머신러닝의 결과는 항상 나를 당황하게 만드는 재주가 있었는데, 이번에도 마찬가지였다.

내가 뭐라 결론짓기 애매했던 이유는 머신러닝 알고리즘의 공리에 따른 일관성이라고 말할 수 있다.

 

머신러닝 알고리즘의 공리(Axiom)

 

머신러닝 알고리즘들은 내 기준으로는 크게 2가지로 나눈다.

 

  1. Occam’s Razor를 따른 알고리즘들
  2. Occam’s Razor를 따르지 알고리즘들

 

Occam’s Razor(일명 오캄의 면도날)은 내가 아주 좋아하는 것으로 Wiki에 다음과 같이 기술되어 있다.

 

Occam's Razor

Occam’s Razor

오컴의 면도날(Occam’s Razor 또는 Ockham’s Razor)은 흔히 ‘경제성의 원리’ (Principle of economy)라고도 한다. 14세기영국의 논리학자이며 프란체스코회 수사였던 오컴의 윌리엄 (William of Ockham)의 이름에서 따왔다. 원문은 라틴어로 된 오컴의 저서에 등장하는 말이다.
간단하게 오컴의 면도날을 설명하자면, 어떤 현상을 설명할 때 불필요한 가정을 해서는 안 된다는 것이다. 좀 더 쉬운 말로 번역하자면, ‘같은 현상을 설명하는 두 개의 주장이 있다면, 간단한 쪽을 선택하라(given two equally accurate theories, choose the one that is less complex)’는 뜻이다. 여기서 면도날은 필요하지 않은 가설을 잘라내 버린다는 비유로, 필연성 없는 개념을 배제하려 한 “사고 절약의 원리”(Principle of Parsimony)라고도 불리는 이 명제는 현대에도 과학 이론을 구성하는 기본적 지침으로 지지받고 있다.

Occam’s Razor를 따르는 머신러닝 알고리즘들은 기본적인 사상이 데이터를 이용해 단순하고 명쾌한 모델을 만드는 것을 목표로 한다. 따라서 이들 알고리즘은 수학적 논리가 탄탄하고 전체 데이터를 잘 설명할 수 있는 모델들을 만들기보다, 설명할 수 있는 데이터들을 중심으로 모델을 구성하는 특징을 가지고 있다.

대표적인 예가 Linear Regression, SVM과 같은 알고리즘들이다.

반대로 Occam’s Razor를 따르지 않는 머신러닝 알고리즘들은 전체 데이터를 잘 설명할 수 있는 모델을 만드는 것이 목적이다. 따라서 모델이 단순하지 않고, 모든 데이터에 설명할 수 있도록 구성한다.

RandomForest와 같은 Tree 계열의 알고리즘들이 전형적인 예이다.

 

술은 마셨으나 음주운전은 하지 않았다.

 

많은 수의 머신러닝 알고리즘들로 테스트한 결과를 말로 표현하자면 위의  “술은 마셨으나 음주운전은 하지 않았다.” 이 적당하다고 할 수 있다.

결과를 보면 몇몇 알고리즘들은 상대적으로 좋은 결과를 보여주었고, 반대로 몇몇은 그렇지 않았다.

그렇다면 좋은 결과를 보여준 알고리즘들을 선택해서 알고리즘 트레이딩을 하고 싶었으나 그렇게 하기에는 머리속에 의문이 너무 많았다.

내가 기대했던 것은 Occam’s Razor에 속하는 것들과 그렇지 않은 2개의 그룹이 일정한 결과를 보여주는 것이었다.

예를 들어 Occam’s Razor를 따른 알고리즘 그룹에서 좋은 결과를 보여준다던가, 아니면 Occam’s Razor를 따르지 않는 알고리즘 그룹에서 좋은 결과를 보여준다는 것을 예상했는데 결과는 뒤죽박죽이었다.

양쪽 그룹에서 통계적으로 유의미하다고 할 수 있을 정도로 어느 한쪽 그룹이 우세하다고 말할수가 없었다.

간단히 이야기하면 테스트에서 보여준 좋은 결과가 알고리즘의 우수성으로 인한것인지, 아니면 우연에 의한 것인지 이야기 하기가 정말 애매했다.

Occam’s Razor 그룹의 알고리즘들이 우세한 결과를 보여준다는 것은 주가데이터가 Random Data이기는 하나, 아주 막돼먹은 Random Data가 아니라는 것을 의미한다.

반대로 Non-Occam’s Razor 그룹의 알고리즘들이 우세한 결과를 보여준다면 아주 전형적인 Random Data라는 것을 말하기 때문에 Occam’s Razor 그룹의 알고리즘들은 별 효용가치가 없다는 것을 알려준다.

그런데 결과가 애매하다보니, 도대체 무엇이 진실인지 알 수가 없다.

 

 

 

블로그에 덧붙여 광고를 합니다. ^^

 

5.27일에 “머신러닝을 이용한 알고리즘 트레이딩 시스템 개발” 책 출간을 기념해 유료 세미나를 개최합니다.

유료강의인만큼 책에는 소개되어 있지 않은 내용들도 설명합니다. ^^

 

<5/27 한빛 프로그래밍 세미나 안내>
스스로 공부하기 쉽지 않은 머신러닝을 핵심적인 개념과 적용방법을 알기 쉽게 설명한 강의입니다. 또한 실제 월스트리트에서 사용하는 알고리즘 트레이딩 기법인 Pairs Trading에 대해 알아보고 구현해보겠습니다.
일시: 2016년 05월 27일(금)
시간 : 09:00~18:00(8H)
강사 : MHR Inc 안명호 대표
장소 : 메디치교육센터(가산디지털단지)

*참가자 전원에게는 강의 교재인 한빛미디어의 『머신러닝을 이용한 알고리즘 트레이딩 시스템 개발』을 제공해드립니다.

 

자세한 내용은 아래의 링크에서 확인하세요.

http://medici-edu.co.kr/course/sub1_view.php?qr&lst_code2=010&ptype=view&page=1&main=Y&s_idx=165

 

많은 신청을 부탁드립니다.

제발 ~~~

user-gravatar
안 명호

어느 날 알게 된 머신러닝에 흠뻑 빠져 그동안 애지중지하던 클라우드를 버리고 머신러닝으로 전향하였다. 이제 더는 다른 기술은 관심을 두지 않고 머신러닝 한길만으로 정했기에 머신러닝을 공부하며 어려운 수식들을 다시 보느라 고생하고 있지만, 하루하루 배워가는 지식에 행복해하며 지내고 있다.

No Comments

Post a Comment

Comment
Name
Email
Website