트리의 gain 계산하기
영상에서는 Gini 지수를 활용해 트리의 최적 분할을 만드는 방법을 살펴봤어요. 이제 작업 공간에 로드된 트리에 대해 gain을 직접 계산해 보겠습니다.
이 데이터셋에는 500건의 사례가 있고, 그중 89건이 부도입니다. 루트 노드의 Gini 값은 0.292632입니다. 다시 한 번 기억해 두세요. 특정 노드의 Gini = 2 * (해당 노드의 부도 비율) * (해당 노드의 비부도 비율)입니다. 아래 코드를 참고해 복습해 보세요.
gini_root <- 2 * (89 / 500) * (411 / 500)
이 Gini 값을 사용해 루트 노드 대비 두 리프 노드의 gain을 계산합니다. 아래 코드를 보면, 앞서 구한 Gini 값을 이용해 노드의 gain을 어떻게 계산할 수 있는지 감을 잡으실 수 있어요.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
왼쪽 노드와 오른쪽 노드의 Gini를 계산하고, 루트 노드 대비 두 리프 노드의 gain을 구하세요. 트리 객체는 small_tree입니다.
이 연습은 강의의 일부입니다
R로 배우는 신용 위험 모델링
연습 안내
- 루트 노드 Gini 계산은 제공되어 있습니다.
- 왼쪽 리프 노드의 Gini 값을 계산하세요.
- 오른쪽 리프 노드의 Gini 값을 계산하세요.
- 루트 노드 Gini에서 가중 리프 노드 Gini 값을 빼서 gain을 계산하세요.
- 이 트리의 분할 정보는 트리 객체
small_tree의$split에서 확인할 수 있습니다. 여기서는 gain 대신improve열을 보세요.improve는 gain에 데이터셋의 사례 수를 곱해 얻는 대체 지표입니다. 제공된 코드로 만든 객체improve의 값이small_tree$split의 값과 동일한지 확인하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# The Gini-measure of the root node is given below
gini_root <- 2 * 89 / 500 * 411 / 500
# Compute the Gini measure for the left leaf node
gini_ll <-
# Compute the Gini measure for the right leaf node
gini_rl <-
# Compute the gain
gain <- gini_root - 446 / 500 * gini_ll - 54 / 500 * gini_rl
# compare the improve-column in small_tree$splits with our computed gain, multiplied by 500, and assure they are the same
small_tree$splits
improve <- gain * 500