Ing artikel iki, kita bakal nganalisa petungan teoretis babagan transformasi fungsi regresi linier в fungsi transformasi logit invers (uga disebut fungsi respon logistik). Banjur, nggunakake arsenal metode kemungkinan maksimum, sesuai karo model regresi logistik, kita entuk fungsi mundhut Kerugian Logistik, utawa kanthi tembung liya, kita bakal nemtokake fungsi sing paramèter saka vektor bobot dipilih ing model regresi logistik. .
Rangka artikel:
- Ayo kita mbaleni hubungan linear antarane rong variabel
- Ayo ngerteni kabutuhan transformasi fungsi regresi linier в fungsi respon logistik
- Ayo nindakake transformasi lan output fungsi respon logistik
- Ayo coba ngerti sebabe metode kuadrat paling ora ala nalika milih paramèter fungsi Kerugian Logistik
- Kita nggunakake metode kemungkinan maksimum kanggo nemtokake fungsi pilihan parameter :
5.1. Kasus 1: fungsi Kerugian Logistik kanggo obyek kanthi sebutan kelas 0 и 1:
5.2. Kasus 2: fungsi Kerugian Logistik kanggo obyek kanthi sebutan kelas -1 и +1:
Artikel kasebut kebak conto prasaja sing kabeh petungan gampang digawe kanthi lisan utawa ing kertas; ing sawetara kasus, kalkulator bisa uga dibutuhake. Dadi siap-siap :)
Artikel iki utamane kanggo para ilmuwan data kanthi tingkat kawruh awal babagan dhasar pembelajaran mesin.
Artikel kasebut uga bakal menehi kode kanggo nggambar grafik lan petungan. Kabeh kode ditulis ing basa python-2.7. Ayo kula nerangake luwih dhisik babagan "baru" versi sing digunakake - iki minangka salah sawijining syarat kanggo njupuk kursus sing kondhang saka Yandex ing platform pendidikan online sing padha kondhang Coursera, lan, minangka salah siji bisa nganggep, materi wis disiapake adhedhasar kursus iki.
01. Ketergantungan garis lurus
Cukup cukup kanggo takon - apa katergantungan linear lan regresi logistik kudu ditindakake?
Iku prasaja! Regresi logistik minangka salah sawijining model sing kalebu ing klasifikasi linier. Ing tembung prasaja, tugas saka classifier linear kanggo prédhiksi nilai target saka variabel (regressor) . Punika pitados bilih katergantungan antarane ciri lan nilai target linier. Empu jeneng classifier - linear. Kanthi kasar banget, model regresi logistik adhedhasar asumsi yen ana hubungan linear antarane karakteristik. lan nilai target . Iki sambungane.
Ana conto pisanan ing studio, lan bener, babagan katergantungan rectilinear saka jumlah sing ditliti. Ing proses nyiapake artikel, aku nemokake conto sing wis nggawe akeh wong ing pinggir - katergantungan arus ing voltase ("Analisis regresi terapan", N. Draper, G. Smith). Kita uga bakal nliti ing kene.
Miturut Hukum Ohm:
ngendi - kekuatan saiki, - tegangan, - resistance.
Yen kita ora ngerti Hukum om, banjur kita bisa nemokake katergantungan kanthi empiris kanthi ngganti lan pangukuran , nalika ndhukung tetep. Banjur kita bakal weruh yen grafik katergantungan saka menehi garis lurus luwih utawa kurang liwat asal. Kita ngomong "luwih utawa kurang" amarga, sanajan hubungan kasebut bener-bener akurat, pangukuran kita bisa ngemot kesalahan cilik, lan mulane titik-titik ing grafik kasebut bisa uga ora ana ing garis kasebut, nanging bakal kasebar kanthi acak.
Grafik 1 "Ketergantungan" saka »
Kode gambar grafik
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. Perlu ngowahi persamaan regresi linier
Ayo goleki conto liyane. Ayo mbayangno yen kita kerja ing bank lan tugas kita yaiku nemtokake kemungkinan peminjam bisa mbayar utang gumantung saka faktor tartamtu. Kanggo nyederhanakake tugas, kita bakal nimbang mung rong faktor: gaji saben wulan peminjam lan jumlah mbayar maneh silihan saben wulan.
Tugas kasebut sarat banget, nanging kanthi conto iki kita bisa ngerti kenapa ora cukup digunakake fungsi regresi linier, lan uga ngerteni transformasi apa sing kudu ditindakake kanthi fungsi kasebut.
Ayo bali menyang conto. Dimangerteni yen gaji sing luwih dhuwur, luwih akeh sing nyilih bisa nyedhiyakake saben wulan kanggo mbayar utang. Ing wektu sing padha, kanggo sawetara gaji tartamtu, hubungan iki bakal cukup linear. Contone, ayo njupuk sawetara gaji saka 60.000 RUR nganti 200.000 RUR lan nganggep yen ing kisaran gaji sing ditemtokake, katergantungan saka ukuran pembayaran saben wulan ing ukuran gaji iku linear. Ayo dadi ngomong sing kanggo sawetara tartamtu saka upah dicethakaké ana sing rasio gaji-kanggo-pembayaran ora bisa mudhun ing ngisor 3 lan nyilih isih kudu 5.000 RUR ing cadangan. Lan mung ing kasus iki, kita bakal nganggep yen peminjam bakal mbayar utang menyang bank. Banjur, persamaan regresi linier bakal dadi:
ngendi , , , - gaji - sing nyilih, - pembayaran utangan - sing nyilih.
Ngganti gaji lan pembayaran silihan kanthi paramèter tetep menyang persamaan Sampeyan bisa mutusake arep ngetokake utawa nolak utangan.
Looking ahead, kita nyathet yen, kanthi paramèter sing diwenehake fungsi regresi linier, digunakake ing fungsi respon logistik bakal ngasilake nilai gedhe sing bakal nggawe kalkulasi rumit kanggo nemtokake kemungkinan pambayaran utang. Mulane, diusulake kanggo ngurangi koefisien kita, ayo ngomong, kanthi 25.000 kali. Transformasi ing koefisien iki ora bakal ngganti keputusan kanggo ngetokake utangan. Ayo ngelingi titik iki kanggo masa depan, nanging saiki, supaya luwih jelas apa sing diomongake, ayo nimbang kahanan karo telung peminjam potensial.
Tabel 1 "Potensi peminjam"
Kode kanggo nggawe tabel
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']]
Sesuai karo data ing tabel, Vasya, kanthi gaji 120.000 RUR, kepengin nampa silihan supaya bisa mbayar maneh saben wulan ing 3.000 RUR. Kita nemtokake manawa kanggo nyetujoni utangan, gaji Vasya kudu ngluwihi kaping telu jumlah pembayaran, lan isih ana 5.000 RUR. Vasya nyukupi syarat iki: . Malah 106.000 RUR tetep. Senadyan kasunyatan sing nalika ngitung kita wis suda rintangan 25.000 kaping, asil padha - silihan bisa disetujoni. Fedya uga bakal nampa silihan, nanging Lesha, senadyan kasunyatan sing ditampa paling, kudu ngalangi napsu.
Ayo digambar grafik kanggo kasus iki.
Bagan 2 "Klasifikasi peminjam"
Kode kanggo nggambar grafik
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()
Dadi, garis lurus kita, dibangun sesuai karo fungsi kasebut , misahake peminjam "ala" saka "apik". Sing nyilih sing kepinginan ora pas karo kapabilitas ing ndhuwur garis (Lesha), nalika wong-wong sing, miturut paramèter model kita, bisa kanggo mbayar maneh silihan ing ngisor baris (Vasya lan Fedya). Ing tembung liya, kita bisa ngomong iki: garis langsung kita mbagi peminjam dadi rong kelas. Ayo kita ndhaptar minangka nderek: menyang kelas Kita bakal klasifikasi sing nyilih sing paling kamungkinan kanggo mbayar utang minangka utawa Kita bakal kalebu wong sing nyilih sing paling ora bakal bisa mbayar utang.
Ayo kita ngringkes kesimpulan saka conto prasaja iki. Ayo padha njupuk titik lan, ngganti koordinat titik menyang persamaan garis sing cocog , nimbang telung pilihan:
- Yen titik kasebut ana ing sangisore garis lan ditugasake menyang kelas , banjur nilai fungsi bakal positif saka kanggo . Iki tegese kita bisa nganggep manawa kemungkinan mbayar maneh utangan ana ing njero . Sing luwih gedhe nilai fungsi, luwih dhuwur kemungkinan.
- Yen titik ing ndhuwur baris lan kita nemtokake kanggo kelas utawa , banjur Nilai saka fungsi bakal negatif saka kanggo . Banjur kita bakal nganggep manawa kemungkinan pembayaran utang ana ing njero lan, sing luwih Nilai Absolute saka fungsi, sing luwih kapercayan kita.
- Titik kasebut ana ing garis lurus, ing wates antarane rong kelas. Ing kasus iki, nilai saka fungsi bakal padha lan kemungkinan kanggo mbayar maneh silihan padha karo .
Saiki, ayo bayangake yen kita ora duwe rong faktor, nanging puluhan, lan ora telu, nanging ewu peminjam. Banjur tinimbang garis lurus kita bakal duwe m-dimensi bidang lan koefisien kita ora bakal dijupuk metu saka udhara lancip, nanging asalé miturut kabeh aturan, lan ing basis saka data akumulasi ing nyilih sing wis utawa durung mbayar utang. Lan nyatane, saiki kita milih peminjam nggunakake koefisien sing wis dingerteni . Nyatane, tugas model regresi logistik yaiku nemtokake paramèter , ing kang Nilai saka fungsi mundhut Kerugian Logistik bakal cenderung kanggo minimal. Nanging babagan cara ngitung vektor , kita bakal ngerteni luwih akeh ing bagean 5 artikel kasebut. Ing sawetoro wektu, kita bali menyang tanah prajanji - kanggo bankir kita lan telung klien.
Thanks kanggo fungsi kita ngerti sapa sing bisa diwenehi silihan lan sapa sing kudu ditolak. Nanging sampeyan ora bisa pindhah menyang direktur karo informasi kuwi, amarga padha wanted kanggo njaluk saka kita kamungkinan kanggo mbayar maneh silihan dening saben nyilih. Apa sing kudu ditindakake? Jawaban iki prasaja - kita kudu piye wae ngowahi fungsi , kang nilai dumunung ing sawetara menyang fungsi sing nilai bakal ana ing kisaran . Lan fungsi kasebut ana, diarani fungsi respon logistik utawa transformasi invers-logit. ketemu:
Ayo ndeleng langkah demi langkah cara kerjane fungsi respon logistik. Elinga yen kita bakal lumaku ing arah ngelawan, i.e. kita bakal nganggep yen kita ngerti nilai kemungkinan, kang dumunung ing sawetara saka kanggo banjur kita bakal "unwind" Nilai iki kanggo kabeh sawetara nomer saka kanggo .
03. Kita entuk fungsi respon logistik
Langkah 1. Ngonversi nilai kemungkinan dadi sawetara
Sajrone transformasi fungsi в fungsi respon logistik Kita bakal ninggalake Analyst kredit kita piyambak lan njupuk demo saka bookmakers tinimbang. Ora, mesthi, kita ora bakal manggonake taruhan, kabeh sing kapentingan kita ana makna expression, contone, kasempatan punika 4 kanggo 1. rintangan, menowo kanggo kabeh bettors, punika rasio "sukses" kanggo " kegagalan”. Ing istilah probabilitas, rintangan minangka kemungkinan kedadeyan kedadeyan dibagi karo kemungkinan kedadeyan ora kedadeyan. Ayo nulis rumus kanggo kemungkinan kedadeyan :
ngendi - kemungkinan kedadeyan kedadeyan, - kemungkinan kedadeyan sing ora kedadeyan
Contone, yen kemungkinan yen jaran enom, kuwat lan playful sing dijuluki "Veterok" bakal ngalahake wanita tuwa lan flabby sing jenenge "Matilda" ing balapan padha karo , banjur kemungkinan sukses kanggo "Veterok" bakal к lan kosok balene, ngerti rintangan, iku ora bakal angel kanggo kita ngetung kemungkinan :
Mangkono, kita wis sinau kanggo "nerjemahake" kemungkinan menyang kemungkinan, sing njupuk nilai saka kanggo . Ayo dadi njupuk siji langkah maneh lan sinau kanggo "nerjemahake" kemungkinan kanggo kabeh baris nomer saka kanggo .
Langkah 2. Ngonversi nilai kemungkinan dadi sawetara
Langkah iki prasaja banget - ayo njupuk logaritma saka kemungkinan menyang dhasar nomer Euler lan kita entuk:
Saiki kita ngerti yen , banjur ngitung nilai bakal gampang banget lan, luwih-luwih, kudu positif: . Iki bener.
Saking penasarane, ayo dipriksa piye , banjur kita ngarepake kanggo ndeleng nilai negatif . Kita mriksa: . Bener.
Saiki kita ngerti carane ngowahi nilai probabilitas saka kanggo sadawane kabeh baris nomer saka kanggo . Ing langkah sabanjure kita bakal nindakake ngelawan.
Saiki, kita nyathet yen miturut aturan logaritma, ngerti nilai fungsi kasebut , sampeyan bisa ngetung kemungkinan:
Cara iki kanggo nemtokake rintangan bakal migunani kanggo kita ing langkah sabanjure.
Langkah 3. Ayo goleki rumus kanggo nemtokake
Dadi kita sinau, ngerti , golek nilai fungsi . Nanging, ing kasunyatan, kita kudu persis ngelawan - ngerti regane golek . Kanggo nindakake iki, ayo pindhah menyang konsep kayata fungsi odds kuwalik, miturut:
Ing artikel kita ora bakal niru rumus ing ndhuwur, nanging kita bakal mriksa nggunakake nomer saka conto ing ndhuwur. Kita ngerti manawa kanthi kemungkinan 4 nganti 1 (), probabilitas kedadeyan kasebut yaiku 0.8 (). Ayo nggawe substitusi: . Iki cocog karo petungan sing ditindakake sadurunge. Ayo nerusake.
Ing langkah pungkasan kita nyimpulake , kang tegese sampeyan bisa nggawe substitusi ing fungsi rintangan kuwalik. Kita entuk:
Dibagi nomer lan denominator dening , Banjur:
Ing kasus, kanggo mesthekake yen kita wis ora nggawe kesalahan ngendi wae, kita bakal nindakake siji liyane mriksa cilik. Ing langkah 2, kita kanggo ditemtokake sing . Banjur, ngganti nilai kasebut menyang fungsi respon logistik, kita nyana njaluk . Kita ngganti lan entuk:
Sugeng, maca sing ditresnani, kita wis nerbitake lan nguji fungsi respon logistik. Ayo katon ing grafik saka fungsi.
Grafik 3 "Fungsi respon logistik"
Kode kanggo nggambar grafik
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()
Ing literatur sampeyan uga bisa nemokake jeneng fungsi iki minangka fungsi sigmoid. Grafik kasebut kanthi jelas nuduhake yen owah-owahan utama ing kemungkinan obyek sing kagolong ing kelas dumadi ing jarak sing relatif cilik. , saka ngendi wae kanggo .
Aku saranake bali menyang analis kredit lan mbantu dheweke ngetung kemungkinan mbayar maneh utang, yen ora, dheweke bakal ditinggal tanpa bonus :)
Tabel 2 "Potensi peminjam"
Kode kanggo nggawe tabel
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']]
Dadi, kita wis nemtokake kemungkinan mbayar maneh utang. Umumé, iki katon bener.
Pancen, kemungkinan Vasya, kanthi gaji 120.000 RUR, bakal bisa menehi 3.000 RUR menyang bank saben wulan cedhak 100%. Miturut cara, kita kudu ngerti yen bank bisa ngetokake silihan kanggo Lesha yen kawicaksanan bank menehi, contone, kanggo utang kanggo klien karo kemungkinan mbayar maneh silihan luwih saka, ngomong, 0.3. Mung ing kasus iki bank bakal nggawe cadangan sing luwih gedhe kanggo kemungkinan kerugian.
Sampeyan uga kudu dicathet yen rasio gaji-kanggo-pembayaran paling sethithik 3 lan kanthi wates 5.000 RUR dijupuk saka langit-langit. Mulane, kita ora bisa nggunakake vektor bobot ing wangun asli . Kita kudu nyuda koefisien banget, lan ing kasus iki kita dibagi saben koefisien kanthi 25.000, yaiku, ing intine, kita nyetel asil kasebut. Nanging iki ditindakake khusus kanggo nyederhanakake pemahaman materi ing tahap wiwitan. Ing urip, kita ora perlu nggawe lan nyetel koefisien, nanging nemokake. Ing bagean sabanjure artikel kita bakal nurunake persamaan karo paramèter sing dipilih .
04. Metode kuadrat paling sithik kanggo nemtokake vektor bobot ing fungsi respon logistik
Kita wis ngerti cara iki kanggo milih vektor bobot , minangka metode kuadrat terkecil (LSM) lan nyatane, kenapa ora banjur digunakake ing masalah klasifikasi binar? Pancen, ora ana sing ngalangi sampeyan nggunakake MNC, mung cara iki ing masalah klasifikasi menehi asil sing kurang akurat saka Kerugian Logistik. Ana dhasar teoretis kanggo iki. Ayo katon ing siji conto prasaja.
Ayo kita nganggep model kita (nggunakake MSE и Kerugian Logistik) wis miwiti milih vektor bobot lan kita mandegake pitungan ing sawetara langkah. Ora masalah apa ing tengah, ing pungkasan utawa ing wiwitan, sing utama yaiku kita wis duwe sawetara nilai vektor bobot lan ayo nganggep yen ing langkah iki, vektor bobot kanggo loro model ora ana bedane. Banjur njupuk bobot asil lan ngganti menyang fungsi respon logistik () kanggo sawetara obyek sing ana ing kelas kasebut . Kita nliti rong kasus nalika, miturut vektor bobot sing dipilih, model kita salah banget lan kosok balene - model kasebut yakin banget yen obyek kasebut kalebu ing kelas kasebut. . Ayo ndeleng denda apa sing bakal ditindakake nalika nggunakake MNC и Kerugian Logistik.
Kode kanggo ngetung paukuman gumantung ing fungsi mundhut digunakake
# класс объекта
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
Kasus blunder - model menehi obyek menyang kelas kanthi probabilitas 0,01
Hukuman ing nggunakake MNC bakal:
Hukuman ing nggunakake Kerugian Logistik bakal:
Kasus kapercayan sing kuat - model menehi obyek menyang kelas kanthi probabilitas 0,99
Hukuman ing nggunakake MNC bakal:
Hukuman ing nggunakake Kerugian Logistik bakal:
Conto iki nggambaraké uga sing ing cilik saka kesalahan reged fungsi mundhut Log Loss ngukum model Ngartekno luwih saka MSE. Ayo saiki ngerti apa latar mburi teori nggunakake fungsi mundhut Log Loss ing masalah klasifikasi.
05. Metode kemungkinan maksimum lan regresi logistik
Kaya sing dijanjekake ing wiwitan, artikel kasebut kebak conto sing gampang. Ing studio ana conto liyane lan tamu lawas - peminjam bank: Vasya, Fedya lan Lesha.
Mung ing kasus, sadurunge ngembangaken conto, mugi kula ngelingake sampeyan ing gesang kita dealing with conto latihan ewu utawa mayuta-yuta obyek karo puluhan utawa atusan fitur. Nanging, ing kene nomer kasebut dijupuk supaya bisa gampang pas karo kepala ilmuwan data anyar.
Ayo bali menyang conto. Ayo mbayangno manawa direktur bank mutusake kanggo ngetokake utangan kanggo kabeh wong sing butuh, sanajan kasunyatane algoritma kasebut ngandhani supaya ora ngetokake Lesha. Lan saiki wis cukup wektu lan kita ngerti sapa saka telung pahlawan sing mbayar utang lan sing ora. Apa sing dikarepake: Vasya lan Fedya mbayar utang, nanging Lesha ora. Saiki ayo bayangake yen asil iki bakal dadi conto latihan anyar kanggo kita lan, ing wektu sing padha, kaya-kaya kabeh data babagan faktor sing mengaruhi kemungkinan mbayar utang (gaji peminjam, ukuran pembayaran saben wulan) wis ilang. Banjur, kanthi intuisi, kita bisa nganggep yen saben peminjam katelu ora mbayar utang menyang bank, utawa kanthi tembung liyane, kemungkinan peminjam sabanjure mbayar utang. . Asumsi intuisi iki nduweni konfirmasi teoritis lan adhedhasar metode kemungkinan maksimum, asring ing sastra diarani prinsip kemungkinan maksimum.
Kaping pisanan, ayo kenal karo aparat konseptual.
Kemungkinan sampling punika kemungkinan njupuk persis kaya sampel, entuk persis pengamatan / asil, i.e. prodhuk saka kemungkinan entuk saben asil sampel (contone, apa utangan Vasya, Fedya lan Lesha dilunasi utawa ora dilunasi ing wektu sing padha).
Fungsi kamungkinan nggandhengake kemungkinan sampel karo nilai-nilai paramèter distribusi.
Ing kasus kita, sampel latihan minangka skema Bernoulli umum, ing ngendi variabel acak mung njupuk rong nilai: utawa . Mulane, kemungkinan sampel bisa ditulis minangka fungsi kemungkinan saka parameter kaya mangkene:
Entri ing ndhuwur bisa ditegesi kaya ing ngisor iki. Kemungkinan bebarengan yen Vasya lan Fedya bakal mbayar utang kasebut padha karo , kemungkinan Lesha ora bakal mbayar maneh utangan padha karo (amarga dudu pambayaran utang sing kedadeyan), mula kemungkinan gabungan kabeh telung acara padha .
Metode kemungkinan maksimum minangka cara kanggo ngira parameter sing ora dingerteni kanthi maksimal fungsi kemungkinan. Ing kasus kita, kita kudu nemokake nilai kasebut ing kang tekan maksimal.
Endi teka saka idea nyata - kanggo nggoleki nilai parameter sing ora dingerteni ing ngendi fungsi kemungkinan tekan maksimal? Asal-usul gagasan kasebut asale saka gagasan yen sampel minangka siji-sijine sumber kawruh sing kasedhiya kanggo kita babagan populasi. Kabeh sing kita ngerti babagan populasi diwakili ing sampel. Mulane, kabeh sing bisa kita ucapake yaiku sampel minangka refleksi paling akurat saka populasi sing kasedhiya kanggo kita. Mulane, kita kudu nemokake parameter ing ngendi sampel sing kasedhiya dadi paling mungkin.
Temenan, kita nemoni masalah optimasi sing kudu golek titik ekstrem saka sawijining fungsi. Kanggo nemokake titik extremum, perlu kanggo nimbang kondisi urutan pisanan, yaiku, equate turunan saka fungsi kanggo nul lan ngrampungake persamaan karo parameter sing dikarepake. Nanging, nelusuri turunan produk saka pirang-pirang faktor bisa dadi tugas sing dawa, kanggo ngindhari iki, ana teknik khusus - ngalih menyang logaritma. fungsi kemungkinan. Apa sebabe transisi kasebut bisa ditindakake? Ayo kita mbayar manungsa waé kanggo kasunyatan sing kita ora looking for extremum saka fungsi dhewe, lan titik ekstrem, yaiku, nilai parameter sing ora dingerteni ing kang tekan maksimal. Nalika pindhah menyang logaritma, titik ekstrem ora owah (sanajan ekstrem dhewe bakal beda-beda), amarga logaritma minangka fungsi monoton.
Ayo, miturut sing kasebut ing ndhuwur, terus ngembangake conto karo utangan saka Vasya, Fedya lan Lesha. Pisanan ayo pindhah menyang logaritma fungsi likelihood:
Saiki kita bisa gampang mbedakake expression dening :
Lan pungkasane, nimbang kondisi urutan pertama - kita padha karo turunan fungsi kasebut dadi nol:
Mangkono, prakiraan intuisi kita babagan kemungkinan pambayaran utang iki teoritis sabdho.
Apik, nanging apa sing kudu kita lakoni karo informasi iki saiki? Yen kita nganggep yen saben peminjam katelu ora mbalekake dhuwit menyang bank, mula sing terakhir mesthi bangkrut. Sing tengen, nanging mung nalika netepke kamungkinan saka mbayar maneh silihan witjaksono kanggo Kita ora nggatekake faktor sing mengaruhi pambayaran utang: gaji peminjam lan ukuran pembayaran saben wulan. Elinga yen sadurunge ngetung kemungkinan mbayar maneh utang dening saben klien, njupuk faktor sing padha. Iku logis sing kita entuk kemungkinan beda saka padha pancet .
Ayo nemtokake kemungkinan sampel:
Kode kanggo ngitung 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)
Kemungkinan sampel ing nilai konstan :
Sampel kemungkinan nalika ngitung kemungkinan mbayar maneh utang kanthi njupuk faktor :
Kemungkinan sampel kanthi probabilitas sing diwilang gumantung saka faktor kasebut dadi luwih dhuwur tinimbang kemungkinan kanthi nilai probabilitas konstan. Apa tegese iki? Iki nuduhake manawa kawruh babagan faktor kasebut bisa milih kanthi luwih akurat kemungkinan pambayaran silihan kanggo saben klien. Mulane, nalika nerbitake silihan sabanjuré, iku bakal luwih bener kanggo nggunakake model ngajokaken ing mburi bagean 3 saka artikel kanggo netepke kemungkinan mbayar maneh utang.
Nanging banjur, yen kita pengin maksimal fungsi kemungkinan sampel, banjur kenapa ora nggunakake sawetara algoritma sing bakal ngasilake kemungkinan kanggo Vasya, Fedya lan Lesha, contone, padha karo 0.99, 0.99 lan 0.01. Mbok menawa algoritma kasebut bakal nindakake kanthi apik ing conto latihan, amarga bakal nyedhaki nilai kemungkinan sampel , nanging, sepisanan, algoritma kasebut bakal ngalami kesulitan karo kemampuan generalisasi, lan nomer loro, algoritma iki mesthi ora linear. Lan yen cara kanggo nglawan overtraining (kemampuan generalisasi sing padha banget) jelas ora kalebu ing rencana artikel iki, mula ayo pindhah menyang titik kapindho kanthi luwih rinci. Kanggo nindakake iki, mung njawab pitakonan prasaja. Apa kemungkinan Vasya lan Fedya mbalekake utangan padha, kanthi njupuk faktor sing kita kenal? Saka sudut logika swara, mesthi ora, ora bisa. Dadi Vasya bakal mbayar 2.5% saka gaji saben sasi kanggo mbayar utang, lan Fedya - meh 27,8%. Uga ing grafik 2 "Klasifikasi klien" kita weruh yen Vasya luwih adoh saka garis sing misahake kelas tinimbang Fedya. Lan pungkasanipun, kita ngerti sing fungsi kanggo Vasya lan Fedya njupuk nilai beda: 4.24 kanggo Vasya lan 1.0 kanggo Fedya. Saiki, yen Fedya, umpamane, entuk urutan gedhene luwih akeh utawa njaluk utangan sing luwih cilik, mula kemungkinan kanggo mbayar utang kanggo Vasya lan Fedya bakal padha. Ing tembung liyane, katergantungan linear ora bisa diapusi. Lan yen kita bener ngetung rintangan , lan ora njupuk wong-wong mau metu saka udhara lancip, kita bisa kanthi aman ngomong sing nilai kita paling apik ngidini kita kanggo ngira kemungkinan mbayar maneh saka silihan dening saben nyilih, nanging wiwit kita sarujuk kanggo nganggep sing netepake koefisien ditindakake miturut kabeh aturan, mula kita bakal nganggep - koefisien ngidini kita menehi perkiraan sing luwih apik babagan kemungkinan :)
Nanging, kita digress. Ing bagean iki kita kudu ngerti carane vektor bobot ditemtokake , sing perlu kanggo netepake kemungkinan mbayar maneh silihan dening saben nyilih.
Ayo kita ringkes ngringkes karo apa arsenal kita golek rintangan :
1. Kita nganggep yen hubungan antarane variabel target (nilai prediksi) lan faktor sing mengaruhi asil kasebut linier. Kanggo alasan iki digunakake fungsi regresi linier apik , baris kang mbagi obyek (klien) menyang kelas и utawa (klien sing bisa mbayar utang lan sing ora bisa). Ing kasus kita, persamaan kasebut nduweni wujud .
2. Kita nggunakake fungsi invers logit apik kanggo nemtokake kemungkinan obyek sing kalebu kelas .
3. Kita nganggep set latihan kita minangka implementasine saka umum skema Bernoulli, yaiku, kanggo saben obyek digawe variabel acak, kang karo kemungkinan (dhewe kanggo saben obyek) njupuk nilai 1 lan kemungkinan - 0.
4. Kita ngerti apa sing kudu kita maksimalake fungsi kemungkinan sampel njupuk menyang akun faktor ditampa supaya sampel kasedhiya dadi paling masuk akal. Ing tembung liyane, kita kudu milih paramèter ing ngendi sampel bakal paling masuk akal. Ing kasus kita, parameter sing dipilih yaiku kemungkinan mbayar maneh utang , sing gumantung ing koefisien sing ora dingerteni . Dadi, kita kudu nemokake vektor bobot kasebut , ing ngendi kemungkinan sampel bakal maksimal.
5. We ngerti apa kanggo nggedhekake fungsi kemungkinan sampel bisa digunakake metode kemungkinan maksimum. Lan kita ngerti kabeh trik angel kanggo nggarap metode iki.
Iki carane dadi langkah multi-langkah :)
Saiki elinga yen ing wiwitan artikel kita pengin entuk rong jinis fungsi mundhut Kerugian Logistik gumantung carane kelas obyek ditetepake. Dadi kedadeyan yen ing masalah klasifikasi karo rong kelas, kelas kasebut diarani minangka и utawa . Gumantung ing notasi, output bakal duwe fungsi mundhut sing cocog.
Kasus 1. Klasifikasi obyek menyang и
Sadurungé, nalika nemtokake kemungkinan sampel, ing endi kemungkinan pambayaran utang dening peminjam diwilang adhedhasar faktor lan koefisien sing diwenehake. , kita nggunakake rumus:
Nyatane punika tegesipun fungsi respon logistik kanggo vektor bobot tartamtu
Banjur ora ana sing ngalangi kita nulis fungsi kemungkinan sampel kaya ing ngisor iki:
Iku kedadeyan sing kadhangkala angel kanggo sawetara analis anyar kanggo langsung ngerti carane fungsi iki bisa. Ayo goleki 4 conto singkat sing bakal mbusak kabeh:
1. yen (yaiku, miturut conto latihan, obyek kasebut kalebu kelas +1), lan algoritma kita nemtokake kemungkinan klasifikasi obyek menyang kelas padha karo 0.9, mula kemungkinan sampel iki bakal diitung kaya ing ngisor iki:
2. yen lan , banjur pitungan bakal kaya iki:
3. yen lan , banjur pitungan bakal kaya iki:
4. yen lan , banjur pitungan bakal kaya iki:
Cetha manawa fungsi kemungkinan bakal maksimal ing kasus 1 lan 3 utawa ing kasus umum - kanthi nilai sing ditebak kanthi bener babagan kemungkinan nemtokake obyek menyang kelas. .
Amarga kasunyatan sing nalika nemtokake kemungkinan nemtokake obyek kanggo kelas Kita mung ora ngerti koefisien , banjur kita bakal nggoleki. Kaya kasebut ing ndhuwur, iki minangka masalah optimasi sing pisanan kudu golek turunan saka fungsi kemungkinan babagan vektor bobot. . Nanging, pisanan nggawe akal kanggo nyederhanakake tugas kanggo awake dhewe: kita bakal golek turunan logaritma. fungsi kemungkinan.
Apa sawise logaritma, ing fungsi kesalahan logistik, kita ngganti tandha saka ing . Kabeh iku prasaja, amarga ing masalah kanggo netepake kualitas model iku umume kanggo nyilikake Nilai saka fungsi, kita pingan sisih tengen expression dening lan patut, tinimbang nggedhekake, saiki kita nyilikake fungsi.
Bener, sapunika, sadurunge mripatmu, fungsi mundhut digawe kanthi susah - Kerugian Logistik kanggo set latihan karo rong kelas: и .
Saiki, kanggo nemokake koefisien, kita mung kudu nemokake turunan fungsi kesalahan logistik banjur, nggunakake cara optimasi numerik, kayata turunan gradien utawa keturunan gradien stokastik, pilih koefisien sing paling optimal. . Nanging, diwenehi volume owahan saka artikel, iku ngajokaken kanggo nindakake diferensiasi ing dhewe, utawa mbok menawa iki bakal dadi topik kanggo artikel sabanjuré karo akèh aritmetika tanpa conto rinci.
Kasus 2. Klasifikasi obyek menyang и
Pendekatan ing kene bakal padha karo kelas и , nanging path dhewe kanggo output saka fungsi mundhut Kerugian Logistik, bakal luwih hiasan. Ayo dadi miwiti. Kanggo fungsi kemungkinan kita bakal nggunakake operator "Yen ... banjur ...". Sing, yen Objek th kalebu kelas , banjur kanggo ngetung kamungkinan saka sampel kita nggunakake probabilitas , yen obyek belongs kanggo kelas , banjur kita ngganti menyang kemungkinan . Iki minangka fungsi kemungkinan:
Ayo kita njlèntrèhaké ing driji cara kerjane. Ayo nimbang 4 kasus:
1. yen и , banjur kemungkinan sampling bakal "go"
2. yen и , banjur kemungkinan sampling bakal "go"
3. yen и , banjur kemungkinan sampling bakal "go"
4. yen и , banjur kemungkinan sampling bakal "go"
Cetha yen ing kasus 1 lan 3, nalika probabilitas ditemtokake kanthi bener dening algoritma, fungsi kemungkinan bakal maksimal, sing, iki persis apa kita wanted kanggo njaluk. Nanging, pendekatan iki cukup rumit lan sabanjure kita bakal nimbang notasi sing luwih kompak. Nanging pisanan, ayo logaritma fungsi kemungkinan kanthi owah-owahan tandha, amarga saiki kita bakal nyilikake.
Ayo diganti wae ekspresi :
Sederhanakan istilah sing tepat miturut logaritma nggunakake teknik aritmetika sing prasaja lan entuk:
Saiki wayahe nyingkirake operator "Yen ... banjur ...". Elinga yen nalika obyek belongs kanggo kelas , banjur ing ekspresi ing logaritma, ing denominator, diunggahake menyang daya , yen obyek belongs kanggo kelas , banjur $e$ diunggahake dadi daya . Mula, notasi kanggo gelar bisa disederhanakake kanthi nggabungake loro kasus kasebut dadi siji: ... Banjur fungsi kesalahan logistik bakal njupuk formulir:
Sesuai karo aturan logaritma, kita nguripake pecahan lan sijine tandha ""(minus) kanggo logaritma, kita entuk:
Punika fungsi mundhut mundhut logistik, sing digunakake ing set latihan kanthi obyek sing ditugasake ing kelas: и .
Inggih, ing titik iki aku ninggalake lan kita nganakke artikel.
Bahan bantu
1. Sastra
1) Analisis regresi Applied / N. Draper, G. Smith - 2nd ed. – M.: Keuangan lan Statistik, 1986 (terjemahan saka basa Inggris)
2) Teori probabilitas lan statistik matematika / V.E. Gmurman - ed. - M.: SMA, 9
3) Teori probabilitas / N.I. Chernova - Novosibirsk: Universitas Negeri Novosibirsk, 2007
4) Analisis bisnis: saka data kanggo kawruh / Paklin N. B., Oreshkov V. I. - 2nd ed. — St. Petersburg: Peter, 2013
5) Ilmu Data Ilmu data saka awal / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Statistik praktis kanggo spesialis Ilmu 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)
8)
Source: www.habr.com