Kararlarını açıklayan bir metin sınıflandırıcı


11

Kısa cümleler için bir metin kategorisi oluşturuyorum. Kullanıcıya "girdiğiniz metnin kategorisinin C olduğunu" söylemenin yanı sıra, bu kararı neden verdiğimi kısa ve anlaşılır bir şekilde açıklamak istiyorum. Örneğin, kullanıcıya "cümlenizi karmaşık 3 katmanlı bir sinir ağına koydum ve en iyi skoru veren cevap" demek istemiyorum; "Cümleniz bu kategorinin karakteristiği olan U, V ve W kelimelerini içeriyor, X, Y ve Z gibi eğitim verilerinde görünen cümleler yüzünden" gibi açıklamalar istiyorum.

Sorum şu: bu tür uygulamalar için en uygun sınıflandırma algoritmaları hangileridir?

k-en yakın komşular iyi bir aday gibi görünüyor, çünkü kullanıcıya "Cümlenizin C kategorisi var, çünkü aynı kategoriye sahip X, Y ve Z cümlelerine benzer. Ancak metin kategorilendirme sorunları üzerindeki performansının Performansı açıklama yeteneği ile dengeleyen bir sınıflandırma arıyorum.

DÜZENLEME: Böyle bir sınıflandırıcı aramak için çok zaman geçirdikten sonra , sınıflandırıcıların kararlarını açıklamasına izin veren limdu adlı bir makine öğrenme kütüphanesi oluşturmaya başladım . Hala geliştirilme aşamasındadır, ancak sınıflandırıcılarımızın neden bu kadar sık ​​başarısız olduklarını kendime ve meslektaşlarıma açıklamama yardımcı oldu ...


Makine öğrenmesinin amacı, kaputun altında ne olduğunu umursamamanız, sadece performansı önemsemenizdir. Diğer yaklaşım başarısız oldu ve bu yüzden herkes bugünlerde bu opak istatistiksel yaklaşımları kullanıyor - sadece çok daha iyi.
Yuval Filmus

2
@Yuval Diğer yaklaşımların başarısız olduğuna tamamen katılmıyorum. Optimal değiller, ancak yine de sınıflandırma görevlerini, bir insanın yapma yeteneğine veya sabrına sahip olanın çok üzerinde otomatikleştirme hedefine ulaşıyorlar. Opak kara kutular, özellikle performansın tek düşünülmediği durumlarda makine öğrenimini etkili bir şekilde yapmanın tek yolu değildir. Makine öğrenimi görevlerinin arkasındaki değişken hedefler hakkında biraz daha açık fikirli olun.
Richard D

Yanıtlar:


7

Metin sınıflandırma görevlerinde yetersiz performans gösterse de, sınıflandırma akıl yürütmesinin net bir açıklamasını istiyorsanız, bir örnek nasıl sınıflandırıldığına ilişkin açık kurallar sağladığı için bir karar ağacı en iyi seçenek olacaktır. Ağacın bir izi belirleyici değerleri sağlar ve kök düğüme yakın örnekleri analiz ederek, sınıflandırmada hangi özelliklerin daha önemli olduğu yerleri bile belirtebilirsiniz.

Başka bir seçenek kullanmak olacaktır Naive Bayes sınıflandırıcı , metin madenciliği görevler için daha iyi performans gösterdiğini size "neden" bile bir göstergesini sağlayan aradığınız oluşturmak için kullanabileceği ihtimallere dayalı bir anlaşılır değerlendirme şeması verecek ve bu özellik değerlerinin belirlenmesinde diğerlerinden daha önemli olduğu görülmüştür.

Destek Vektör Makineleri , özellikle Sıralı Minimum Optimizasyon (SMO), bu görevlerle iyi çalışıyor ve benzer şekilde sınıflandırmayı nitelik ağırlıkları ve destek vektörleri şeklinde yapmak için kullanılan değerlerin göstergesini sağlıyor, ancak bence daha zor zamanlarınız olabilir bu ağırlıkların ve vektörlerin genel sınıflandırma kararını nasıl etkilediğini açıklığa kavuşturmak.

Projenizde iyi şanslar! Kulağa çok ilginç geliyor.


1
Teşekkürler. Ayrıca, algılayıcı ve winnow gibi çevrimiçi sınıflandırıcıların bu görevde (en azından senaryomda) oldukça iyi olduğunu ve her özelliğin sınıflandırma puanına kattığı mutlak değere bakarak kararı açıklamak kolay olduğunu öğrendim. Her örnek için, özellikleri (özellik * ağırlık) mutlak değerine göre sıralarım ve ilk birkaçını gösteririm.
Erel Segal-Halevi

3

Belli belirsiz olduğunu hatırlamak Peter Norvig bir uygulama vardı MYCIN , bir tıbbi teşhis uzman sistem ile yazılmış, LISP kitabında Common Lisp Vaka Çalışmaları: Yapay Zeka Programlama Paradigmalar , aynen bunu yaptı.

Belki de araştırmanıza başlamak için iyi bir yerdir. Kaynak kodu çevrimiçi olarak bir kural tabanı ile birlikte bulacaksınız , ancak metni okumanızı ve sadece kaynak koddan anlamaya çalışmamanızı şiddetle tavsiye ederim.

Ayrıca doğrudan Emycin (benim vurgu) sayfasına gidebilirsiniz ,

Emycin, alan uzmanlarının bilgilerini kaydeden programlar oluşturmak için uzman bir sistem kabuğudur ve bu bilgiyi uzman olmayan kullanıcıların sorunları çözmesine yardımcı olmak için kullanır. Uzmanların veri türlerini ve kurallarını tanımlamasına yardımcı olan bir arabirim, geriye doğru zincirleme bir akıl yürütme algoritması (Prolog'a benzer, ancak önemli farklılıklarla), belirsizlikle başa çıkmak için bir mekanizma ve kullanıcıların sistemin bildiklerini öğrenmesine izin veren içgözlem olanakları sağlar. ve ne yaptığını .


2
Uzman sistemlerin artık çok popüler olmamasının bir nedeni var, tüm kuralları kodlamak zor.
adrianN
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.