Çoklu sınıf-çoklu sınıflandırma için hassasiyet / hatırlama nasıl hesaplanır?


72

Çok sınıflı çok etiketli sınıflandırma, örneğin ikiden fazla etiketin olduğu ve her örneğin birden fazla etiketin bulunduğu sınıflandırma için hassasiyetin nasıl hesaplanacağını ve hatırlama önlemlerinin nasıl olacağını merak ediyorum.


1
multilabel kısmı daha da zorlaştırıyor ve ben de bununla ilgileniyorum. Multilabel problemlerine uygulanabilir olmadığını ama bana hiç güvenmediğini düşünüyorum.
user798719

1
Aslında, tüm çok etiketli problemler çok sınıflıdır, bu nedenle utiml paketini örneğin R'de veya Java'da Mulan'da kullanabilirsiniz.
Adriano Rivolli

Yanıtlar:


19

Sınıflandırıcı performansını ölçmek için bir başka popüler araç ROC / AUC ; bunun da çok sınıf / çok etiketli bir uzantısı var: bkz. [Hand 2001]

[El 2001]: ROC eğrisi altındaki alanın çoklu sınıflandırma problemlerine basit bir genellemesi


Popüler, ancak arabası olabilir. Tamamen güvenmiyorum. stats.stackexchange.com/questions/93901/…
EngrStudent

3
Yığın taşmasını asla değiştirmeyin! Adam bir problem sorar, çoğu oylanan cevap aslında sorusunu cevaplamaz, ancak daha iyi olabilecek başka bir araç / kütüphaneye işaret eder
ragvri

Evet, bu cevap nasıl +20 olabilir? Hassas ve hatırlama kelimelerini bile içermiyor.
Simon Dirmeier

Eğer iyice düşünürseniz, hassasiyet ve hatırlamanın gerçekte AUC tarafından yakalandığını fark edeceksiniz.
oDDsKooL

16

Burada kafa karışıklığı matrisi ve çok sınıflı hassasiyet / hatırlama ölçümü hakkında kurs forum forum tartışılmaktadır.

Temel fikir, tüm hassasiyeti hesaplamak ve tüm sınıfları geri çağırmak, ardından tek bir gerçek sayı ölçümü için ortalamalarını almaktır.

Karışıklık matrisi, hassaslığın hesaplanmasını ve bir sınıfın geri çağrılmasını kolaylaştırır.

Aşağıda, bu konudan kopyalanan karışıklık matrisi hakkında bazı temel açıklamalar yer almaktadır:

Bir karışıklık matrisi, 2'den fazla sınıf olduğunda gerçek pozitifleri, gerçek negatiflerini, yanlış pozitiflerini ve yanlış negatiflerini sınıflandırmanın bir yoludur. Hassaslığı hesaplamak ve hatırlamak ve bu nedenle çoklu sınıf problemleri için f1 puanı almak için kullanılır.

Gerçek değerler sütunlarla temsil edilir. Tahmini değerler satırlarla temsil edilir.

Örnekler:

Aslında 8 olan 10 eğitim örneği yanlış olarak sınıflandırılmış (öngörülen) 5
aslında 5 olan 13 eğitim örneği 9 olarak yanlış sınıflandırılmıştır

Karışıklık Matrisi

cm =
     0 1 2 3 4 5 6 7 8 9 10
     1 298 2 1 0 1 1 3 1 1 0
     2 0 293 7 4 1 0 5 2 0 0
     3 1 3 263 0 8 0 0 3 0 2
     4 1 5 0 261 4 0 3 2 0 1
     5 0 0 10 0 254 3 0 10 2 1
     6 0 4 1 1 4 300 0 1 0 0
     7 1 3 2 0 0 0 264 0 7 1
     8 3 5 3 1 7 1 0 289 1 0
     9 0 1 3 13 1 0 11 1 289 0
    10 0 6 0 1 6 1 2 1 4 304

X sınıfı için:

  • Gerçek pozitif: diyagonal konum, cm (x, x).

  • Yanlış pozitif: sütun x'in toplamı (ana çapraz olmadan), toplam (cm (:, x)) - cm (x, x).

  • Yanlış negatif: satır x'in toplamı (ana çapraz olmadan), toplam (cm (x, :), 2) -cm (x, x).

Ders formülünü takip ederek kesinlik, hatırlama ve F1 puanlarını hesaplayabilirsiniz.

Tüm sınıflar üzerinden ortalama alma (ağırlıklandırma ile veya ağırlıksız), tüm model için değerler verir.


2
Eksenleri döndürdün. Yazdıklarınıza bağlı olarak, CM'nizin aktarılması gerekir.
Spacey

@Tarantula Neden böyle düşünüyorsun? Bence haklı.
shahensha

@shahensha Bir sütun için deneyin, bu yanlış.
Spacey


8
Bu cevabın çoklu etiket problemini çözdüğüne inanmıyorum. çoklu sınıf problemlerine uygulanır. Multilabel problemlerinde yanlış pozitif veya yanlış negatif kavramı nedir?
user798719

13

Çok etiketli sınıflandırma için gitmeniz gereken iki yol vardır: Önce aşağıdakileri göz önünde bulundurun.

  • n örnek sayısıdır.
  • Yi , örneğinin temel doğruluk etiketi atamasıdır .ith
  • xi , örneğidir.ith
  • h(xi) , örneği için öngörülen etiketlerdir .ith

Örnek tabanlı

Metrikler, veri noktası başına hesaplanır. Öngörülen her etiket için yalnızca puanı hesaplanır ve ardından bu puanlar tüm veri noktalarında toplanır.

  • Kesinlik = , Tahmini ne kadarının oranı doğrudur. Pay, tahmin edilen vektörde kaç tane etiketin yer gerçekliği ile ortak olduğunu bulur ve oran, tahmin edilen gerçek etiketlerin ne kadarının aslında gerçek gerçeğinde olduğunu hesaplar.1ni=1n|Yih(xi)||h(xi)|
  • Geri çağırma = , gerçek etiketlerin kaç tanesinin tahmin edildiğinin oranı. Pay tahmin edilen vektördeki kaç etiketin yer gerçekliği ile ortak olduğunu (yukarıdaki gibi) bulur, daha sonra gerçek etiketlerin sayısına oranını bulur, bu nedenle gerçek etiketlerin hangi kısmının tahmin edildiğini elde eder.1ni=1n|Yih(xi)||Yi|

Başka ölçütler de var.

Etiket tabanlı

Burada işler etiket şeklinde yapılır. Her bir etiket için metrikler (örn. Hassasiyet, hatırlama) hesaplanır ve daha sonra bu etiket tipi metrikler toplanır. Bu nedenle, bu durumda, bir ikili sınıflandırma için yaptığınız gibi (her bir etiketin ikili bir ataması olduğundan), her bir etiketin hassasiyetini / hatırlamasını hesaplarsınız.

Kolay yolu, genel formu sunmaktır.

Bu sadece standart çoklu sınıf eşdeğeri bir uzantısıdır.

  • Makro ortalama1qj=1qB(TPj,FPj,TNj,FNj)

  • Mikro ortalamaB(j=1qTPj,j=1qFPj,j=1qTNj,j=1qFNj)

Burada sadece etiketi için sırasıyla doğru pozitif, yanlış pozitif, gerçek negatif ve yanlış negatif sayımlardır . j t hTPj,FPj,TNj,FNjjth

Burada , karışıklık matrisi temelli metriklerin herhangi birini temsil eder. Sizin durumunuzda standart hassasiyeti takıp formülleri geri çağırırsınız. Makro ortalama için, etiket başına sayımı ve ardından toplamı geçersiniz, mikro ortalama için önce sayıları ortalamalandırır, sonra metrik işlevinizi uygularsınız.B

Sen mult etiketli metrikleri için koduna bir göz atmak ilginizi çekebilir burada , hangi paketin bir parçası mldr içinde Ar . Ayrıca Java çoklu etiket kütüphanesine MULAN bakmak da ilginizi çekebilir .

Bu, farklı metriklere giriş yapmak için güzel bir makale: Çoklu Etiket Öğrenme Algoritmalarına Bir Gözden Geçirme


Bazı wikipedia referansları gibi yazdığınız metriklerin doğruluğuna dair referanslar vermiş olsaydınız iyi olurdu. Bahsettiğiniz referanslar, metriklerin veya araştırma makalesinin kodlama kısmıdır ..
hacker315

2
Yanıtın sonunda (Çok Etiketli Öğrenme Algoritmaları Üzerine Bir İnceleme) bir inceleme makalesi zaten ieeexplore.ieee.org/document/6471714 . Bunlar, literatürdeki uygulamaların yapıldığı esaslara dayanan iyi bilinen ölçümlerdir. Özgünlüğü nasıl gösterebileceğimden emin değilim.
phoxis

8

Çoklu etiket kısmını bilmiyorum ama ortak sınıflandırma için bu linkler size yardımcı olacaktır.

Bu bağlantı , hassasiyeti hesaplamak ve her kategori için hatırlamak için kullanabileceğiniz karışıklık matrisinin nasıl oluşturulduğunu açıklar.

Bu bağlantı , sınıflandırıcıyı bir bütün olarak değerlendirmek için micro-f1 ve macro-f1 ölçümlerinin nasıl hesaplanacağını açıklar.

umarım bunu faydalı bulmuşsunuzdur.


4
Temel nokta şudur: Bu ölçümleri hesaplamak için birden fazla geçerli geçerli yol vardır (örneğin, mikro-F1 - makro-F1) çünkü doğru olanı tanımlamanın birden fazla yolu vardır. Bu, uygulamanıza ve geçerlilik kriterlerinize bağlıdır.
Jack Tanner

Ahmed: Bağlantılar için teşekkürler! @ JackTanner Belki bunun için bir referansınız olur mu (çok sınıflı çok etiketli sınıflandırma için)?
Vam

1
@ MaVe, üzgünüm, bağlantı yok. Bu sadece kişisel deneyimden. Oraya basitçe neyin oluşturduğunu, yani gerçek bir pozitif ve yanlış bir pozitif amaç olduğunu düşünerek ulaşacaksınız.
Jack Tanner

4
İlk bağlantı öldü
Nikana Reklawyks

1

bu bağlantı bana yardımcı oldu .. https://www.youtube.com/watch?v=HBi-P5j0Kec de size yardımcı olacağını umuyorum

dağılımı aşağıdaki gibi söyleyin

    A   B   C   D
A   100 80  10  10
B   0    9   0   1
C   0    1   8   1
D   0    1   0   9

A için hassasiyet

P (A) = 100/100 + 0 + 0 + 0 = 100

P (B) = 9/9 + 80 + 1 + 1 = 9/91 psst ... esasen sınıfın gerçek pozitifliğini alır ve satırlar arasında sütun verisine bölünür

bir için hatırlamak

R (A) = 100 / 100+ 80 + 10 + 10 = 0.5

R (B) = 9 / 9+ 0 + 0 + 1 = 0.9

psst ... aslında sınıfın gerçek pozitifini alır ve satır verilerini sütunlar arasında böler

Tüm değerleri aldığınızda, makro ortalamasını alın

ortalama (P) = P (A) + P (B) + P (C) + P (D) / 4

ortalama (R) = R (A) + R (B) + R (C) + R (D) / 4

F1 = 2 * ortalama (P) * ortalama (R) / ortalama (P) + ortalama (R)


0

Check out Harvard'da cs205.org gelen bu slaytları . Hata Ölçütleri bölümüne girdiğinizde, çok sınıflı ayarlarda (örneğin, hepsine veya hepsine tek) veya karışıklık matrislerinde hassasiyet ve hatırlama tartışılır. Karışıklık matrisleri burada gerçekten istediğiniz şeydir.

Bilginize, Python yazılım paketinde bulunan scikits.learn , karışıklık matrisi gibi şeyleri çok-sınıflı verilere göre eğitilmiş sınıflayıcılardan otomatik olarak hesaplamak için yerleşik yöntemler vardır. Muhtemelen doğrudan sizin için hassas hatırlama alanlarını da hesaplayabilir. Bakmaya değer.


4
Maalesef slaytlara olan bağlantı kesildi ve slaytları başka bir yerde bulabilirim.
f3lix

Bu yılki derste bu derse ne zaman varacaklar. PDF'yi kalıcı bir bağlantı konumuna kopyalayabilseydim, yapardım, ancak yapamam, bu nedenle düzenli olarak kesilmesi kaçınılmazdır ve notları bulmak için başka bir yer olmayacaktır, o kursa özgüdürler.
ely

sklearn, karmaşa matrisi için çoklu etiketi desteklemiyor github.com/scikit-learn/scikit-learn/issues/3452
Franck Dernoncourt


0

Tam olarak aynı şekilde yaparsınız, genel durum, setlerle:

http://en.wikipedia.org/wiki/F1_score

http://en.wikipedia.org/wiki/Precision_and_recall

İşte tam olarak yapan basit Python fonksiyonları:

def precision(y_true, y_pred):
    i = set(y_true).intersection(y_pred)
    len1 = len(y_pred)
    if len1 == 0:
        return 0
    else:
        return len(i) / len1


def recall(y_true, y_pred):
    i = set(y_true).intersection(y_pred)
    return len(i) / len(y_true)


def f1(y_true, y_pred):
    p = precision(y_true, y_pred)
    r = recall(y_true, y_pred)
    if p + r == 0:
        return 0
    else:
        return 2 * (p * r) / (p + r)


if __name__ == '__main__':
    print(f1(['A', 'B', 'C'], ['A', 'B']))
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.