분류기법contents.kocw.or.kr/document/region/2010/04/02/04_02_12...의사결정나무의root에서시작...
Transcript of 분류기법contents.kocw.or.kr/document/region/2010/04/02/04_02_12...의사결정나무의root에서시작...
목차
지도학습과 자율학습
모형의 평가
분류
분류모델
분류 문제 해결을 위핚 접근법
의사결정 트리 귀납
헌트 알고리즘
속성 시험 조건 표현 방법
최선의 분할을 선택하는 척도
2제주대학교 컴퓨터교육과 박찬정
의사결정 트리 귀납
Training 데이터에서 Testing 데이터 결과 추론
하기 예제
3
Tid 환급 결혼 상태 수입 탈세
1 Yes Single 125K No
2 No Married 100K No
3 No Single 70K No
4 Yes Married 120K No
5 No Divorced 95K Yes
6 No Married 60K No
7 Yes Divorced 220K No
8 No Single 85K Yes
9 No Married 75K No
10 No Single 90K Yes 10
의사결정 트리 귀납
4
환급
결혼상태
수입
YESNO
NO
NO
Yes No
MarriedSingle, Divorced
< 80K > 80K
환급 결혼상태 수입 탈세
No Married 80K ? 10
시험 데이터의사결정 나무의 root에서 시작
No
Married 탈세여부 클래스 값에“NO”를 할당
NO
의사결정 트리 귀납
의사결정 나무 구축 알고리즘
Hunt’s Algorithm (one of the earliest) CART
ID3, C4.5
SLIQ,SPRINT
제주물산업센터 - 수자원데이터베이스 (제주대학교) 5
의사결정 트리 귀납
헌트 알고리즘(Hunt’s Algorithm)
6
Dt를 노드 t와 연관된 훈련 레코드들의 집합이라고 하고, y = {y1, y2, …, yc}를 클래스 레이블이라고 하자.
단계 1 : Dt 에 있는 모든 레코드들이 같은 클래스 yt에 속핚다면, t는 yt 로 레이블이 붙은 단말 노드이다.
단계 2 : Dt 가 하나 이상의 클래스에 속하는 레코드들을 포함하고 있다면, 레코드들을 더 작은 부분집합들로 분핛하기 위핚 속성시험조건(attribute test condition)이 선택된다. 시험조건의 각 결과에 대하여, 하나의 자식 노드가 생성되고, Dt 에있는 레코드들은 그 결과에 따라서 자식 노드들에 분산된다. 각각의 자싞 노드에 이 알고리즘이 재귀적으로 적용된다.
의사결정 트리 귀납
예제
제주물산업센터 - 수자원데이터베이스 (제주대학교) 7
Tid Home Owner
Marital Status
Annual Income
Defaulted Borrower
1 Yes Single 125K No
2 No Married 100K No
3 No Single 70K No
4 Yes Married 120K No
5 No Divorced 95K Yes
6 No Married 60K No
7 Yes Divorced 220K No
8 No Single 85K Yes
9 No Married 75K No
10 No Single 90K Yes 10
의사결정 트리 귀납
욕심쟁이 기법 특정 조건을 최적화 핛 수 있는 속성을 기반으로 레코
드를 분핛함
의사결정 트리 귀납의 설계 관련 문제들 레코드를 어떻게 분핛 것인지? (Determine how to
split the records)• 속성 테스트 조건을 명시하는 방법
• 최선의 분핛을 결정하는 방법
분핛을 언제 멈출 것인지? (Determine when to stop
splitting)• 단말 노드가 모두 같은 클래스 값을 가질 때 까지
• 과잉적합을 막기 위핚 사전 혹은 사후 가지치기
8
최상의 분할(split) 찾기
13
Own
Car?
C0: 6
C1: 4
C0: 4
C1: 6
C0: 1
C1: 3
C0: 8
C1: 0
C0: 1
C1: 7
Car
Type?
C0: 1
C1: 0
C0: 1
C1: 0
C0: 0
C1: 1
Student
ID?
...
Yes No Family
Sports
Luxury c1
c10
c20
C0: 0
C1: 1...
c11
Before Splitting: 10 records of class 0,
10 records of class 1
Which test condition is the best?
최상의 분할(split) 찾기
욕심쟁이 기법 동일핚 클래스(homogeneous class)를 가진 노드를
찾을 때까지
노드의 불순도(node impurity)
14
C0: 5
C1: 5
Non-homogeneous,
가장 높은 불순도
Homogeneous,
가장 낮은 불순도
C0 : 10C1 : 0
최상의 분할(split) 찾기
최적의 분핛은 어떤 것인가?
제주물산업센터 - 수자원데이터베이스 (제주대학교) 15
Own
Car?
C0: 6
C1: 4
C0: 4
C1: 6
C0: 1
C1: 3
C0: 8
C1: 0
C0: 1
C1: 7
Car
Type?
C0: 1
C1: 0
C0: 1
C1: 0
C0: 0
C1: 1
Student
ID?
...
Yes No Family
Sports
Luxury c1
c10
c20
C0: 0
C1: 1...
c11
분핛 이전 : 클래스 0의 레코드 10개
클래스 1의 레코드 10개
C0: 5
C1: 5
C0: 9
C1: 1
최상의 분할(split) 찾기
노드의 불순도(impurity) 측정 클래스의 균질성 (homogeneity)
Gini Index
Entropy
Misclassification Error
제주물산업센터 - 수자원데이터베이스 (제주대학교) 16
최상의 분할(split) 찾기
불순도 측정 방법 Gini Index
Entropy
Misclassification error
17
j
tjptjptEntropy )|(log)|()(
j
tjptGINI 2)]|([1)(
)|(max1)( tiPtErrori
최상의 분할(split) 찾기
예제
제주물산업센터 - 수자원데이터베이스 (제주대학교) 18
C1 0
C2 6
C1 3
C2 3
Gini = 1 – (0/6)2 – (6/6)2 = 1 – 0 – 1 = 0
Entropy = -(0/6)log2(0/6) – (6/6)log2 (6/6) = 0
Error = 1-max[0/6,6/6] = 0
Gini = 1 – (3/6)2 – (3/6)2 = 0.5
Entropy = -(3/6)log2(3/6) – (3/6)log2 (3/6) = 1
Error = 1-max[3/6, 3/6] = 0.5