이번달 말까지 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는 알고리즘 원문이다.
개발은 Java로 시작했다. 안해본지도 1년정도 되서 다시한번 감을 상기시키려 Java로 하기로 했다.
Java보다는 Eclipse가 너무 좋아서 쓰는건데.
여전히 Eclipse는 리소스를 많이 잡아 먹는군 ㅡㅡ;