Dina artikel ieu kami baris nganalisis itungan téoritis transformasi fungsi régrési liniér в fungsi transformasi logit tibalik (lain disebut fungsi respon logistik). Lajeng, ngagunakeun arsenal métode likelihood maksimum, Luyu jeung model regression logistik, urang diturunkeun fungsi leungitna Leungitna Logistik, atawa dina basa sejen, urang bakal nangtukeun hiji fungsi nu parameter tina véktor beurat dipilih dina model régrési logistik. .
Outline artikel:
- Hayu urang ngulang hubungan linier antara dua variabel
- Hayu urang ngaidentipikasi kabutuhan transformasi fungsi régrési liniér в fungsi respon logistik
- Hayu urang ngalaksanakeun transformasi jeung kaluaran fungsi respon logistik
- Hayu urang coba ngartos naha metoda kuadrat sahenteuna goréng lamun milih parameter fungsi Leungitna Logistik
- Urang make métode likelihood maksimum pikeun nangtukeun fungsi pilihan parameter :
5.1. Kasus 1: fungsi Leungitna Logistik pikeun objék kalawan designations kelas 0 и 1:
5.2. Kasus 2: fungsi Leungitna Logistik pikeun objék kalawan designations kelas -1 и +1:
Artikelna pinuh ku conto-conto saderhana dimana sadaya itungan gampang dilakukeun sacara lisan atanapi dina kertas; dina sababaraha kasus, kalkulator tiasa diperyogikeun. Janten siap :)
Artikel ieu utamana dimaksudkeun pikeun élmuwan data jeung tingkat pangaweruh awal dina dasar machine learning.
Tulisan éta ogé bakal nyayogikeun kode pikeun ngagambar grafik sareng itungan. Sadaya kode ditulis dina basa python 2.7. Hayu atuh ngajelaskeun sateuacanna ngeunaan "novelty" tina versi dipaké - ieu téh salah sahiji syarat pikeun nyokot kursus well-dipikawanoh ti. Yandex dina platform pendidikan online anu sami terkenal Coursera, jeung, salaku salah sahiji bisa nganggap, bahan ieu disiapkeun dumasar kana kursus ieu.
01. kagumantungan lempeng-garis
Éta cukup lumrah pikeun naroskeun patarosan - naon hubunganana gumantungna linier sareng régrési logistik?
Ieu basajan! Regresi logistik mangrupikeun salah sahiji modél anu kalebet kana klasifikasi linier. Dina kecap basajan, tugas hiji classifier linier pikeun ngaduga nilai target tina variabel (regressors) . Hal ieu dipercaya yén gumantungna antara ciri jeung nilai sasaran liniér. Kituna nami classifier - linier. Sacara kasar, modél régrési logistik dumasar kana anggapan yén aya hubungan linier antara karakteristik. jeung nilai sasaran . Ieu sambungan.
Aya conto munggaran di studio, sarta éta, leres, ngeunaan gumantungna rectilinear tina kuantitas keur ditalungtik. Dina prosés nyiapkeun tulisan, kuring mendakan conto anu parantos ngajantenkeun seueur jalma - gumantungna arus kana tegangan ("Analisis régrési terapan", N. Draper, G. Smith). Urang bakal ningali di dieu ogé.
Saluyu sareng Hukum Ohm:
dimana - kakuatan ayeuna, - Voltaseu, - lalawanan.
Lamun urang teu nyaho Hukum Ohm, mangka urang bisa manggihan gumantungna sacara émpiris ku cara ngarobah jeung ngukur , bari ngadukung dibereskeun. Teras we bakal ningali yén grafik gumantungna от méré garis leuwih atawa kurang lempeng ngaliwatan asal. Urang nyebutkeun "leuwih atawa kirang" sabab, sanajan hubungan sabenerna akurat, ukuran urang bisa ngandung kasalahan leutik, sarta ku kituna titik dina grafik bisa jadi teu ragrag persis dina garis, tapi bakal sumebar di sabudeureun eta acak.
Grafik 1 "Katergantungan" от »
Kode gambar bagan
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. Kabutuhan pikeun transformasi persamaan régrési linier
Hayu urang nempo conto sejen. Hayu urang ngabayangkeun yén urang digawé di bank jeung tugas urang pikeun nangtukeun likelihood tina peminjam repaying injeuman gumantung kana sababaraha faktor. Pikeun nyederhanakeun tugas, urang ngan ukur nganggap dua faktor: gaji bulanan peminjam sareng jumlah pamayaran pinjaman bulanan.
Tugasna pisan kondisional, tapi kalayan conto ieu urang tiasa ngartos naha éta henteu cekap dianggo fungsi régrési liniér, sarta ogé manggihan naon transformasi kudu dilaksanakeun kalawan fungsi.
Hayu urang balik deui ka conto. Hal ieu dipikaharti yén leuwih luhur gaji, beuki peminjam bakal bisa allocate bulanan keur repay injeuman. Dina waktu nu sarua, pikeun rentang gaji tangtu hubungan ieu bakal rada linier. Salaku conto, hayu urang nyandak kisaran gaji ti 60.000 RUR dugi ka 200.000 RUR sareng nganggap yén dina kisaran gaji anu ditangtukeun, gumantungna ukuran pamayaran bulanan dina ukuran gaji linier. Hayu urang nyebutkeun yén pikeun rentang dieusian tina gajih ieu wangsit yén babandingan gaji-to-mayar teu bisa turun handap 3 jeung peminjam kudu tetep 5.000 RUR dina cadangan. Sarta ngan dina hal ieu, urang bakal nganggap yén peminjam bakal repay injeuman ka bank. Lajeng, persamaan régrési linier bakal nyandak bentuk:
di mana , , , - gaji - peminjam ka- - mayar injeuman -th peminjam.
Ngaganti gaji sareng pembayaran injeuman sareng parameter tetep kana persamaan Anjeun tiasa mutuskeun pikeun ngaluarkeun atanapi nolak pinjaman.
Ningali payun, urang dicatet yén, kalayan parameter anu dipasihkeun fungsi régrési liniér, dipaké dina fungsi respon logistik bakal ngahasilkeun nilai badag anu bakal ngahesekeun itungan pikeun nangtukeun probabiliti repayment injeuman. Ku alatan éta, diusulkeun pikeun ngurangan koefisien urang, hayu urang nyebutkeun, ku 25.000 kali. Transformasi dina koefisien ieu moal ngarobih kaputusan pikeun ngaluarkeun pinjaman. Hayu urang nginget titik ieu pikeun mangsa nu bakal datang, tapi ayeuna, sangkan eta malah jelas naon urang ngobrol ngeunaan, hayu urang nganggap kaayaan kalawan tilu peminjam poténsial.
Tabél 1 "Potensi peminjam"
Kode pikeun ngahasilkeun tabél
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']]
Luyu sareng data dina tabél, Vasya, kalayan gaji 120.000 RUR, hoyong nampi pinjaman supados anjeunna tiasa mayar deui bulanan dina 3.000 RUR. Kami ditangtukeun yén pikeun nyatujuan injeuman, gaji Vasya kedah langkung ti tilu kali jumlah pamayaran, sareng kedah aya 5.000 RUR sésana. Vasya nyumponan sarat ieu: . Malah 106.000 RUR tetep. Najan kanyataan yén nalika ngitung kami geus ngurangan odds 25.000 kali, hasilna sami - injeuman tiasa disatujuan. Fedya ogé bakal nampi injeuman, tapi Lesha, sanaos kanyataan yén anjeunna nampi anu paling seueur, kedah ngeureunkeun napsu na.
Hayu urang ngagambar grafik pikeun hal ieu.
Bagan 2 "Klasifikasi peminjam"
Kode pikeun ngagambar 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()
Jadi, garis lempeng urang, diwangun luyu jeung fungsi , misahkeun "goréng" borrowers ti "alus" leuwih. Jalma peminjam anu kahayangna teu coincide jeung kamampuhan maranéhanana nyaéta luhur garis (Lesha), sedengkeun jalma anu, nurutkeun parameter model urang, bisa repay injeuman anu handap garis (Vasya na Fedya). Dina basa sejen, urang bisa nyebutkeun kieu: garis langsung urang ngabagi borrowers kana dua kelas. Hayu urang denote aranjeunna kieu: ka kelas Kami bakal mengklasifikasikan peminjam anu paling dipikaresep pikeun mayar deui pinjaman salaku atawa Kami bakal kalebet peminjam anu paling dipikaresep moal tiasa mayar deui pinjaman.
Hayu urang nyimpulkeun conclusions tina conto basajan ieu. Hayu urang nyandak hiji titik jeung, ngagantikeun koordinat titik kana persamaan garis pakait , pertimbangkeun tilu pilihan:
- Lamun titik dina garis jeung urang napelkeun ka kelas , lajeng nilai fungsi bakal positif ti ka . Ieu ngandung harti yén urang bisa nganggap yén kamungkinan repaying injeuman aya dina . Nu leuwih gede nilai fungsi, nu leuwih luhur probabiliti.
- Lamun titik hiji luhureun garis jeung urang napelkeun ka kelas atawa , mangka nilai fungsi bakal négatip tina ka . Teras we bakal nganggap yén kamungkinan repayment hutang aya dina jeung, nu leuwih gede nilai mutlak fungsi, nu leuwih luhur kapercayaan urang.
- Titikna dina garis lempeng, dina wates antara dua kelas. Dina hal ieu, nilai fungsi bakal sarua jeung kamungkinan repaying injeuman sarua jeung .
Ayeuna, hayu urang ngabayangkeun yén urang teu boga dua faktor, tapi puluhan, teu tilu, tapi rébuan borrowers. Lajeng tinimbang hiji garis lempeng urang bakal boga m-diménsi pesawat jeung koefisien kami moal dicokot kaluar tina hawa ipis, tapi diturunkeun nurutkeun sagala aturan, sarta dina dasar akumulasi data on borrowers anu geus atawa teu repaid injeuman. Sareng leres, perhatikeun yén urang ayeuna milih peminjam nganggo koefisien anu parantos dipikanyaho . Kanyataanna, tugas modél régrési logistik nyaéta pikeun nangtukeun parameter , di mana nilai fungsi leungitna Leungitna Logistik bakal condong ka minimum. Tapi ngeunaan kumaha vektor diitung , urang bakal manggihan leuwih dina bagian 5 artikel. Samentawis waktos, urang uih deui ka tanah anu dijanjikeun - ka bankir sareng tilu klienna.
Hatur nuhun kana fungsi urang terang saha anu tiasa dipasihan pinjaman sareng saha anu kedah ditolak. Tapi anjeun teu bisa indit ka sutradara kalayan informasi misalna, sabab hayang meunang ti kami kamungkinan unggal peminjam repaying injeuman. Naon anu kedah dilakukeun? Jawabanna basajan - urang kedah kumaha waé ngarobih fungsina , anu nilaina aya dina kisaran kana fungsi anu nilaina bakal aya dina kisaran . Jeung fungsi saperti aya, mangka disebut fungsi respon logistik atanapi inverse-logit transformasi. Papanggih:
Hayu urang tingali step by step kumaha gawéna fungsi respon logistik. Catet yén urang bakal leumpang dina arah nu lalawanan, i.e. urang bakal nganggap yen urang terang nilai probabiliti, nu perenahna di rentang ti ka lajeng urang bakal "unwind" nilai ieu sakabeh rentang angka tina ka .
03. Urang diturunkeun fungsi respon logistik
Lengkah 1. Ngarobah nilai probabiliti kana rentang
Salila transformasi fungsi в fungsi respon logistik Kami bakal ngantepkeun analis kiridit nyalira sareng nyandak wisata ka bookmakers. Taya, tangtosna, urang moal nempatkeun bets, sagala anu dipikaresep ku urang aya harti babasan, contona, kasempetan 4 ka 1. odds, wawuh ka sadaya bettors, nyaeta babandingan "sukses" pikeun ". kagagalan”. Dina istilah probabiliti, odds mangrupakeun probabiliti kajadian kajadian dibagi ku probabiliti kajadian teu lumangsung. Hayu urang nyerat rumus pikeun kasempetan kajadian :
dimana - kamungkinan kajadian, - kamungkinan kajadian NOT lumangsung
Contona, upami kamungkinan yén kuda ngora, kuat tur playful nicknamed "Veterok" bakal ngéléhkeun hiji awéwé heubeul heubeul jeung flabby ngaranna "Matilda" dina lomba sarua jeung. , lajeng Chances sukses pikeun "Veterok" bakal к jeung sabalikna, nyaho odds, eta moal hésé pikeun urang ngitung probabiliti :
Ku kituna, urang geus diajar "narjamahkeun" probabiliti kana Chances, nu nyokot nilai tina ka . Hayu urang nyandak hiji hambalan deui jeung diajar "narjamahkeun" probabiliti kana sakabéh garis angka ti ka .
Lengkah 2. Ngarobah nilai probabiliti kana rentang
Léngkah ieu saderhana pisan - hayu urang nyandak logaritma odds kana dasar nomer Euler. sarta kami meunang:
Ayeuna urang terang yen , teras ngitung nilai bakal saderhana pisan sareng, komo deui, kedah positip: . Ieu leres.
Kusabab panasaran, hayu urang pariksa kumaha lamun , teras urang ngaharepkeun ningali nilai négatip . Urang pariksa: . Éta leres.
Ayeuna urang terang kumaha carana ngarobah nilai probabiliti tina ka sapanjang sakabéh garis angka ti ka . Dina lengkah saterusna urang bakal ngalakukeun sabalikna.
Pikeun ayeuna mah, urang dicatet yén luyu jeung aturan logaritma, nyaho nilai fungsi , anjeun tiasa ngitung odds:
Metoda ieu nangtukeun odds bakal mangpaat pikeun urang dina hambalan salajengna.
Lengkah 3. Hayu urang turunkeun rumus pikeun nangtukeun
Janten urang diajar, terang , manggihan nilai fungsi . Sanajan kitu, dina kanyataanana, urang kudu persis sabalikna - nyaho nilai manggih . Jang ngalampahkeun ieu, hayu urang balikkeun kana konsép sapertos fungsi odds tibalik, numutkeun mana:
Dina artikel urang moal diturunkeun rumus di luhur, tapi urang bakal pariksa deui ngagunakeun angka tina conto di luhur. Urang terang yén kalayan odds 4 ka 1 (), probabiliti kajadian éta 0.8 (). Hayu urang ngadamel substitusi: . Ieu coincides jeung itungan urang dilaksanakeun saméméhna. Hayu urang ngaléngkah.
Dina hambalan panungtungan kami deduced éta , nu hartina anjeun bisa nyieun substitusi dina fungsi odds tibalik. Urang meunang:
Bagikeun duanana numerator jeung pangbagi ku , Saterusna:
Bisi wae, pikeun mastikeun yén urang teu nyieun kasalahan mana, urang bakal ngalakukeun hiji deui cek leutik. Dina hambalan 2, urang keur ditangtukeun éta . Lajeng, ngaganti nilai kana fungsi respon logistik, urang ngaharepkeun meunang . Urang ngagantikeun sarta meunang:
ucapan salamet, dear maca, kami geus ngan diturunkeun tur nguji fungsi respon logistik. Hayu urang nempo grafik tina fungsi.
Grafik 3 "Fungsi réspon logistik"
Kode pikeun ngagambar 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()
Dina literatur anjeun ogé tiasa mendakan nami fungsi ieu salaku fungsi sigmoid. Grafik éta jelas nunjukkeun yén parobahan utama dina kamungkinan obyék kagolong kana kelas lumangsung dina rentang anu relatif leutik. , wae ti ka .
Abdi nyarankeun uih deui ka analis kiridit kami sareng ngabantosan anjeunna ngitung kamungkinan pamayaran pinjaman, upami henteu anjeunna résiko ditinggalkeun tanpa bonus :)
Tabél 2 "Potensi peminjam"
Kode pikeun ngahasilkeun tabél
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']]
Janten, kami parantos nangtukeun kamungkinan pamayaran pinjaman. Sacara umum, ieu sigana leres.
Mémang, kamungkinan yén Vasya, kalayan gaji 120.000 RUR, bakal tiasa masihan 3.000 RUR ka bank unggal bulan caket 100%. Ku jalan kitu, urang kudu ngarti yén bank bisa ngaluarkeun injeuman ka Lesha lamun kawijakan bank nyadiakeun, contona, pikeun lending ka klien kalawan kamungkinan repayment injeuman leuwih ti, sebutkeun, 0.3. Ngan dina hal ieu bank bakal nyiptakeun cadangan anu langkung ageung pikeun kamungkinan karugian.
Ogé kudu dicatet yén babandingan gaji-to-pamayaran sahenteuna 3 sarta kalawan margin of 5.000 RUR dicokot tina siling. Ku alatan éta, urang teu bisa ngagunakeun véktor beurat dina bentuk aslina . Urang peryogi pisan ngirangan koefisien, sareng dina hal ieu urang ngabagi unggal koéfisién ku 25.000, nyaéta, dina hakekatna, urang nyaluyukeun hasilna. Tapi ieu dilakukeun khusus pikeun nyederhanakeun pamahaman materi dina tahap awal. Dina kahirupan, urang moal kedah invent sareng nyaluyukeun koefisien, tapi mendakanana. Dina bagian saterusna artikel urang bakal diturunkeun persamaan jeung nu parameter dipilih .
04. Metode kuadrat pangleutikna pikeun nangtukeun véktor beurat dina fungsi respon logistik
Kami parantos terang metode ieu pikeun milih véktor beurat kumaha Métode Kuadrat Leutik (LSM) sarta dina kanyataanana, naha urang teu lajeng ngagunakeun eta dina masalah klasifikasi binér? Mémang, teu aya anu nyegah anjeun nganggo MNC, ngan metoda ieu dina masalah klasifikasi méré hasil nu kirang akurat ti Leungitna Logistik. Aya dasar téoritis pikeun ieu. Hayu urang nempo hiji conto basajan.
Hayu urang nganggap yén modél urang (nganggo MSE и Leungitna Logistik) parantos ngamimitian milih véktor beurat sarta kami ngeureunkeun itungan dina sababaraha hambalan. Henteu janten masalah naha di tengah, di ahir atanapi di awal, hal utama nyaéta yén urang parantos ngagaduhan sababaraha nilai tina véktor beurat sareng hayu urang nganggap yén dina léngkah ieu, véktor beurat. pikeun duanana model euweuh béda. Lajeng nyandak beurat hasilna tur ngagantikeun kana fungsi respon logistik () pikeun sababaraha obyék anu milik kelas . Urang nalungtik dua kasus nalika, luyu jeung véktor nu dipilih tina beurat, model urang pisan salah kaprah jeung sabalikna - model yakin pisan yén objék milik kelas. . Hayu urang tingali denda naon anu bakal dikaluarkeun nalika nganggo MNC и Leungitna Logistik.
Kode keur ngitung hukuman gumantung kana fungsi leungitna dipaké
# класс объекта
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 - modél napelkeun hiji obyék ka kelas kalawan kamungkinan 0,01
Hukuman dina pamakéan MNC bakal:
Hukuman dina pamakéan Leungitna Logistik bakal:
Hiji kasus kapercayaan kuat - modél napelkeun hiji obyék ka kelas kalawan kamungkinan 0,99
Hukuman dina pamakéan MNC bakal:
Hukuman dina pamakéan Leungitna Logistik bakal:
conto ieu illustrates ogé yén bisi kasalahan kotor fungsi leungitna Leungitna Log penalizes model nyata leuwih ti MSE. Hayu urang ayeuna ngartos naon kasang tukang teoritis ngagunakeun fungsi leungitna Leungitna Log dina masalah klasifikasi.
05. Metoda likelihood maksimum sarta regression logistik
Sakumaha anu dijanjikeun di awal, tulisanna pinuh ku conto-conto saderhana. Di studio aya conto sejen tur sémah heubeul - borrowers bank: Vasya, Fedya na Lesha.
Bisi wae, sateuacan ngembangkeun conto, hayu atuh ngingetkeun yén dina kahirupan urang keur kaayaan sampel latihan rébuan atawa jutaan objék kalawan puluhan atawa ratusan fitur. Sanajan kitu, di dieu angka nu dicokot ambéh maranéhanana bisa gampang pas kana sirah hiji élmuwan data novice.
Hayu urang balik deui ka conto. Hayu urang ngabayangkeun yén diréktur bank mutuskeun pikeun ngaluarkeun injeuman ka dulur merlukeun, sanajan kanyataan yén algoritma ngawartoskeun anjeunna teu ngaluarkeun ka Lesha. Sareng ayeuna parantos cekap waktos sareng urang terang mana ti tilu pahlawan anu mayar deui pinjaman sareng mana anu henteu. Naon anu dipiharep: Vasya sareng Fedya mayar deui pinjaman, tapi Lesha henteu. Ayeuna hayu urang bayangkeun yén hasil ieu bakal janten conto latihan anyar pikeun urang sareng, dina waktos anu sami, saolah-olah sadaya data ngeunaan faktor anu mangaruhan kamungkinan mayar deui pinjaman (gaji peminjam, ukuran pembayaran bulanan) parantos ngaleungit. Lajeng, intuitif, urang bisa nganggap yén unggal peminjam katilu teu repay injeuman ka bank, atawa dina basa sejen, kamungkinan peminjam salajengna repaying injeuman. . Asumsi intuitif ieu gaduh konfirmasi téoritis sareng dumasar kana métode likelihood maksimum, mindeng dina sastra disebut prinsip kamungkinan maksimum.
Kahiji, hayu urang acquainted jeung aparatur konseptual.
Sampling likelihood nyaeta probabiliti pikeun meunangkeun persis misalna sampel, meunangkeun persis observasi / hasil, i.e. produk tina probabiliti pikeun meunangkeun unggal hasil sampel (contona, naha injeuman Vasya, Fedya jeung Lesha ieu repaid atanapi henteu repaid dina waktos anu sareng).
Fungsi kamungkinan ngahubungkeun kamungkinan sampel kana nilai-nilai parameter distribusi.
Dina hal urang, sampel latihan mangrupakeun skéma Bernoulli digeneralisasi, nu variabel acak nyokot ukur dua nilai: atawa . Ku alatan éta, likelihood sampel bisa ditulis salaku fungsi likelihood tina parameter saperti kieu:
Entri di luhur bisa dihartikeun kieu. Kamungkinan gabungan yén Vasya sareng Fedya bakal mayar deui pinjaman sami sareng , kamungkinan yén Lesha moal repay injeuman sarua jeung (sabab éta BUKAN pamayaran injeuman anu lumangsung), ku kituna kamungkinan gabungan tina tilu kajadian sarua .
Metoda kamungkinan maksimum mangrupakeun metoda keur estimasi parameter kanyahoan ku ngamaksimalkeun fungsi likelihood. Dina hal urang, urang kedah mendakan nilai sapertos kitu , di mana ngahontal maksimum na.
Dimana pamanggih sabenerna asalna tina - néangan nilai parameter kanyahoan di mana fungsi likelihood ngahontal maksimum hiji? Asal muasal ide batang tina gagasan yén sampel mangrupa hiji-hijina sumber pangaweruh sadia pikeun urang ngeunaan populasi. Sagalana urang terang ngeunaan populasi digambarkeun dina sampel. Ku alatan éta, sagala bisa urang nyebutkeun yén sampel mangrupa cerminan paling akurat tina populasi sadia pikeun urang. Ku alatan éta, urang kedah milarian parameter dimana sampel anu sayogi janten paling kamungkinan.
Jelas, urang keur kaayaan hiji masalah optimasi nu urang kudu neangan titik ekstrim tina hiji fungsi. Pikeun manggihan titik extremum, perlu mertimbangkeun kaayaan urutan kahiji, nyaeta, equate turunan fungsi ka enol jeung ngajawab persamaan nu aya kaitannana ka parameter dipikahoyong. Nanging, milarian turunan produk tina sajumlah ageung faktor tiasa janten tugas anu panjang; pikeun ngahindarkeun ieu, aya téknik khusus - ngalih ka logaritma. fungsi likelihood. Naha transisi sapertos kitu mungkin? Hayu urang nengetan kanyataan yén urang teu pilari extremum sahiji fungsi sorangan, sarta titik extremum, nyaeta, nilai parameter kanyahoan , di mana ngahontal maksimum na. Lamun pindah ka logaritma, titik extremum teu robah (sanajan extremum sorangan bakal béda), sabab logaritma mangrupa fungsi monotonik.
Hayu urang, luyu jeung di luhur, terus ngamekarkeun conto urang jeung gajian ti Vasya, Fedya jeung Lesha. Kahiji hayu urang ngaléngkah ka logaritma tina fungsi likelihood:
Ayeuna urang bisa kalayan gampang ngabedakeun ekspresi ku :
Sarta pamustunganana, mertimbangkeun kaayaan urutan kahiji - urang equate turunan tina fungsi jeung nol:
Ku kituna, estimasi intuitif kami ngeunaan kamungkinan repayment injeuman ieu téoritis diyakinkeun.
Hebat, tapi naon anu kedah urang laksanakeun sareng inpormasi ieu ayeuna? Upami urang nganggap yén unggal peminjam katilu henteu ngabalikeun artos ka bank, maka anu terakhir pasti bakal bangkrut. Éta katuhu, tapi ngan lamun assessing kamungkinan repayment injeuman sarua jeung Kami henteu nganggap faktor anu mangaruhan pamayaran injeuman: gaji peminjam sareng ukuran pamayaran bulanan. Hayu urang émut yén urang saacanna ngitung kamungkinan pamayaran pinjaman ku unggal klien, kalayan tumut kana faktor anu sami. Éta logis yén urang diala probabiliti béda ti sarua konstan .
Hayu urang ngartikeun kamungkinan sampel:
Kode keur ngitung likelihoods 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)
Sampel likelihood dina nilai konstan :
Sampel likelihood nalika ngitung probabiliti pamayaran injeuman nyandak kana faktor akun :
Kamungkinan sampel kalawan probabiliti diitung gumantung kana faktor tétéla leuwih luhur batan likelihood kalawan nilai probabiliti konstan. Naon ieu hartosna? Ieu nunjukkeun yén pangaweruh ngeunaan faktor ngamungkinkeun pikeun milih leuwih akurat kamungkinan repayment injeuman pikeun tiap klien. Ku alatan éta, nalika ngaluarkeun injeuman salajengna, éta bakal leuwih bener ngagunakeun modél diusulkeun dina tungtung bagian 3 artikel pikeun assessing probabiliti repayment hutang.
Tapi teras, upami urang hoyong maksimalkeun fungsi kamungkinan sampel, teras naha henteu nganggo sababaraha algoritma anu bakal ngahasilkeun kamungkinan pikeun Vasya, Fedya sareng Lesha, contona, masing-masing sami sareng 0.99, 0.99 sareng 0.01. Panginten algoritma sapertos kitu bakal ngalaksanakeun saé dina conto latihan, sabab éta bakal ngadeukeutkeun nilai kamungkinan sampel , tapi, mimitina, algoritma sapertos kitu bakal paling dipikaresep gaduh kasusah sareng kamampuan generalisasi, sareng kadua, algoritma ieu pasti moal linier. Sareng upami metode pikeun merangan overtraining (kamampuhan generalisasi anu sami-sami lemah) jelas henteu kalebet dina rencana tulisan ieu, maka hayu urang ngaliwat titik kadua sacara langkung rinci. Jang ngalampahkeun ieu, ngan ngajawab patarosan basajan. Naha kamungkinan Vasya sareng Fedya mayar deui injeuman sami, kalayan tumut kana faktor anu dipikanyaho ku urang? Tina sudut pandang logika sora, tangtu henteu, teu bisa. Jadi Vasya bakal mayar 2.5% tina gaji na per bulan pikeun repay injeuman, sarta Fedya - ampir 27,8%. Ogé dina grafik 2 "Klasifikasi klien" urang nempo yén Vasya jauh leuwih jauh ti garis misahkeun kelas ti Fedya. Sarta pamustunganana, urang terang yén fungsi pikeun Vasya na Fedya nyokot nilai béda: 4.24 pikeun Vasya jeung 1.0 pikeun Fedya. Ayeuna, upami Fedya, contona, kéngingkeun pesenan ageung atanapi naroskeun pinjaman anu langkung alit, maka kamungkinan mayar deui pinjaman pikeun Vasya sareng Fedya bakal sami. Dina basa sejen, gumantungna linier teu bisa fooled. Tur upami urang sabenerna diitung odds , sarta henteu nyandak aranjeunna kaluar tina hawa ipis, urang aman bisa disebutkeun yen nilai urang pangalusna ngidinan urang keur estimasi probabiliti repayment tina injeuman ku unggal peminjam, tapi saprak urang sapuk nganggap yén tekad tina koefisien dilumangsungkeun nurutkeun sagala aturan, mangka urang bakal nganggap kitu - koefisien kami ngidinan kami pikeun masihan estimasi hadé tina probabiliti :)
Sanajan kitu, urang digress. Dina bagian ieu urang kedah ngartos kumaha vektor beurat ditangtukeun , nu diperlukeun pikeun assess kamungkinan repayment tina injeuman ku unggal peminjam.
Hayu urang sakeudeung nyimpulkeun sareng arsenal naon anu urang milarian odds :
1. Urang nganggap yén hubungan antara variabel udagan (nilai prediksi) sareng faktor anu mangaruhan hasilna linier. Ku sabab kitu eta dipaké fungsi régrési liniér bageur , garis nu ngabagi objék (klien) kana kelas и atawa (klien anu sanggup mayar deui pinjaman sareng anu henteu). Dina kasus urang, persamaan boga bentuk .
2. Kami nganggo fungsi logit tibalik bageur pikeun nangtukeun probabiliti hiji obyék milik kelas .
3. Kami nganggap set latihan urang salaku palaksanaan digeneralisasi Skéma Bernoulli, nyaeta, pikeun tiap objék dihasilkeun variabel acak, nu mibanda probabiliti (sorangan pikeun tiap obyék) nyokot nilai 1 sarta kalawan probabiliti - 0.
4. Urang terang naon urang kudu maksimalkeun pungsi fungsi kamungkinan sampel merhatikeun faktor anu ditampi supados sampel anu sayogi janten paling masuk akal. Dina basa sejen, urang kudu milih parameter di mana sampel bakal paling masuk akal. Dina kasus urang, parameter anu dipilih nyaéta kamungkinan pamayaran pinjaman , anu dina gilirannana gumantung kana koefisien kanyahoan . Janten urang kedah milarian véktor beurat sapertos kitu , dimana kamungkinan sampel bakal maksimal.
5. Urang terang naon ngamaksimalkeun fungsi kamungkinan sampel anjeun bisa make métode likelihood maksimum. Sareng urang terang sadayana trik anu rumit pikeun dianggo sareng metode ieu.
Ieu kumaha tétéla janten sababaraha léngkah :)
Ayeuna émut yén dina awal tulisan kami hoyong nurunkeun dua jinis fungsi leungitna Leungitna Logistik gumantung kana kumaha kelas objék ditunjuk. Kajadian éta dina masalah klasifikasi sareng dua kelas, kelasna dilambangkeun salaku и atawa . Gumantung kana notasi, kaluaran bakal boga fungsi leungitna pakait.
Pasualan 1. Klasifikasi objék kana и
Sateuacanna, nalika nangtoskeun kamungkinan conto, dimana kamungkinan pamayaran hutang ku peminjam diitung dumasar kana faktor sareng koéfisién anu dipasihkeun. , kami nerapkeun rumus:
Sabenerna nyaeta hartina fungsi respon logistik pikeun véktor tina beurat
Teras teu aya anu ngahalangan urang nyerat fungsi kamungkinan conto sapertos kieu:
Ieu kajadian nu kadang hese sababaraha analis novice langsung ngartos kumaha fungsi ieu jalan. Hayu urang tingali 4 conto pondok anu bakal mupus sadayana:
1. upami (ie, nurutkeun sampel latihan, obyék milik kelas +1), sarta algoritma urang nangtukeun probabiliti ngagolongkeun hiji obyék ka kelas sarua jeung 0.9, maka sapotong ieu kamungkinan sampel bakal diitung saperti kieu:
2. upami jeung , teras itungan bakal sapertos kieu:
3. upami jeung , teras itungan bakal sapertos kieu:
4. upami jeung , teras itungan bakal sapertos kieu:
Éta écés yén fungsi likelihood bakal maksimal dina kasus 1 sareng 3 atanapi dina kasus umum - kalayan nilai anu ditebak leres tina probabiliti napelkeun obyék ka kelas. .
Alatan kanyataan yén nalika nangtukeun kamungkinan assigning hiji obyék ka kelas Urang ngan teu nyaho koefisien , teras urang milarian aranjeunna. Sakumaha didadarkeun di luhur, ieu masalah optimasi nu mimitina urang kudu neangan turunan tina fungsi likelihood nu aya kaitannana ka véktor beurat. . Nanging, mimitina masuk akal pikeun nyederhanakeun tugas pikeun diri urang sorangan: urang bakal milarian turunan logaritma. fungsi likelihood.
Naha sanggeus logaritma, di fungsi kasalahan logistik, urang robah tanda tina dina . Sadayana saderhana, sabab dina masalah penilaian kualitas modél biasana ngaminimalkeun nilai fungsi, urang ngalikeun sisi katuhu ekspresi ku sarta sasuai, tinimbang maximizing, ayeuna urang ngaleutikan fungsi.
Sabenerna, ayeuna, saméméh panon anjeun, fungsi leungitna ieu painstakingly diturunkeun - Leungitna Logistik pikeun set latihan sareng dua kelas: и .
Ayeuna, pikeun manggihan koefisien, urang ngan perlu manggihan turunan fungsi kasalahan logistik teras, nganggo metode optimasi numerik, sapertos turunan gradién atanapi turunan gradién stokastik, pilih koefisien anu paling optimal. . Tapi, tinangtu volume considerable artikel, éta diusulkeun pikeun ngalaksanakeun diferensiasi sorangan, atawa meureun ieu bakal topik pikeun artikel salajengna kalawan loba arithmetic tanpa conto lengkep misalna.
Pasualan 2. Klasifikasi objék kana и
Pendekatan di dieu bakal sami sareng kelas и , Tapi jalur sorangan pikeun kaluaran fungsi leungitna Leungitna Logistik, bakal leuwih ornate. Hayu urang ngamimitian. Pikeun fungsi likelihood urang bakal ngagunakeun operator "lamun... tuluy..."... Maksudna, lamun Obyék th kaasup kana kelas , lajeng keur ngitung likelihood tina sampel urang ngagunakeun probabiliti , lamun obyék milik kelas , lajeng urang ngagantikeun kana likelihood . Ieu mangrupikeun fungsi kamungkinan:
Hayu urang ngajelaskeun dina ramo urang kumaha gawéna. Hayu urang nganggap 4 kasus:
1. upami и , maka kamungkinan sampling bakal "balik"
2. upami и , maka kamungkinan sampling bakal "balik"
3. upami и , maka kamungkinan sampling bakal "balik"
4. upami и , maka kamungkinan sampling bakal "balik"
Éta écés yén dina kasus 1 sareng 3, nalika probabiliti ditangtukeun leres ku algoritma, fungsi likelihood bakal maksimal, nyaeta, ieu téh kahayang urang hayang meunang. Nanging, pendekatan ieu rada pajeulit sareng salajengna urang bakal mertimbangkeun notasi anu langkung kompak. Tapi ke heula, hayu urang logaritma fungsi likelihood ku parobahan tanda, saprak ayeuna urang bakal ngaleutikan eta.
Hayu urang ngagantikeun babasan :
Hayu urang saderhanakeun istilah anu leres dina logaritma nganggo téknik aritmatika saderhana sareng kéngingkeun:
Ayeuna waktuna pikeun nyingkirkeun operator "lamun... tuluy...". Catet yén nalika hiji obyék milik kelas , teras dina ekspresi dina logaritma, dina pangbagi, diangkat kana kakawasaan , lamun obyék milik kelas , lajeng $e$ diangkat kana kakuatan . Ku alatan éta, notasi pikeun gelar bisa disederhanakeun ku ngagabungkeun duanana kasus jadi hiji: . Teras fungsi kasalahan logistik bakal nyandak bentuk:
Luyu sareng aturan logaritma, urang balikkeun fraksi sareng kaluarkeun tanda ""(minus) pikeun logaritma, urang meunang:
Di dieu nyaeta fungsi leungitna leungitna logistik, anu dianggo dina set latihan kalayan objék anu ditugaskeun ka kelas: и .
Nya, dina waktos ieu kuring angkat sareng urang nyimpulkeun tulisan.
Bahan bantu
1. Sastra
1) Analisis régrési dilarapkeun / N. Draper, G. Smith - 2nd ed. - M .: Keuangan sareng statistik, 1986 (ditarjamahkeun tina basa Inggris)
2) Téori probabilitas jeung statistik matematik / V.E. Gmurman - édisi ka-9. - M.: Sakola Luhur, 2003
3) Téori probabiliti / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007
4) analytics bisnis: tina data kana pangaweruh / Paklin N. B., Oreshkov V. I. - 2nd ed. - St. Petersburg: Peter, 2013
5) Élmu Data Élmu data ti mimiti / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Statistik praktis pikeun spesialis Élmu Data / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Kuliah, kursus (video)
1)
2)
3)
4)
5)
3. Sumber Internét
1)
2)
4)
5)
6)
7)
8)
sumber: www.habr.com