Apa tujuan menggunakan pohon keputusan?

8

Saya tidak mengerti apa tujuan dari pohon keputusan? Cara saya melihatnya, itu adalah serangkaian if-else. Mengapa saya tidak hanya menggunakan if-else daripada menggunakan pohon keputusan? Itu karena mengurangi kompleksitas kode saya?

Saya masih terhindar dari menghitung entropi dan mendapatkan informasi karena ada algoritma prebuilt untuk mereka di mana saya cukup tancapkan aturan kan? (Seperti ID3)

Mengapa kita menggunakannya dengan pembelajaran mesin sekarang? Karena kita bahkan tidak perlu membuat aturan sebelum kita perlu? Mesin belajar dari data pelatihan dan berdasarkan pada atribut yang dapat diprediksi hasilnya?

Apakah menerapkan ML dalam kode saya mengurangi overhead dan membuat kode saya kurang kompleks, lebih efektif, lebih cepat?

57913
sumber
6
Ini bukan tentang kode, ini tentang model.
Sycorax berkata Reinstate Monica
6
"Apakah menerapkan ML dalam kode saya mengurangi overhead dan itu membuat kode saya kurang kompleks, lebih efektif, lebih cepat?" Lebih efektif, tergantung pada apa yang kode Anda lakukan, tetapi sebaliknya tidak. ML tidak ada untuk membuat kode Anda kurang rumit atau lebih berkinerja (cenderung memiliki efek sebaliknya). ML ada untuk mengotomatisasi pembuatan algoritma berdasarkan data sampel. Biasanya ini tidak perlu karena programmer hanya dapat menulis algoritma yang efektif, tetapi kadang-kadang itu terlalu sulit untuk dilakukan, di situlah ML masuk
DarthFennec
Tolong jangan lintas pos. Itu bertentangan dengan kebijakan SE hanya karena alasan ini; itu menghabiskan banyak waktu orang.
gung - Reinstate Monica
@DarthFennec Dikutip!
Jim

Jawaban:

21

Cara saya melihatnya, itu adalah serangkaian if-else. Mengapa saya tidak hanya menggunakan if-else daripada menggunakan pohon keputusan?

Anda benar sekali. Pohon keputusan tidak lain adalah serangkaian pernyataan if-else. Namun demikian, cara kami mengartikan pernyataan ini sebagai pohon yang memungkinkan kami membuat aturan ini secara otomatis ... Yaitu diberikan beberapa contoh input set ... apa set terbaik dari aturan yang menjelaskan apa nilai telah memberikan masukan baru ? ID3 dan yang serupa memungkinkan kita secara otomatis membuat aturan ini. Ini sebenarnya bukan tentang pohon yang pernah dibangun, ini tentang bagaimana kita membuatnya.(x1,y1),...,(xN,yN)yx

Terlepas dari itu orang jarang menggunakan pohon keputusan saja, alasannya tepat seperti yang Anda katakan: itu adalah model yang cukup sederhana yang kurang ekspresif. Namun, ia memiliki satu keunggulan besar dibandingkan model lain: Seseorang dapat menghitung pohon keputusan tunggal dengan cukup cepat. Itu berarti bahwa kita dapat menghasilkan algoritma yang melatih banyak pohon keputusan (meningkatkan, alias AdaBoost dan GradientBoosting) pada kumpulan data besar. Kumpulan (biasanya lebih dari 500) model sederhana ini (disebut hutan) dapat mengekspresikan bentuk yang jauh lebih rumit.

Anda juga bisa membayangkannya seperti ini: Diberikan fungsi 'bagus' (yaitu kontinu) tetapi rumit kita bisa mencoba memperkirakan fungsi ini menggunakan garis. Jika fungsinya rumit (seperti atau lebih) maka kami menghasilkan kesalahan besar. Namun, kita dapat menggabungkan garis dengan cara kita membagi interval menjadi bagian yang lebih kecil dan pada setiap kita mencoba untuk mendekati (yaitu,f:[a,b]Rsin(x)[a,b]a=a0<a1<...<aM=bai,ai+1f|(ai,ai+1)fterbatas pada interval ini) oleh garis. Dengan matematika dasar (analisis) kita kemudian dapat memperkirakan fungsi menutup secara sewenang-wenang (yaitu membuat kesalahan kecil sewenang-wenang) jika kita mengambil garis yang cukup. Oleh karena itu, kami membangun model yang rumit namun akurat dari model yang sangat sederhana. Itu persis ide yang sama yang (misalnya) GradientBoosting gunakan: Ini membangun hutan dari pohon keputusan tunggal yang sangat 'bodoh'.

Fabian Werner
sumber
2
Nilai tambah besar lainnya adalah dapat diakses untuk inspeksi manusia ("aaah, jadi itu sebabnya!").
dikurangkan
1
ya pohon keputusan sangat bagus untuk menjelaskan kepada orang-orang tanpa latar belakang statistik karena mereka sangat intuitif.
qwr
1

Hanya menambahkan jawaban @Fabian Werner - apakah Anda ingat melakukan aturan Riemann Sums dalam pengantar integrasi? Nah itu juga adalah seperangkat pernyataan jika dipartisi secara merata yang Anda gunakan untuk menghitung area di bawah fungsi.

Jika Anda menggambar fungsi 1D dan menggambar partisi secara merata apa yang akan Anda temukan adalah bahwa di area di mana fungsi memiliki sedikit gradien, partisi tetangga dapat digabungkan bersama tanpa kehilangan akurasi yang besar. Sama, dalam partisi dengan gradien tinggi menambahkan lebih banyak partisi akan secara signifikan meningkatkan perkiraan.

Set partisi apa pun akan mendekati fungsi tetapi beberapa jelas lebih baik daripada yang lain.

Sekarang, pindah ke model CART - kami melihat data dalam bentuk titik bising dari fungsi ini dan kami diminta untuk memperkirakan fungsi tersebut. Dengan menambahkan terlalu banyak partisi kita dapat mengenakan dan pada dasarnya melakukan model tipe tetangga terdekat. Untuk menghindari ini, kami membatasi jumlah partisi yang dapat digunakan oleh model kami (biasanya dalam bentuk max depth dan min samples per split). Jadi sekarang di mana kita harus menempatkan perpecahan ini? Itu adalah pertanyaan yang ditujukan oleh kriteria pemisahan. Area dengan "kompleksitas" yang lebih tinggi harus menerima lebih banyak pemisahan sebagai patokan dan itulah yang harus dilakukan gini, entropi, dll.

Membuat prediksi hanyalah pernyataan if-else tetapi dalam konteks pembelajaran mesin yang bukan dari mana kekuatan model berasal. Kekuatan tersebut berasal dari kemampuan model untuk berdagang secara berlebih-lebihan secara terukur dan dapat diturunkan dalam kerangka kerja probabilistik yang konsisten dengan jaminan teoretis dalam batas data. Akhirnya, jika kita mengambil pandangan abstrak serupa dari model ML kita dapat mengatakan jaringan saraf, metode kernel, pendekatan Monte Carlo dan banyak lagi hanyalah penambahan dan perkalian. Sayangnya, itu bukan pandangan yang sangat berguna dari literatur.

j__
sumber
0

Pohon keputusan adalah partisi domain masalah dalam subset, dengan syarat. Biasanya diimplementasikan sebagai cascade if-then-elses. Anda dapat melihatnya sebagai istilah yang menggambarkan logika keputusan yang kompleks.

Pohon keputusan tidak lebih efisien atau lebih "mendukung" pembelajaran mesin daripada tes logis. Itu adalah tes logis.

Juga perlu diingat bahwa algoritma apa pun tidak lebih dari kombinasi perhitungan dan tes aritmatika, yaitu pohon keputusan (biasanya besar).


Untuk kelengkapan, mari kita sebutkan bahwa dalam beberapa konteks, seperti pembelajaran mesin, pohon keputusan yang kompleks dibangun secara otomatis, oleh algoritma. Tetapi ini tidak mengubah sifat mereka.

Yves Daoust
sumber