Literatur tentang algoritma untuk pemisahan optimal dalam pertumbuhan pohon klasifikasi

8

Dalam ESL , Bagian 9.7, ada paragraf yang menyatakan bahwa waktu perhitungan dari perpecahan dalam pertumbuhan pohon klasifikasi (atau regresi) biasanya berskala seperti mana adalah jumlah prediktor dan adalah jumlah sampel.pNlogNpN

Pendekatan naif menghasilkan penskalaan , dan saya belum dapat menemukan referensi ke literatur yang menjelaskan rincian untuk bagian pemecahan algoritma dan bagaimana seseorang mencapai penskalaan khas .pN2 pNlogN

Dalam pendekatan naif pemisahan optimal untuk variabel yang diberikan, setelah pemesanan awal dari nilai-nilai yang diamati, dicari di antara titik tengah antara nilai-nilai yang diamati, dan menghitung kerugian untuk setiap pemisahan dapat dilakukan dalam waktu skala seperti .N1N

Saya dapat (dan mungkin akan) mempelajari kode sumber untuk beberapa implementasi yang saya tahu, tetapi referensi literatur akan lebih baik khususnya mengenai kompleksitas waktu.

NRH
sumber

Jawaban:

2

Saya akan memberikan jawaban yang berbeda, karena terlalu banyak untuk komentar dan itu memperlakukan pendekatan yang lebih umum.

Jadi, dalam ESL, mereka benar-benar menggambarkan waktu perhitungan untuk cabang-dan-terikat (lebih tepatnya itu tampak seperti perpecahan dan taklukkan bagi saya).

Kami menunjukkan dengan jumlah pengamatan dan dengan jumlah simpul anak-anak, ketika kita menanam pohon. Saya berasumsi kita tidak kehilangan secara umum jika kita menganggap diperbaiki. Juga, kita dapat menunjukkan dengan waktu pemrosesan untuk menghitung titik-titik perpecahan pada suatu node.NKKf(N)

Dengan demikian, kita dapat menulis rumus secara rekursif untuk waktu eksekusi seperti: kita pertimbangkan di sini bahwa node anak membagi data input set ukuran dalam subset ukuran yang sama . Kita tahu bahwa ini adalah kasus terbaik.

T(N)=f(N)+KT(N/K)
NKN/K

Namun, kita dapat melihat bahwa ini adalah aplikasi Master Theorem yang sangat terkenal. Ini didokumentasikan dengan baik dalam buku CLRS . Saya memiliki edisi ke-3 dan detailnya ada di bagian 4.5 dan buktinya ada di bagian berikutnya. Saya tidak begitu ingat detailnya, tetapi saya ingat tidak terlalu rumit jika seseorang memperluas rekursi dan mengelompokkan beberapa istilah menjadi satu.

Namun, yang penting untuk kasus ini adalah ketika - waktu linear, waktu yang dihasilkan dari algoritma adalah . Waktu ini dihitung untuk variabel input tunggal, dengan demikian, total waktu kami untuk variabel adalahf(N)=O(N)T(N)=O(NlogN)PO(PNlogN)

Waktu ini dapat dicapai untuk penanaman pohon, jika semua input awalnya disortir dalam , dan menemukan nilai pemisahan membutuhkan waktu linier pada input yang disortir ini. Di sini kita dapat menerapkan algoritma varians on-line, seperti yang saya sebutkan dalam jawaban saya sebelumnya untuk . Untukbahkan lebih mudah untuk menemukan median. Saya akui saya tidak pernah mencoba beberapa fungsi kehilangan lainnya untuk pohon.O(PNlogN)L2=1N(yy^)2L1=1N|yy^|

Namun perlu dicatat bahwa Teorema Master berlaku untuk kasus terbaik jika ukurannya sama. Kasus terburuk adalah ketika perpecahan sangat tidak seimbang. Di sana, seseorang dapat menerapkan kasus Master Teorema yang berbeda dan waktunya akan menjadi .O(PN2)

Sebagai kesimpulan saya berasumsi bahwa penulis ESL menggunakan istilah yang biasanya dengan cara yang digunakan untuk menggambarkan algoritma quick-sort. Penyortiran cepat biasanya memberikan waktu berjalan, memiliki kasus terburuk , untuk beberapa pengaturan data tertentu.O(NlogN)O(N2)

Saya harap ini membantu.

rapaio
sumber
2

Lihat jawaban saya dari pertanyaan lain di sini . Sementara saya tidak memiliki referensi kertas, Anda sepele bisa menemukan diri Anda bahwa untuk input numerik panjang Anda harus:pN

  • beralih di atas semua input -pO(p)
  • urutkan setiap input -O(Nlog(N))
  • hitung 2 varian berjalan, satu mulai dari kiri dan satu mulai dari kanan dalam waktu linier -O(N)

Waktu dominan untuk setiap atribut adalah waktu penyortiran, sehingga kita memiliki .O(pNlog(N))

rapaio
sumber
+1, ini adalah jawaban yang baik, yang tidak saya pikirkan, tetapi mengandaikan kerugian kuadratik. Saya tidak berpikir ini dapat digeneralisasi ke (semua) fungsi kerugian umum lainnya yang digunakan untuk pohon klasifikasi. Saya kira itu tipikal , tetapi menurut ESL kasus terburuk , perilaku berasal dari algoritma branch-and-bound, tetapi saya belum menemukan konfirmasi mengenai hal ini. pNlog(N)pN2
NRH