Gradient Boosting regresyonu, egzersiz setimde negatif y değeri olmadığında neden negatif değerleri öngörüyor?


8

I ağaçların sayısını artırmak gibi scikit öğrenmek 's GradientBoostingRegressor, ben hiçbir negatif değerler benim eğitim veya set test bulunmasına rağmen, daha olumsuz tahminler alabilirsiniz. Çoğu ikili olan yaklaşık 10 özelliğim var.

Ayarladığım parametrelerden bazıları:

  • ağaç / yineleme sayısı;
  • öğrenme derinliği;
  • ve öğrenme oranı.

Negatif değerlerin yüzdesi ~% 2'de maks. 1 (kütükler) öğrenme derinliği negatif değerlerin en büyük% 'sine sahip gibi görünüyordu. Bu yüzde, daha fazla ağaç ve daha küçük bir öğrenme oranı ile arttı. Veri seti, kaggle oyun alanı yarışmalarından biridir.

Kodum şöyle bir şeydir:

from sklearn.ensemble import GradientBoostingRegressor

X_train, X_test, y_train, y_test = train_test_split(X, y)

reg = GradientBoostingRegressor(n_estimators=8000, max_depth=1, loss = 'ls', learning_rate = .01)

reg.fit(X_train, y_train)

ypred = reg.predict(X_test)

1
Kod ve verilerle tekrarlanabilir bir örnek alma şansınız var mı?
Spacedman

2
hangi oyun parkı yarışması?
TheAxeR

Yanıtlar:


8

Genelde regresyon modelleri (herhangi biri) eğitim örneklerinin kapsadığı alanın ötesinde keyfi bir şekilde davranabilir. Özellikle, modellenen işlevin doğrusallığını kabul etmekte serbesttirler, bu nedenle örneğin puanlı bir regresyon modeli geliştirirseniz:

X     Y
10    0
20    1
30    2

Bir model oluşturmak için makul f(x) = x/10-1için x<10getiri negatif değerler.

Aynı şey, veri noktalarınızda "arasında" da geçerlidir, işlevlerin varsayılan saygınlığı (belirli bir yöntemle modellenebilir) nedeniyle "eğitim örneklerinizden" değerler elde etmeniz her zaman mümkündür.

Bunu başka bir şekilde düşünebilirsiniz - "negatif değerler hakkında bu kadar özel olan ne?" .. değeri 2131.23? Bu şekilde geliştirilmedikçe, hiçbir model negatif değerleri pozitif olanlardan "farklı" olarak ele almayacaktır. Bu, gerçek değerlerin, başka herhangi bir değer olarak elde edilebilecek doğal bir unsurudur.


Soru setinizle ilgili olarak, olumsuz değerlerin anormallik olarak tanımlanmasının daha kolay olduğunu düşünüyorum çünkü önlerinde "-" işaretine sahipler veya grafiklerde açıkça sıfırın altına iniyorlar. Soru, "Gradient Boosting regresyonu neden daha önce görülmemiş değerleri öngörüyor?" Sorusu kadar kolay olabilir. Belki bunu genişletmeye çalışabilirsin? Kesinlikle benden yukarı oy alacak.
josh

@lejlot - Genel olarak, bu doğru değil. Lojistik veya tanh aktivasyonlarına sahip regresyon modellerinin genellikle bazı sınırlar dahilinde çıktıları olması garanti edilir.
user48956

@ user48956 cevap devletleri "keyfi bir şekilde davranabilir", bazı kısıtlamaları zorlayamayacağınızı iddia etmiyorum, elbette yapabilirsiniz - sadece "veriye bağlı" bir kısıtlama olmadığını belirtmektedir (buna sahip çok özel bir modeliniz yoksa dahili olarak) - bunu manuel olarak bir uzman olarak eklerseniz - size kalmış.
lejlot

5

Unutmayın ki GradientBoostingRegressor arda önceki aşamada artık değerler için regresyon ağaçları uyuyor (bir kare hata kaybı fonksiyonunu varsayılarak). Şimdi, i evresindeki ağaç belirli bir eğitim örneği için hedef değişkeninden daha büyük bir değer öngörüyorsa, bu örnek için i evresinin artığı negatif olacaktır ve bu nedenle i + 1 evresindeki regresyon ağacı negatif hedef değerlerle karşılaşacaktır. (bunlar aşama i'deki kalıntılardır). Artırıcı algoritma, son tahmini yapmak için tüm bu ağaçları topladıkça, eğitim setindeki tüm hedef değerler pozitif olsa da, bunun neden daha fazla tahmin ettiğiniz gibi, neden negatif tahminlerle sonuçlanabileceğinizi açıklayabileceğine inanıyorum. genellikle ağaç sayısını artırdığınızda.


Bu doğru cevap.
hahdawg
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.