Giải thích cây quyết định trong bối cảnh quan trọng của tính năng


9

Tôi đang cố gắng hiểu làm thế nào để hiểu đầy đủ quy trình ra quyết định của mô hình phân loại cây quyết định được xây dựng bằng sklearn. Hai khía cạnh chính mà tôi đang tìm kiếm là một đại diện graphviz của cây và danh sách các tính năng quan trọng. Điều tôi không hiểu là tầm quan trọng của tính năng được xác định trong bối cảnh của cây. Ví dụ, đây là danh sách các tính năng quan trọng của tôi:

Xếp hạng tính năng: 1. FeatureA (0.300237)

  1. Tính năngB (0.166800)

  2. Tính năngC (0,092472)

  3. Tính năngD (0,075009)

  4. Tính năngE (0,068 310)

  5. Tính năngF (0,067118)

  6. Tính năngG (0,066510)

  7. Tính năngH (0,043502)

  8. Tính năngI (0,040281)

  9. Tính năngJ (0,039006)

  10. Tính năngK (0,032618)

  11. Tính năngL (0,008136)

  12. Tính năngM (0,000000)

Tuy nhiên, khi tôi nhìn vào ngọn cây, nó trông như thế này:Đoạn cây

Trên thực tế, một số tính năng được xếp hạng "quan trọng nhất" sẽ không xuất hiện cho đến khi xuống sâu hơn cây và ngọn cây là FeatureJ, một trong những tính năng được xếp hạng thấp nhất. Giả định ngây thơ của tôi sẽ là các tính năng quan trọng nhất sẽ được xếp hạng gần ngọn cây để có tác động lớn nhất. Nếu điều đó không chính xác, thì điều gì làm cho một tính năng "quan trọng"?


1
có bao nhiêu mẫu được gán cho bên trái và bên phải của nút đầu tiên?
oW_

Câu trả lời:


4

Không cần thiết là một tính năng càng quan trọng thì nút của nó càng cao ở cây quyết định.

Điều này chỉ đơn giản là vì các tiêu chí khác nhau (ví dụ: Tạp chất Gini, Entropy-Information Gain, MSE, v.v.) có thể được sử dụng ở mỗi hai trường hợp này (chia tách so với mức độ quan trọng).

Ví dụ: tại SkLearnbạn có thể chọn thực hiện phân tách các nút tại cây quyết định theo tiêu chí Entropy-Information Gain (xem criterion& 'entropy'at SkLearn) trong khi tầm quan trọng của các tính năng được đưa ra bởi Gini Importance, mức giảm trung bình của Gini Tạp chất cho một biến nhất định trên tất cả các cây của khu rừng ngẫu nhiên (xem feature_importances_tại SkLearntại đây ).

Nếu tôi đúng, SkLearnđồng thời cũng áp dụng ngay cả khi bạn chọn thực hiện việc chia các nút tại cây quyết định theo tiêu chí Tạp chất Gini trong khi tầm quan trọng của các tính năng được đưa ra bởi Gini Importance vì Gini Impurity và Gini Importance không giống nhau (cũng xem cái nàycái này trên Stackoverflow về Gini Importance).


Đã @oW_ đã đưa ra một câu trả lời khá chính xác cho câu hỏi ban đầu nhưng tôi nghĩ rằng thật tốt khi viết nó theo cách ngắn gọn và sáng suốt hơn cho người đọc.
Bị ruồng bỏ

3

Trong scikit-learn, tầm quan trọng của tính năng là giảm tạp chất nút. Điều quan trọng là nó chỉ đo mức độ quan trọng ở cấp độ nút. Sau đó, tất cả các nút được tính trọng số bằng cách có bao nhiêu mẫu đạt đến nút đó.

Vì vậy, nếu chỉ có một vài mẫu kết thúc ở nút bên trái sau lần phân tách đầu tiên, điều này có thể không có nghĩa là J là tính năng quan trọng nhất vì mức tăng trên nút bên trái chỉ có thể ảnh hưởng đến rất ít mẫu. Nếu bạn in thêm số lượng mẫu trong mỗi nút, bạn có thể có được bức tranh rõ hơn về những gì đang diễn ra.


2

Chỉ vì một nút thấp hơn trên cây không có nghĩa là nó ít quan trọng hơn. Tầm quan trọng của tính năng trong sci-kitlearn được tính bằng cách hoàn toàn một nút phân tách các lớp (chỉ số Gini). Bạn sẽ nhận thấy ngay cả trong cây bị cắt của mình rằng A bị chia ba lần so với một lần của J và điểm số entropy (một thước đo độ tinh khiết tương tự như Gini) có phần cao hơn trong các nút A so với J.

Tuy nhiên, nếu bạn chỉ có thể chọn một nút, bạn sẽ chọn J vì điều đó sẽ dẫn đến dự đoán tốt nhất. Nhưng nếu bạn có tùy chọn để có nhiều nút đưa ra một số quyết định khác nhau thì A sẽ là lựa chọn tốt nhất.


Vì vậy, theo thuật ngữ của giáo dân, giả sử chỉ có 2 cách phân loại có thể (hãy gọi chúng là 0 và 1), tính năng ở gốc cây sẽ là phân chia tốt nhất các mẫu thành 2 nhóm (nghĩa là công việc tốt nhất để phân tách 1 trên một bên của cây và 0 vào bên kia). Điều đó có chính xác không? Tôi vẫn chưa hoàn toàn rõ ràng về mức độ quan trọng của tính năng được xếp hạng nếu nó không phải là tốt nhất trong việc tách 0 và 1 trong bối cảnh này
Tim Lindsey

-2

Tầm quan trọng của biến được đo bằng cách giảm độ chính xác của mô hình khi biến được loại bỏ. Cây quyết định mới được tạo với mô hình mới mà không có biến có thể trông rất khác với cây ban đầu. Quyết định chia tách trong sơ đồ của bạn được thực hiện trong khi xem xét tất cả các biến trong mô hình.

Biến nào để phân chia ở gốc (và các nút khác) được đo bằng tạp chất. Độ tinh khiết tốt (ví dụ: mọi thứ trong nhánh bên trái có cùng giá trị mục tiêu) không phải là sự đảm bảo cho độ chính xác tốt. Dữ liệu của bạn có thể bị sai lệch, nhánh phải của bạn có nhiều phản hồi hơn nhánh trái của bạn. Do đó, không tốt khi chỉ phân loại chính xác nhánh trái, chúng ta cũng cần xem xét nhánh phải. Do đó, biến tách có thể hoặc không thể là biến quan trọng cho độ chính xác của mô hình tổng thể.

Tầm quan trọng của biến là một biện pháp tốt hơn để lựa chọn biến.


2
Tôi không nghĩ đó là cách nó được thực hiện trong scikit-learn. Ở đó, tầm quan trọng của tính năng được đo là "mức độ quan trọng của gini", tức là tổng mức giảm tạp chất của nút được tính theo tỷ lệ của các mẫu đạt đến nút đó.
oW_

"Tầm quan trọng của một tính năng được tính là mức giảm (bình thường hóa) của tiêu chí do tính năng đó mang lại. Nó còn được gọi là tầm quan trọng của Gini." - scikit-learn.org/urdy/modules/generated/ từ
Afflatus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.