SVM gibi ayrık sınıflandırıcılar için ROC eğrisi: Neden hala “eğri” diyoruz? Bu sadece bir “nokta” değil mi?


25

Tartışma: İkili sınıflandırma için bir roc eğrisinin nasıl üretileceğini , sanırım kargaşanın bir "ikili sınıflandırıcı" nın (2 sınıfı ayıran herhangi bir sınıflandırıcı olan) Yang için "ayrık sınıflandırıcı" olarak adlandırıldığı (bunun üreten olduğu) olduğunu düşünüyorum. kesikli çıkışlar bir SVM gibi 0/1 çıkışları ve ANN veya Bayes sınıflandırıcıları gibi sürekli çıkışlar değil ... vb. Dolayısıyla, tartışma, "ikili sürekli sınıflandırıcılar" için ROC'nin nasıl çizildiği ve cevabın çıkışların nasıl sıralandığı ile ilgilidir. Çıktılar sürekli olduğu için puanlarına göre ve ROC eğrisindeki her noktayı üretmek için bir eşik kullanılır.

Benim sorum SVM gibi "ikili ayrık sınıflandırıcılar" içindir, çıkış değerleri 0 veya 1'dir. Böylece ROC bir eğri değil, sadece bir nokta üretir. Neden hala buna eğri diyoruz diye kafam karıştı? !! Hala eşiklerden bahsedebilir miyiz? Özellikle SVM'de eşikler nasıl kullanılır? Kişi AUC'yi nasıl hesaplayabilir ?, Çapraz doğrulama burada herhangi bir rol oynar mı?


10
Bir SVM, özellik alanındaki ayırıcı hiper uçağa imzalı uzaklık gibi gerçek bir karar değeri verir. Sınıflandırmada, etiket bu karar değerinin işaretine dayanarak atanır. Bunun gibi, SVM'lerin yapmak çıkışı daha adil bir ikili değerden, kendi çıkış sadece sınıflandırma sonrası bir işlem adımı olarak ikili hale getirilir.
Marc Claesen

Yanıtlar:


15
  • Evet, normal alıcının çalışma eğrisinin elde edilemediği ve sadece bir nokta olduğu durumlar vardır.

  • SVM'ler, sınıf üyeliği olasılıklarını ortaya çıkaracak şekilde ayarlanabilir. Bunlar, bir alıcı çalışma eğrisi üretmek için bir eşiğin değiştirileceği olağan değer olacaktır .
    Aradığınız şey bu mu?

  • ROC'deki adımlar genellikle değişkenlerde farklı değişkenlik gösterecek herhangi bir şey yapmak yerine genellikle küçük sayıdaki test durumlarında gerçekleşir (özellikle, her yeni nokta için yalnızca bir örnek değişecek şekilde ayrı eşiklerinizi seçerseniz, aynı puanla sonuçlanırsınız) atama).

  • Elbette modelin sürekli değişen diğer (hiper) parametreleri, FPR; TPR koordinat sisteminde diğer eğrileri veren özgüllük / hassasiyet çiftleri setleri üretir.
    Bir eğrinin yorumlanması elbette hangi değişimin eğriyi oluşturduğuna bağlıdır.

İşte iris veri setinin "versicolor" sınıfı için normal bir ROC (yani çıktı olarak olasılık istemek):

  • FPR; TPR (γ = 1, C = 1, olasılık eşiği):
    ROC

Aynı tip koordinat sistemi, ancak parameters ve C ayar parametrelerinin bir fonksiyonu olarak TPR ve FPR:

  • FPR; TPR (γ, C = 1, olasılık eşiği = 0.5):
    gama

  • FPR; TPR (γ = 1, C, olasılık eşiği = 0.5):
    maliyet

Bu parsellerin bir anlamı vardır, ancak anlam her zamanki ROC'dan kesinlikle farklıdır!

İşte kullandığım R kodu:

svmperf <- function (cost = 1, gamma = 1) {
    model <- svm (Species ~ ., data = iris, probability=TRUE, 
                  cost = cost, gamma = gamma)
    pred <- predict (model, iris, probability=TRUE, decision.values=TRUE)
    prob.versicolor <- attr (pred, "probabilities")[, "versicolor"]

    roc.pred <- prediction (prob.versicolor, iris$Species == "versicolor")
    perf <- performance (roc.pred, "tpr", "fpr")

    data.frame (fpr = perf@x.values [[1]], tpr = perf@y.values [[1]], 
                threshold = perf@alpha.values [[1]], 
                cost = cost, gamma = gamma)
}

df <- data.frame ()
for (cost in -10:10)
  df <- rbind (df, svmperf (cost = 2^cost))
head (df)
plot (df$fpr, df$tpr)

cost.df <- split (df, df$cost)

cost.df <- sapply (cost.df, function (x) {
    i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y 
    x [i,]
})

cost.df <- as.data.frame (t (cost.df))
plot (cost.df$fpr, cost.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (cost.df$fpr, cost.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (cost.df),start=0, end=4/6)))

df <- data.frame ()
for (gamma in -10:10)
  df <- rbind (df, svmperf (gamma = 2^gamma))
head (df)
plot (df$fpr, df$tpr)

gamma.df <- split (df, df$gamma)

gamma.df <- sapply (gamma.df, function (x) {
     i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y
     x [i,]
})

gamma.df <- as.data.frame (t (gamma.df))
plot (gamma.df$fpr, gamma.df$tpr, type = "l", xlim = 0:1, ylim = 0:1, lty = 2)
points (gamma.df$fpr, gamma.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (gamma.df),start=0, end=4/6)))

roc.df <- subset (df, cost == 1 & gamma == 1)
plot (roc.df$fpr, roc.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (roc.df$fpr, roc.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (roc.df),start=0, end=4/6)))

1
Bu çok açık, teşekkürler. Değişen b'nin hiperplane'i hareket ettirmek ve böylece farklı olmak (TPR, FPR) gibi bir düşüncesi vardı! fakat SVM sınıflandırıcısında, önyargı b öğrenilir, bu yüzden en iyi parametre gibi görünüyor? hayır, bu durumda ROC analizine gerek yok mu?
Abdelhak Mahmoudi

@AbdelhakMahmoudi: Model tarafından öğrenilen parametrelerin çeşitlendirmek istediğiniz şey olmadığını tahmin ediyorum. Ancak bir olasılık çıktısına sahip olabileceğiniz için (koda girmedim, bu yüzden SVM olasılığının gerçekten "zor" olanlara eşit olup olmadığını bilmiyorum), neden kullanmıyorsunuz? Bu, ROC'nin üretildiği çok yaygın bir sonuçtur. R'nin svm işlevi, yaygın olarak kullanılan libsvm'ye bir arayüzdür, dolayısıyla bunu yapmak için R'yi kullanmakla sınırlı değilsiniz.
cbeleites

these plots do have a meaning- Bu arazilerin anlamı nedir?
Gulzar

8

y^y^=işaret(wTx+b)wb

y^={0Eğer  wTx+b<01aksi takdirde

ηη

y^={0Eğer  wTx+b<η1aksi takdirde

η

wbη

>>> from sklearn.svm import SVC
>>> model = SVC(kernel='linear', C=0.001, probability=False, class_weight='balanced')
>>> model.fit(X, y)
>>> # The coefficients w are given by
>>> w = list(model.coef_)
>>> # The intercept b is given by
>>> b = model.intercept_[0]
>>> y_hat = X.apply(lambda s: np.sum(np.array(s)*np.array(w))+b, axis=1)
>>> y_hat = (y_hat > eta).astype(float)

3

ROC eğrisi, bir değişkenin eşiğine (sürekli veya kesikli olabilir) değişen değişkenliğe karşı duyarlılığı çizer. Bence değişkenle cevabı karıştırıyorsunuz ve belki de bir ROC eğrisinin ne olduğunu tam olarak anlamıyorsunuzdur. Değişkenlerin sürekli olması kesinlikle bir eğridir ve değişkenlerin değişmesi için eşik değerlere bakarız. Değişkenlerin ayrık olması durumunda, sürekli eşiğin bir fonksiyonu olarak hala arsa yapabilirsiniz. Sonra eğri, eş değişkenlerin ayrık değerlerine karşılık gelen eşiklerde basamaklar yukarı (veya aşağı) olacak şekilde düz olacaktır. Dolayısıyla bu SVM ve diğer ayrık sınıflandırıcılar için geçerli olacaktır.

AUC ile ilgili olarak, hala bir ROC'ye (tahmini bir) sahip olduğumuz için hala altındaki alanı hesaplayabiliriz. Çapraz doğrulama hakkındaki sorunuzu aklınızda tuttuğunuzdan emin değilim. Sınıflandırma problemleri bağlamında çapraz doğrulama, sınıflandırıcı için hata oranlarının yansız veya neredeyse tarafsız tahminlerini elde etmek için kullanılır. Böylece ROC'deki noktaları nasıl tahmin ettiğimize girebilir.


1
Tamam, svm sınıflandırıcısının eşikleri ne olabilir?
Abdelhak Mahmoudi

Bilmiyorum. Değişkenler nelerdir? Bir ortak değişkeniniz varsa, herhangi bir değer eşik olabilir. Birden fazla değişkene sahipseniz, sınıflandırma performansı, tek bir eşik yerine birkaç değerin seçimine bağlıdır, ancak yine de değişkenlerin alanında değişir.
Michael R. Chernick

Örneğin, doğrusal SVM'ler, seçilen C değerine bağlı olan (düşük C, daha fazla egzersiz hatasını tolere eder) ayıran hiper düzlemi temel alır, bir C değerleri kümesi eşiklerin kümesi olabilir mi?
Abdelhak Mahmoudi,

Evet ve C değerleri değişkenlerin sadece lineer kombinasyonları değil midir?
Michael R. Chernick 22:12

2
C, hiper uçağın karmaşıklığı ile egzersiz hataları arasındaki dengeyi kontrol altına almak için verilen ceza faktörüdür. Diğer bir alternatif, yanlılığın (b) eşik olarak kullanılması olabilir çünkü b, özellik alanının ortasından ayırıcı hiper düzlemine olan mesafedir. Değişen b, hiper düzlemi hareket ettirmek ve böylece farklı TP ve FP'ye sahip olmak gibidir! Bu benim anlayışım!
Abdelhak Mahmoudi
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.