Sa artikulong ito, susuriin natin ang mga teoretikal na kalkulasyon ng pagbabagong-anyo mga function ng linear regression Π² inverse logit transformation function (kung hindi man ay tinatawag na logistic response function). Pagkatapos, gamit ang arsenal maximum na paraan ng posibilidad, alinsunod sa modelo ng logistic regression, nakukuha namin ang function ng pagkawala Pagkawala ng Logistic, o sa madaling salita, tutukuyin namin ang isang function kung saan ang mga parameter ng weight vector ay pinili sa modelo ng logistic regression .
Balangkas ng artikulo:
- Ulitin natin ang linear na relasyon sa pagitan ng dalawang variable
- Tukuyin natin ang pangangailangan para sa pagbabago mga function ng linear regression Π² pag-andar ng pagtugon sa logistik
- Isagawa natin ang mga pagbabago at output pag-andar ng pagtugon sa logistik
- Subukan nating maunawaan kung bakit masama ang paraan ng least squares kapag pumipili ng mga parameter ΡΡΠ½ΠΊΡΠΈΠΈ Pagkawala ng Logistic
- Gumamit maximum na paraan ng posibilidad para sa pagtukoy mga function ng pagpili ng parameter :
5.1. Kaso 1: function Pagkawala ng Logistic para sa mga bagay na may mga pagtatalaga ng klase 0 ΠΈ 1:
5.2. Kaso 2: function Pagkawala ng Logistic para sa mga bagay na may mga pagtatalaga ng klase -1 ΠΈ +1:
Ang artikulo ay puno ng mga simpleng halimbawa kung saan ang lahat ng mga kalkulasyon ay madaling gawin nang pasalita o sa papel; sa ilang mga kaso, maaaring kailanganin ang isang calculator. Kaya humanda ka :)
Ang artikulong ito ay pangunahing inilaan para sa mga data scientist na may paunang antas ng kaalaman sa mga pangunahing kaalaman sa machine learning.
Magbibigay din ang artikulo ng code para sa pagguhit ng mga graph at kalkulasyon. Ang lahat ng code ay nakasulat sa wika sawa 2.7. Hayaan akong ipaliwanag nang maaga ang tungkol sa "bagong-bago" ng bersyon na ginamit - ito ay isa sa mga kondisyon para sa pagkuha ng kilalang kurso mula sa Yandex sa isang pantay na kilalang online na platform ng edukasyon Coursera, at, gaya ng maaaring ipalagay, ang materyal ay inihanda batay sa kursong ito.
01. Straight-line dependence
Medyo makatwirang magtanong - ano ang kinalaman dito ng linear dependence at logistic regression?
Ito ay simple! Ang logistic regression ay isa sa mga modelong kabilang sa linear classifier. Sa simpleng salita, ang gawain ng isang linear classifier ay hulaan ang mga target na halaga mula sa mga variable (regressors) . Ito ay pinaniniwalaan na ang pagtitiwala sa pagitan ng mga katangian at mga target na halaga linear. Samakatuwid ang pangalan ng classifier - linear. Upang ilagay ito nang halos halos, ang modelo ng logistic regression ay batay sa pagpapalagay na mayroong isang linear na relasyon sa pagitan ng mga katangian. at mga target na halaga . Ito ang koneksyon.
Mayroong unang halimbawa sa studio, at ito ay, tama, tungkol sa rectilinear dependence ng mga dami na pinag-aaralan. Sa proseso ng paghahanda ng artikulo, nakatagpo ako ng isang halimbawa na nagtakda na ng maraming tao sa gilid - ang pag-asa ng kasalukuyang sa boltahe (βApplied regression analysisβ, N. Draper, G. Smith). Titingnan din natin dito.
Ayon sa Batas ng Ohm:
Saan - kasalukuyang lakas, - Boltahe, - paglaban.
Kung hindi natin alam Batas ni Ohm, pagkatapos ay mahahanap natin ang pagdepende sa empirically sa pamamagitan ng pagbabago at pagsukat , habang sumusuporta nakapirming. Pagkatapos ay makikita natin na ang dependence graph mula sa nagbibigay ng higit o mas kaunting tuwid na linya sa pamamagitan ng pinagmulan. Sinasabi namin ang "higit pa o mas kaunti" dahil, bagama't ang relasyon ay aktwal na tumpak, ang aming mga sukat ay maaaring maglaman ng maliliit na error, at samakatuwid ang mga punto sa graph ay maaaring hindi eksaktong mahulog sa linya, ngunit magkakalat sa paligid nito nang random.
Graph 1 "Pag-asa" mula sa Β»
Code ng pagguhit ng tsart
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. Ang pangangailangang baguhin ang linear regression equation
Tingnan natin ang isa pang halimbawa. Isipin natin na nagtatrabaho tayo sa isang bangko at ang ating gawain ay tukuyin ang posibilidad na mabayaran ng nanghihiram ang utang depende sa ilang mga kadahilanan. Upang pasimplehin ang gawain, isasaalang-alang lamang namin ang dalawang salik: ang buwanang suweldo ng nanghihiram at ang buwanang halaga ng pagbabayad ng utang.
Ang gawain ay napaka-kondisyon, ngunit sa halimbawang ito ay mauunawaan natin kung bakit hindi ito sapat na gamitin mga function ng linear regression, at alamin din kung anong mga pagbabagong may function ang kailangang isagawa.
Bumalik tayo sa halimbawa. Nauunawaan na kung mas mataas ang suweldo, mas maraming buwanang makakapaglaan ang nanghihiram para mabayaran ang utang. Kasabay nito, para sa isang tiyak na hanay ng suweldo ang relasyon na ito ay magiging medyo linear. Halimbawa, kumuha tayo ng saklaw ng suweldo mula 60.000 RUR hanggang 200.000 RUR at ipagpalagay na sa tinukoy na hanay ng suweldo, ang pag-asa sa laki ng buwanang pagbabayad sa laki ng suweldo ay linear. Sabihin natin na para sa tinukoy na hanay ng mga sahod ay inihayag na ang ratio ng suweldo-sa-bayad ay hindi maaaring mahulog sa ibaba 3 at ang nanghihiram ay dapat na mayroon pa ring 5.000 RUR na reserba. At sa kasong ito lamang, ipagpalagay natin na babayaran ng nanghihiram ang utang sa bangko. Pagkatapos, ang linear regression equation ay kukuha ng form:
saan , , , - suweldo -ang nanghihiram, - pagbabayad ng utang -ang nanghihiram.
Ang pagpapalit ng suweldo at pagbabayad ng utang na may mga nakapirming parameter sa equation Maaari kang magpasya kung mag-isyu o tanggihan ang isang pautang.
Sa hinaharap, tandaan namin na, kasama ang ibinigay na mga parameter linear regression function, ginamit sa mga function ng pagtugon sa logistik gagawa ng malalaking halaga na magpapalubha sa mga kalkulasyon upang matukoy ang mga probabilidad ng pagbabayad ng utang. Samakatuwid, iminungkahi na bawasan ang ating mga coefficient, sabihin natin, ng 25.000 beses. Ang pagbabagong ito sa mga coefficient ay hindi magbabago sa desisyon na mag-isyu ng pautang. Tandaan natin ang puntong ito para sa hinaharap, ngunit ngayon, para mas maging malinaw ang pinag-uusapan natin, isaalang-alang natin ang sitwasyon sa tatlong potensyal na manghihiram.
Talahanayan 1 "Mga potensyal na manghihiram"
Code para sa pagbuo ng talahanayan
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']]
Alinsunod sa data sa talahanayan, si Vasya, na may suweldo na 120.000 RUR, ay nais na makatanggap ng pautang upang mabayaran niya ito buwan-buwan sa 3.000 RUR. Napagpasyahan namin na upang maaprubahan ang utang, ang suweldo ni Vasya ay dapat lumampas sa tatlong beses ang halaga ng bayad, at dapat mayroon pa ring 5.000 RUR na natitira. Natutugunan ni Vasya ang kinakailangang ito: . Kahit na 106.000 RUR ay nananatili. Sa kabila ng katotohanan na kapag kinakalkula nabawasan namin ang posibilidad 25.000 beses, ang resulta ay pareho - ang pautang ay maaaring maaprubahan. Makakatanggap din si Fedya ng pautang, ngunit si Lesha, sa kabila ng katotohanan na siya ang pinakamarami, ay kailangang pigilan ang kanyang mga gana.
Gumuhit tayo ng graph para sa kasong ito.
Tsart 2 "Pag-uuri ng mga nanghihiram"
Code para sa pagguhit ng graph
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()
Kaya, ang aming tuwid na linya, na itinayo alinsunod sa pag-andar , naghihiwalay sa "masamang" nanghihiram mula sa "mabubuti". Ang mga borrower na ang mga pagnanasa ay hindi nag-tutugma sa kanilang mga kakayahan ay nasa itaas ng linya (Lesha), habang ang mga, ayon sa mga parameter ng aming modelo, ay maaaring magbayad ng utang ay nasa ibaba ng linya (Vasya at Fedya). Sa madaling salita, masasabi natin ito: hinahati ng ating direktang linya ang mga nanghihiram sa dalawang klase. Ipahiwatig natin ang mga ito tulad ng sumusunod: sa klase Uuriin namin ang mga nanghihiram na pinakamalamang na magbabayad ng utang bilang o Isasama namin ang mga nanghihiram na malamang na hindi makabayad ng utang.
Ibuod natin ang mga konklusyon mula sa simpleng halimbawang ito. Kumuha tayo ng isang punto at, pinapalitan ang mga coordinate ng punto sa katumbas na equation ng linya , isaalang-alang ang tatlong opsyon:
- Kung ang punto ay nasa ilalim ng linya at itatalaga namin ito sa klase , pagkatapos ay ang halaga ng function magiging positibo mula sa sa . Nangangahulugan ito na maaari nating ipagpalagay na nasa loob ang posibilidad na mabayaran ang utang . Kung mas malaki ang halaga ng function, mas mataas ang posibilidad.
- Kung ang isang punto ay nasa itaas ng isang linya at itinalaga namin ito sa klase o , kung gayon ang halaga ng function ay magiging negatibo mula sa sa . Pagkatapos ay ipagpalagay namin na ang posibilidad ng pagbabayad ng utang ay nasa loob at, mas malaki ang ganap na halaga ng function, mas mataas ang ating kumpiyansa.
- Ang punto ay nasa isang tuwid na linya, sa hangganan sa pagitan ng dalawang klase. Sa kasong ito, ang halaga ng function magiging pantay at ang posibilidad na mabayaran ang utang ay katumbas ng .
Ngayon, isipin natin na wala tayong dalawang salik, ngunit dose-dosenang, at hindi tatlo, ngunit libu-libong nanghihiram. Pagkatapos sa halip na isang tuwid na linya ay magkakaroon tayo m-dimensional eroplano at mga coefficient hindi kami aalisin mula sa manipis na hangin, ngunit nakuha ayon sa lahat ng mga patakaran, at sa batayan ng naipon na data sa mga nanghihiram na mayroon o hindi pa nagbayad ng utang. At sa katunayan, tandaan na pumipili kami ngayon ng mga borrower gamit ang mga kilalang coefficient . Sa katunayan, ang gawain ng modelo ng logistic regression ay tiyak na matukoy ang mga parameter , kung saan ang halaga ng pagkawala function Pagkawala ng Logistic ay magiging pinakamababa. Ngunit tungkol sa kung paano kinakalkula ang vector , malalaman natin ang higit pa sa ika-5 na seksyon ng artikulo. Samantala, bumalik kami sa lupang pangako - sa aming bangkero at sa kanyang tatlong kliyente.
Salamat sa function alam natin kung sino ang maaaring bigyan ng pautang at kung sino ang kailangang tanggihan. Ngunit hindi ka maaaring pumunta sa direktor na may ganitong impormasyon, dahil nais nilang makuha mula sa amin ang posibilidad ng pagbabayad ng utang ng bawat nanghihiram. Anong gagawin? Ang sagot ay simple - kailangan nating baguhin ang function , na ang mga halaga ay nasa hanay sa isang function na ang mga halaga ay makikita sa hanay . At ang gayong pag-andar ay umiiral, ito ay tinatawag logistic response function o inverse-logit transformation. Kilalanin:
Tingnan natin ang hakbang-hakbang kung paano ito gumagana pag-andar ng pagtugon sa logistik. Tandaan na lalakad tayo sa kabilang direksyon, i.e. ipagpalagay namin na alam namin ang halaga ng posibilidad, na nasa hanay mula sa sa at pagkatapos ay "i-unwind" namin ang halagang ito sa buong hanay ng mga numero mula sa sa .
03. Nakukuha namin ang function ng logistic response
Hakbang 1. I-convert ang mga halaga ng posibilidad sa isang hanay
Sa panahon ng pagbabago ng function Π² pag-andar ng pagtugon sa logistik Hahayaan namin ang aming credit analyst at sa halip ay maglibot sa mga bookmaker. Hindi, siyempre, hindi kami maglalagay ng taya, ang lahat ng interes sa amin doon ay ang kahulugan ng expression, halimbawa, ang pagkakataon ay 4 sa 1. Ang mga logro, pamilyar sa lahat ng mga bettors, ay ang ratio ng "mga tagumpay" sa " mga kabiguanβ. Sa probability terms, ang odds ay ang probabilidad ng isang event na naganap na hinati sa probabilidad ng event na hindi naganap. Isulat natin ang pormula para sa pagkakataong maganap ang isang kaganapan :
Saan - posibilidad ng isang kaganapan na naganap, β probabilidad ng isang pangyayaring HINDI naganap
Halimbawa, kung ang posibilidad na matalo ng isang bata, malakas at mapaglarong kabayo na may palayaw na "Veterok" ang isang matandang matandang babae na may pangalang "Matilda" ay katumbas ng , pagkatapos ay ang mga pagkakataon ng tagumpay para sa "Veterok". ΠΊ and vice versa, knowing the odds, hindi magiging mahirap para sa atin na kalkulahin ang probability :
Kaya, natutunan naming "isalin" ang posibilidad sa mga pagkakataon, na kumukuha ng mga halaga mula sa sa . Gumawa tayo ng isa pang hakbang at matutong "isalin" ang posibilidad sa buong linya ng numero mula sa sa .
Hakbang 2. I-convert ang mga halaga ng posibilidad sa isang hanay
Napakasimple ng hakbang na ito - dalhin natin ang logarithm ng mga logro sa base ng numero ni Euler at makuha namin:
Ngayon alam na natin na kung , pagkatapos ay kalkulahin ang halaga ay magiging napaka-simple at, bukod dito, dapat itong maging positibo: . Ito ay totoo.
Out of curiosity, tingnan natin what if , pagkatapos ay inaasahan naming makakita ng negatibong halaga . Sinusuri namin: . Tama iyan.
Ngayon alam namin kung paano i-convert ang halaga ng posibilidad mula sa sa kasama ang buong linya ng numero mula sa sa . Sa susunod na hakbang gagawin natin ang kabaligtaran.
Sa ngayon, tandaan namin na alinsunod sa mga patakaran ng logarithm, alam ang halaga ng function , maaari mong kalkulahin ang mga logro:
Ang pamamaraang ito ng pagtukoy ng mga posibilidad ay magiging kapaki-pakinabang sa amin sa susunod na hakbang.
Hakbang 3. Bumuo tayo ng isang pormula upang matukoy
Kaya natuto kami, alam , hanapin ang mga halaga ng function . Gayunpaman, sa katunayan, kailangan natin ang eksaktong kabaligtaran - alam ang halaga upang mahanap . Upang gawin ito, bumaling tayo sa isang konsepto tulad ng inverse odds function, ayon sa kung saan:
Sa artikulong hindi namin makukuha ang formula sa itaas, ngunit susuriin namin ito gamit ang mga numero mula sa halimbawa sa itaas. Alam natin na may posibilidad na 4 hanggang 1 (), ang posibilidad na mangyari ang kaganapan ay 0.8 (). Gumawa tayo ng pagpapalit: . Ito ay kasabay ng aming mga kalkulasyon na isinagawa kanina. Mag-move on na tayo.
Sa huling hakbang, nalaman namin iyon , na nangangahulugan na maaari kang gumawa ng pagpapalit sa inverse odds function. Nakukuha namin:
Hatiin ang numerator at denominator sa pamamagitan ng , Pagkatapos:
Kung sakali, para matiyak na hindi kami nagkamali kahit saan, gagawa kami ng isa pang maliit na pagsusuri. Sa hakbang 2, kami ay para sa natukoy na . Pagkatapos, pinapalitan ang halaga sa logistic response function, inaasahan naming makuha . Pinapalitan namin at nakuha:
Binabati kita, mahal na mambabasa, nakuha at nasubok namin ang function ng pagtugon sa logistik. Tingnan natin ang graph ng function.
Graph 3 "Logistic response function"
Code para sa pagguhit ng graph
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()
Sa panitikan maaari mo ring mahanap ang pangalan ng function na ito bilang sigmoid function. Malinaw na ipinapakita ng graph na ang pangunahing pagbabago sa posibilidad ng isang bagay na kabilang sa isang klase ay nangyayari sa loob ng medyo maliit na saklaw. , saanman galing sa .
Iminumungkahi kong bumalik sa aming credit analyst at tulungan siyang kalkulahin ang posibilidad ng pagbabayad ng utang, kung hindi man ay nanganganib siyang maiwan nang walang bonus :)
Talahanayan 2 "Mga potensyal na manghihiram"
Code para sa pagbuo ng talahanayan
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']]
Kaya, natukoy namin ang posibilidad ng pagbabayad ng utang. Sa pangkalahatan, ito ay tila totoo.
Sa katunayan, ang posibilidad na si Vasya, na may suweldo na 120.000 RUR, ay makakapagbigay ng 3.000 RUR sa bangko bawat buwan ay malapit sa 100%. Sa pamamagitan ng paraan, dapat nating maunawaan na ang isang bangko ay maaaring mag-isyu ng pautang sa Lesha kung ang patakaran ng bangko ay nagbibigay, halimbawa, para sa pagpapahiram sa mga kliyente na may posibilidad ng pagbabayad ng utang na higit sa, sabihin nating, 0.3. Sa kasong ito, ang bangko ay gagawa ng mas malaking reserba para sa mga posibleng pagkalugi.
Dapat ding tandaan na ang ratio ng suweldo-sa-pagbabayad na hindi bababa sa 3 at may margin na 5.000 RUR ay kinuha mula sa kisame. Samakatuwid, hindi namin magagamit ang vector ng mga timbang sa orihinal nitong anyo . Kailangan naming bawasan nang husto ang mga coefficient, at sa kasong ito, hinati namin ang bawat coefficient ng 25.000, iyon ay, sa esensya, inayos namin ang resulta. Ngunit ito ay partikular na ginawa upang gawing simple ang pag-unawa sa materyal sa paunang yugto. Sa buhay, hindi natin kakailanganing mag-imbento at mag-adjust ng mga coefficient, ngunit hanapin ang mga ito. Sa susunod na mga seksyon ng artikulo ay makukuha natin ang mga equation kung saan napili ang mga parameter .
04. Least squares na paraan para sa pagtukoy ng vector ng mga timbang sa logistic response function
Alam na natin ang pamamaraang ito para sa pagpili ng vector ng mga timbang Bilang pamamaraan ng least squares (LSM) at sa katunayan, bakit hindi natin ito gamitin sa mga problema sa binary classification? Sa katunayan, walang pumipigil sa iyo sa paggamit MNC, tanging ang pamamaraang ito sa mga problema sa pag-uuri ay nagbibigay ng mga resulta na hindi gaanong tumpak kaysa Pagkawala ng Logistic. Mayroong isang teoretikal na batayan para dito. Tingnan muna natin ang isang simpleng halimbawa.
Ipagpalagay natin na ang ating mga modelo (gamit MSE ΠΈ Pagkawala ng Logistic) ay nagsimula na sa pagpili ng vector ng mga timbang at itinigil namin ang pagkalkula sa ilang hakbang. Hindi mahalaga kung sa gitna, sa dulo o sa simula, ang pangunahing bagay ay mayroon na tayong ilang mga halaga ng vector ng mga timbang at ipagpalagay natin na sa hakbang na ito, ang vector ng mga timbang. para sa parehong mga modelo ay walang mga pagkakaiba. Pagkatapos ay kunin ang mga nagresultang timbang at palitan ang mga ito pag-andar ng pagtugon sa logistik () para sa ilang bagay na kabilang sa klase . Sinusuri namin ang dalawang kaso kung kailan, alinsunod sa napiling vector ng mga timbang, ang aming modelo ay napakamali at vice versa - ang modelo ay lubos na kumpiyansa na ang bagay ay kabilang sa klase . Tingnan natin kung anong mga multa ang ibibigay kapag gumagamit MNC ΠΈ Pagkawala ng Logistic.
Code para kalkulahin ang mga parusa depende sa loss function na ginamit
# ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
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
Isang kaso ng isang pagkakamali β ang modelo ay nagtatalaga ng isang bagay sa isang klase na may posibilidad na 0,01
Parusa sa paggamit MNC ay magiging:
Parusa sa paggamit Pagkawala ng Logistic ay magiging:
Isang kaso ng malakas na kumpiyansa β ang modelo ay nagtatalaga ng isang bagay sa isang klase na may posibilidad na 0,99
Parusa sa paggamit MNC ay magiging:
Parusa sa paggamit Pagkawala ng Logistic ay magiging:
Ang halimbawang ito ay naglalarawan ng mabuti na sa kaso ng isang malaking error ang pagkawala function Pagkawala ng Log mas malaki ang parusa sa modelo kaysa sa MSE. Unawain natin ngayon kung ano ang theoretical background sa paggamit ng loss function Pagkawala ng Log sa mga problema sa pag-uuri.
05. Pinakamataas na paraan ng posibilidad at logistic regression
Gaya ng ipinangako sa simula, ang artikulo ay puno ng mga simpleng halimbawa. Sa studio ay may isa pang halimbawa at mga lumang bisita - mga borrower sa bangko: Vasya, Fedya at Lesha.
Kung sakali, bago bumuo ng halimbawa, hayaan mong ipaalala ko sa iyo na sa buhay tayo ay nakikitungo sa isang sample ng pagsasanay ng libu-libo o milyon-milyong mga bagay na may sampu o daan-daang mga tampok. Gayunpaman, dito kinukuha ang mga numero upang madali silang magkasya sa pinuno ng isang baguhang data scientist.
Bumalik tayo sa halimbawa. Isipin natin na nagpasya ang direktor ng bangko na mag-isyu ng pautang sa lahat ng nangangailangan, sa kabila ng katotohanan na sinabi sa kanya ng algorithm na huwag ibigay ito kay Lesha. At ngayon sapat na ang panahon at alam natin kung sino sa tatlong bayani ang nagbayad ng utang at alin ang hindi. Ano ang dapat asahan: Binayaran nina Vasya at Fedya ang utang, ngunit hindi ginawa ni Lesha. Ngayon isipin natin na ang resultang ito ay magiging isang bagong sample ng pagsasanay para sa atin at, kasabay nito, parang nawala ang lahat ng data sa mga salik na nakakaimpluwensya sa posibilidad na mabayaran ang utang (suweldo ng borrower, laki ng buwanang bayad). Pagkatapos, intuitively, maaari nating ipagpalagay na ang bawat ikatlong borrower ay hindi nagbabayad ng utang sa bangko, o sa madaling salita, ang posibilidad ng susunod na borrower na magbayad ng utang. . Ang intuitive assumption na ito ay may theoretical confirmation at nakabatay sa maximum na paraan ng posibilidad, madalas sa panitikan ito ay tinatawag na prinsipyo ng maximum na posibilidad.
Una, kilalanin natin ang conceptual apparatus.
Ang posibilidad ng sampling ay ang posibilidad ng pagkuha ng eksaktong tulad ng isang sample, pagkuha ng eksakto tulad ng mga obserbasyon/mga resulta, i.e. ang produkto ng mga posibilidad na makuha ang bawat isa sa mga sample na resulta (halimbawa, kung ang utang ng Vasya, Fedya at Lesha ay binayaran o hindi binayaran sa parehong oras).
Pag-andar ng posibilidad iniuugnay ang posibilidad ng isang sample sa mga halaga ng mga parameter ng pamamahagi.
Sa aming kaso, ang sample ng pagsasanay ay isang pangkalahatang Bernoulli scheme, kung saan ang random variable ay tumatagal lamang ng dalawang halaga: o . Samakatuwid, ang sample na posibilidad ay maaaring isulat bilang isang function ng posibilidad ng parameter tulad ng sumusunod:
Ang entry sa itaas ay maaaring bigyang-kahulugan bilang mga sumusunod. Ang magkasanib na posibilidad na babayaran nina Vasya at Fedya ang utang ay katumbas ng , ang posibilidad na HINDI babayaran ni Lesha ang utang ay katumbas ng (dahil HINDI ang pagbabayad ng utang ang naganap), samakatuwid ang magkasanib na posibilidad ng lahat ng tatlong kaganapan ay pantay .
Paraan ng maximum na posibilidad ay isang paraan para sa pagtatantya ng hindi kilalang parameter sa pamamagitan ng pag-maximize mga function ng posibilidad. Sa aming kaso, kailangan naming makahanap ng ganoong halaga kung saan umabot sa pinakamataas nito.
Saan nagmula ang aktwal na ideya - upang hanapin ang halaga ng isang hindi kilalang parameter kung saan umabot sa maximum ang function na posibilidad? Ang mga pinagmulan ng ideya ay nagmula sa ideya na ang isang sample ay ang tanging mapagkukunan ng kaalaman na makukuha natin tungkol sa populasyon. Ang lahat ng alam natin tungkol sa populasyon ay kinakatawan sa sample. Samakatuwid, ang masasabi lang natin ay ang isang sample ay ang pinakatumpak na pagmuni-muni ng populasyon na magagamit sa atin. Samakatuwid, kailangan nating makahanap ng isang parameter kung saan ang magagamit na sample ay nagiging pinaka-malamang.
Malinaw, nakikitungo tayo sa isang problema sa pag-optimize kung saan kailangan nating hanapin ang matinding punto ng isang function. Upang mahanap ang extremum point, kinakailangang isaalang-alang ang first-order na kondisyon, iyon ay, equate ang derivative ng function sa zero at lutasin ang equation na may paggalang sa nais na parameter. Gayunpaman, ang paghahanap para sa derivative ng isang produkto ng isang malaking bilang ng mga kadahilanan ay maaaring maging isang mahabang gawain; upang maiwasan ito, mayroong isang espesyal na pamamaraan - lumipat sa logarithm mga function ng posibilidad. Bakit posible ang gayong paglipat? Bigyang-pansin natin ang katotohanan na hindi natin hinahanap ang sukdulan ng mismong pag-andar, at ang extremum point, iyon ay, ang halaga ng hindi kilalang parameter kung saan umabot sa pinakamataas nito. Kapag lumipat sa isang logarithm, ang extremum point ay hindi nagbabago (bagaman ang extremum mismo ay mag-iiba), dahil ang logarithm ay isang monotonic function.
Natin, alinsunod sa nasa itaas, patuloy na bumuo ng ating halimbawa sa mga pautang mula sa Vasya, Fedya at Lesha. Una, lumipat tayo sa logarithm ng function ng posibilidad:
Ngayon ay madali nating maiiba ang expression sa pamamagitan ng :
At sa wakas, isaalang-alang ang kondisyon ng unang pagkakasunud-sunod - tinutumbas namin ang derivative ng function sa zero:
Kaya, ang aming intuitive na pagtatantya ng posibilidad ng pagbabayad ng utang ay theoretically justified.
Mahusay, ngunit ano ang dapat nating gawin sa impormasyong ito ngayon? Kung ipagpalagay natin na ang bawat ikatlong nanghihiram ay hindi nagbabalik ng pera sa bangko, kung gayon ang huli ay hindi maiiwasang mabangkarote. Tama iyon, ngunit kapag tinatasa lamang ang posibilidad ng pagbabayad ng utang na katumbas ng Hindi namin isinaalang-alang ang mga salik na nakakaimpluwensya sa pagbabayad ng utang: ang suweldo ng nanghihiram at ang laki ng buwanang pagbabayad. Tandaan natin na dati nating kinakalkula ang posibilidad ng pagbabayad ng utang ng bawat kliyente, na isinasaalang-alang ang parehong mga kadahilanan. Ito ay lohikal na nakakuha kami ng mga probabilidad na naiiba mula sa pare-parehong katumbas .
Tukuyin natin ang posibilidad ng mga sample:
Code para sa pagkalkula ng mga posibilidad ng sample
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)
Sample na posibilidad sa isang pare-parehong halaga :
Halimbawang posibilidad kapag kinakalkula ang posibilidad ng pagbabayad ng utang na isinasaalang-alang ang mga kadahilanan :
Ang posibilidad ng isang sample na may probabilidad na kinakalkula depende sa mga salik ay naging mas mataas kaysa sa posibilidad na may pare-parehong halaga ng posibilidad. Ano ang ibig sabihin nito? Iminumungkahi nito na ang kaalaman tungkol sa mga salik ay naging posible upang mas tumpak na piliin ang posibilidad ng pagbabayad ng utang para sa bawat kliyente. Samakatuwid, kapag nag-isyu ng susunod na pautang, mas tamang gamitin ang modelong iminungkahi sa dulo ng seksyon 3 ng artikulo para sa pagtatasa ng posibilidad ng pagbabayad ng utang.
Ngunit pagkatapos, kung nais nating i-maximize sample na function ng posibilidad, kung gayon bakit hindi gumamit ng ilang algorithm na magbubunga ng mga probabilidad para sa Vasya, Fedya at Lesha, halimbawa, katumbas ng 0.99, 0.99 at 0.01, ayon sa pagkakabanggit. Marahil ay mahusay na gaganap ang gayong algorithm sa sample ng pagsasanay, dahil mas mapapalapit nito ang halaga ng posibilidad ng sample , ngunit, una, ang gayong algorithm ay malamang na magkakaroon ng mga paghihirap sa kakayahan sa paglalahat, at pangalawa, ang algorithm na ito ay tiyak na hindi magiging linear. At kung ang mga paraan ng paglaban sa overtraining (pantay na mahinang kakayahan sa pangkalahatan) ay malinaw na hindi kasama sa plano ng artikulong ito, pagkatapos ay dumaan tayo sa pangalawang punto nang mas detalyado. Upang gawin ito, sagutin lamang ang isang simpleng tanong. Maaari bang magkapareho ang posibilidad na mabayaran ni Vasya at Fedya ang utang, na isinasaalang-alang ang mga kadahilanan na alam natin? Mula sa punto ng view ng sound logic, siyempre hindi, hindi ito magagawa. Kaya babayaran ni Vasya ang 2.5% ng kanyang suweldo bawat buwan upang mabayaran ang utang, at si Fedya - halos 27,8%. Gayundin sa graph 2 "Pag-uuri ng kliyente" nakita namin na ang Vasya ay mas malayo sa linya na naghihiwalay sa mga klase kaysa sa Fedya. At sa wakas, alam namin na ang function para sa Vasya at Fedya ay tumatagal ng iba't ibang mga halaga: 4.24 para sa Vasya at 1.0 para sa Fedya. Ngayon, kung si Fedya, halimbawa, ay nakakuha ng isang order ng magnitude nang higit pa o humingi ng isang mas maliit na pautang, kung gayon ang mga probabilidad ng pagbabayad ng utang para kay Vasya at Fedya ay magkatulad. Sa madaling salita, hindi maaaring lokohin ang linear dependence. At kung talagang kinakalkula natin ang mga logro , at hindi inalis ang mga ito sa manipis na hangin, maaari naming ligtas na sabihin na ang aming mga halaga pinakamahusay na nagpapahintulot sa amin na tantyahin ang posibilidad ng pagbabayad ng utang ng bawat nanghihiram, ngunit dahil sumang-ayon kaming ipagpalagay na ang pagpapasiya ng mga coefficient ay isinasagawa ayon sa lahat ng mga patakaran, pagkatapos ay ipagpalagay namin ito - pinapayagan kami ng aming mga coefficient na magbigay ng isang mas mahusay na pagtatantya ng posibilidad :)
Gayunpaman, lumihis tayo. Sa seksyong ito kailangan nating maunawaan kung paano tinutukoy ang vector ng mga timbang , na kinakailangan upang masuri ang posibilidad ng pagbabayad ng utang ng bawat nanghihiram.
Ibigay natin sa madaling sabi kung anong arsenal ang hinahanap natin para sa mga logro :
1. Ipinapalagay namin na ang ugnayan sa pagitan ng target na variable (halaga ng hula) at ang salik na nakakaimpluwensya sa resulta ay linear. Para sa kadahilanang ito ito ay ginagamit linear regression function anyo , ang linya kung saan hinahati ang mga bagay (kliyente) sa mga klase ΠΈ o (mga kliyente na kayang bayaran ang utang at ang mga hindi). Sa aming kaso, ang equation ay may anyo .
2. Gumagamit kami inverse logit function anyo upang matukoy ang posibilidad ng isang bagay na kabilang sa isang klase .
3. Itinuturing namin ang aming set ng pagsasanay bilang isang pagpapatupad ng isang pangkalahatan Bernoulli scheme, ibig sabihin, para sa bawat bagay ay nabuo ang isang random na variable, na may posibilidad (sa sarili nito para sa bawat bagay) ay tumatagal ng halaga 1 at may posibilidad - 0.
4. Alam natin kung ano ang kailangan nating i-maximize sample na function ng posibilidad isinasaalang-alang ang mga tinatanggap na mga salik upang ang magagamit na sample ay maging pinaka-kapani-paniwala. Sa madaling salita, kailangan nating pumili ng mga parameter kung saan ang sample ay magiging pinaka-kapani-paniwala. Sa aming kaso, ang napiling parameter ay ang posibilidad ng pagbabayad ng utang , na depende naman sa hindi kilalang coefficient . Kaya kailangan nating makahanap ng tulad ng isang vector ng mga timbang , kung saan ang posibilidad ng sample ay magiging maximum.
5. Alam natin kung ano ang dapat i-maximize sample na mga function ng posibilidad maaaring gamitin maximum na paraan ng posibilidad. At alam namin ang lahat ng nakakalito na trick para gumana sa paraang ito.
Ito ay kung paano ito lumalabas na isang multi-step na paglipat :)
Ngayon tandaan na sa pinakadulo simula ng artikulo gusto naming makakuha ng dalawang uri ng mga function ng pagkawala Pagkawala ng Logistic depende sa kung paano itinalaga ang mga klase ng object. Ito ay nangyari na sa mga problema sa pag-uuri na may dalawang klase, ang mga klase ay tinutukoy bilang ΠΈ o . Depende sa notation, ang output ay magkakaroon ng kaukulang loss function.
Kaso 1. Pag-uuri ng mga bagay sa ΠΈ
Mas maaga, kapag tinutukoy ang posibilidad ng isang sample, kung saan ang posibilidad ng pagbabayad ng utang ng nanghihiram ay kinakalkula batay sa mga kadahilanan at ibinigay na mga coefficient , inilapat namin ang formula:
Talaga ay ang kahulugan mga function ng pagtugon sa logistik para sa isang naibigay na vector ng mga timbang
Pagkatapos ay walang pumipigil sa amin na isulat ang sample na function ng posibilidad tulad ng sumusunod:
Nangyayari na kung minsan ay mahirap para sa ilang mga baguhan na analyst na agad na maunawaan kung paano gumagana ang function na ito. Tingnan natin ang 4 na maikling halimbawa na magpapalinaw sa mga bagay-bagay:
1. Kung (ibig sabihin, ayon sa sample ng pagsasanay, ang bagay ay kabilang sa klase +1), at ang aming algorithm tinutukoy ang posibilidad ng pag-uuri ng isang bagay sa isang klase katumbas ng 0.9, pagkatapos ang piraso ng sample na posibilidad na ito ay kakalkulahin tulad ng sumusunod:
2. Kung At , kung gayon ang pagkalkula ay magiging ganito:
3. Kung At , kung gayon ang pagkalkula ay magiging ganito:
4. Kung At , kung gayon ang pagkalkula ay magiging ganito:
Malinaw na ang posibilidad na pag-andar ay ma-maximize sa mga kaso 1 at 3 o sa pangkalahatang kaso - na may wastong nahulaan na mga halaga ng mga probabilidad ng pagtatalaga ng isang bagay sa isang klase .
Dahil sa katotohanan na kapag tinutukoy ang posibilidad ng pagtatalaga ng isang bagay sa isang klase Hindi lang natin alam ang mga coefficient , pagkatapos ay hahanapin natin sila. Tulad ng nabanggit sa itaas, ito ay isang problema sa pag-optimize kung saan kailangan muna nating hanapin ang derivative ng function ng posibilidad na may paggalang sa vector ng mga timbang. . Gayunpaman, makatuwiran muna na gawing simple ang gawain para sa ating sarili: hahanapin natin ang derivative ng logarithm mga function ng posibilidad.
Bakit pagkatapos ng logarithm, sa mga function ng error sa logistik, pinalitan namin ang sign mula sa sa . Ang lahat ay simple, dahil sa mga problema sa pagtatasa ng kalidad ng isang modelo ay kaugalian na i-minimize ang halaga ng isang function, pinarami namin ang kanang bahagi ng expression sa pamamagitan ng at ayon dito, sa halip na i-maximize, ngayon ay pinaliit namin ang function.
Sa totoo lang, sa ngayon, sa harap ng iyong mga mata, ang pagkawala function ay maingat na nakuha - Pagkawala ng Logistic para sa isang set ng pagsasanay na may dalawang klase: ΠΈ .
Ngayon, upang mahanap ang mga coefficient, kailangan lang nating hanapin ang derivative mga function ng error sa logistik at pagkatapos, gamit ang numerical optimization method, gaya ng gradient descent o stochastic gradient descent, piliin ang pinakamainam na coefficient . Ngunit, dahil sa malaking dami ng artikulo, iminungkahi na isagawa ang pagkita ng kaibhan sa iyong sarili, o marahil ito ay magiging paksa para sa susunod na artikulo na may maraming aritmetika nang walang ganoong detalyadong mga halimbawa.
Kaso 2. Pag-uuri ng mga bagay sa ΠΈ
Ang diskarte dito ay magiging kapareho ng sa mga klase ΠΈ , ngunit ang landas mismo sa output ng function ng pagkawala Pagkawala ng Logistic, ay magiging mas gayak. Magsimula na tayo. Para sa function ng posibilidad ay gagamitin namin ang operator "kung... kung gayon...". Ibig sabihin, kung Ang ika-isang bagay ay kabilang sa klase , pagkatapos ay upang kalkulahin ang posibilidad ng sample ginagamit namin ang probabilidad , kung ang bagay ay kabilang sa klase , pagkatapos ay pinapalitan natin ang posibilidad . Ganito ang hitsura ng function ng posibilidad:
Ilarawan natin sa ating mga daliri kung paano ito gumagana. Isaalang-alang natin ang 4 na kaso:
1. Kung ΠΈ , pagkatapos ay "pumunta" ang posibilidad ng sampling
2. Kung ΠΈ , pagkatapos ay "pumunta" ang posibilidad ng sampling
3. Kung ΠΈ , pagkatapos ay "pumunta" ang posibilidad ng sampling
4. Kung ΠΈ , pagkatapos ay "pumunta" ang posibilidad ng sampling
Malinaw na sa mga kaso 1 at 3, kapag ang mga probabilidad ay wastong natukoy ng algorithm, function ng posibilidad ay ma-maximize, ibig sabihin, ito mismo ang gusto nating makuha. Gayunpaman, ang diskarte na ito ay medyo mahirap at sa susunod ay isasaalang-alang namin ang isang mas compact na notasyon. Ngunit una, let's logarithm the likelihood function with a change of sign, since now we will minimize it.
Sa halip ay palitan natin expression :
Pasimplehin natin ang tamang termino sa ilalim ng logarithm gamit ang mga simpleng pamamaraan ng arithmetic at makuha ang:
Ngayon ay oras na upang alisin ang operator "kung... kung gayon...". Tandaan na kapag ang isang bagay kabilang sa klase , pagkatapos ay sa expression sa ilalim ng logarithm, sa denominator, itinaas sa kapangyarihan , kung ang bagay ay kabilang sa klase , pagkatapos ay itataas ang $e$ sa kapangyarihan . Samakatuwid, ang notasyon para sa degree ay maaaring gawing simple sa pamamagitan ng pagsasama-sama ng parehong mga kaso sa isa: . Pagkatapos pag-andar ng error sa logistik kukuha ng form:
Alinsunod sa mga alituntunin ng logarithm, binabaligtad namin ang bahagi at inilabas ang tanda ""(minus) para sa logarithm, nakukuha namin:
Narito ang function ng pagkawala pagkawala ng logistik, na ginagamit sa set ng pagsasanay na may mga bagay na nakatalaga sa mga klase: ΠΈ .
Buweno, sa puntong ito ay umalis ako at tinatapos namin ang artikulo.
Mga pantulong na materyales
1. Panitikan
1) Inilapat na pagsusuri ng regression / N. Draper, G. Smith - 2nd ed. - M .: Pananalapi at mga istatistika, 1986 (isinalin mula sa Ingles)
2) Probability theory at mathematical statistics / V.E. Gmurman - ika-9 na ed. - M.: Higher School, 2003
3) Teorya ng probabilidad / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007
4) Analytics ng negosyo: mula sa data hanggang sa kaalaman / Paklin N. B., Oreshkov V. I. - 2nd ed. β St. Petersburg: Peter, 2013
5) Data Science Data science mula sa simula / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Mga praktikal na istatistika para sa mga espesyalista sa Data Science / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Mga lektura, kurso (video)
1)
2)
3)
4)
5)
3. Mga mapagkukunan sa Internet
1)
2)
4)
6)
7)
Pinagmulan: www.habr.com