Pohon inferensi bersyarat vs pohon keputusan tradisional

97

Adakah yang bisa menjelaskan perbedaan utama antara pohon inferensi bersyarat ( ctreedari partypaket dalam R) dibandingkan dengan algoritma pohon keputusan yang lebih tradisional (seperti rpartdalam R)?

  1. Apa yang membuat pohon CI berbeda?
  2. Kekuatan dan kelemahan?

Pembaruan: Saya telah melihat makalah oleh Horthorn et al yang dimaksud Chi dalam komentar. Saya tidak dapat mengikutinya sepenuhnya - adakah yang bisa menjelaskan bagaimana variabel dipilih menggunakan permutasi (misalnya apa itu fungsi pengaruh)?

Terima kasih!

B_Miner
sumber
1
Maksud Anda penjelasan yang melampaui apa yang dijelaskan dalam makalah Hothorn ? Saya ingat beberapa ilustrasi bagus dari Carolin Strobl di konferensi IMPS2009 ; Saya pikir ada beberapa handout di situs webnya.
chl
Tautan ini menunjukkan perbandingan antara berbagai bentuk paket pohon keputusan r-bloggers.com/a-brief-tour-of-the-trees-and-forests
Archpaul

Jawaban:

93

Untuk apa nilainya:

keduanya rpartdan ctreesecara rekursif melakukan pemisahan univariat dari variabel dependen berdasarkan nilai-nilai pada seperangkat kovariat. rpartdan algoritma terkait biasanya menggunakan langkah-langkah informasi (seperti koefisien Gini ) untuk memilih kovariat saat ini.

ctree, menurut penulisnya (lihat komentar chl ) menghindari bias pemilihan variabel berikut rpart(dan metode terkait): Mereka cenderung memilih variabel yang memiliki banyak kemungkinan pemisahan atau banyak nilai yang hilang. Tidak seperti yang lain, ctreemenggunakan prosedur uji signifikansi untuk memilih variabel daripada memilih variabel yang memaksimalkan ukuran informasi (misalnya koefisien Gini).

Tes signifikansi, atau lebih baik: tes signifikansi berganda yang dihitung pada setiap permulaan algoritma (pilih kovariat - pilih split - perulangan) adalah tes permutasi , yaitu, "distribusi statistik uji di bawah hipotesis nol diperoleh dengan menghitung semua nilai yang mungkin dari statistik uji di bawah penataan ulang label pada titik data yang diamati. " (dari artikel wikipedia).

Sekarang untuk statistik uji: ini dihitung dari transformasi (termasuk identitas, yaitu, tidak ada transformasi) dari variabel dependen dan kovariat. Anda dapat memilih salah satu dari sejumlah transformasi untuk kedua variabel. Untuk DV (Dependent Variable), transformasi disebut fungsi pengaruh yang Anda tanyakan.

Contoh (diambil dari kertas ):

  • jika DV dan kovariat keduanya numerik, Anda dapat memilih transformasi identitas dan menghitung korelasi antara kovariat dan semua permutasi yang mungkin dari nilai-nilai DV. Kemudian, Anda menghitung nilai- p dari tes permutasi ini dan membandingkannya dengan nilai- p untuk kovariat lainnya.
  • jika DV dan kovariatnya nominal (tidak berurutan kategorikal), statistik uji dihitung dari tabel kontingensi.
  • Anda dapat dengan mudah membuat statistik uji jenis lain dari segala jenis transformasi (termasuk transformasi identitas) dari skema umum ini.

contoh kecil untuk tes permutasi di R:

require(gtools)
dv <- c(1,3,4,5,5); covariate <- c(2,2,5,4,5)
# all possible permutations of dv, length(120):
perms <- permutations(5,5,dv,set=FALSE) 
# now calculate correlations for all perms with covariate:
cors <- apply(perms, 1, function(perms_row) cor(perms_row,covariate)) 
cors <- cors[order(cors)]
# now p-value: compare cor(dv,covariate) with the 
# sorted vector of all permutation correlations
length(cors[cors>=cor(dv,covariate)])/length(cors)
# result: [1] 0.1, i.e. a p-value of .1
# note that this is a one-sided test

Sekarang anggaplah Anda memiliki seperangkat kovariat, tidak hanya satu seperti di atas. Kemudian hitung nilai- p untuk masing-masing kovariat seperti dalam skema di atas, dan pilih nilai p -nilai terkecil . Anda ingin menghitung nilai- p daripada korelasi secara langsung, karena Anda bisa memiliki kovariat dari jenis yang berbeda (misalnya numerik dan kategorikal).

Setelah Anda memilih kovariat, sekarang jelajahi semua pemisahan yang mungkin (atau sering kali jumlah yang mungkin dari semua pemisahan yang mungkin, misalnya dengan membutuhkan sejumlah kecil elemen DV sebelum pemisahan) kembali mengevaluasi tes berbasis permutasi.

ctreehadir dengan sejumlah transformasi yang memungkinkan untuk DV dan kovariat (lihat bantuan Transformationsdalam partypaket).

jadi umumnya perbedaan utama tampaknya adalah yang ctreemenggunakan skema seleksi kovariat yang didasarkan pada teori statistik (yaitu seleksi dengan uji signifikansi berbasis permutasi) dan dengan demikian menghindari bias potensial rpart, jika tidak mereka tampaknya serupa; misalnya pohon inferensi bersyarat dapat digunakan sebagai pelajar dasar untuk Hutan Acak.

Ini sejauh yang saya bisa dapatkan. Untuk informasi lebih lanjut, Anda benar-benar perlu membaca koran. Perhatikan bahwa saya sangat menyarankan Anda benar-benar tahu apa yang Anda lakukan ketika Anda ingin menerapkan segala jenis analisis statistik.

serigala
sumber
Jadi, apakah adil untuk mengatakan yang berikut: 1. Pada prinsipnya, jika uji signifikansi tersedia dan mudah untuk menghitung untuk Gini, maka setiap pembuat pohon keputusan saat ini dapat ditambahkan dengan ini; 2. Tetapi dalam praktiknya mereka tidak tersedia (yaitu sangat sulit / tidak efisien untuk dihitung) untuk sebagian besar kasus; 3. Penulis pohon CI memilih satu keluarga dengan kriteria pemisahan. Ini belum tentu keluarga terbaik untuk akurasi klasifikasi, tetapi setidaknya untuk itu mudah untuk menghitung signifikansi; 4. Dan karena itu kelemahan pohon CI adalah Anda diharuskan menggunakan kriteria khusus ini?
SheldonCooper
1
@SheldonCooper: 1. dan 2. mungkin sedikit melebihi kepalaku. Saya pikir Anda benar tentang 3. dan 4.
wolf.rauch
1
(...) dan semua permutasi yang mungkin dari nilai-nilai DV "Semua permutasi yang mungkin dari nilai-nilai DV? Diperlukan lebih dari 130 detik untuk menemukan semua kemungkinan permutasi dari 10 elemen. Ini akan membuat pohon CI tidak berguna ketika Anda memiliki lebih dari 20 pengamatan - ditambahkan oleh moderator
chl
1
Saya minta maaf tapi apa kepanjangan dari DV?
mitos
1
@mythicalprogrammer variabel dependen, saya pikir
Frikster