Decision Tree(ID3)

이번달 말까지 Decision Tree알고리즘 중에 ID3라는 알고리즘 구현하는 레포트가 있어 그냥 정리한번 해본다.

순수하게 알고리즘 만 써보자!

ID3알고리즘(trainData, Attributes)

1. node생성
2. node.Label을 trainData중에서 가장 많은 결과값을 할당한다.
3. 모든 trainData의 결과값이 ‘+’이면 노드를 리턴한다.
4. 모든 trainData의 결과값이 ‘-‘이면 노드를 리턴한다.
5. 만일 Attributes의 길이가 0(즉, 남아있는 Attribute가 없으면) 노드를 리턴한다.
6. node.Attribute 를 현재 Attributes에 있는 것중에서 information Gain값이 가장 큰 속성을 할당한다.(이걸 a라고 하자)
7. Attributes에서 위에서 할당된 Attribute를 제거한다.(제거한 Attributes를 Attributes’로한다.)

드디어 재귀호출을 연달아 하는 for문이 나온다.

8. for(a에서 가능한 value의 갯수만큼 루프){
9.     trainData’ = a의 Attribute를 가지고 값이 value인 trainData의 집합
10.    만일 trainData’의 갯수가 0이면 node.child = null
11.    아니면 node.child = ID3알고리즘(trainData’, Attributes’)
12. }
13. 노드를 리턴한다.

아래 pdf는 알고리즘 원문이다.

ID3.pdf

개발은 Java로 시작했다. 안해본지도 1년정도 되서 다시한번 감을 상기시키려 Java로 하기로 했다.
Java보다는 Eclipse가 너무 좋아서 쓰는건데.
여전히 Eclipse는 리소스를 많이 잡아 먹는군 ㅡㅡ;

CC BY-NC 4.0 Decision Tree(ID3) by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.