Bắt đầu ngayBắt đầu miễn phí

Tính toán gain cho một cây

Trong video, bạn đã xem cách dùng độ đo Gini để tạo phép chia (split) tối ưu cho một cây. Bây giờ, bạn sẽ tính gain cho cây đã được nạp trong không gian làm việc của bạn.

Tập dữ liệu có 500 quan sát, trong đó 89 là các trường hợp vỡ nợ. Điều này dẫn đến Gini bằng 0.292632 ở nút gốc. Nhắc lại nhanh: Gini của một nút = 2 * tỷ lệ vỡ nợ tại nút đó * tỷ lệ không vỡ nợ tại nút đó. Xem đoạn mã dưới đây để ôn lại.

gini_root <- 2 * (89 / 500) * (411 / 500)

Bạn sẽ dùng các giá trị Gini này để tính gain của các lá so với nút gốc. Xem đoạn mã sau để hình dung cách dùng các giá trị Gini đã tạo để tính gain của một nút.

Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))

Hãy tính Gini ở nút con bên trái và nút con bên phải, và tính gain của hai nút lá này so với nút gốc. Đối tượng chứa cây là small_tree.

Bài tập này là một phần của khóa học

Mô hình hóa rủi ro tín dụng bằng R

Xem khóa học

Hướng dẫn bài tập

  • Phép tính Gini cho nút gốc đã được cung cấp.
  • Tính độ đo Gini cho nút lá bên trái.
  • Tính độ đo Gini cho nút lá bên phải.
  • Tính gain bằng cách lấy hiệu giữa Gini của nút gốc và tổng có trọng số các Gini của nút lá.
  • Thông tin về phép chia trong cây này có thể tìm bằng $split từ đối tượng cây small_tree. Ở đây, thay vì xem gain, bạn nên xem cột improve. improve là một thước đo thay thế cho gain, thu được đơn giản bằng cách nhân gain với số quan sát trong tập dữ liệu. Hãy đảm bảo đối tượng improve (mã đã cho) có cùng giá trị như trong small_tree$split.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
Chỉnh sửa và Chạy Mã