Mengapa Pohon Keputusan tidak mahal secara komputasi?

38

Dalam Pengantar Pembelajaran Statistik dengan Aplikasi dalam R , penulis menulis bahwa pemasangan pohon keputusan sangat cepat, tetapi ini tidak masuk akal bagi saya. Algoritma harus melalui setiap fitur dan mempartisi dengan segala cara untuk menemukan pemisahan optimal. Untuk fitur numerik dengan pengamatan, ini dapat menghasilkan partisi untuk setiap fitur.nn

Apakah saya salah paham bagaimana cara kerja pemisahan biner? Atau adakah alasan mengapa algoritma ini tidak akan lama?

matt_js
sumber
1
+1 untuk pertanyaan. Anda dapat mulai memeriksa catatan kuliah ini , halaman 15, menggunakan algoritma alih-alih . O ( N 2 )O(N)O(N2)
Haitao Du

Jawaban:

40

Algoritma pohon keputusan tidak menghitung semua pohon yang mungkin ketika mereka cocok dengan pohon. Jika mereka melakukannya, mereka akan memecahkan NP-hardmasalah. Algoritma pemasangan pohon keputusan biasanya membuat keputusan serakah dalam proses pemasangan — pada setiap tahap mereka mengoptimalkan sub-masalah untuk menemukan pemisahan optimal dengan data dalam simpul yang diberikan dan terus bergerak maju dalam proses pemasangan. Selain itu, saat Anda bergerak lebih dalam ke pohon keputusan, Anda memiliki set data yang lebih kecil yang telah membuatnya ke node yang diberikan sehingga Anda akan mengoptimalkan aturan pemisahan atas subset data yang lebih kecil. Semua pilihan ini adalah pemindaian linear data dalam node yang diberikan. Ini tidak rumit untuk dilakukan tetapi bisa menjadi agak mahal secara komputasi jika Anda memiliki banyak pengamatan atau sejumlah besar kovariat untuk dibagi. Namun, banyak pekerjaan dapat dipisahkan dan dikirim ke mesin yang berbeda untuk dikerjakan sehingga ada cara untuk membangun arsitektur komputasi Anda untuk ditingkatkan.

Lucas Roberts
sumber
10
Dengan kata lain, ini lebih atau kurang sebanding dengan pencarian biner.
Robert Harvey
1
@ Robert Harvey, saya tidak berpikir bahwa dengan mengoptimalkan fungsi pengotor dalam proses pemasangan Anda menjamin atau bahkan mendorong pemisahan yang seimbang. Untuk mendapatkan kompleksitas pencarian yang setara dengan pencarian biner Anda perlu menerapkan atau setidaknya mendorong pemisahan seimbang. log2(N)
Lucas Roberts
2
Setuju, tapi prinsipnya tetap berlaku. (Itulah sebabnya saya menggunakan kata-kata "kurang lebih")
Robert Harvey
2

Ada beberapa perbedaan antara algoritma CART dan C4.5 untuk membangun pohon keputusan. Misalnya, CART menggunakan Gini Impurity untuk memilih fitur sementara C.4.5 menggunakan Shannon Entropy. Saya tidak berpikir perbedaannya relevan untuk jawabannya, jadi saya tidak akan membedakannya.

Apa yang membuat pohon keputusan lebih cepat daripada yang Anda pikirkan adalah:

  1. Seperti yang orang lain katakan, algoritma ini adalah algoritma 1-lookahead. Mereka melakukan optimasi lokal. Di setiap cabang, mereka memilih aturan yang memaksimalkan / meminimalkan metrik apa pun yang mereka gunakan (Gini atau Entropy). Ini berarti mereka mungkin kehilangan aturan ketika menggunakan operator logis seperti andakan menghasilkan pohon yang lebih baik. Ini berarti Anda harus sangat berhati-hati / pintar ketika melakukan rekayasa fitur. Misalnya, Anda mencoba memperkirakan berapa banyak orang yang minum, Anda mungkin ingin menonjolkan hal-hal seperti insinyur new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Pohon keputusan mungkin kehilangan aturan seperti itu, atau memberi mereka kepentingan kurang dari yang seharusnya.
  2. Lebih penting lagi, metrik yang digunakan oleh pohon keputusan dapat dihitung secara bertahap. Katakanlah Anda memiliki fitur . Pohon keputusan tidak perlu menghitung metrik untuk , lalu menghitung metrik lagi untuk , lalu lagi untuk , dll. Gini dan Entropy dipilih karena mereka dapat dihitung secara bertahap. Pertama-tama, setiap fitur diurutkan, sehingga Anda memiliki . Kedua, saat Anda menghitung , Anda dapat menggunakan hasilnya untuk menghitung dengan mudah . Ini seperti melakukan rata-rata. Jika Anda memiliki rata-rata sampel, , dan saya beri Anda nilai lain , Anda dapat dengan murah memperbarui hasil rata-rata Anda,X 1 = { 1 , 1.5 , 2 , 2.5 , 3 } ˉ x v ˉ xn ˉ x + vX1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1 . Koefisien Gini dihitung sebagai sebagian kecil dari jumlah, yang dapat dengan mudah dihitung secara bertahap untuk sampel.
  3. Pohon keputusan dapat diparalelkan. Setiap node terdiri dari dua cabang yang independen. Karena itu, di setiap cabang, Anda memiliki kesempatan untuk memaralelkan pembuatan pohon. Selanjutnya, pemilihan fitur itu sendiri juga dapat diparalelkan. Inilah yang membuat paket xgboostsangat cepat. Peningkatan gradien adalah berurutan dan tidak dapat diparalelkan, tetapi pohon itu sendiri bisa.
Ricardo Cruz
sumber
1

Hanya untuk memperkaya jawaban,

Pohon keputusan hierarki paralel-paralel cepat (CART, C4.5) tetapi ada alternatif lain seperti pohon keputusan non-hierarkis atau mereka yang melakukan partisi miring yang tidak, meskipun mereka bisa lebih akurat. Periksa referensi berikut jika Anda tertarik (Itu bukan pilihan yang exahustive).

Non-hierarkis:

Grubinger, T., Zeileis, A. dan Pfeiffer, K.-., 2014. Evtree: Pembelajaran evolusi pohon klasifikasi dan regresi optimal global dalam RJStat. Perangkat Lunak 61 (1), 1-29.

Perpecahan miring:

Murthy, SK, Kasif, S. dan Salzberg, S., 1994. Sebuah sistem untuk induksi pohon keputusan miring. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. dan Kamath, C., 2003. Menginduksi pohon keputusan miring dengan algoritma evolusioner. IEEE Trans. Evol. Komputasi. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. dan Salzberg, S., 1993. Induksi pohon keputusan miring. J. Artif. Intell. Res. 2 (2), 1002-1007.

Semoga berhasil!

Rafa_Mas
sumber