Mengapa regresi Gradient Boosting memprediksi nilai negatif ketika tidak ada nilai y negatif di set pelatihan saya?


8

Seperti yang saya meningkatkan jumlah pohon di scikit belajar 's GradientBoostingRegressor, saya mendapatkan prediksi yang lebih negatif, meskipun tidak ada nilai negatif dalam pelatihan saya atau pengujian set. Saya memiliki sekitar 10 fitur, yang sebagian besar adalah biner.

Beberapa parameter yang saya tuning adalah:

  • jumlah pohon / iterasi;
  • kedalaman belajar;
  • dan tingkat belajar.

Persentase nilai negatif tampaknya maks ~ 2%. Kedalaman belajar 1 (tunggul) tampaknya memiliki% nilai negatif terbesar. Persentase ini juga tampaknya meningkat dengan lebih banyak pohon dan tingkat pembelajaran yang lebih kecil. Dataset ini berasal dari salah satu kompetisi taman bermain kaggle.

Kode saya kira-kira seperti:

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
Adakah kemungkinan contoh yang dapat direproduksi dengan kode dan data?
Spacedman

2
kompetisi bermain apa itu?
TheAxeR

Jawaban:


8

Dalam model regresi umum (apa saja) dapat berperilaku sewenang-wenang di luar domain yang direntang oleh sampel pelatihan. Secara khusus, mereka bebas untuk mengasumsikan linearitas dari fungsi yang dimodelkan, jadi jika Anda misalnya melatih model regresi dengan poin:

X     Y
10    0
20    1
30    2

masuk akal untuk membangun model f(x) = x/10-1, yang untuk x<10mengembalikan nilai negatif.

Hal yang sama berlaku "di antara" titik data Anda, selalu dimungkinkan bahwa karena fungsi yang dianggap famility (yang dapat dimodelkan dengan metode tertentu) Anda akan mendapatkan nilai "dari sampel pelatihan Anda".

Anda dapat memikirkan hal ini dengan cara lain - "apa yang istimewa dari nilai-nilai negatif?", Mengapa Anda merasa keberadaan nilai-nilai negatif aneh (jika tidak disediakan dalam set pelatihan) sementara Anda tidak khawatir dengan keberadaan katakanlah. .. nilai 2131,23? Kecuali dikembangkan sedemikian rupa, tidak ada model yang akan memperlakukan nilai negatif "berbeda" dari yang positif. Ini hanya elemen alami dari nilai-nilai nyata yang dapat dicapai sebagai nilai lainnya.


Sehubungan dengan set pertanyaan Anda, saya pikir itu murni nilai-nilai negatif lebih mudah untuk diidentifikasi sebagai anomali karena mereka memiliki "-" di depan mereka atau jelas pergi di bawah nol pada grafik. Pertanyaannya bisa saja dengan mudah, "Mengapa regresi Gradient Boosting memprediksi nilai yang sebelumnya tidak terlihat?". Mungkin Anda bisa mencoba mengembangkannya? Itu pasti akan membuat Anda mendapatkan suara dari saya.
josh

@lejlot - Secara umum, ini tidak benar. Model regresi dengan aktivasi logistik, atau tanh sering dijamin memiliki output dalam batas tertentu.
user48956

@ user48956 menyatakan jawaban "bisa berperilaku sewenang-wenang", saya tidak mengklaim bahwa Anda tidak dapat memaksa beberapa kendala, tentu saja Anda bisa - menjawab hanya menyatakan bahwa tidak ada batasan "tergantung data" (kecuali Anda memiliki model yang sangat spesifik yang memiliki ini dibangun dalam konstruksi) - jika Anda menambahkan ini secara manual sebagai ahli - terserah Anda.
lejlot

5

Ingat bahwa GradientBoostingRegressor(dengan asumsi fungsi kerugian kesalahan kuadrat) berturut-turut cocok pohon regresi untuk residu dari tahap sebelumnya. Sekarang jika pohon pada tahap i memprediksi nilai yang lebih besar dari variabel target untuk contoh pelatihan tertentu, sisa tahap i untuk contoh itu akan menjadi negatif, dan pohon regresi pada tahap i + 1 akan menghadapi nilai target negatif (yang merupakan residu dari tahap i). Karena algoritma peningkatan menambahkan semua pohon ini untuk membuat prediksi akhir, saya percaya ini dapat menjelaskan mengapa Anda mungkin berakhir dengan prediksi negatif, meskipun semua nilai target dalam set pelatihan positif, terutama seperti yang Anda sebutkan bahwa ini terjadi lebih banyak sering kali ketika Anda menambah jumlah pohon.


Ini jawaban yang benar.
hahdawg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.