Tree 계열 알고리즘

요즘에 Tree 계열 알고리즘 많이 사용한다.

randomForest로 부터 데이터 확인 용으로 자주 사용하는 CART 알고리즘 그리고 오늘 처음 본 Conditional Inference Tree까지..

ML알고리즘의 경우 은총알은 없다. 사용 목적에 맞으면 그게 장땡인거다. 게다가 사실 빅 데이터를 가지고 분석을 한다면 내부가 블랙박스로 되어 있어서 어떻게 돌아가는지 안보이는 알고리즘 보다는 투명한 Tree 계열 알고리즘이 더 낫다고 생각한다. 만일 모델 빌드에 실패 하더라도 왜 실패하는지 그리고 어떤 방향으로 나아가야 되는지 룰을 보고 확인 가능하기 때문이다.

Conditional Inference Tree는 통계학적인 가설검정의 기법이 가미된 트리로서 각 노드에 유의수준값이 표시된다. 뭐 통계학 개론 정도 보신 분들이라면 이게 어떤걸 의미하고 왜 노드에 이런게 있는지 짐작을 하실거라 생각한다.

특정 유의수준 이상으로 허용을 하지 않는 선에서 트리는 자라게 되고 대부분 0.05 유의수준을 기준으로 하니 overfitting이 되는 경우는 그다지 없을 것이다.

재밋는 사실은 이 알고리즘이 들어있는 R 패키지에서 이 ctree(Conditional Inference Tree)를 가지고 randomForest 알고리즘을 구현하고 있다는 것이다.

 

ctree로 모델링 된 객체를 가지고 플로팅을 해보면 이런 아주 우아한 그래프가 그려진다.

 

 

image

 

내가 본 트리 그래프 중에서 가장 명료하고 많은 정보를 가진 그래프가 아닐 수 없다.

이런 플로팅은 자체가 데이터이자 정보이다.

 

하루하루 R 패키지 가지고 사용하는 재미로 보내고 있는데, 이런걸 만드는 분들의 노고에 심심한 감사의 표현을 전할 뿐이다.

CC BY-NC 4.0 Tree 계열 알고리즘 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.