Memahami Naif Bayes


47

Dari StatSoft, Inc. (2013), Electronic Statistics Textbook , "Naive Bayes Classifier" :

masukkan deskripsi gambar di sini

Untuk menunjukkan konsep Klasifikasi Naïve Bayes, perhatikan contoh yang ditampilkan dalam ilustrasi di atas. Seperti yang ditunjukkan, objek dapat diklasifikasikan sebagai GREEN atau RED. Tugas saya adalah untuk mengklasifikasikan kasus baru saat mereka tiba, yaitu memutuskan label kelas mana yang mereka miliki, berdasarkan objek yang saat ini keluar.

Karena ada dua kali lebih banyak objek HIJAU daripada RED, masuk akal untuk percaya bahwa kasus baru (yang belum diamati) memiliki kemungkinan dua kali lebih besar untuk memiliki keanggotaan HIJAU daripada RED. Dalam analisis Bayesian, kepercayaan ini dikenal sebagai probabilitas sebelumnya. Probabilitas sebelumnya didasarkan pada pengalaman sebelumnya, dalam hal ini persentase objek HIJAU dan MERAH, dan sering digunakan untuk memprediksi hasil sebelum mereka benar-benar terjadi.

Jadi, kita dapat menulis:

masukkan deskripsi gambar di sini

Karena ada total 60 objek, 40 di antaranya adalah GREEN dan 20 RED, probabilitas kami sebelumnya untuk keanggotaan kelas adalah:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Setelah merumuskan probabilitas sebelumnya, kami sekarang siap untuk mengklasifikasikan objek baru (lingkaran PUTIH). Karena objek dikelompokkan dengan baik, masuk akal untuk mengasumsikan bahwa semakin banyak objek HIJAU (atau MERAH) di sekitar X, semakin besar kemungkinan bahwa case baru tersebut memiliki warna tertentu. Untuk mengukur kemungkinan ini, kami menggambar sebuah lingkaran di sekitar X yang mencakup sejumlah (untuk dipilih a priori) dari poin terlepas dari label kelas mereka. Kemudian kami menghitung jumlah titik dalam lingkaran milik masing-masing label kelas. Dari ini kami menghitung kemungkinan:

masukkan deskripsi gambar di sini

Dari ilustrasi di atas, jelas bahwa Peluang X yang diberikan GREEN lebih kecil dari Peluang X yang diberikan MERAH, karena lingkaran mencakup 1 objek GREEN dan 3 yang MERAH. Jadi:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Meskipun probabilitas sebelumnya menunjukkan bahwa X mungkin milik GREEN (mengingat bahwa ada dua kali lebih banyak GREEN dibandingkan dengan RED), kemungkinan menunjukkan sebaliknya; bahwa keanggotaan kelas X adalah RED (mengingat bahwa ada lebih banyak objek RED di sekitar X daripada GREEN). Dalam analisis Bayesian, klasifikasi akhir dihasilkan dengan menggabungkan kedua sumber informasi, yaitu, sebelum dan kemungkinan, untuk membentuk probabilitas posterior menggunakan apa yang disebut aturan Bayes (dinamai menurut Pdt. Thomas Bayes 1702-1761).

masukkan deskripsi gambar di sini

Akhirnya, kami mengklasifikasikan X sebagai MERAH karena keanggotaan kelasnya mencapai probabilitas posterior terbesar.

Di sinilah kesulitan pemahaman matematika saya masuk

masukkan deskripsi gambar di sini

p (Cj | x1, x2, x ..., xd) adalah probabilitas posterior keanggotaan kelas, yaitu probabilitas bahwa X adalah milik Cj tetapi mengapa menuliskannya seperti ini?

Menghitung kemungkinan?

masukkan deskripsi gambar di sini

Probabilitas Posterior?

masukkan deskripsi gambar di sini

Saya tidak pernah mengambil matematika, tetapi pemahaman saya tentang bayes naif baik-baik saja saya pikir tepat ketika datang ke metode ini membusuk membingungkan saya. Bisakah seseorang membantu memvisualisasikan metode ini dan bagaimana menulis matematika dengan cara yang dapat dimengerti?


12
(+1) Saya mengagumi cara yang sangat hati-hati dan jelas di mana Anda mengajukan pertanyaan.
rolando2

2
@ rolando2: semua angka dan hampir semua teks dari pertanyaan ini berasal dari statsoft.com/textbook/naive-bayes-classifier
Franck Dernoncourt

Harap edit posting ini untuk mengaitkan materi dengan jelas dari tempat lain, sesuai Cara referensi materi yang ditulis oleh orang lain .
Scortchi

Atribusi kutipan langsung yang tepat selalu menjadi persyaratan di situs Stack Exchange. Bagaimanapun, kelalaian itu mudah diperbaiki; & Saya sudah melakukannya. Tidak perlu menghapus akun Anda - harap pertimbangkan kembali.
Scortchi

Jawaban:


50

Saya akan menjalankan seluruh proses Naif Bayes dari awal, karena tidak sepenuhnya jelas bagi saya di mana Anda digantung.

Kami ingin menemukan probabilitas bahwa contoh baru milik masing-masing kelas: ). Kami kemudian menghitung probabilitas itu untuk setiap kelas, dan memilih kelas yang paling mungkin. Masalahnya adalah kita biasanya tidak memiliki probabilitas tersebut. Namun, Teorema Bayes memungkinkan kita menulis ulang persamaan itu dalam bentuk yang lebih mudah ditelusur.P(class|feature1,feature2,...,featuren

Bayes 'Thereom hanyalah atau dalam hal masalah kita:

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

Kami dapat menyederhanakan ini dengan menghapus . Kita dapat melakukan ini karena kita akan memberi peringkat untuk setiap nilai ; akan sama setiap kali - tidak tergantung pada . Ini memberi kita P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

Probabilitas sebelumnya, , dapat dihitung seperti yang Anda jelaskan dalam pertanyaan Anda.P(class)

Itu meninggalkan . Kami ingin menghilangkan probabilitas bersama yang masif, dan mungkin sangat jarang . Jika setiap fitur independen, maka Bahkan jika mereka tidak benar-benar independen, kita dapat mengasumsikan mereka adalah (itulah " naif "bagian dari Bayes naif). Saya pribadi berpikir lebih mudah untuk memikirkan ini untuk variabel diskrit (yaitu, kategori), jadi mari kita gunakan versi contoh Anda yang sedikit berbeda. Di sini, saya telah membagi setiap dimensi fitur menjadi dua variabel kategori.P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Contoh Data Diskrit.

Contoh: Pelatihan sang pengklasifikasi

Untuk melatih pengklasifikasi, kami menghitung berbagai himpunan bagian dari poin dan menggunakannya untuk menghitung probabilitas sebelumnya dan kondisional.

Priornya sepele: Ada enam puluh total poin, empat puluh hijau, dan dua puluh merah. Jadi

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

Selanjutnya, kita harus menghitung probabilitas bersyarat dari setiap nilai fitur yang diberikan kelas. Di sini, ada dua fitur: dan , yang masing-masing mengambil satu dari dua nilai (A atau B untuk satu, X atau Y untuk yang lain). Karena itu kita perlu mengetahui hal-hal berikut:feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (jika tidak jelas, ini semua pasangan fitur-nilai dan kelas yang mungkin)

Ini mudah untuk dihitung dengan menghitung dan membagi juga. Misalnya, untuk , kami hanya melihat titik merah dan menghitung berapa banyak dari mereka yang berada di wilayah 'A' untuk . Ada dua puluh titik merah, yang semuanya berada di wilayah 'A', jadi . Tidak ada titik merah di wilayah B, jadi . Selanjutnya, kami melakukan hal yang sama, tetapi hanya mempertimbangkan titik hijau. Ini memberi kita dan . Kami ulangi proses itu untuk , untuk melengkapi tabel probabilitas. Dengan asumsi saya sudah menghitung dengan benar, kami mengertiP(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

Sepuluh probabilitas (dua prior ditambah delapan kondisional) adalah model kami

Mengklasifikasikan Contoh Baru

Mari kita klasifikasikan titik putih dari contoh Anda. Itu ada di wilayah "A" untuk dan wilayah "Y" untuk . Kami ingin menemukan probabilitas bahwa itu ada di setiap kelas. Mari kita mulai dengan warna merah. Dengan menggunakan rumus di atas, kita tahu bahwa: Subbing dalam probabilitas dari tabel, kita dapatkanfeature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
Kami kemudian melakukan hal yang sama untuk hijau:
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

Subbing dalam nilai-nilai itu membuat kita 0 ( ). Akhirnya, kita melihat untuk melihat kelas mana yang memberi kita probabilitas tertinggi. Dalam hal ini, itu jelas kelas merah, jadi di situlah kita menetapkan intinya.2/302/10

Catatan

Dalam contoh asli Anda, fitur-fiturnya kontinu. Dalam hal ini, Anda perlu menemukan beberapa cara menetapkan P (fitur = nilai | kelas) untuk setiap kelas. Anda mungkin mempertimbangkan untuk menyesuaikan distribusi probabilitas yang diketahui (misalnya, seorang Gaussian). Selama pelatihan, Anda akan menemukan mean dan varians untuk setiap kelas di sepanjang setiap dimensi fitur. Untuk mengklasifikasikan suatu titik, Anda akan menemukan dengan memasukkan mean dan varians yang sesuai untuk setiap kelas. Distribusi lain mungkin lebih tepat, tergantung pada data Anda, tetapi seorang Gaussian akan menjadi titik awal yang baik.P(feature=value|class)

Saya tidak terlalu terbiasa dengan kumpulan data DARPA, tetapi pada dasarnya Anda akan melakukan hal yang sama. Anda mungkin akan berakhir menghitung sesuatu seperti P (serangan = TRUE | service = jari), P (serangan = false | layanan = jari), P (serangan = TRUE | layanan = ftp), dll. Dan kemudian menggabungkannya dalam sama seperti contohnya. Sebagai catatan, bagian dari trik di sini adalah menghadirkan fitur yang bagus. Sumber IP, misalnya, mungkin akan sangat jarang - Anda mungkin hanya memiliki satu atau dua contoh untuk IP yang diberikan. Anda mungkin melakukan jauh lebih baik jika Anda melakukan geolokasi IP dan menggunakan "Source_in_same_building_as_dest (true / false)" atau sesuatu sebagai fitur.

Saya harap itu membantu lebih banyak. Jika ada yang butuh klarifikasi, saya akan senang untuk mencoba lagi!


3
Tentu. Jika tidak apa-apa dengan Anda, saya akan mengedit jawaban saya sehingga ada lebih banyak ruang (dan saya dapat hal-hal LaTex).
Matt Krause

1
Saya memperluas pelatihan dan bagian uji dan membuatnya menjadi bagian mereka sendiri. Paragraf pasangan pertama adalah sama ...
Matt Krause

2
Matt, ini jauh lebih jelas daripada definisi buku teks tentang Naif Bayes yang saya temui. Ini mungkin jawaban terbaik untuk setiap pertanyaan yang saya lihat sejauh ini di situs web ini.
Zhubarb

@Berkan, terima kasih; Anda baik sekali (walaupun ada banyak jawaban hebat lainnya juga!) Jika Anda punya saran, saya akan senang mencoba mengatasinya!
Matt Krause

+1 dan stackoverflow.com/questions/10059594/… di mana ada penjelasan serupa
Drey

6

Menyederhanakan notasi dengan menunjukkan data, kami ingin mencari yang mana dari berbagai yang terbesar. Sekarang, formula Bayes memberikan mana penyebut di benar sama untuk semua . Jika kita ingin menemukan , adalah yang terbesar, kita tentu saja dapat menghitung setiap dan membandingkan nilainya. Tetapi perhatikan bahwa perbandingan tidak benar-benar dipengaruhi oleh nilai yang sama dalam semua kasus. Kita juga bisa menghitung semuaDP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj) dan bandingkan (yaitu, tanpa repot-repot membagi masing-masing dengan sebelum perbandingan), dan sama akan dipilih memiliki probabilitas posterior terbesar. Dengan kata lain, posterior probabilitas adalah sebanding dengan kemungkinan kali probabilitas sebelum Akhirnya, ketika data adalah kumpulan pengamatan bersyarat) pengamatan independen diberikan , kami memiliki itu P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
DC j ) P ( D C j )(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)

1

Asumsi utama di balik model naive bayes adalah bahwa setiap fitur (x_i) tidak tergantung kondisi dari semua fitur lain yang diberikan kelas. Asumsi ini yang memungkinkan kami untuk menulis kemungkinan sebagai produk sederhana (seperti yang telah Anda tunjukkan).

Ini juga yang membantu model naif bayes menggeneralisasi dengan baik dalam praktik. Pertimbangkan fase pelatihan: jika kita tidak membuat asumsi ini, maka pembelajaran akan melibatkan memperkirakan distribusi dimensi yang rumit dan tinggi: p (x1, x2, ..., xn, c) di mana semua fitur didistribusikan bersama. Sebagai gantinya, kita dapat melatih dengan memperkirakan p (x1, c), p (x2, c), ..., p (xn, c), karena dengan mengetahui nilai c membuat nilai-nilai semua fitur lainnya menjadi tidak relevan (mereka menyediakan tidak ada informasi tambahan tentang x_i).

Saya tidak tahu cara yang baik untuk memvisualisasikan ini (selain notasi model grafis standar), tetapi untuk membuatnya lebih konkret Anda dapat menulis beberapa kode untuk mempelajari model Naif bayes ( Anda dapat mengambil beberapa contoh data di sini ). Latih dan uji. Sekarang lepaskan asumsi independensi bersyarat dan ubah kodenya. Latih, uji, dan bandingkan dengan model sebelumnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.