Regresi logistik memprediksi semua 1, dan no 0

10

Saya menjalankan analisis tentang kemungkinan gagal bayar pinjaman menggunakan regresi logistik dan hutan acak.

Ketika saya menggunakan regresi logistik, prediksi selalu semua '1' (yang berarti pinjaman baik). Saya belum pernah melihat ini sebelumnya, dan tidak tahu harus mulai dari mana dalam hal memilah masalah. Ada 22 kolom dengan 600 ribu baris. Ketika saya mengurangi # kolom saya mendapatkan hasil yang sama dengan regresi logistik.

Mengapa regresi logistik bisa salah?

**Actual from the data**

0 :   41932

1 :   573426

**Logistic regression output** 

prediction for 1 when actually 0: 41932
prediction for 1 when actually 1:573426

A**s you can see, it always predicts a 1**


**Random forests does better:**

actual 0, pred 0 : 38800 
actual 1, pred 0 : 27 
actual 0, pred 1 : 3132
actual 1, pred 1 : 573399
ivan7707
sumber
4
Ini tidak masuk akal. Logit tidak akan memprediksi dengan tepat 0. Mungkin memperkirakan nilai rendah yang Anda artikan sebagai 0. Jadi, masalahnya bisa karena ambang batas, bukan hanya modelnya sendiri
Aksakal
@Aksakal, saya menggunakan metode .predict scikit belajar. prediksi label kelas untuk sampel dalam X
ivan7707
Apakah Anda terbiasa dengan kurva ROC? Anda dapat mengekstrak probabilitas yang diprediksi, lalu bermain dengan ambang untuk mengklasifikasikan sendiri data. Ambang adalah tuas trade-off Anda antara mengidentifikasi default atau non-default.
Aksakal
1
Lihat jawaban saya di bawah, tetapi Anda juga dapat menggunakan ROC untuk menemukan sweet spot di pengaturan classifier Anda untuk logit antara sensitivitas dan spesifisitas
Aksakal
4
Jangan gunakan predictsklearn pada model probabilitas, itu tidak berguna. SELALU digunakan predict_proba.
Matthew Drury

Jawaban:

5

Ya, masuk akal jika model Anda selalu memprediksi 1. Lihat kumpulan data Anda: sangat tidak seimbang untuk kelas positif Anda. Kelas negatif hanya membuat ~ 7% dari data Anda. Cobalah menyeimbangkan set pelatihan Anda atau gunakan algoritma yang sensitif biaya.

JimBoy
sumber
terima kasih atas masukannya. Apakah ada aturan praktis tentang apa yang dapat diterima untuk data yang tidak seimbang, atau sumber yang baik untuk bagaimana menyeimbangkan kembali yang dapat Anda sarankan?
ivan7707
Sayangnya, tidak ada aturan tentang cara memilih algoritma tetapi "teorema makan siang gratis". Dalam kasus khusus Anda, saya akan pergi dengan paket C5.0 Ross Quinlan, pertama. Kemudian Anda dapat bereksperimen dengan berbagai biaya dan teknik pengambilan sampel seperti atas dan bawah, SMOTE, dll. Selain itu, situs Max Kuhn menawarkan ringkasan yang bagus tentang algoritma yang telah ada.
JimBoy
7
(+1) Dengan tidak adanya fungsi biaya, tampaknya tidak ada alasan untuk menggunakan regresi logistik sebagai penggolong : Anda memiliki probabilitas yang diprediksi & dapat menggunakan aturan penilaian yang tepat untuk menilai kinerja model Anda. Lihat misalnya Apa ukuran untuk menilai akurasi klasifikasi biner untuk data yang tidak seimbang? . Ketidakseimbangan bukanlah masalah semata: lihat Apakah sampel-rendah mengubah koefisien regresi logistik? .
Scortchi
@ Scortchi, terima kasih atas tautannya dan gagasan menggunakan model dengan biaya. Saya dapat menemukan tautan makalah ini yang membuat saya pergi ke arah yang benar.
ivan7707
1
Tidak, tidak masuk akal bahwa modelnya memprediksi selalu 1s, karena 7% adalah tingkat default yang agak tinggi dan logit digunakan secara luas dalam default pinjaman. Pertimbangkan kredit berperingkat AAA yang default-nya sebesar 0,1% per tahun. Pada dasarnya pinjamannya adalah sampah.
Aksakal
13

Jawaban singkatnya adalah bahwa regresi logistik adalah untuk memperkirakan probabilitas , tidak lebih atau kurang. Anda dapat memperkirakan probabilitas tidak peduli seberapa tidak seimbangnyaYadalah. Kurva ROC dan beberapa tindakan lain yang diberikan dalam diskusi tidak membantu. Jika Anda perlu mengambil keputusan atau mengambil tindakan, Anda menerapkan fungsi kerugian / utilitas / biaya pada risiko yang diprediksi dan memilih tindakan yang mengoptimalkan utilitas yang diharapkan. Tampaknya banyak pengguna pembelajaran mesin tidak benar-benar memahami risiko dan keputusan optimal.

Frank Harrell
sumber
2
(+1) Ya, pertanyaannya adalah "apakah Anda menyelesaikan masalah klasifikasi, atau apakah Anda memecahkan masalah dukungan keputusan?".
GeoMatt22
1
Saya tidak yakin tentang itu. Estimasi probabilitas adalah hasil akhir yang bagus. Dan perhatikan bahwa sebagian besar masalah "klasifikasi" lebih baik ditangani menggunakan keputusan Bayes yang optimal. Selain pengenalan pola visual dan audio, sebagian besar masalah di mana metode klasifikasi diterapkan akan lebih baik ditangani dengan estimasi probabilitas langsung.
Frank Harrell
@ Frankharrell Apakah benar menafsirkan output sebagai probabilitas memerlukan desain yang memungkinkan interpretasi seperti itu (kohort). Dan jika kita tidak memiliki desain seperti itu maka kita harus membuat keputusan berdasarkan "skor risiko". Lebih lanjut, meskipun ada literatur yang membahas hal ini dalam pengaturan non-kalibrasi, ini tidak umum dalam praktek. Apakah ini benar?
Juli
1
Tolong jelaskan bagaimana pengambilan sampel yang digunakan untuk merakit dataset yang digunakan untuk pengembangan model berbeda dari pelanggan kepada siapa Anda akan menerapkan prediksi.
Frank Harrell
Misalnya, pengambilan sampel kasus kontrol yang target prevalensinya tidak diketahui. Atau sampel kenyamanan berukuran sedang.
julieth
1

Ketika Anda mengklasifikasikan menggunakan logit, inilah yang terjadi.

Logit memprediksi probabilitas default (PD) dari pinjaman, yang merupakan angka antara 0 dan 1. Selanjutnya, Anda menetapkan ambang D, sehingga Anda menandai pinjaman ke default jika PD> D, dan menandainya sebagai non- default jika PD

Secara alami, dalam populasi pinjaman khas PD << 1. Jadi, dalam kasus Anda 7% adalah probabilitas yang cukup tinggi untuk data satu tahun (PD biasanya dilaporkan setiap tahun). Jika ini adalah data multi-tahun, maka kita berbicara tentang apa yang disebut PD kumulatif, dalam hal ini cumPD = 7% bukan angka yang tinggi untuk data 10 tahun, misalnya. Oleh karena itu, berdasarkan standar apa pun, saya tidak akan mengatakan bahwa kumpulan data Anda bermasalah. Saya akan menggambarkannya setidaknya khas untuk data standar pinjaman, jika tidak besar (dalam arti bahwa Anda memiliki sejumlah besar standar relatif).

Sekarang, anggaplah model Anda memprediksi tiga level PD berikut:

  • 0,1 (563.426)
  • 0,5 (20.000)
  • 0,9 (31,932)

Misalkan juga default aktual untuk grup ini adalah:

  • 0
  • 10.000
  • 31.932

Sekarang Anda dapat mengatur D ke nilai yang berbeda dan melihat bagaimana perubahan matriks. Mari kita gunakan D = 0,4 pertama:

  • Default aktual, prediksi non-default: 0
  • Default aktual, prediksi default: 41.932
  • Non-standar aktual, prediksi non-standar: 563.426
  • Non-default aktual, prediksi default: 10.000

Jika Anda menetapkan D = 0,6:

  • Default aktual, prediksi non-default: 31.932
  • Default aktual, prediksi default: 10.000
  • Non-default aktual, prediksi non-default: 573.426
  • Non-default aktual, prediksi default: 0

Jika Anda menetapkan D = 0,99:

  • Default aktual, prediksi non-default: 41.932
  • Default aktual, prediksi default: 0
  • Non-default aktual, prediksi non-default: 573.426
  • Non-default aktual, prediksi default: 0

Kasus terakhir adalah apa yang Anda lihat dalam hasil model Anda. Dalam hal ini saya menekankan ambang D untuk classifier. Perubahan sederhana dalam D dapat meningkatkan karakteristik tertentu dari perkiraan Anda. Perhatikan, bahwa dalam ketiga kasus, PD yang diprediksi tetap sama, hanya ambang D yang berubah.

Mungkin juga bahwa regresi logit Anda jelek, tentu saja. Jadi, dalam hal ini Anda memiliki setidaknya dua variabel: spec logit dan ambang batas. Keduanya memengaruhi kekuatan perkiraan Anda.

Aksakal
sumber
Anda menyadari bahwa Anda mengusulkan teknik untuk menangani data yang tidak seimbang, bukan? Karenanya, Anda mengakui pengaruh kelas yang lebih kecil pada akurasi prediksi. Selain itu, Anda mengusulkan teknik yang model aslinya tidak gunakan sama sekali. Anda tidak bisa hanya mengubah keadaan sesuai keinginan Anda dan kemudian membuat beberapa pernyataan saat Anda melanjutkan.
JimBoy
Dalam analisis / peramalan standar pinjaman, data selalu "tidak seimbang" dalam pengertian ini. Ini keadaan normal.
Aksakal
Ini mungkin apa adanya. Meskipun demikian, Anda harus melihat apa yang Max Kuhn gambarkan sebagai "tidak ada tingkat informasi", yang tidak lain adalah kelas terbesar dalam kumpulan data. Jadi, lihatlah meja yang disediakan Ivan lagi. Hasilnya masuk akal untuk model yang ia gunakan. Bahwa Anda benar-benar dapat mengoptimalkan hasil itu dengan teknik berbeda adalah pertanyaan lain dan sepenuhnya mungkin.
JimBoy
@ JimBoy, saya melihat mejanya, dan melihat lebih banyak lagi seperti itu. Nya agak sederhana, kita biasanya berurusan dengan data kenakalan pinjaman, di mana negara-negara jauh dari saat ini hingga 30 hari lewat jatuh tempo, 60, 90 .... melalui Default dan Tertutup. Dalam portofolio yang baik Anda dapat memiliki 95% pinjaman dalam kondisi Lancar (bersih), dan hanya 1% dalam Default. Orang-orang menggunakan logit mulltinomial untuk hal semacam ini sepanjang waktu di industri.
Aksakal
@ Aksakal, saya harus melakukan lebih banyak membaca tentang mengubah ambang, karena saya telah membaca banyak tentang bagaimana secara matematis tidak benar untuk mengubahnya untuk regresi logistik. Pada catatan lain, apa yang Anda maksud dengan 'adalah mungkin bahwa regresi logit Anda sendiri jelek'?
ivan7707
1

Jika masalahnya memang ketidakseimbangan antara kelas, saya hanya akan mulai dengan menyeimbangkan bobot kelas:

log_reg = LogisticRegression(class_weight = 'balanced')

Pengaturan parameter ini berarti bahwa hukuman untuk prediksi salah dalam fungsi kerugian akan ditimbang dengan proporsi terbalik dengan frekuensi kelas. Ini dapat memecahkan masalah yang Anda gambarkan.

Tal Yifat
sumber
Tidak jelas bagi saya bahwa Anda telah menunjukkan masalahnya. Saya pikir Matthew Drury menemukan masalah yang berkaitan dengan penggunaan sklearn.
Michael R. Chernick
0

Yah, tanpa informasi lebih lanjut sulit untuk mengatakan, tetapi dengan definisi regresi logistik Anda jenuh berdasarkan data yang dipasang. Jadi, dalam persamaan, istilah et-to adalah 0. Jadi tempat pertama untuk melihat adalah untuk melihat apa koefisien sebenarnya.

Ini juga bisa disebabkan oleh variabel yang tidak diskalakan dengan baik. Mungkin ada masalah di mana salah satu kolom sangat besar dalam nilai numerik dibandingkan dengan yang lain yang menyebabkannya berantakan.

Tim Felty
sumber
@ Tim Felty, Terima kasih atas tanggapannya. Bisakah Anda memperluas apa yang saya cari mengenai koefisien dan bagaimana ini berhubungan dengan saturasi (atau tunjukkan saya ke sumber daya untuk membaca)? Juga, saya mendapat kesan bahwa variabel yang berskala buruk tidak akan memiliki efek negatif pada regresi logistik. [tautan (] stats.stackexchange.com/questions/18916/… )
ivan7707
0

Anda dapat menggunakan SMOTE untuk menyeimbangkan dataset yang tidak seimbang. Makalah yang bagus untuk referensi adalah:

Lifeng Zhou, Hong Wang, Prediksi Default Pinjaman pada Data Ketidakseimbangan Besar Menggunakan Hutan Acak, TELKOMNIKA Jurnal Teknik Elektro Indonesia, Vol.10, No.6, Oktober 2012, hlm. 1519 ~ 1525, tautan .

Tushar Gadkari
sumber
Bisakah Anda menambahkan kutipan / referensi lengkap (termasuk penulis, tanggal, penerbit dll) seperti yang Anda lakukan dalam makalah akademis? Ini akan membuat lebih mudah bagi pembaca di masa depan untuk melacaknya jika tautannya berhenti berfungsi
Silverfish