Naive Bayes ve Tekrarlayan Sinir Ağları Arasındaki Fark Üzerine
Her şeyden önce, her ikisinin de sınıflandırıcı olduğunu söyleyerek başlayalım, istatistiksel sınıflandırma adı verilen bir sorunu çözmek anlamına geliyordu . Bu, iki veya daha fazla kategoriye (sizin durumunuzda olumlu / olumsuz duyarlılık) bölünmüş çok sayıda verinin (durum makalelerinizde) olduğu anlamına gelir. Sınıflandırıcının amacı, makalelerin bu iki kategoriye nasıl bölündüğünü öğrenmek ve ardından yeni makaleleri kendi başına sınıflandırabilmektir.
Bu görevi çözebilecek iki model Naive Bayes sınıflandırıcısı ve Tekrarlayan Sinir Ağlarıdır.
Naif Bayes
Bu sınıflandırıcıyı metin analizi için kullanmak için genellikle metni önceden işler ( kelime torbası + tf-tdf ), böylece sayısal değerler içeren vektörlere dönüştürebilirsiniz. Bu vektörler NB modeline girdi görevi görür.
Bu sınıflandırıcı, özelliklerinizin (ürettiğimiz vektörlerin nitelikleri) birbirinden bağımsız olduğunu varsayar. Bu varsayım geçerli olduğunda, çalışmak için çok az veri gerektiren çok güçlü bir sınıflandırıcıdır.
Tekrarlayan Sinir Ağları
Bunlar, daha önce okuduklarının bir "hafızasını" tutarken, verilerinizi sırayla okuyan ağlardır. Bunlar, kelimelerin aralarındaki korelasyondan dolayı metinle uğraşırken gerçekten yararlıdır.
İki model (NB ve RNN), bu sınıflandırmayı gerçekleştirmeye çalıştıkları şekilde büyük ölçüde farklılık gösterir:
NB, üretken olarak adlandırılan bir model kategorisine aittir . Bu, eğitim sırasında (algoritmanın sınıflandırmayı öğrendiği prosedür), NB'nin verilerin nasıl ilk başta üretildiğini bulmaya çalıştığı anlamına gelir . Temel olarak modele girdiğiniz örnekleri üreten temel dağılımı anlamaya çalışır.
Öte yandan RNN, ayrımcı bir modeldir. Sınıflandırmayı gerçekleştirmek için pozitif ve negatif örnekleriniz arasındaki farkların ne olduğunu anlamaya çalışır.
Eğer mire öğrenmek istiyorsanız "ayrımcı ve üretken algoritmalar" sorgulama öneririz
NB onlarca yıldır popüler olmasına rağmen, RNN'ler yüksek hesaplama kaynaklarına ihtiyaçları nedeniyle son on yılda uygulama bulmaya başlıyor. Çoğu zaman RNN'ler, özel GPU'lar (CPU'lardan çok daha hızlı hesaplayan) konusunda eğitilir.
tl; dr: onlar ikisidir çok aynı görevi çözmek için farklı yollar
Kütüphaneler
İki algoritma çok popüler olduğu için birçok kütüphanede uygulamaları vardır. Bahsettiğinizden beri birkaç python kütüphanesine isim vereceğim:
NB için:
scikit-learn : Naive Bayes dahil olmak üzere çeşitli makine öğrenme algoritmalarının uygulamalarını içeren, kullanımı çok kolay bir python kütüphanesidir.
NaiveBayes : Kullanmadım ama sanırım isme göre ilgili.
RNN'ler derin bir öğrenme algoritması olarak kabul edildiğinden, tüm büyük derin öğrenme kütüphanelerinde uygulamaları vardır:
TensorFlow : Şu anda en popüler DL kütüphanesi. Google tarafından yayınlandı ve sürdürüldü.
theano : Montreal Üniversitesi tarafından yayınlanan tf'ye benzer kütüphane.
keras : tf ve theano için sarıcı. Daha kolay. RNN'leri uygulamak istiyorsanız ne kullanmanızı öneririm.
caffe : UC Berkeley tarafından yayınlanan DL kütüphanesi. Python API'sı var.
Yukarıdakilerin tümü, CUDA etkinleştirilmiş bir NVIDIA GPU'nuz varsa GPU desteği sunar.
Python'un NLTK'sı temel olarak Doğal Dil İşleme (stemming, tokenizing, konuşma parçası etiketleme) için bir kütüphanedir . Bir duygu paketi olsa da, odak noktası değil. NLTK'nın duygu analizi için NB kullandığından eminim.