Dalam artikel ini, kami akan menganalisis pengiraan teori transformasi fungsi regresi linear Π² fungsi transformasi logit songsang (atau dipanggil fungsi tindak balas logistik). Kemudian, menggunakan senjata kaedah kemungkinan maksimum, selaras dengan model regresi logistik, kami memperoleh fungsi kehilangan Kerugian Logistik, atau dengan kata lain, kami akan mentakrifkan fungsi yang mana parameter vektor berat dipilih dalam model regresi logistik .
Pelan artikel:
- Mari kita ulangi hubungan linear antara dua pembolehubah
- Mari kenal pasti keperluan untuk transformasi fungsi regresi linear Π² fungsi tindak balas logistik
- Mari kita laksanakan transformasi dan output fungsi tindak balas logistik
- Mari cuba fahami mengapa kaedah kuasa dua terkecil adalah buruk apabila memilih parameter fungsi Kerugian Logistik
- Kami guna kaedah kemungkinan maksimum untuk menentukan fungsi pemilihan parameter :
5.1. Kes 1: fungsi Kerugian Logistik untuk objek dengan sebutan kelas 0 ΠΈ 1:
5.2. Kes 2: fungsi Kerugian Logistik untuk objek dengan sebutan kelas -1 ΠΈ +1:
Artikel ini penuh dengan contoh mudah di mana semua pengiraan mudah dibuat secara lisan atau di atas kertas; dalam sesetengah kes, kalkulator mungkin diperlukan. Jadi bersedialah :)
Artikel ini ditujukan terutamanya untuk saintis data yang mempunyai tahap pengetahuan awal dalam asas pembelajaran mesin.
Artikel itu juga akan menyediakan kod untuk melukis graf dan pengiraan. Semua kod ditulis dalam bahasa ular sawa 2.7. Biar saya terangkan terlebih dahulu tentang "kebaharuan" versi yang digunakan - ini adalah salah satu syarat untuk mengambil kursus yang terkenal dari Yandex pada platform pendidikan dalam talian yang sama terkenal Coursera, dan, seperti yang mungkin diandaikan, bahan itu disediakan berdasarkan kursus ini.
01. Pergantungan garis lurus
Adalah agak munasabah untuk bertanya soalan - apakah kaitan pergantungan linear dan regresi logistik dengannya?
Mudah sahaja! Regresi logistik adalah salah satu model yang tergolong dalam pengelas linear. Dalam kata mudah, tugas pengelas linear adalah untuk meramalkan nilai sasaran daripada pembolehubah (regressor) . Adalah dipercayai bahawa pergantungan antara ciri-ciri dan nilai sasaran linear. Oleh itu nama pengelas - linear. Secara kasarnya, model regresi logistik adalah berdasarkan andaian bahawa terdapat hubungan linear antara ciri-ciri dan nilai sasaran . Inilah sambungannya.
Terdapat contoh pertama dalam studio, dan ia, betul, mengenai pergantungan rectilinear kuantiti yang sedang dikaji. Dalam proses penyediaan artikel, saya menjumpai satu contoh yang telah menyebabkan ramai orang terpinggir - pergantungan arus pada voltan (βAnalisis regresi gunaanβ, N. Draper, G. Smith). Kami akan melihatnya di sini juga.
Sesuai dengan Hukum Ohm:
Jika - kekuatan semasa, - voltan, - rintangan.
Jika kita tidak tahu Hukum Ohm, maka kita boleh mencari pergantungan secara empirik dengan menukar dan mengukur , sambil menyokong tetap. Kemudian kita akan melihat bahawa graf pergantungan daripada memberikan garis lurus yang lebih kurang melalui asalan. Kami menyebut "lebih atau kurang" kerana, walaupun perhubungan itu sebenarnya tepat, ukuran kami mungkin mengandungi ralat kecil, dan oleh itu titik pada graf mungkin tidak jatuh tepat pada garisan, tetapi akan bertaburan di sekelilingnya secara rawak.
Graf 1 "Pergantungan" daripada Β»
Kod lukisan carta
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import random
R = 13.75
x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
y_line.append(i/R)
y_dot = []
for i in y_line:
y_dot.append(i+random.uniform(-0.9,0.9))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
02. Keperluan untuk mengubah persamaan regresi linear
Mari kita lihat contoh lain. Bayangkan kita bekerja di bank dan tugas kita adalah untuk menentukan kemungkinan peminjam membayar balik pinjaman bergantung kepada faktor-faktor tertentu. Untuk memudahkan tugas, kami akan mempertimbangkan hanya dua faktor: gaji bulanan peminjam dan jumlah bayaran balik pinjaman bulanan.
Tugas itu sangat bersyarat, tetapi dengan contoh ini kita dapat memahami mengapa ia tidak mencukupi untuk digunakan fungsi regresi linear, dan juga ketahui transformasi yang perlu dijalankan dengan fungsi tersebut.
Mari kita kembali kepada contoh. Difahamkan, lebih tinggi gaji, lebih banyak peminjam akan dapat memperuntukkan bulanan untuk membayar balik pinjaman. Pada masa yang sama, untuk julat gaji tertentu hubungan ini akan menjadi agak linear. Sebagai contoh, mari kita ambil julat gaji dari 60.000 RUR hingga 200.000 RUR dan anggap bahawa dalam julat gaji yang ditentukan, pergantungan saiz bayaran bulanan pada saiz gaji adalah linear. Katakan bahawa untuk julat gaji yang ditentukan, nisbah gaji kepada pembayaran tidak boleh jatuh di bawah 3 dan peminjam mesti masih mempunyai rizab 5.000 RUR. Dan hanya dalam kes ini, kita akan menganggap bahawa peminjam akan membayar balik pinjaman kepada bank. Kemudian, persamaan regresi linear akan mengambil bentuk:
mana , , , - gaji -peminjam ke-, - bayaran pinjaman -peminjam ke-.
Menggantikan pembayaran gaji dan pinjaman dengan parameter tetap ke dalam persamaan Anda boleh memutuskan sama ada untuk mengeluarkan atau menolak pinjaman.
Melihat ke hadapan, kami perhatikan bahawa, dengan parameter yang diberikan fungsi regresi linear, digunakan dalam fungsi tindak balas logistik akan menghasilkan nilai yang besar yang akan menyukarkan pengiraan untuk menentukan kebarangkalian pembayaran balik pinjaman. Oleh itu, adalah dicadangkan untuk mengurangkan pekali kita, katakan, sebanyak 25.000 kali. Transformasi dalam pekali ini tidak akan mengubah keputusan untuk mengeluarkan pinjaman. Mari kita ingat perkara ini untuk masa hadapan, tetapi sekarang, untuk menjadikannya lebih jelas apa yang kita bincangkan, mari kita pertimbangkan situasi dengan tiga peminjam yang berpotensi.
Jadual 1 βPeminjam yang berpotensiβ
Kod untuk menjana jadual
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']),
'Salary':np.array([120000,180000,210000]),
'Payment':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Approved'
decision.append(dec)
else:
dec = 'Refusal'
decision.append(dec)
df['Decision'] = decision
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]
Selaras dengan data dalam jadual, Vasya, dengan gaji 120.000 RUR, ingin menerima pinjaman supaya dia boleh membayarnya setiap bulan pada 3.000 RUR. Kami memutuskan bahawa untuk meluluskan pinjaman, gaji Vasya mesti melebihi tiga kali ganda jumlah pembayaran, dan masih ada baki 5.000 RUR. Vasya memenuhi keperluan ini: . Malah 106.000 RUR kekal. Walaupun hakikatnya apabila mengira kami telah mengurangkan kemungkinan 25.000 kali, hasilnya sama - pinjaman boleh diluluskan. Fedya juga akan menerima pinjaman, tetapi Lesha, walaupun pada hakikatnya dia menerima paling banyak, perlu mengekang seleranya.
Mari lukis graf untuk kes ini.
Carta 2 "Klasifikasi peminjam"
Kod untuk melukis graf
salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Jadi, garis lurus kami, dibina mengikut fungsi , memisahkan peminjam "buruk" daripada peminjam "baik". Mereka peminjam yang keinginannya tidak bertepatan dengan keupayaan mereka berada di atas garis (Lesha), manakala mereka yang, mengikut parameter model kami, mampu membayar balik pinjaman berada di bawah garis (Vasya dan Fedya). Dalam erti kata lain, kita boleh mengatakan ini: talian terus kami membahagikan peminjam kepada dua kelas. Mari kita nyatakan mereka seperti berikut: kepada kelas Kami akan mengklasifikasikan peminjam yang berkemungkinan besar membayar balik pinjaman sebagai atau Kami akan memasukkan peminjam yang kemungkinan besar tidak akan dapat membayar balik pinjaman.
Mari kita ringkaskan kesimpulan daripada contoh mudah ini. Mari kita ambil satu perkara dan, menggantikan koordinat titik ke dalam persamaan garis yang sepadan , pertimbangkan tiga pilihan:
- Jika titik itu berada di bawah garisan dan kami berikannya kepada kelas , kemudian nilai fungsi akan positif daripada kepada . Ini bermakna kita boleh menganggap bahawa kebarangkalian untuk membayar balik pinjaman adalah dalam . Semakin besar nilai fungsi, semakin tinggi kebarangkalian.
- Jika satu titik berada di atas garisan dan kami berikannya kepada kelas atau , maka nilai fungsi akan menjadi negatif daripada kepada . Kemudian kita akan menganggap bahawa kebarangkalian pembayaran balik hutang adalah dalam dan, semakin besar nilai mutlak fungsi tersebut, semakin tinggi keyakinan kita.
- Titiknya adalah pada garis lurus, di sempadan antara dua kelas. Dalam kes ini, nilai fungsi akan sama dan kebarangkalian untuk membayar balik pinjaman adalah sama dengan .
Sekarang, mari kita bayangkan bahawa kita tidak mempunyai dua faktor, tetapi berpuluh-puluh, dan bukan tiga, tetapi beribu-ribu peminjam. Kemudian bukannya garis lurus kita akan mempunyai m-dimensi satah dan pekali kami tidak akan dibawa keluar dari udara nipis, tetapi diperolehi mengikut semua peraturan, dan berdasarkan data terkumpul mengenai peminjam yang telah atau belum membayar balik pinjaman. Dan sesungguhnya, ambil perhatian bahawa kami kini memilih peminjam menggunakan pekali yang telah diketahui . Malah, tugas model regresi logistik adalah tepat untuk menentukan parameter , di mana nilai kerugian berfungsi Kerugian Logistik akan cenderung kepada minimum. Tetapi tentang bagaimana vektor dikira , kami akan mengetahui lebih lanjut dalam bahagian ke-5 artikel. Sementara itu, kami kembali ke tanah yang dijanjikan - kepada jurubank kami dan tiga pelanggannya.
Terima kasih kepada fungsi kita tahu siapa yang boleh diberi pinjaman dan siapa yang perlu dinafikan. Tetapi anda tidak boleh pergi ke pengarah dengan maklumat sedemikian, kerana mereka ingin mendapatkan daripada kami kebarangkalian pembayaran balik pinjaman oleh setiap peminjam. Apa nak buat? Jawapannya mudah - entah bagaimana kita perlu mengubah fungsi tersebut , yang nilainya terletak dalam julat kepada fungsi yang nilainya akan terletak dalam julat . Dan fungsi sedemikian wujud, ia dipanggil fungsi tindak balas logistik atau transformasi logit songsang. Bertemu:
Mari lihat langkah demi langkah bagaimana ia berfungsi fungsi tindak balas logistik. Perhatikan bahawa kita akan berjalan ke arah yang bertentangan, i.e. kita akan menganggap bahawa kita tahu nilai kebarangkalian, yang terletak dalam julat dari kepada dan kemudian kami akan "melepaskan" nilai ini kepada keseluruhan julat nombor dari kepada .
03. Kami memperoleh fungsi tindak balas logistik
Langkah 1. Tukarkan nilai kebarangkalian ke dalam julat
Semasa penjelmaan fungsi Π² fungsi tindak balas logistik Kami akan meninggalkan penganalisis kredit kami sahaja dan sebaliknya melakukan lawatan ke pembuat taruhan. Tidak, sudah tentu, kami tidak akan meletakkan taruhan, semua yang menarik minat kami di sana adalah maksud ungkapan, sebagai contoh, peluangnya adalah 4 berbanding 1. Kemungkinan, biasa kepada semua petaruh, adalah nisbah "kejayaan" kepada " kegagalanβ. Dalam istilah kebarangkalian, kemungkinan ialah kebarangkalian sesuatu peristiwa berlaku dibahagikan dengan kebarangkalian peristiwa itu tidak berlaku. Mari kita tulis formula untuk peluang kejadian berlaku :
Jika - kebarangkalian sesuatu kejadian berlaku, β kebarangkalian sesuatu kejadian TIDAK berlaku
Sebagai contoh, jika kebarangkalian bahawa seekor kuda muda, kuat dan suka bermain yang digelar "Veterok" akan menewaskan seorang wanita tua dan gemuk bernama "Matilda" pada perlumbaan adalah sama dengan , maka peluang kejayaan untuk "Veterok" adalah ΠΊ dan sebaliknya, mengetahui kemungkinan, ia tidak akan sukar untuk kita mengira kebarangkalian :
Oleh itu, kami telah belajar untuk "menterjemahkan" kebarangkalian kepada peluang, yang mengambil nilai daripada kepada . Mari kita mengambil satu langkah lagi dan belajar untuk "terjemah" kebarangkalian kepada keseluruhan garis nombor daripada kepada .
Langkah 2. Tukarkan nilai kebarangkalian ke dalam julat
Langkah ini sangat mudah - mari kita ambil logaritma kemungkinan ke pangkal nombor Euler dan kita dapat:
Sekarang kita tahu bahawa jika , kemudian hitung nilainya akan menjadi sangat mudah dan, lebih-lebih lagi, ia harus positif: . Ini adalah benar.
Kerana ingin tahu, mari kita semak bagaimana jika , maka kami menjangkakan untuk melihat nilai negatif . Kami menyemak: . betul tu.
Sekarang kita tahu bagaimana untuk menukar nilai kebarangkalian daripada kepada sepanjang garis nombor dari kepada . Dalam langkah seterusnya kita akan melakukan sebaliknya.
Buat masa ini, kami perhatikan bahawa mengikut peraturan logaritma, mengetahui nilai fungsi , anda boleh mengira kemungkinan:
Kaedah menentukan kemungkinan ini akan berguna kepada kita dalam langkah seterusnya.
Langkah 3. Mari terbitkan formula untuk menentukan
Jadi kami belajar, mengetahui , cari nilai fungsi . Walau bagaimanapun, sebenarnya, kita memerlukan sebaliknya - mengetahui nilainya cari . Untuk melakukan ini, mari kita beralih kepada konsep seperti fungsi kemungkinan songsang, mengikut mana:
Dalam artikel kami tidak akan memperoleh formula di atas, tetapi kami akan menyemaknya menggunakan nombor daripada contoh di atas. Kita tahu bahawa dengan kemungkinan 4 berbanding 1 (), kebarangkalian kejadian itu berlaku ialah 0.8 (). Mari buat penggantian: . Ini bertepatan dengan pengiraan kami yang dijalankan sebelum ini. Jom teruskan.
Dalam langkah terakhir kami menyimpulkan bahawa , yang bermaksud anda boleh membuat penggantian dalam fungsi kemungkinan songsang. Kita mendapatkan:
Bahagikan kedua-dua pengangka dan penyebut dengan , maka:
Untuk berjaga-jaga, untuk memastikan kami tidak melakukan kesilapan di mana-mana, kami akan melakukan satu pemeriksaan kecil lagi. Dalam langkah 2, kami bagi ditentukan itu . Kemudian, menggantikan nilai ke dalam fungsi tindak balas logistik, kami menjangkakan untuk mendapatkan . Kami menggantikan dan mendapat:
Tahniah, pembaca yang budiman, kami baru saja memperoleh dan menguji fungsi tindak balas logistik. Mari kita lihat graf fungsi tersebut.
Graf 3 "Fungsi tindak balas logistik"
Kod untuk melukis graf
import math
def logit (f):
return 1/(1+math.exp(-f))
f = np.arange(-7,7,0.05)
p = []
for i in f:
p.append(logit(i))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Dalam kesusasteraan anda juga boleh mencari nama fungsi ini sebagai fungsi sigmoid. Graf dengan jelas menunjukkan bahawa perubahan utama dalam kebarangkalian objek kepunyaan kelas berlaku dalam julat yang agak kecil. , dari suatu tempat kepada .
Saya cadangkan kembali kepada penganalisis kredit kami dan bantu dia mengira kebarangkalian pembayaran balik pinjaman, jika tidak, dia berisiko ditinggalkan tanpa bonus :)
Jadual 2 βPeminjam yang berpotensiβ
Kod untuk menjana jadual
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]
Jadi, kami telah menentukan kebarangkalian pembayaran balik pinjaman. Secara umum, ini nampaknya benar.
Malah, kebarangkalian bahawa Vasya, dengan gaji 120.000 RUR, akan dapat memberikan 3.000 RUR kepada bank setiap bulan adalah hampir 100%. By the way, kita mesti faham bahawa bank boleh mengeluarkan pinjaman kepada Lesha jika polisi bank menyediakan, sebagai contoh, untuk pinjaman kepada pelanggan dengan kebarangkalian pembayaran balik pinjaman lebih daripada, katakan, 0.3. Cuma dalam kes ini bank akan membuat rizab yang lebih besar untuk kemungkinan kerugian.
Ia juga harus diperhatikan bahawa nisbah gaji kepada pembayaran sekurang-kurangnya 3 dan dengan margin 5.000 RUR telah diambil dari siling. Oleh itu, kami tidak boleh menggunakan vektor pemberat dalam bentuk asalnya . Kami perlu mengurangkan pekali dengan banyak, dan dalam kes ini kami membahagikan setiap pekali sebanyak 25.000, iaitu, pada dasarnya, kami melaraskan hasilnya. Tetapi ini dilakukan khusus untuk memudahkan pemahaman bahan pada peringkat awal. Dalam kehidupan, kita tidak perlu mencipta dan menyesuaikan pekali, tetapi mencarinya. Dalam bahagian seterusnya artikel kita akan memperoleh persamaan yang mana parameter dipilih .
04. Kaedah kuasa dua terkecil untuk menentukan vektor pemberat dalam fungsi tindak balas logistik
Kami sudah mengetahui kaedah ini untuk memilih vektor pemberat Sebagai kaedah kuasa dua terkecil (LSM) dan sebenarnya, mengapa kita tidak menggunakannya dalam masalah klasifikasi binari? Sesungguhnya, tiada apa yang menghalang anda daripada menggunakan MNC, hanya kaedah ini dalam masalah klasifikasi memberikan hasil yang kurang tepat daripada Kerugian Logistik. Terdapat asas teori untuk ini. Mari kita lihat satu contoh mudah dahulu.
Mari kita anggap bahawa model kita (menggunakan MSE ΠΈ Kerugian Logistik) sudah mula memilih vektor pemberat dan kami menghentikan pengiraan pada beberapa langkah. Tidak kira sama ada di tengah, pada akhir atau pada permulaan, perkara utama ialah kita sudah mempunyai beberapa nilai vektor pemberat dan mari kita anggap bahawa pada langkah ini, vektor pemberat untuk kedua-dua model tiada perbezaan. Kemudian ambil pemberat yang terhasil dan gantikannya fungsi tindak balas logistik () untuk beberapa objek yang dimiliki oleh kelas . Kami memeriksa dua kes apabila, mengikut vektor pemberat yang dipilih, model kami sangat tersilap dan sebaliknya - model itu sangat yakin bahawa objek itu tergolong dalam kelas . Mari lihat apakah denda yang akan dikeluarkan apabila menggunakan MNC ΠΈ Kerugian Logistik.
Kod untuk mengira penalti bergantung pada fungsi kerugian yang digunakan
# ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
y = 1
# Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΊΠ»Π°ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ w
proba_1 = 0.01
MSE_1 = (y - proba_1)**2
print 'Π¨ΡΡΠ°Ρ MSE ΠΏΡΠΈ Π³ΡΡΠ±ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ =', MSE_1
# Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ f(w,x) ΠΏΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΎΡΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΊΠ»Π°ΡΡΡ +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
return math.log(proba/(1-proba))
LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Π¨ΡΡΠ°Ρ Log Loss ΠΏΡΠΈ Π³ΡΡΠ±ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ =', LogLoss_1
proba_2 = 0.99
MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))
print '**************************************************************'
print 'Π¨ΡΡΠ°Ρ MSE ΠΏΡΠΈ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ =', MSE_2
print 'Π¨ΡΡΠ°Ρ Log Loss ΠΏΡΠΈ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ =', LogLoss_2
Satu kes kesilapan β model memberikan objek kepada kelas dengan kebarangkalian 0,01
Penalti atas penggunaan MNC akan jadi:
Penalti atas penggunaan Kerugian Logistik akan jadi:
Kes keyakinan yang kuat β model memberikan objek kepada kelas dengan kebarangkalian 0,99
Penalti atas penggunaan MNC akan jadi:
Penalti atas penggunaan Kerugian Logistik akan jadi:
Contoh ini menggambarkan dengan baik bahawa sekiranya berlaku ralat kasar fungsi kehilangan Kehilangan Log menghukum model dengan ketara lebih daripada MSE. Sekarang mari kita fahami apakah latar belakang teori menggunakan fungsi kehilangan Kehilangan Log dalam masalah klasifikasi.
05. Kaedah kemungkinan maksimum dan regresi logistik
Seperti yang dijanjikan pada permulaan, artikel itu penuh dengan contoh mudah. Di studio terdapat satu lagi contoh dan tetamu lama - peminjam bank: Vasya, Fedya dan Lesha.
Untuk berjaga-jaga, sebelum membangunkan contoh, izinkan saya mengingatkan anda bahawa dalam kehidupan kita berhadapan dengan sampel latihan beribu-ribu atau berjuta-juta objek dengan berpuluh-puluh atau ratusan ciri. Walau bagaimanapun, di sini nombor-nombor itu diambil supaya ia boleh dimuatkan dengan mudah ke dalam ketua saintis data yang baru.
Mari kita kembali kepada contoh. Mari kita bayangkan bahawa pengarah bank memutuskan untuk mengeluarkan pinjaman kepada semua orang yang memerlukan, walaupun fakta bahawa algoritma memberitahunya untuk tidak mengeluarkannya kepada Lesha. Dan kini cukup masa telah berlalu dan kita tahu yang mana antara tiga wira yang membayar balik pinjaman dan yang tidak. Apa yang diharapkan: Vasya dan Fedya membayar balik pinjaman itu, tetapi Lesha tidak. Sekarang mari kita bayangkan bahawa keputusan ini akan menjadi sampel latihan baharu untuk kita dan, pada masa yang sama, seolah-olah semua data mengenai faktor yang mempengaruhi kemungkinan membayar balik pinjaman (gaji peminjam, saiz bayaran bulanan) telah hilang. Kemudian, secara intuitif, kita boleh menganggap bahawa setiap peminjam ketiga tidak membayar balik pinjaman kepada bank, atau dengan kata lain, kebarangkalian peminjam seterusnya membayar balik pinjaman itu. . Andaian intuitif ini mempunyai pengesahan teori dan berdasarkan kaedah kemungkinan maksimum, selalunya dalam kesusasteraan ia dipanggil prinsip kemungkinan maksimum.
Pertama, mari kita berkenalan dengan radas konseptual.
Kemungkinan pensampelan ialah kebarangkalian untuk mendapatkan sampel sebegitu tepat, mendapatkan pemerhatian/keputusan sebegitu tepat, i.e. produk kebarangkalian untuk mendapatkan setiap keputusan sampel (contohnya, sama ada pinjaman Vasya, Fedya dan Lesha telah dibayar balik atau tidak dibayar pada masa yang sama).
Fungsi kemungkinan mengaitkan kemungkinan sampel dengan nilai parameter pengedaran.
Dalam kes kami, sampel latihan ialah skema Bernoulli umum, di mana pembolehubah rawak hanya mengambil dua nilai: atau . Oleh itu, kemungkinan sampel boleh ditulis sebagai fungsi kemungkinan parameter seperti berikut:
Entri di atas boleh ditafsirkan seperti berikut. Kebarangkalian bersama bahawa Vasya dan Fedya akan membayar balik pinjaman adalah sama dengan , kebarangkalian Lesha TIDAK akan membayar balik pinjaman adalah sama dengan (kerana BUKAN pembayaran balik pinjaman yang berlaku), oleh itu kebarangkalian bersama bagi ketiga-tiga peristiwa adalah sama .
Kaedah kemungkinan maksimum ialah kaedah untuk menganggar parameter yang tidak diketahui dengan memaksimumkan fungsi kemungkinan. Dalam kes kita, kita perlu mencari nilai sedemikian di mana mencapai tahap maksimum.
Dari mana datangnya idea sebenar - untuk mencari nilai parameter yang tidak diketahui di mana fungsi kemungkinan mencapai maksimum? Asal-usul idea berpunca daripada idea bahawa sampel adalah satu-satunya sumber pengetahuan yang tersedia kepada kita tentang populasi. Semua yang kita tahu tentang populasi diwakili dalam sampel. Oleh itu, apa yang boleh kita katakan ialah sampel adalah pantulan populasi yang paling tepat yang tersedia untuk kita. Oleh itu, kita perlu mencari parameter di mana sampel yang tersedia menjadi yang paling berkemungkinan.
Jelas sekali, kita sedang berhadapan dengan masalah pengoptimuman yang mana kita perlu mencari titik ekstrem sesuatu fungsi. Untuk mencari titik ekstrem, adalah perlu untuk mempertimbangkan keadaan tertib pertama, iaitu, menyamakan terbitan fungsi kepada sifar dan menyelesaikan persamaan berkenaan dengan parameter yang dikehendaki. Walau bagaimanapun, mencari derivatif produk daripada sejumlah besar faktor boleh menjadi tugas yang panjang; untuk mengelakkan ini, terdapat teknik khas - beralih kepada logaritma fungsi kemungkinan. Mengapa peralihan sedemikian mungkin? Marilah kita memberi perhatian kepada fakta bahawa kita tidak mencari ekstrem fungsi itu sendiri, dan titik ekstrem, iaitu, nilai parameter yang tidak diketahui di mana mencapai tahap maksimum. Apabila bergerak ke logaritma, titik ekstrem tidak berubah (walaupun ekstrem itu sendiri akan berbeza), kerana logaritma ialah fungsi monoton.
Mari, mengikut perkara di atas, terus membangunkan contoh kita dengan pinjaman daripada Vasya, Fedya dan Lesha. Mula-mula mari kita beralih kepada logaritma fungsi kemungkinan:
Sekarang kita boleh dengan mudah membezakan ungkapan dengan :
Dan akhirnya, pertimbangkan keadaan tertib pertama - kita menyamakan terbitan fungsi kepada sifar:
Oleh itu, anggaran intuitif kami tentang kebarangkalian pembayaran balik pinjaman secara teorinya dibenarkan.
Hebat, tetapi apa yang perlu kita lakukan dengan maklumat ini sekarang? Jika kita menganggap bahawa setiap peminjam ketiga tidak memulangkan wang kepada bank, maka yang kedua pasti akan muflis. Betul, tetapi hanya apabila menilai kebarangkalian pembayaran balik pinjaman sama dengan Kami tidak mengambil kira faktor yang mempengaruhi pembayaran balik pinjaman: gaji peminjam dan saiz bayaran bulanan. Ingatlah bahawa kami sebelum ini mengira kebarangkalian pembayaran balik pinjaman oleh setiap pelanggan, dengan mengambil kira faktor-faktor yang sama. Adalah logik bahawa kita memperoleh kebarangkalian yang berbeza daripada sama yang berterusan .
Mari kita tentukan kemungkinan sampel:
Kod untuk mengira kemungkinan sampel
from functools import reduce
def likelihood(y,p):
line_true_proba = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
line_true_proba.append(ltp_i)
likelihood = []
return reduce(lambda a, b: a*b, line_true_proba)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'ΠΡΠ°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'ΠΡΠ°Π²Π΄ΠΎΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°ΡΡΠ΅ΡΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ p:', round(likelihood(y,p_log_response),3)
Kebarangkalian sampel pada nilai malar :
Contoh kemungkinan apabila mengira kebarangkalian pembayaran balik pinjaman dengan mengambil kira faktor :
Kemungkinan sampel dengan kebarangkalian dikira bergantung kepada faktor ternyata lebih tinggi daripada kebarangkalian dengan nilai kebarangkalian malar. Apakah maksud ini? Ini menunjukkan bahawa pengetahuan tentang faktor memungkinkan untuk memilih dengan lebih tepat kebarangkalian pembayaran balik pinjaman untuk setiap pelanggan. Oleh itu, apabila mengeluarkan pinjaman seterusnya, adalah lebih tepat untuk menggunakan model yang dicadangkan pada akhir bahagian 3 artikel untuk menilai kebarangkalian pembayaran balik hutang.
Tetapi kemudian, jika kita mahu memaksimumkan fungsi kemungkinan sampel, maka mengapa tidak menggunakan beberapa algoritma yang akan menghasilkan kebarangkalian untuk Vasya, Fedya dan Lesha, sebagai contoh, masing-masing sama dengan 0.99, 0.99 dan 0.01. Mungkin algoritma sedemikian akan berfungsi dengan baik pada sampel latihan, kerana ia akan membawa nilai kemungkinan sampel lebih dekat kepada , tetapi, pertama, algoritma sedemikian kemungkinan besar akan mengalami kesukaran dengan keupayaan generalisasi, dan kedua, algoritma ini pastinya tidak linear. Dan jika kaedah memerangi overtraining (keupayaan generalisasi yang sama lemah) jelas tidak termasuk dalam rancangan artikel ini, maka mari kita lihat perkara kedua dengan lebih terperinci. Untuk melakukan ini, jawab sahaja soalan mudah. Bolehkah kebarangkalian Vasya dan Fedya membayar balik pinjaman itu sama, dengan mengambil kira faktor yang diketahui oleh kita? Dari sudut logik bunyi, sudah tentu tidak, ia tidak boleh. Jadi Vasya akan membayar 2.5% daripada gajinya sebulan untuk membayar balik pinjaman, dan Fedya - hampir 27,8%. Juga dalam graf 2 "Klasifikasi pelanggan" kita melihat bahawa Vasya jauh lebih jauh dari garis yang memisahkan kelas daripada Fedya. Dan akhirnya, kita tahu bahawa fungsi untuk Vasya dan Fedya mengambil nilai yang berbeza: 4.24 untuk Vasya dan 1.0 untuk Fedya. Sekarang, jika Fedya, sebagai contoh, memperoleh perintah yang lebih besar atau meminta pinjaman yang lebih kecil, maka kebarangkalian untuk membayar balik pinjaman untuk Vasya dan Fedya akan sama. Dengan kata lain, pergantungan linear tidak boleh ditipu. Dan jika kita benar-benar mengira kemungkinan , dan tidak membawa mereka keluar dari udara nipis, kami boleh dengan selamat mengatakan bahawa nilai kami terbaik membolehkan kami menganggarkan kebarangkalian pembayaran balik pinjaman oleh setiap peminjam, tetapi kerana kami bersetuju untuk menganggap bahawa penentuan pekali telah dijalankan mengikut semua peraturan, maka kami akan menganggap demikian - pekali kami membolehkan kami memberikan anggaran kebarangkalian yang lebih baik :)
Walau bagaimanapun, kami menyimpang. Dalam bahagian ini kita perlu memahami bagaimana vektor pemberat ditentukan , yang perlu untuk menilai kebarangkalian pembayaran balik pinjaman oleh setiap peminjam.
Mari kita ringkaskan secara ringkas dengan senjata apa yang kita cari peluang :
1. Kami menganggap bahawa hubungan antara pembolehubah sasaran (nilai ramalan) dan faktor yang mempengaruhi keputusan adalah linear. Atas sebab ini ia digunakan fungsi regresi linear spesies , garis yang membahagikan objek (pelanggan) ke dalam kelas ΠΈ atau (pelanggan yang mampu membayar balik pinjaman dan yang tidak). Dalam kes kita, persamaan mempunyai bentuk .
2. Kami menggunakan fungsi logit songsang spesies untuk menentukan kebarangkalian objek kepunyaan kelas .
3. Kami menganggap set latihan kami sebagai pelaksanaan umum Skim Bernoulli, iaitu, bagi setiap objek pembolehubah rawak dijana, yang dengan kebarangkalian (sendiri untuk setiap objek) mengambil nilai 1 dan dengan kebarangkalian - 0.
4. Kami tahu apa yang kami perlukan untuk memaksimumkan fungsi kemungkinan sampel mengambil kira faktor yang diterima supaya sampel yang ada menjadi yang paling munasabah. Dalam erti kata lain, kita perlu memilih parameter yang mana sampel akan paling munasabah. Dalam kes kami, parameter yang dipilih ialah kebarangkalian pembayaran balik pinjaman , yang seterusnya bergantung kepada pekali yang tidak diketahui . Jadi kita perlu mencari vektor pemberat sedemikian , di mana kemungkinan sampel akan menjadi maksimum.
5. Kami tahu apa yang perlu dimaksimumkan fungsi kemungkinan sampel boleh gunakan kaedah kemungkinan maksimum. Dan kami tahu semua helah rumit untuk bekerja dengan kaedah ini.
Ini adalah bagaimana ia menjadi langkah pelbagai langkah :)
Sekarang ingat bahawa pada awal artikel kami ingin memperoleh dua jenis fungsi kehilangan Kerugian Logistik bergantung pada cara kelas objek ditetapkan. Kebetulan dalam masalah klasifikasi dengan dua kelas, kelas ditandakan sebagai ΠΈ atau . Bergantung pada notasi, output akan mempunyai fungsi kehilangan yang sepadan.
Kes 1. Pengelasan objek kepada ΠΈ
Terdahulu, apabila menentukan kemungkinan sampel, di mana kebarangkalian pembayaran balik hutang oleh peminjam dikira berdasarkan faktor dan pekali yang diberikan , kami menggunakan formula:
Sebenarnya ialah maksudnya fungsi tindak balas logistik untuk vektor pemberat yang diberikan
Kemudian tiada apa yang menghalang kami daripada menulis fungsi kemungkinan sampel seperti berikut:
Ia berlaku bahawa kadang-kadang sukar bagi sesetengah penganalisis pemula untuk segera memahami bagaimana fungsi ini berfungsi. Mari lihat 4 contoh ringkas yang akan menjelaskan keadaan:
1. Jika (iaitu, mengikut sampel latihan, objek itu tergolong dalam kelas +1), dan algoritma kami menentukan kebarangkalian untuk mengelaskan objek kepada kelas bersamaan dengan 0.9, maka sekeping kemungkinan sampel ini akan dikira seperti berikut:
2. Jika Dan , maka pengiraannya akan menjadi seperti ini:
3. Jika Dan , maka pengiraannya akan menjadi seperti ini:
4. Jika Dan , maka pengiraannya akan menjadi seperti ini:
Adalah jelas bahawa fungsi kemungkinan akan dimaksimumkan dalam kes 1 dan 3 atau dalam kes umum - dengan nilai meneka dengan betul kebarangkalian untuk memberikan objek kepada kelas .
Disebabkan oleh fakta bahawa apabila menentukan kebarangkalian untuk memberikan objek kepada kelas Kita hanya tidak tahu pekalinya , maka kami akan mencari mereka. Seperti yang dinyatakan di atas, ini ialah masalah pengoptimuman di mana mula-mula kita perlu mencari derivatif fungsi kemungkinan berkenaan dengan vektor pemberat. . Walau bagaimanapun, pertama sekali masuk akal untuk memudahkan tugas untuk diri kita sendiri: kita akan mencari terbitan logaritma fungsi kemungkinan.
Mengapa selepas logaritma, dalam fungsi ralat logistik, kami menukar tanda dari pada . Segala-galanya mudah, kerana dalam masalah menilai kualiti model adalah kebiasaan untuk meminimumkan nilai fungsi, kami mendarabkan sebelah kanan ungkapan dengan dan oleh itu, bukannya memaksimumkan, kini kami meminimumkan fungsi.
Sebenarnya, sekarang, di hadapan mata anda, fungsi kehilangan itu diperoleh dengan susah payah - Kerugian Logistik untuk set latihan dengan dua kelas: ΠΈ .
Sekarang, untuk mencari pekali, kita hanya perlu mencari derivatif fungsi ralat logistik dan kemudian, menggunakan kaedah pengoptimuman berangka, seperti keturunan kecerunan atau keturunan kecerunan stokastik, pilih pekali yang paling optimum . Tetapi, memandangkan jumlah artikel yang banyak, adalah dicadangkan untuk melakukan pembezaan sendiri, atau mungkin ini akan menjadi topik untuk artikel seterusnya dengan banyak aritmetik tanpa contoh terperinci sedemikian.
Kes 2. Pengelasan objek kepada ΠΈ
Pendekatan di sini akan sama seperti dengan kelas ΠΈ , tetapi laluan itu sendiri ke output fungsi kehilangan Kerugian Logistik, akan lebih berhias. Mari kita mulakan. Untuk fungsi kemungkinan kita akan menggunakan operator βkalau... kalau begitu...β. Iaitu, jika Objek ke kepunyaan kelas , kemudian untuk mengira kebarangkalian sampel kita menggunakan kebarangkalian , jika objek itu tergolong dalam kelas , kemudian kita gantikan ke dalam kemungkinan . Inilah rupa fungsi kemungkinan:
Mari kita terangkan pada jari kita bagaimana ia berfungsi. Mari kita pertimbangkan 4 kes:
1. Jika ΠΈ , maka kemungkinan pensampelan akan "pergi"
2. Jika ΠΈ , maka kemungkinan pensampelan akan "pergi"
3. Jika ΠΈ , maka kemungkinan pensampelan akan "pergi"
4. Jika ΠΈ , maka kemungkinan pensampelan akan "pergi"
Adalah jelas bahawa dalam kes 1 dan 3, apabila kebarangkalian ditentukan dengan betul oleh algoritma, fungsi kemungkinan akan dimaksimumkan, iaitu, inilah yang kita mahu dapatkan. Walau bagaimanapun, pendekatan ini agak rumit dan seterusnya kita akan mempertimbangkan tatatanda yang lebih padat. Tetapi pertama, mari kita logaritma fungsi kemungkinan dengan perubahan tanda, kerana sekarang kita akan meminimumkannya.
Mari kita ganti ungkapan :
Mari permudahkan istilah yang betul di bawah logaritma menggunakan teknik aritmetik mudah dan dapatkan:
Kini tiba masanya untuk menyingkirkan pengendali βkalau... kalau begitu...β. Perhatikan bahawa apabila objek tergolong dalam kelas , kemudian dalam ungkapan di bawah logaritma, dalam penyebut, diangkat menjadi kuasa , jika objek itu tergolong dalam kelas , maka $e$ dinaikkan kepada kuasa . Oleh itu, notasi untuk darjah boleh dipermudahkan dengan menggabungkan kedua-dua kes menjadi satu: ... Kemudian fungsi ralat logistik akan mengambil borang:
Selaras dengan peraturan logaritma, kami membalikkan pecahan dan memadamkan tanda ""(tolak) untuk logaritma, kita dapat:
Berikut ialah fungsi kehilangan kehilangan logistik, yang digunakan dalam set latihan dengan objek yang diberikan kepada kelas: ΠΈ .
Nah, pada ketika ini saya mengambil cuti saya dan kami menyimpulkan artikel itu.
Bahan bantu
1. Kesusasteraan
1) Analisis regresi yang digunakan / N. Draper, G. Smith - ed ke-2. β M.: Kewangan dan Statistik, 1986 (terjemahan dari bahasa Inggeris)
2) Teori kebarangkalian dan statistik matematik / V.E. Gmurman - ed ke-9. - M.: Sekolah Tinggi, 2003
3) Teori kebarangkalian / N.I. Chernova - Novosibirsk: Universiti Negeri Novosibirsk, 2007
4) Analisis perniagaan: dari data kepada pengetahuan / Paklin N. B., Oreshkov V. I. - ed ke-2. β St. Petersburg: Peter, 2013
5) Sains Data Sains data dari awal / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Statistik praktikal untuk pakar Sains Data / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Kuliah, kursus (video)
1)
2)
3)
4)
5)
3. Sumber Internet
1)
2)
4)
5)
6)
7)
Sumber: www.habr.com