Ukuran pohon dalam meningkatkan pohon gradien

10

Penguatan pohon gradien seperti yang diusulkan oleh Friedman menggunakan pohon keputusan dengan Jsimpul terminal (= daun) sebagai pelajar dasar. Ada beberapa cara untuk menumbuhkan pohon dengan Jsimpul-simpul yang tepat misalnya seseorang dapat menumbuhkan pohon tersebut dengan cara pertama yang dalam atau dengan cara pertama yang luas, ...

Apakah ada cara yang mapan bagaimana menumbuhkan pohon dengan Jsimpul terminal yang tepat untuk meningkatkan gradien pohon?

Saya memeriksa prosedur penanaman pohon gbmpaket R dan tampaknya itu memperluas pohon secara mendalam-pertama dan menggunakan heuristik berdasarkan peningkatan kesalahan untuk memilih apakah akan memperluas simpul anak kiri atau kanan - apakah itu benar?

Peter Prettenhofer
sumber
2
gbm menggunakan CART untuk membangun pohon, algoritma yang terkenal dari tahun 80-an. Heuristik disebut gini impurity, pilihan standar yang cukup untuk regresi dengan kerugian kuadratik.
2
Afaik gini pengotor digunakan untuk Masalah klasifikasi. Namun demikian, pertanyaannya mengacu pada ukuran pohon.
Peter Prettenhofer
Itu menambah cabang sekaligus. Saya akan terkejut jika setiap split berikutnya adalah yang terbaik dari kandidat split yang tersisa di pohon, bukan hanya cabang. Ada kalanya data tidak mendukung angka pastinya - seperti ketika data terlalu kecil untuk 'J'.
EngrStudent
Seperti yang dikatakan @EngrStudent, Anda tidak dapat memaksa jumlah node yang tepat. Namun, Anda memiliki kontrol atas batas atas jumlah node. gbmmemiliki parameter n.minobsinnodeyang mengontrol jumlah objek minimum per node. Tentu saja, maka jumlah node kurang dari atau sama dengan NumberOfPoints / n.minobsinnode
G5W
Jika saya mencari daun 'J', maka saya akan sepenuhnya membangun pohon dan kemudian, dengan asumsi ada lebih dari daun J, saya akan memangkas ke J. Ini akan memberi saya 'J' node, dan mereka akan menjadi yang paling pemisahan yang informatif - ini akan menjadi model CART yang paling sehat. Jika tidak ada cukup split, saya hanya bisa secara acak membelah dalam domain untuk mendapatkan 'J' tetapi mereka akan palsu dan agak sepele. Saya mungkin melihat distribusi nilai di dalam daun, dan menggunakan aproximation yang digerakkan CDF, tapi itu akan menyimpang dari model mean-per-leaf.
EngrStudent

Jawaban:

2

Solusi dalam R gbmbukan solusi yang khas.

Paket lain, suka scikit-learnatau LightGBMgunakan apa yang disebut (di scikit-belajar) BestFirstTreeBuilder, ketika jumlah daun dibatasi. Ini mendukung antrian prioritas semua daun dan pada setiap iterasi membagi daun yang membawa penurunan pengotor terbaik. Jadi bukan kedalaman-pertama atau luas-pertama, tetapi algoritma ketiga, berdasarkan perhitungan di daun.

ii

David Dale
sumber