Denetimli öğrenme algoritmasında çoklu etiketler


10

Karşılık gelen konuları içeren bir metin topluluğum var. Örneğin "A rapper Tupac was shot in LA"ve olarak etiketlendi ["celebrity", "murder"]. Temel olarak her özellik vektöründe birçok etiket olabilir (aynı miktarda değil. İlk özellik vektöründe 3 etiket, ikinci 1, üçüncü 5 olabilir).

Her metne karşılık gelen tek bir etiketim olsaydı, bir Naive Bayes sınıflandırıcısını denerdim , ama çok fazla etiketim varsa nasıl ilerlemem gerektiğini gerçekten bilmiyorum.

Naif Bayes'i çoklu etiket sınıflandırma problemine dönüştürmenin bir yolu var mı (daha iyi bir yaklaşım varsa - lütfen bana bildirin)?

PS sahip olduğum veriler hakkında birkaç şey.

  • veri kümesinde yaklaşık 10.000 öğe
  • metin yaklaşık 2-3 cümledir
  • metin başına maksimum 7 etiket

@fordprefect Multinomial Naive Bayes, bir sınıf verilen bazı özelliklerin olasılıkları için multinomiyal bir dağılım kullanır: . OP, bir sınıflandırıcının TheGrimmScientist'in tanımladığı gibi çoklu çıktıları yönetmesini istiyor. p(fben|c)
Robert Smith

Yanıtlar:


6

Yeni başlayanlar için, Naive Bayes muhtemelen burada uygun değildir. Girdiler arasında bağımsızlığı varsayar (dolayısıyla "Naif") ve bir cümledeki kelimeler çok bağımlıdır.

Ancak, denemenizi başlatmak için gerçekten bir algoritma olarak NB ile çalıştırmak istediğinizi varsayarsak, dikkate alacağım iki seçenek var:

Nankör: Çok sayıda NB sınıflandırıcısı

Bu alternatif bir yaklaşım olacaktır. Girdilerin vektörü olarak gözlenen tüm kelimeleri bir araya getir. Çıktılarınız vektörü olarak gözlenen tüm etiketleri bir grup oluşturun. Birden çok çıktıya sahip bir NB sınıflandırıcısı, her biri bir çıktıya sahip birden fazla NB sınıflandırıcısına sahip olmakla eşdeğerdir (bu nedenle, hangi yazılım çerçevesini kullanırsanız kullanın hangisi daha kolaysa). Her öğeye, verilen bir girdinin (bir kelime) bir kelime 1varsa ve bu kelime yoksa bir eğitim örneği olarak davranın 0. Çıktı için aynı ikili şemayı kullanın.

Bu kaba, NB Sınıflandırıcı'nın verilerinize uygulanmasını zorlar ve size bırakacağınız çok büyük sınıflandırıcılar benim için hala haivng ile anlam bulmanızı sağlar.

Daha Zarif: Verilerinizi işleyin

Bu, bir çok sınıflı NB Sınıflandırıcısı ile çalıştırmak istiyorsanız önereceğim yaklaşımdır.

Buradaki amacınız, her bir etiket grubunu tek bir sınıfa nasıl eşleyeceğinizi bulmaktır. Eminim bir tür kümelenme şeması veya ağ analizi vardır (belki ["ünlü"] [[cinayet ”] ile bağlantılı olabilir. Etiketleri düğüm olarak ve verilen iki etiketi birbirine bağlantı olarak ele alırsanız, topluluk algılama algoritmalarına (başlamak istediğim yer) bakmak istersiniz. Ancak, yalnızca bir şeyin çalışmasını istiyorsanız, bir etiket listesini yalnızca veri kümenizde en sık görülen etikete dönüştüren bir tür hack yeterli olacaktır.

Bu yöntem, verilerinizi temizleme işini önden yükler ve NB Sınıflandırıcı'nın çıktısının daha kolay anlaşılmasını sağlar.


girdiniz için teşekkür ederim, NB'den daha iyi ne olacağına dair bir fikriniz varsa, lütfen bana bildirin.
Salvador Dali

1
bu slayt destesinin "mevcut çözümler" bölümü, yanıtlamak için bildiğim her şeyi ve daha fazlasını içerir (özellikle bir sınıflandırıcıya ihtiyacınız olmadığını ve etiketleri kullanmak için bir yol istediğinizi varsayarsak). Umarım faydalıdır.
GrimmScientist

@TheGrimmScientist İlk yaklaşımı kullanmak mantıklı olmaz mı? Eğer f1, f2, f3 özellikleri için bir vektörünüz varsa ve diyelim ki, bu vektör için 3 etiket varsa, bunu çıkış olarak farklı etiketlerle 3 vektöre (hepsi aynı özellikleri f1, f2, f3 içeren) ayırabiliriz. Daha sonra Naive Bayes'i her zamanki gibi kullanmak mümkündür. Aklında olan şeyin bu olup olmadığından emin değilim.
Robert Smith
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.