Nggolek regresi logistik

Nggolek regresi logistik

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. Nggolek regresi logistik.

Rangka artikel:

  1. Ayo kita mbaleni hubungan linear antarane rong variabel
  2. Ayo ngerteni kabutuhan transformasi fungsi regresi linier Nggolek regresi logistik в fungsi respon logistik Nggolek regresi logistik
  3. Ayo nindakake transformasi lan output fungsi respon logistik
  4. Ayo coba ngerti sebabe metode kuadrat paling ora ala nalika milih paramèter Nggolek regresi logistik fungsi Kerugian Logistik
  5. Kita nggunakake metode kemungkinan maksimum kanggo nemtokake fungsi pilihan parameter Nggolek regresi logistik:

    5.1. Kasus 1: fungsi Kerugian Logistik kanggo obyek kanthi sebutan kelas 0 и 1:

    Nggolek regresi logistik

    5.2. Kasus 2: fungsi Kerugian Logistik kanggo obyek kanthi sebutan kelas -1 и +1:

    Nggolek regresi logistik


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 Nggolek regresi logistik saka variabel (regressor) Nggolek regresi logistik. Punika pitados bilih katergantungan antarane ciri Nggolek regresi logistik lan nilai target Nggolek regresi logistik linier. Empu jeneng classifier - linear. Kanthi kasar banget, model regresi logistik adhedhasar asumsi yen ana hubungan linear antarane karakteristik. Nggolek regresi logistik lan nilai target Nggolek regresi logistik. 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:

Nggolek regresi logistikngendi Nggolek regresi logistik - kekuatan saiki, Nggolek regresi logistik - tegangan, Nggolek regresi logistik - resistance.

Yen kita ora ngerti Hukum om, banjur kita bisa nemokake katergantungan kanthi empiris kanthi ngganti Nggolek regresi logistik lan pangukuran Nggolek regresi logistik, nalika ndhukung Nggolek regresi logistik tetep. Banjur kita bakal weruh yen grafik katergantungan Nggolek regresi logistik saka Nggolek regresi logistik 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" Nggolek regresi logistik saka Nggolek regresi logistik»

Nggolek regresi logistik

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:

Nggolek regresi logistik

ngendi Nggolek regresi logistik, Nggolek regresi logistik, Nggolek regresi logistik, Nggolek regresi logistik - gaji Nggolek regresi logistik- sing nyilih, Nggolek regresi logistik - pembayaran utangan Nggolek regresi logistik- sing nyilih.

Ngganti gaji lan pembayaran silihan kanthi paramèter tetep menyang persamaan Nggolek regresi logistik Sampeyan bisa mutusake arep ngetokake utawa nolak utangan.

Looking ahead, kita nyathet yen, kanthi paramèter sing diwenehake Nggolek regresi logistik 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"

Nggolek regresi logistik

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: Nggolek regresi logistik. Malah 106.000 RUR tetep. Senadyan kasunyatan sing nalika ngitung Nggolek regresi logistik kita wis suda rintangan Nggolek regresi logistik 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"

Nggolek regresi logistik

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 Nggolek regresi logistik, 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 Nggolek regresi logistik Kita bakal klasifikasi sing nyilih sing paling kamungkinan kanggo mbayar utang minangka Nggolek regresi logistik utawa Nggolek regresi logistik 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 Nggolek regresi logistik lan, ngganti koordinat titik menyang persamaan garis sing cocog Nggolek regresi logistik, nimbang telung pilihan:

  1. Yen titik kasebut ana ing sangisore garis lan ditugasake menyang kelas Nggolek regresi logistik, banjur nilai fungsi Nggolek regresi logistik bakal positif saka Nggolek regresi logistik kanggo Nggolek regresi logistik. Iki tegese kita bisa nganggep manawa kemungkinan mbayar maneh utangan ana ing njero Nggolek regresi logistik. Sing luwih gedhe nilai fungsi, luwih dhuwur kemungkinan.
  2. Yen titik ing ndhuwur baris lan kita nemtokake kanggo kelas Nggolek regresi logistik utawa Nggolek regresi logistik, banjur Nilai saka fungsi bakal negatif saka Nggolek regresi logistik kanggo Nggolek regresi logistik. Banjur kita bakal nganggep manawa kemungkinan pembayaran utang ana ing njero Nggolek regresi logistik lan, sing luwih Nilai Absolute saka fungsi, sing luwih kapercayan kita.
  3. Titik kasebut ana ing garis lurus, ing wates antarane rong kelas. Ing kasus iki, nilai saka fungsi Nggolek regresi logistik bakal padha Nggolek regresi logistik lan kemungkinan kanggo mbayar maneh silihan padha karo Nggolek regresi logistik.

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 Nggolek regresi logistik 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 Nggolek regresi logistik. Nyatane, tugas model regresi logistik yaiku nemtokake paramèter Nggolek regresi logistik, ing kang Nilai saka fungsi mundhut Kerugian Logistik bakal cenderung kanggo minimal. Nanging babagan cara ngitung vektor Nggolek regresi logistik, 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 Nggolek regresi logistik 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 Nggolek regresi logistik, kang nilai dumunung ing sawetara Nggolek regresi logistik menyang fungsi sing nilai bakal ana ing kisaran Nggolek regresi logistik. Lan fungsi kasebut ana, diarani fungsi respon logistik utawa transformasi invers-logit. ketemu:

Nggolek regresi logistik

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 Nggolek regresi logistik kanggo Nggolek regresi logistik banjur kita bakal "unwind" Nilai iki kanggo kabeh sawetara nomer saka Nggolek regresi logistik kanggo Nggolek regresi logistik.

03. Kita entuk fungsi respon logistik

Langkah 1. Ngonversi nilai kemungkinan dadi sawetara Nggolek regresi logistik

Sajrone transformasi fungsi Nggolek regresi logistik в fungsi respon logistik Nggolek regresi 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 Nggolek regresi logistik:

Nggolek regresi logistik

ngendi Nggolek regresi logistik - kemungkinan kedadeyan kedadeyan, Nggolek regresi logistik - 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 Nggolek regresi logistik, banjur kemungkinan sukses kanggo "Veterok" bakal Nggolek regresi logistik к Nggolek regresi logistik Nggolek regresi logistik lan kosok balene, ngerti rintangan, iku ora bakal angel kanggo kita ngetung kemungkinan Nggolek regresi logistik:

Nggolek regresi logistik

Mangkono, kita wis sinau kanggo "nerjemahake" kemungkinan menyang kemungkinan, sing njupuk nilai saka Nggolek regresi logistik kanggo Nggolek regresi logistik. Ayo dadi njupuk siji langkah maneh lan sinau kanggo "nerjemahake" kemungkinan kanggo kabeh baris nomer saka Nggolek regresi logistik kanggo Nggolek regresi logistik.

Langkah 2. Ngonversi nilai kemungkinan dadi sawetara Nggolek regresi logistik

Langkah iki prasaja banget - ayo njupuk logaritma saka kemungkinan menyang dhasar nomer Euler Nggolek regresi logistik lan kita entuk:

Nggolek regresi logistik

Saiki kita ngerti yen Nggolek regresi logistik, banjur ngitung nilai Nggolek regresi logistik bakal gampang banget lan, luwih-luwih, kudu positif: Nggolek regresi logistik. Iki bener.

Saking penasarane, ayo dipriksa piye Nggolek regresi logistik, banjur kita ngarepake kanggo ndeleng nilai negatif Nggolek regresi logistik. Kita mriksa: Nggolek regresi logistik. Bener.

Saiki kita ngerti carane ngowahi nilai probabilitas saka Nggolek regresi logistik kanggo Nggolek regresi logistik sadawane kabeh baris nomer saka Nggolek regresi logistik kanggo Nggolek regresi logistik. Ing langkah sabanjure kita bakal nindakake ngelawan.

Saiki, kita nyathet yen miturut aturan logaritma, ngerti nilai fungsi kasebut Nggolek regresi logistik, sampeyan bisa ngetung kemungkinan:

Nggolek regresi logistik

Cara iki kanggo nemtokake rintangan bakal migunani kanggo kita ing langkah sabanjure.

Langkah 3. Ayo goleki rumus kanggo nemtokake Nggolek regresi logistik

Dadi kita sinau, ngerti Nggolek regresi logistik, golek nilai fungsi Nggolek regresi logistik. Nanging, ing kasunyatan, kita kudu persis ngelawan - ngerti regane Nggolek regresi logistik golek Nggolek regresi logistik. Kanggo nindakake iki, ayo pindhah menyang konsep kayata fungsi odds kuwalik, miturut:

Nggolek regresi logistik

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 (Nggolek regresi logistik), probabilitas kedadeyan kasebut yaiku 0.8 (Nggolek regresi logistik). Ayo nggawe substitusi: Nggolek regresi logistik. Iki cocog karo petungan sing ditindakake sadurunge. Ayo nerusake.

Ing langkah pungkasan kita nyimpulake Nggolek regresi logistik, kang tegese sampeyan bisa nggawe substitusi ing fungsi rintangan kuwalik. Kita entuk:

Nggolek regresi logistik

Dibagi nomer lan denominator dening Nggolek regresi logistik, Banjur:

Nggolek regresi logistik

Ing kasus, kanggo mesthekake yen kita wis ora nggawe kesalahan ngendi wae, kita bakal nindakake siji liyane mriksa cilik. Ing langkah 2, kita kanggo Nggolek regresi logistik ditemtokake sing Nggolek regresi logistik. Banjur, ngganti nilai kasebut Nggolek regresi logistik menyang fungsi respon logistik, kita nyana njaluk Nggolek regresi logistik. Kita ngganti lan entuk: Nggolek regresi logistik

Sugeng, maca sing ditresnani, kita wis nerbitake lan nguji fungsi respon logistik. Ayo katon ing grafik saka fungsi.

Grafik 3 "Fungsi respon logistik"

Nggolek regresi 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. Nggolek regresi logistik, saka ngendi wae Nggolek regresi logistik kanggo Nggolek regresi logistik.

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"

Nggolek regresi logistik

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 Nggolek regresi logistik. 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 Nggolek regresi logistik.

04. Metode kuadrat paling sithik kanggo nemtokake vektor bobot Nggolek regresi logistik ing fungsi respon logistik

Kita wis ngerti cara iki kanggo milih vektor bobot Nggolek regresi logistik, 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 Nggolek regresi logistik 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 Nggolek regresi logistik kanggo loro model ora ana bedane. Banjur njupuk bobot asil lan ngganti menyang fungsi respon logistik (Nggolek regresi logistik) kanggo sawetara obyek sing ana ing kelas kasebut Nggolek regresi logistik. 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. Nggolek regresi logistik. 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 Nggolek regresi logistik kanthi probabilitas 0,01

Hukuman ing nggunakake MNC bakal:
Nggolek regresi logistik

Hukuman ing nggunakake Kerugian Logistik bakal:
Nggolek regresi logistik

Kasus kapercayan sing kuat - model menehi obyek menyang kelas Nggolek regresi logistik kanthi probabilitas 0,99

Hukuman ing nggunakake MNC bakal:
Nggolek regresi logistik

Hukuman ing nggunakake Kerugian Logistik bakal:
Nggolek regresi logistik

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. Nggolek regresi logistik. 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: Nggolek regresi logistik utawa Nggolek regresi logistik. Mulane, kemungkinan sampel bisa ditulis minangka fungsi kemungkinan saka parameter Nggolek regresi logistik kaya mangkene:

Nggolek regresi logistik
Nggolek regresi logistik

Entri ing ndhuwur bisa ditegesi kaya ing ngisor iki. Kemungkinan bebarengan yen Vasya lan Fedya bakal mbayar utang kasebut padha karo Nggolek regresi logistik, kemungkinan Lesha ora bakal mbayar maneh utangan padha karo Nggolek regresi logistik (amarga dudu pambayaran utang sing kedadeyan), mula kemungkinan gabungan kabeh telung acara padha Nggolek regresi logistik.

Metode kemungkinan maksimum minangka cara kanggo ngira parameter sing ora dingerteni kanthi maksimal fungsi kemungkinan. Ing kasus kita, kita kudu nemokake nilai kasebut Nggolek regresi logistiking kang Nggolek regresi logistik 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 dheweNggolek regresi logistik, lan titik ekstrem, yaiku, nilai parameter sing ora dingerteni Nggolek regresi logistiking kang Nggolek regresi logistik 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:

Nggolek regresi logistik

Saiki kita bisa gampang mbedakake expression dening Nggolek regresi logistik:

Nggolek regresi logistik

Lan pungkasane, nimbang kondisi urutan pertama - kita padha karo turunan fungsi kasebut dadi nol:

Nggolek regresi logistik

Mangkono, prakiraan intuisi kita babagan kemungkinan pambayaran utang Nggolek regresi logistik 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 Nggolek regresi logistik 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 Nggolek regresi logistik.

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 Nggolek regresi logistik:

Nggolek regresi logistik

Sampel kemungkinan nalika ngitung kemungkinan mbayar maneh utang kanthi njupuk faktor Nggolek regresi logistik:

Nggolek regresi logistik
Nggolek regresi logistik

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 Nggolek regresi logistik, 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 Nggolek regresi logistik 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 Nggolek regresi logistik, lan ora njupuk wong-wong mau metu saka udhara lancip, kita bisa kanthi aman ngomong sing nilai kita Nggolek regresi logistik paling apik ngidini kita kanggo ngira kemungkinan mbayar maneh saka silihan dening saben nyilih, nanging wiwit kita sarujuk kanggo nganggep sing netepake koefisien Nggolek regresi logistik 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 Nggolek regresi logistik, sing perlu kanggo netepake kemungkinan mbayar maneh silihan dening saben nyilih.

Ayo kita ringkes ngringkes karo apa arsenal kita golek rintangan Nggolek regresi logistik:

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 Nggolek regresi logistik, baris kang mbagi obyek (klien) menyang kelas Nggolek regresi logistik и Nggolek regresi logistik utawa Nggolek regresi logistik (klien sing bisa mbayar utang lan sing ora bisa). Ing kasus kita, persamaan kasebut nduweni wujud Nggolek regresi logistik.

2. Kita nggunakake fungsi invers logit apik Nggolek regresi logistik kanggo nemtokake kemungkinan obyek sing kalebu kelas Nggolek regresi logistik.

3. Kita nganggep set latihan kita minangka implementasine saka umum skema Bernoulli, yaiku, kanggo saben obyek digawe variabel acak, kang karo kemungkinan Nggolek regresi logistik (dhewe kanggo saben obyek) njupuk nilai 1 lan kemungkinan Nggolek regresi logistik - 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 Nggolek regresi logistik, sing gumantung ing koefisien sing ora dingerteni Nggolek regresi logistik. Dadi, kita kudu nemokake vektor bobot kasebut Nggolek regresi logistik, 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 Nggolek regresi logistik и Nggolek regresi logistik utawa Nggolek regresi logistik. Gumantung ing notasi, output bakal duwe fungsi mundhut sing cocog.

Kasus 1. Klasifikasi obyek menyang Nggolek regresi logistik и Nggolek regresi logistik

Sadurungé, nalika nemtokake kemungkinan sampel, ing endi kemungkinan pambayaran utang dening peminjam diwilang adhedhasar faktor lan koefisien sing diwenehake. Nggolek regresi logistik, kita nggunakake rumus:

Nggolek regresi logistik

Nyatane Nggolek regresi logistik punika tegesipun fungsi respon logistik Nggolek regresi logistik kanggo vektor bobot tartamtu Nggolek regresi logistik

Banjur ora ana sing ngalangi kita nulis fungsi kemungkinan sampel kaya ing ngisor iki:

Nggolek regresi logistik

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 Nggolek regresi logistik (yaiku, miturut conto latihan, obyek kasebut kalebu kelas +1), lan algoritma kita Nggolek regresi logistik nemtokake kemungkinan klasifikasi obyek menyang kelas Nggolek regresi logistik padha karo 0.9, mula kemungkinan sampel iki bakal diitung kaya ing ngisor iki:

Nggolek regresi logistik

2. yen Nggolek regresi logistiklan Nggolek regresi logistik, banjur pitungan bakal kaya iki:

Nggolek regresi logistik

3. yen Nggolek regresi logistiklan Nggolek regresi logistik, banjur pitungan bakal kaya iki:

Nggolek regresi logistik

4. yen Nggolek regresi logistiklan Nggolek regresi logistik, banjur pitungan bakal kaya iki:

Nggolek regresi logistik

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. Nggolek regresi logistik.

Amarga kasunyatan sing nalika nemtokake kemungkinan nemtokake obyek kanggo kelas Nggolek regresi logistik Kita mung ora ngerti koefisien Nggolek regresi logistik, banjur kita bakal nggoleki. Kaya kasebut ing ndhuwur, iki minangka masalah optimasi sing pisanan kudu golek turunan saka fungsi kemungkinan babagan vektor bobot. Nggolek regresi logistik. Nanging, pisanan nggawe akal kanggo nyederhanakake tugas kanggo awake dhewe: kita bakal golek turunan logaritma. fungsi kemungkinan.

Nggolek regresi logistik

Apa sawise logaritma, ing fungsi kesalahan logistik, kita ngganti tandha saka Nggolek regresi logistik ing Nggolek regresi logistik. Kabeh iku prasaja, amarga ing masalah kanggo netepake kualitas model iku umume kanggo nyilikake Nilai saka fungsi, kita pingan sisih tengen expression dening Nggolek regresi logistik 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: Nggolek regresi logistik и Nggolek regresi logistik.

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. Nggolek regresi logistik. 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 Nggolek regresi logistik и Nggolek regresi logistik

Pendekatan ing kene bakal padha karo kelas Nggolek regresi logistik и Nggolek regresi logistik, 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 Nggolek regresi logistikObjek th kalebu kelas Nggolek regresi logistik, banjur kanggo ngetung kamungkinan saka sampel kita nggunakake probabilitas Nggolek regresi logistik, yen obyek belongs kanggo kelas Nggolek regresi logistik, banjur kita ngganti menyang kemungkinan Nggolek regresi logistik. Iki minangka fungsi kemungkinan:

Nggolek regresi logistik

Ayo kita njlèntrèhaké ing driji cara kerjane. Ayo nimbang 4 kasus:

1. yen Nggolek regresi logistik и Nggolek regresi logistik, banjur kemungkinan sampling bakal "go" Nggolek regresi logistik

2. yen Nggolek regresi logistik и Nggolek regresi logistik, banjur kemungkinan sampling bakal "go" Nggolek regresi logistik

3. yen Nggolek regresi logistik и Nggolek regresi logistik, banjur kemungkinan sampling bakal "go" Nggolek regresi logistik

4. yen Nggolek regresi logistik и Nggolek regresi logistik, banjur kemungkinan sampling bakal "go" Nggolek regresi logistik

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.

Nggolek regresi logistik

Ayo diganti wae Nggolek regresi logistik ekspresi Nggolek regresi logistik:

Nggolek regresi logistik

Sederhanakan istilah sing tepat miturut logaritma nggunakake teknik aritmetika sing prasaja lan entuk:

Nggolek regresi logistik

Saiki wayahe nyingkirake operator "Yen ... banjur ...". Elinga yen nalika obyek Nggolek regresi logistik belongs kanggo kelas Nggolek regresi logistik, banjur ing ekspresi ing logaritma, ing denominator, Nggolek regresi logistik diunggahake menyang daya Nggolek regresi logistik, yen obyek belongs kanggo kelas Nggolek regresi logistik, banjur $e$ diunggahake dadi daya Nggolek regresi logistik. Mula, notasi kanggo gelar bisa disederhanakake kanthi nggabungake loro kasus kasebut dadi siji: Nggolek regresi logistik... Banjur fungsi kesalahan logistik bakal njupuk formulir:

Nggolek regresi logistik

Sesuai karo aturan logaritma, kita nguripake pecahan lan sijine tandha "Nggolek regresi logistik"(minus) kanggo logaritma, kita entuk:

Nggolek regresi logistik

Punika fungsi mundhut mundhut logistik, sing digunakake ing set latihan kanthi obyek sing ditugasake ing kelas: Nggolek regresi logistik и Nggolek regresi logistik.

Inggih, ing titik iki aku ninggalake lan kita nganakke artikel.

Nggolek regresi logistik Karya sadurunge penulis yaiku "Nggawa persamaan regresi linier menyang wangun matriks"

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) Inti saka cara kemungkinan maksimum, Boris Demeshev

2) Metode kemungkinan maksimum ing kasus terus-terusan, Boris Demeshev

3) Regresi logistik. Bukak kursus ODS, Yury Kashnitsky

4) Kuliah 4, Evgeny Sokolov (saka 47 menit video)

5) Regresi logistik, Vyacheslav Vorontsov

3. Sumber internet

1) Klasifikasi linear lan model regresi

2) Carane Gampang Ngerti Regresi Logistik

3) Fungsi kesalahan logistik

4) Tes independen lan rumus Bernoulli

5) Balada MMP

6) Metode kemungkinan maksimum

7) Rumus lan sifat logaritma

8) Nomer kok Nggolek regresi logistik?

9) Klasifikasi linier

Source: www.habr.com

Add a comment