Algoritma untuk mengoptimalkan pohon keputusan

16

Latar Belakang

Sebuah pohon keputusan biner T adalah pohon berakar di mana setiap node internal (dan akar) diberi label oleh indeks j{1,...,n} sedemikian sehingga tidak ada jalur dari root ke daun mengulangi indeks, daun diberi label oleh output di {A,B} , dan setiap tepi diberi label oleh 0 untuk anak kiri dan 1 untuk anak kanan. Untuk menerapkan pohon ke input x :

  1. Mulai dari root
  2. Jika Anda siap, Anda mengeluarkan label daun A atau B dan berakhir
  3. Baca label j dari simpul Anda saat ini, jika xj=0 kemudian pindah ke anak kiri dan jika xj=1 kemudian pindah ke anak kanan.
  4. lompat ke langkah (2)

Pohon ini digunakan sebagai cara untuk mengevaluasi fungsi, khususnya kami katakan pohon T merupakan fungsi jumlah f jika untuk setiap x{0,1}n kita memiliki T(x)=f(x) . Kompleksitas kueri suatu pohon adalah kedalamannya, dan kompleksitas kueri suatu fungsi adalah kedalaman pohon terkecil yang mewakilinya.


Masalah

Diberikan pohon keputusan biner T output pohon keputusan biner T 'dari kedalaman minimal sehingga T dan T' mewakili fungsi yang sama.

Pertanyaan

Apa algoritma yang paling dikenal untuk ini? Apakah ada batas bawah yang diketahui? Bagaimana jika kita tahu bahwa depth(T)=O(logdepth(T)) ? Bagaimana jika kita hanya membutuhkan T kira-kira kedalaman minimal?


Pendekatan naif

Pendekatan naif diberikan untuk secara rekursif menghitung semua pohon keputusan biner dari kedalaman d - 1 saat uji coba jika mereka mengevaluasi hal yang sama seperti T . Ini sepertinya membutuhkan O ( d 2 n n !d=depth(T)d1Tlangkah-langkah (dengan asumsi bahwa diperlukanlangkah-langkahduntuk memeriksa apaT(x)mengevaluasi untuk untuk sewenang-wenangx). Apakah ada pendekatan yang lebih baik?O(d2nn!(nd)!)dT(x)x

Motivasi

Pertanyaan ini dimotivasi oleh pertanyaan sebelumnya tentang pertukaran antara kompleksitas kueri dan kompleksitas waktu . Secara khusus, tujuannya adalah untuk mengikat pemisahan waktu untuk fungsi total. Kita dapat membuat pohon dari algoritma waktu optimal dengan runtime t , dan kemudian kami ingin mengubahnya menjadi pohon T untuk algoritme optimal kueri. Sayangnya, jika t O ( n ! / ( N - d ) ! ) (Dan sering d Θ ( n )TtTtO(n!/(nd)!)dΘ(n)) bottleneck adalah konversi. Alangkah baiknya jika kita bisa mengganti oleh sesuatu seperti 2 d .n!/(nd)!2d

Artem Kaznatcheev
sumber
Menemukan pohon keputusan optimal adalah NP-lengkap. Saya diajari bahwa dalam teori Decision dan kelas data mining, namun itu didasarkan pada catatan dan saya tidak mengetahui makalah asli yang memperkenalkan hasilnya.
chazisop
@ chisop keren, terima kasih. Tidak jelas bagi saya bahwa menemukan pohon keputusan optimal dalam NP, tapi saya akan memikirkannya / mencarinya lagi. Kadang-kadang mengetahui pernyataan teorema setengah jalan untuk membuktikannya: D.
Artem Kaznatcheev
Saya pikir referensi paling awal untuk ini adalah: Batas Bawah pada Belajar Daftar Keputusan dan Pohon. (Hancock et al. 1994) cs.uwaterloo.ca/~mli/dl.ps
Lev Reyzin
1
Bukti bahwa menemukan pohon keputusan optimal adalah masalah NP-lengkap diberikan oleh Laurent Hyafil dan Ronald L. Rivest dalam Membangun pohon keputusan biner optimal adalah NP-lengkap (1976). referensi: di sini
antoine

Jawaban:

16

Saya punya 3 jawaban, semuanya memberikan hasil kekerasan yang agak berbeda.

Biarkan menjadi beberapa fungsi.f:{0,1}n{0,1}

jawaban 1

Mengingat pohon keputusan komputasi f dan angka, itu adalah NP-sulit untuk mengatakan jika ada pohon keputusan T ' komputasi f ukuran paling nomor itu. TfTf( Zantema dan Bodlaender '00 )

Jawaban 2

Diberikan pohon keputusan komputasi f , NP sulit untuk memperkirakan pohon keputusan keputusan terkecil f untuk setiap faktor konstan. Tff( Sieling '08 )

Jawaban 3

Biarkan menjadi ukuran terkecil pohon keputusan komputasi f . Diberikan pohon keputusan T menghitung f , dengan asumsi N P D T I M E ( 2 n ϵ ) untuk beberapa ϵ < 1 , seseorang tidak dapat menemukan pohon keputusan yang setara T dari ukuran s k untuk setiap k 0 .sfTfNPDTIME(2nϵ)ϵ<1Tskk0

Saya pikir jawaban yang lebih kuat ini (mengandalkan asumsi yang lebih lemah) dapat dibuat dari hasil yang diketahui dalam teori pembelajaran algoritma Occam untuk pohon keputusan, melalui argumen berikut:

  1. Apakah mungkin untuk menemukan pohon keputusan pada variabel dalam waktu n log s , di mana s adalah pohon keputusan terkecil yang konsisten dengan contoh yang berasal dari distribusi (model PAC). ( Blum '92 ) nnlogss
  2. Dengan asumsi untuk beberapa ε < 1 , kita tidak bisa PAC belajar ukuran s pohon keputusan berdasarkan ukuran s k pohon keputusan untuk setiap k 0 . ( Alekhnovich et al. '07 )NPDTIME(2nϵ)ϵ<1sskk0

Kedua hasil ini tampaknya menyiratkan hasil kekerasan untuk masalah Anda. Di satu sisi (1), kita dapat menemukan pohon keputusan besar; di sisi lain (2), kita seharusnya tidak dapat menguranginya untuk mendapatkan yang "kecil" yang setara, dengan ukuran , bahkan ketika ada yang memiliki ukuran s .sks

Lev Reyzin
sumber
(Saya menemukan jawaban Anda dari jawaban ini , yang diposting kurang dari satu jam yang lalu.)Sepertinya " " dapat diganti dengan "positif ϵ , karena berkurang ϵ membuat sisi kanan kontainmen lebih kecil .ϵ<1ϵϵ Juga, di mana dalam makalah itu 2. ditampilkan?
Lihat poin # 2 dalam abstrak di sini: peneliti.watson.ibm.com/researcher/files/us-vitaly/…
Lev Reyzin
(berasal dari jawaban yang sama dengan Ricky Demer) bisakah Anda sedikit lebih mendetail bagaimana Anda mendapatkan "jawaban 3" dari poin 1. dan 2.? Saya tidak terlalu terbiasa dengan teori belajar dan sulit menghubungkan bagian-bagian ...
Marc
Masalah konsistensi dan kemampuan belajar ini terkait erat melalui pisau cukur Occam. Idenya adalah bahwa jika Anda dapat menemukan fungsi yang konsisten dari set kecil, Anda dapat berhasil dalam pembelajaran PAC. Oleh karena itu kekerasan hasil belajar menyiratkan hasil "kekerasan konsistensi". Saya tidak yakin berapa banyak lagi yang bisa saya jelaskan dalam komentar ...
Lev Reyzin
Sejauh yang saya mengerti, algoritma yang ditimbulkan untuk 1. tidak berjalan dalam waktu yang akan diperlukan untuk mendapatkan kontradiksi dengan 2. (hasil yang tepat dalam artikel jika saya mendapatkannya dengan benar mengatakan bahwa tidak ada algoritma pembelajaran polytime untuk pohon keputusan). Jadi mungkin ada masalah dengan argumentasi Anda. Poly(n,s)
Marc