의사결정나무 모델
- 데이터에 내재되어 있는 패턴을 변수의 조합으로 나타내는 예측/분류 모델을 나무의 형태로 만드는 것
Algorithm
- 데이터를 2개 혹은 그 이상의 부분집합으로 분할
-> 데이터가 균일해지도록 분할
- 균일의 정의
- 분류: 비슷한 번주를 갖고 있는 관측치끼리 모음
- 예측: 비슷한 수치를 갖고 있는 관측치끼리 모음
Model
![](https://velog.velcdn.com/images/yomilimi/post/35617abf-9794-4522-af3f-d37f82b6f0f3/image.png)
이진분할
![](https://velog.velcdn.com/images/yomilimi/post/0eae7229-58dd-4c75-8976-016c88095b5a/image.png)
- 끝마디에 있는 n을 합치면 뿌리 개수가 된다
![](https://velog.velcdn.com/images/yomilimi/post/c5a76e25-fd5b-48ad-b7d2-63756a89ed89/image.png)
- 나눔으로써 균일해짐
![](https://velog.velcdn.com/images/yomilimi/post/038378ee-e425-457a-befa-121e782db788/image.png)
- 부분 집합과 끝마디 개수가 같다.
- 트리에서 D, E, C 3개의 끝마디가 있는데 그래프에서 3부분으로 나뉘어 있다.
예측나무 모델(Regression Tree)
- 예측나무 모델에서 Y는 숫자이다.
![](https://velog.velcdn.com/images/yomilimi/post/68211f89-e81f-4e70-b658-b2ed8b181676/image.png)
- 점들은 하나하나 Y값을 가지고 있다.
- 같은 부분집합의 다른 점 Y값의 평균으로 예측하겠다.
- 두 그림은 형태는 다르지만 같은 내용이다. 트리의 끝마디개수와 부분집합 개수가 같다. 왼쪽 그림의 R2에 6개의 점이 있으므로 R2에는 6개 데이터가 있음을 알 수 있다.
![](https://velog.velcdn.com/images/yomilimi/post/12eb9252-27f8-47e1-b11d-d644305d9446/image.png)
- I(x1,x2)∈R:x1,x2가Rm지역에있나?
- Rm은끝마디
- R3에있으면:C1×0+C2×0+C3×1+C4×0+C5×0=C3
![](https://velog.velcdn.com/images/yomilimi/post/2101e0e6-ffe2-4fd6-b44f-c4bb5b6dcc10/image.png)
- size: 관측치 개수
- AV: Y out의 평균
예측나무 모델링 프로세스
- 데이터를 m개로 분할(끝마디가 m개): R1,R2,...,Rm
m=1∑MCmI(x)∈Rm
- 최상의 분할은 cost function을 최소로 할 때 얻어진다.
minCmi=1∑N{yi−f(xi)2}
- 각 분할에 속해 있는 y값들의 평균으로 예측했을 때 오류가 최소
![](https://velog.velcdn.com/images/yomilimi/post/40187db2-97a3-4c10-a882-5c84f7719531/image.png)
분할변수(i)와 분할점(s)은 어떻게 결정할까?
![](https://velog.velcdn.com/images/yomilimi/post/713073ec-4ba7-4d08-bd6d-9495e706748a/image.png)
- 모든 고려사항을 다해보고 가장 최소화 되는것을 i,s로 정한다.
분류나무 모델
![](https://velog.velcdn.com/images/yomilimi/post/fb4e7dfb-778c-4228-9b76-ae3bb62fcc0b/image.png)
- 빨강색과 초록색을 균일하게 나눔
- 빨강색 범주인지 초록색 범주인지 분류해야함
ex) R5에 새로운 점이 들어왔다면 주변 점들의 평균을 통해 빨강색이라고 예측가능하다.
ex) R2에 새로운 점이 들어왔다면 주변 점들의 평균을 통해 초록색이라고 예측가능하다.
![](https://velog.velcdn.com/images/yomilimi/post/a4707692-b2cb-4dbe-b78e-cf0024b43f49/image.png)
- Rm: 끝노드, Nm 끝노드에 있는 관측치 개수
- 해당 끝 노드에 있는 모든 관측치 중에 첫번째 클래스에 해당하는것이 몇개 있는지 비율을 보는것
- 끝노드에 1 1 1 0 0 이 있다면: P11=3/5,P12=2/5
- 끝노드 m으로 분류된 관측치는 k(m) 클래스로 분류
3개 class P11=0.6,P12=0.3,P13=0.1
= argmax(0.6, 0.3, 0.1)
= 1: 0.6의 class명
![](https://velog.velcdn.com/images/yomilimi/post/c5a09b49-93bd-4956-8252-538b3ec05e95/image.png)
ex) x1,x2−>R3이면f(x)=k(3)가된다.
k(3)가 의미하는 것은 R3에 가장 많은 클래스 비율을 차지하고 있는 k (=k(3))로 output 할것이다.
분류나무 모델링 프로세스
![](https://velog.velcdn.com/images/yomilimi/post/7e0446e5-aa1e-430e-b443-927038d09af9/image.png)
분할변수(j)와 분할점(s)은 어떻게 결정할까?
![](https://velog.velcdn.com/images/yomilimi/post/4532fdf5-1c6d-4732-8e7b-8dbfb16a5f41/image.png)
분할법칙
![](https://velog.velcdn.com/images/yomilimi/post/442c6d1e-38e3-4f9e-8709-3be9810fe73a/image.png)
분류나무 모델링 프로세스
![](https://velog.velcdn.com/images/yomilimi/post/47540929-36c2-4fea-a70c-3eda4c364cd5/image.png)
- L은 대다수가 0이기 때문에 0으로 분류, R은 대다수가 1이기 때문에 1로 분류
Gini와 entropy
![](https://velog.velcdn.com/images/yomilimi/post/57ba2e2f-eb2e-4cb9-8026-1d2472bb4281/image.png)
- 얼룩말 6마리, 코뿔소 1마리일 때
- p1 = 얼룩말일 확률 = 6/7
- p2 = 코뿔소일 확률 = 1/7
개별 트리 모델의 장점
- 계층적 구조로 인해 중간에 에러가 발생하면 다음 단계로 에러가 계속 전파
- 학습 데이터의 미세한 변동에도 최종 결과 크게 영향
- 적은 개수의 노이즈에도 크게 영향
- 나무의 최종 노드 개수를 늘리면 과적합 위험(low bias, large variance)
- 해결방안 -> Random forest