Platt'un ölçeklendirmesini neden kullanmalıyım?


17

Bir güven düzeyini denetimli öğrenme olasılığına göre kalibre etmek için (örneğin, bir SVM'den veya aşırı örneklenmiş veriler kullanarak bir karar ağacından güveni haritalamak için) bir yöntem Platt'ın Ölçeklendirmesini kullanmaktır (örn. Kalibre Edilmiş Olasılıkları Artırmaktan Almak ).

Temel olarak haritalamak için lojistik regresyon kullanılır [;] ila [0;1] . Bağımlı değişken gerçek etikettir ve öngörücü, kalibre edilmemiş modele olan güvendir. Ne anlamıyorum 1 veya 0 dışında bir hedef değişken kullanımıdır. Yöntem yeni bir "etiket" oluşturulması için çağırır:

Sigmoid tren setine aşırı sığmayı önlemek için örnek dışı bir model kullanılır. Varsa N+ pozitif örnekler ve N tren setinde olumsuz örnekler, her eğitim örneğin Platt Kalibrasyon hedef değerlerini kullanır y+ ve (sırasıyla yerine 1 ve 0,), y

y+=N++1N++2;y=1N+2

Anlamadığım şey, bu yeni hedefin ne kadar yararlı olduğudur. Lojistik regresyon, bağımlı değişkeni ikili bir etiket olarak ele almayacak mıdır (hangi etikete bakılmaksızın)?

GÜNCELLEME:

SAS'ta bağımlı başka bir şeye değiştirerek aynı modele (kullanarak ) geri döndüğünü buldum . Belki benim hatam ya da SAS'ın çok yönlülüğü eksikliği. R modelini değiştirebildim. Örnek olarak:1/0PROC GENMOD

data(ToothGrowth) 
attach(ToothGrowth) 

  # 1/0 coding 
dep          <- ifelse(supp == "VC", 1, 0) 
OneZeroModel <- glm(dep~len, family=binomial) 
OneZeroModel 
predict(OneZeroModel) 

  # Platt coding 
dep2           <- ifelse(supp == "VC", 31/32, 1/32) 
plattCodeModel <- glm(dep2~len, family=binomial) 
plattCodeModel 
predict(plattCodeModel) 

compare        <- cbind(predict(OneZeroModel), predict(plattCodeModel)) 

plot(predict(OneZeroModel), predict(plattCodeModel))

Yanıtlar:


13

Lojistik regresyonun wikipedia sayfasını kontrol etmenizi öneririm . İkili bağımlı değişken lojistik regresyon durumunda, yordayıcıları bağımlı değişkenin meydana gelme olasılığı ile eşleştirir. Herhangi bir dönüşüm olmaksızın, modeli eğitmek için kullanılan olasılık 1 (eğitim setinde y pozitifse) veya 0'dır (y negatifse).

Yani: Pozitif sınıf için 1 mutlak değerlerini ve p i = 1 takarken negatif sınıf için 0 mutlak değerlerini kullanmak yerinepi=1(1+exp(Afi+B))fiy+y


cevap için teşekkürler! İlk olarak SAS kullanıyordum ve farklı bir yanıt değişkeni alamadım. Örnek olarak R'de aşağıdakilere uyuyorum ve bir tamsayı yanıt değişkeni olmadığı konusunda bir uyarı verildiğini görüyorum, ancak sonuç farklı bir modele uyuyordu.
B_Miner

verileri (ToothGrowth) ekle (ToothGrowth) # 1/0 kodlama dep <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, aile = binom) OneZeroModel tahmini (OneZeroModel) #Platt kodlama dep2 <-ifelse (supp == "VC", 31/32, 1/32) plattCodeModel <-glm (dep2 ~ len, aile = binomial) plattCodeModel tahmini (plattCodeModel) karşılaştırması <-cbind (tahmin (OneZeroModel)), ( plattCodeModel)) çizim (tahmin (OneZeroModel), tahmin (plattCodeModel))
B_Miner

@ user2040: 1. Evet ... bir soru var mı yoksa bu sadece bir açıklama mı :)? 2. neden soruya kodu eklemiyorsun? Hiçbir biçimlendirme korkunç değildir.
steffen

2

Yararlı bulduğum aşırı oturmayı önlemenin bir başka yöntemi, tek değişkenli lojistik regresyon modelini, Span bağlı kullanılarak verimli bir şekilde tahmin edilebilen SVM'nin dışarıda bırakılan çapraz doğrulama çıktısına uydurmaktır .

Bununla birlikte, sınıf üyeliği olasılığına ilişkin tahminler üreten bir sınıflandırıcı istiyorsanız, bunu doğrudan yapmayı amaçlayan çekirdek lojistik regresyonunu kullanmak daha iyi olur. SVM'nin çıkışı ayrık sınıflandırma için tasarlanmıştır ve p = 0.5 konturundan uzakta olasılıkların doğru tahmin edilmesi için gerekli bilgileri içermez.

Çekirdek tabanlı olasılıklı bir sınıflandırıcı istiyorsanız Gauss işlem sınıflandırıcıları da iyi bir seçenektir.

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.