
Ushbu maqolada biz transformatsiyaning nazariy hisoblarini tahlil qilamiz chiziqli regressiya funktsiyalari в teskari logit transformatsiyasi funktsiyasi (aks holda logistik javob funktsiyasi deb ataladi). Keyin, arsenaldan foydalanish maksimal ehtimollik usuli, logistik regressiya modeliga muvofiq, biz yo'qotish funktsiyasini olamiz Logistik yo'qotish, yoki boshqacha qilib aytganda, logistik regressiya modelida vazn vektorining parametrlari tanlangan funktsiyani aniqlaymiz.
.
Maqola tavsifi:
- Keling, ikkita o'zgaruvchi o'rtasidagi chiziqli munosabatni takrorlaymiz
- Keling, transformatsiya zarurligini aniqlaylik chiziqli regressiya funktsiyalari
в logistik javob funksiyasi 
- Keling, transformatsiyalarni va chiqishni amalga oshiramiz logistik javob funksiyasi
- Parametrlarni tanlashda nima uchun eng kichik kvadratlar usuli yomon ekanligini tushunishga harakat qilaylik
vazifalari Logistik yo'qotish - Biz foydalanamiz maksimal ehtimollik usuli aniqlash uchun parametrlarni tanlash funktsiyalari
:5.1. 1-holat: funktsiya Logistik yo'qotish sinf belgilariga ega ob'ektlar uchun 0 и 1:

5.2. 2-holat: funktsiya Logistik yo'qotish sinf belgilariga ega ob'ektlar uchun -1 и +1:

Maqola oddiy misollar bilan to'ldirilgan bo'lib, unda barcha hisob-kitoblarni og'zaki yoki qog'ozda qilish oson, ba'zi hollarda kalkulyator talab qilinishi mumkin. Shunday ekan, tayyorlaning :)
Ushbu maqola, birinchi navbatda, mashinani o'rganish asoslari bo'yicha boshlang'ich bilim darajasiga ega bo'lgan ma'lumotlar olimlari uchun mo'ljallangan.
Maqolada grafik va hisob-kitoblarni chizish uchun kod ham taqdim etiladi. Barcha kodlar tilda yozilgan piton 2.7. Ishlatilgan versiyaning "yangiligi" haqida oldindan tushuntirib beraman - bu taniqli kursni o'tash shartlaridan biridir. Yandex teng darajada taniqli onlayn ta'lim platformasida Coursera, va, taxmin qilish mumkinki, material ushbu kurs asosida tayyorlangan.
01. To'g'ri chiziqli bog'liqlik
Savol berish juda o'rinli - chiziqli qaramlik va logistik regressiya bunga qanday aloqasi bor?
Hammasi oddiy! Logistik regressiya chiziqli tasniflagichga tegishli modellardan biridir. Oddiy so'zlar bilan aytganda, chiziqli tasniflagichning vazifasi maqsadli qiymatlarni bashorat qilishdir
o'zgaruvchilardan (regressorlar)
. Xususiyatlari o'rtasidagi bog'liqlik deb ishoniladi
va maqsadli qiymatlar
chiziqli. Shu sababli klassifikatorning nomi - chiziqli. Taxminan aytganda, logistik regressiya modeli xarakteristikalar o'rtasida chiziqli bog'liqlik mavjud degan taxminga asoslanadi.
va maqsadli qiymatlar
. Bu aloqa.
Studiyada birinchi misol bor va u to'g'ri, o'rganilayotgan miqdorlarning to'g'ri chiziqli bog'liqligi haqida. Maqolani tayyorlash jarayonida men ko'p odamlarni chetga surgan misolga duch keldim - oqimning kuchlanishga bog'liqligi (“Amaliy regressiya tahlili”, N. Draper, G. Smit). Bu erda ham ko'rib chiqamiz.
muvofiq Ohm qonuni:
qayerda
- joriy quvvat,
- Kuchlanishi,
- qarshilik.
Agar bilmaganimizda Ohm qonuni, keyin o'zgartirish orqali bog'liqlikni empirik tarzda topishimiz mumkin
va o'lchash
, qo'llab-quvvatlash paytida
belgilangan. Keyin biz qaramlik grafigini ko'ramiz
от
boshi orqali ozmi-ko‘pmi to‘g‘ri chiziq beradi. Biz "ko'proq yoki kamroq" deymiz, chunki munosabatlar haqiqatda to'g'ri bo'lsa-da, bizning o'lchovlarimiz kichik xatolarni o'z ichiga olishi mumkin va shuning uchun grafikdagi nuqtalar to'liq chiziqqa tushmasligi mumkin, lekin tasodifiy ravishda uning atrofida tarqalib ketadi.
1-chizma “Tobelik”
от
»

Diagramma chizish kodi
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. Chiziqli regressiya tenglamasini o'zgartirish zarurati
Keling, yana bir misolni ko'rib chiqaylik. Tasavvur qilaylik, biz bankda ishlaymiz va bizning vazifamiz muayyan omillarga qarab qarz oluvchining kreditni qaytarish ehtimolini aniqlashdir. Vazifani soddalashtirish uchun biz faqat ikkita omilni ko'rib chiqamiz: qarz oluvchining oylik maoshi va oylik kredit to'lovi miqdori.
Vazifa juda shartli, ammo bu misol bilan nima uchun uni ishlatish etarli emasligini tushunishimiz mumkin chiziqli regressiya funktsiyalari, shuningdek, funktsiya bilan qanday o'zgarishlarni amalga oshirish kerakligini bilib oling.
Keling, misolga qaytaylik. Ma'lumki, ish haqi qanchalik yuqori bo'lsa, qarz oluvchi kreditni to'lash uchun har oyda ko'proq mablag' ajratishi mumkin. Shu bilan birga, ma'lum bir ish haqi oralig'i uchun bu munosabatlar juda chiziqli bo'ladi. Masalan, 60.000 200.000 rubldan 3 5.000 rublgacha bo'lgan ish haqi oralig'ini olaylik va belgilangan ish haqi oralig'ida oylik to'lov hajmining ish haqi miqdoriga bog'liqligi chiziqli deb faraz qilaylik. Aytaylik, ish haqining belgilangan diapazoni uchun ish haqining to'lovga nisbati XNUMX dan past bo'lishi mumkin emasligi va qarz oluvchining zaxirasida hali ham XNUMX rubl bo'lishi kerakligi aniqlandi. Va faqat bu holatda, biz qarz oluvchining bankka kreditni to'lashini taxmin qilamiz. Keyin chiziqli regressiya tenglamasi quyidagi shaklni oladi:

qayerda
,
,
,
- ish haqi
- qarz oluvchi,
- kredit to'lovi
- qarz oluvchi.
Ish haqi va kredit to'lovini belgilangan parametrlar bilan tenglamaga almashtirish
Siz kredit berish yoki rad etish to'g'risida qaror qabul qilishingiz mumkin.
Oldinga qarab, biz berilgan parametrlar bilan shuni ta'kidlaymiz
chiziqli regressiya funktsiyasi, ichida ishlatilgan logistika javob funksiyalari kreditni qaytarish ehtimolini aniqlash uchun hisob-kitoblarni murakkablashtiradigan katta qiymatlarni keltirib chiqaradi. Shuning uchun koeffitsientlarimizni, aytaylik, 25.000 ming barobarga kamaytirish taklif qilinmoqda. Koeffitsientlarning bunday o'zgarishi kredit berish to'g'risidagi qarorni o'zgartirmaydi. Kelajakda bu nuqtani eslaylik, ammo hozir nima haqida gapirayotganimizni yanada aniqroq qilish uchun keling, uchta potentsial qarz oluvchi bilan vaziyatni ko'rib chiqaylik.
1-jadval “Potentsial qarz oluvchilar”

Jadvalni yaratish uchun kod
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']]Jadvaldagi ma'lumotlarga ko'ra, Vasya 120.000 3.000 rubl maoshi bilan har oy 5.000 XNUMX rubl to'lashi uchun kredit olishni xohlaydi. Biz kreditni tasdiqlash uchun Vasyaning ish haqi to'lov miqdoridan uch baravar ko'p bo'lishi kerakligini va hali ham XNUMX rubl qolishi kerakligini aniqladik. Vasya bu talabni qondiradi:
. Hatto 106.000 XNUMX rubl ham qoladi. Hisoblashda shunga qaramay
imkoniyatlarni kamaytirdik
25.000 XNUMX marta, natija bir xil bo'ldi - kreditni tasdiqlash mumkin. Fedya ham qarz oladi, lekin Lesha, eng ko'p olganiga qaramay, ishtahasini jilovlashi kerak.
Keling, bu holat uchun grafik chizamiz.
2-chizma “Qarz oluvchilarning tasnifi”

Grafik chizish uchun kod
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()Shunday qilib, funktsiyaga muvofiq qurilgan bizning to'g'ri chiziq
, "yomon" qarz oluvchilarni "yaxshi"lardan ajratib turadi. Istaklari o'z imkoniyatlariga to'g'ri kelmaydigan qarz oluvchilar chiziqdan yuqori (Lesha), bizning modelimiz parametrlariga ko'ra kreditni to'lashga qodir bo'lganlar esa chiziq ostida (Vasya va Fedya). Boshqacha qilib aytganda, biz buni aytishimiz mumkin: bizning to'g'ridan-to'g'ri liniyamiz qarz oluvchilarni ikki sinfga ajratadi. Ularni quyidagicha belgilaymiz: sinfga
Biz kreditni to'lash ehtimoli yuqori bo'lgan qarz oluvchilarni tasniflaymiz
yoki
Biz kreditni to'lay olmaydigan qarz oluvchilarni o'z ichiga olamiz.
Keling, ushbu oddiy misoldan xulosalarni umumlashtiramiz. Keling, bir fikrni olaylik
va nuqtaning koordinatalarini chiziqning tegishli tenglamasiga almashtirish
, uchta variantni ko'rib chiqing:
- Agar nuqta chiziq ostida bo'lsa va biz uni sinfga tayinlaymiz
, keyin funksiya qiymati
dan ijobiy bo'ladi
uchun
. Bu shuni anglatadiki, biz kreditni to'lash ehtimoli ichida deb taxmin qilishimiz mumkin
. Funktsiya qiymati qanchalik katta bo'lsa, ehtimollik shunchalik yuqori bo'ladi. - Agar nuqta chiziqdan yuqori bo'lsa va biz uni sinfga tayinlaymiz
yoki
, u holda funktsiyaning qiymati dan manfiy bo'ladi
uchun
. Keyin biz qarzni to'lash ehtimoli ichida deb taxmin qilamiz
va funktsiyaning mutlaq qiymati qanchalik katta bo'lsa, bizning ishonchimiz shunchalik yuqori bo'ladi. - Nuqta to'g'ri chiziqda, ikki sinf o'rtasidagi chegarada. Bunday holda, funktsiyaning qiymati
teng bo'ladi
va kreditni to'lash ehtimoli teng
.
Keling, tasavvur qilaylik, bizda ikkita emas, balki o'nlab, uch emas, minglab qarz oluvchilar bor. Keyin to'g'ri chiziq o'rniga bizda bo'ladi m o'lchamli tekislik va koeffitsientlar
biz havodan tashqariga chiqarilmaydi, balki barcha qoidalarga muvofiq va kreditni to'lagan yoki to'lamagan qarz oluvchilar to'g'risidagi to'plangan ma'lumotlar asosida olinadi. Va haqiqatan ham, biz allaqachon ma'lum bo'lgan koeffitsientlardan foydalangan holda qarz oluvchilarni tanlayotganimizni unutmang
. Aslida, logistik regressiya modelining vazifasi parametrlarni aniq aniqlashdir
, bunda yo'qotish funktsiyasining qiymati Logistik yo'qotish minimal darajaga intiladi. Ammo vektor qanday hisoblanganligi haqida
, biz maqolaning 5-qismida ko'proq bilib olamiz. Bu orada biz va’da qilingan yerga – bankirimiz va uning uchta mijoziga qaytamiz.
Funksiya uchun rahmat
kimga qarz berish mumkinligini va kimga rad etish kerakligini bilamiz. Ammo siz bunday ma'lumot bilan direktorga kira olmaysiz, chunki ular bizdan har bir qarz oluvchi tomonidan kreditni qaytarish ehtimolini olishni xohlashdi. Nima qilish kerak? Javob oddiy - biz funktsiyani qandaydir tarzda o'zgartirishimiz kerak
, ularning qiymatlari diapazonda joylashgan
qiymatlari diapazonda joylashgan funksiyaga
. Va bunday funktsiya mavjud, u chaqiriladi logistik javob funksiyasi yoki teskari logit transformatsiyasi. Tanishish:

Keling, bu qanday ishlashini bosqichma-bosqich ko'rib chiqaylik logistik javob funksiyasi. E'tibor bering, biz teskari yo'nalishda yuramiz, ya'ni. dan oralig'ida joylashgan ehtimollik qiymatini bilamiz deb faraz qilamiz
uchun
va keyin biz bu qiymatni barcha raqamlar oralig'iga "bo'shatamiz"
uchun
.
03. Logistik javob funksiyasini olamiz
1-qadam. Ehtimollik qiymatlarini diapazonga aylantiring 
Funktsiyani o'zgartirish jarayonida
в logistik javob funksiyasi
Biz kredit tahlilchimizni yolg‘iz qoldirib, bukmekerlar bilan tanishamiz. Yo'q, albatta, biz pul tikmaymiz, bizni qiziqtirgan narsa bu iboraning ma'nosi, masalan, imkoniyat 4 ga 1. Barcha tikish o'yinchilariga tanish bo'lgan koeffitsientlar "muvaffaqiyat" ning " muvaffaqiyatsizliklar". Ehtimollik nuqtai nazaridan, koeffitsientlar hodisaning sodir bo'lish ehtimolini voqea sodir bo'lmaslik ehtimoliga bo'linadi. Keling, voqea sodir bo'lish ehtimoli formulasini yozamiz
:

qayerda
- voqea sodir bo'lish ehtimoli;
- sodir bo'lmagan voqea ehtimoli
Masalan, “Veterok” laqabli yosh, baquvvat va o‘ynoqi otning “Matilda” ismli keksa va nimjon kampirni poygada urish ehtimoli teng bo‘lsa.
, keyin "Veterok" uchun muvaffaqiyatga erishish imkoniyati bo'ladi
к
va aksincha, koeffitsientlarni bilgan holda, ehtimollikni hisoblash biz uchun qiyin bo'lmaydi
:

Shunday qilib, biz ehtimollikni qiymatlarni oladigan tasodiflarga "tarjima" qilishni o'rgandik
uchun
. Keling, yana bir qadam tashlab, ehtimollikni butun son qatoriga “tarjima” qilishni o'rganamiz
uchun
.
2-qadam. Ehtimollik qiymatlarini diapazonga aylantiring 
Bu qadam juda oddiy - keling, Eyler soni bazasiga koeffitsientlarning logarifmini olaylik.
va biz olamiz:

Endi biz buni bilamiz, agar
, keyin qiymatni hisoblang
juda oddiy bo'ladi va bundan tashqari, ijobiy bo'lishi kerak:
. Ha shunaqa.
Qiziq, keling, nima bo'lishini tekshirib ko'raylik
, keyin biz salbiy qiymatni ko'rishni kutamiz
. Biz tekshiramiz:
. Hammasi to'g'ri.
Endi biz ehtimollik qiymatini qanday o'zgartirishni bilamiz
uchun
dan butun son chizig'i bo'ylab
uchun
. Keyingi bosqichda biz buning aksini qilamiz.
Hozircha funktsiya qiymatini bilish logarifm qoidalariga muvofiq ekanligini ta'kidlaymiz
, siz koeffitsientlarni hisoblashingiz mumkin:

Koeffitsientlarni aniqlashning ushbu usuli biz uchun keyingi bosqichda foydali bo'ladi.
3-qadam. Aniqlash uchun formulani chiqaramiz 
Shunday qilib, biz bilib oldik
, funksiya qiymatlarini toping
. Biroq, aslida, bizga mutlaqo teskari - qiymatni bilish kerak
topmoq
. Buning uchun teskari koeffitsient funksiyasi kabi tushunchaga murojaat qilaylik, unga ko'ra:

Maqolada biz yuqoridagi formulani olmaymiz, lekin biz uni yuqoridagi misoldagi raqamlar yordamida tekshiramiz. Biz bilamizki, 4 ga 1 koeffitsient bilan (
), hodisaning sodir bo'lish ehtimoli 0.8 (
). Keling, almashtirishni amalga oshiramiz:
. Bu bizning oldingi hisob-kitoblarimiz bilan mos keladi. Keling, davom etaylik.
Oxirgi bosqichda biz buni aniqladik
, ya'ni siz teskari koeffitsient funksiyasida almashtirishni amalga oshirishingiz mumkin. Biz olamiz:

Numerator va maxrajni ikkiga bo'ling
, Keyin:

Hech qanday holatda xato qilmaganimizga ishonch hosil qilish uchun biz yana bitta kichik tekshiruv o'tkazamiz. 2-bosqichda biz uchun
deb belgiladi
. Keyin, qiymatni almashtiring
logistika javob funksiyasiga, biz olishni kutmoqdamiz
. Biz almashtiramiz va olamiz: 
Tabriklaymiz, aziz o'quvchi, biz hozirgina logistik javob funksiyasini yaratdik va sinab ko'rdik. Funktsiyaning grafigini ko'rib chiqamiz.
Grafik 3 “Logistik javob funksiyasi”

Grafik chizish uchun kod
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()Adabiyotda siz ushbu funktsiyaning nomini ham topishingiz mumkin sigmasimon funktsiya. Grafik aniq ko'rsatadiki, ob'ektning sinfga tegishli bo'lish ehtimolining asosiy o'zgarishi nisbatan kichik diapazonda sodir bo'ladi.
, qayerdandir
uchun
.
Men kredit tahlilchimizga qaytib, unga kreditni to'lash ehtimolini hisoblashda yordam berishni taklif qilaman, aks holda u bonussiz qolishi mumkin :)
2-jadval “Potentsial qarz oluvchilar”

Jadvalni yaratish uchun kod
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']]Shunday qilib, biz kreditni qaytarish ehtimolini aniqladik. Umuman olganda, bu haqiqatga o'xshaydi.
Darhaqiqat, 120.000 3.000 rubl maoshga ega Vasya har oy bankka 100 rubl berish ehtimoli 0.3% ga yaqin. Aytgancha, agar bank siyosatida, masalan, kreditni qaytarish ehtimoli XNUMX dan ortiq bo'lgan mijozlarga kredit berish nazarda tutilgan bo'lsa, bank Leshaga kredit berishi mumkinligini tushunishimiz kerak. Shunchaki, bu holda bank mumkin bo'lgan yo'qotishlar uchun kattaroq zaxira yaratadi.
Shuni ham ta'kidlash kerakki, ish haqining to'lovga nisbati kamida 3 va 5.000 RUR marjasi bilan shiftdan olingan. Shuning uchun biz og'irliklar vektorini asl ko'rinishida ishlata olmadik
. Biz koeffitsientlarni sezilarli darajada kamaytirishimiz kerak edi va bu holda biz har bir koeffitsientni 25.000 XNUMX ga bo'ldik, ya'ni biz natijani to'g'rilab oldik. Ammo bu dastlabki bosqichda materialni tushunishni soddalashtirish uchun maxsus qilingan. Hayotda biz koeffitsientlarni ixtiro qilishimiz va sozlashimiz shart emas, balki ularni topamiz. Maqolaning keyingi bo'limlarida biz parametrlar tanlangan tenglamalarni olamiz
.
04. Og'irliklar vektorini aniqlashning eng kichik kvadratlar usuli
logistika javob funksiyasida
Biz og'irliklar vektorini tanlashning ushbu usulini allaqachon bilamiz
, deb Eng kichik kvadratlar usuli (LSM) va aslida, nega biz uni ikkilik tasniflash muammolarida ishlatmaymiz? Darhaqiqat, foydalanishga hech narsa to'sqinlik qilmaydi MNC, tasniflash masalalarida faqat ushbu usuldan kamroq aniq natijalar beradi Logistik yo'qotish. Buning nazariy asoslari mavjud. Avval bitta oddiy misolni ko'rib chiqaylik.
Faraz qilaylik, bizning modellarimiz (foydalanish MSE и Logistik yo'qotish) allaqachon og'irliklar vektorini tanlashni boshladilar
va biz bir qadamda hisobni to'xtatdik. O'rtada, oxirida yoki boshida muhim emas, asosiysi bizda og'irliklar vektorining ba'zi qiymatlari bor va bu bosqichda og'irliklar vektori deb faraz qilaylik.
ikkala model uchun ham farqlar yo'q. Keyin olingan og'irliklarni oling va ularni o'rniga qo'ying logistik javob funksiyasi (
) sinfga tegishli bo'lgan ba'zi ob'ektlar uchun
. Biz ikkita holatni ko'rib chiqamiz, agar tanlangan og'irliklar vektoriga muvofiq, bizning modelimiz juda xato bo'lsa va aksincha - model ob'ekt sinfga tegishli ekanligiga juda ishonadi.
. Keling, foydalanishda qanday jarimalar berilishini ko'rib chiqaylik MNC и Logistik yo'qotish.
Amaldagi yo'qotish funktsiyasiga qarab jarimalarni hisoblash uchun kod
# класс объекта
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_2Qo'pol xatolik holati — model obyektni sinfga tayinlaydi
0,01 ehtimollik bilan
Foydalanish uchun jarima MNC bo'ladi:

Foydalanish uchun jarima Logistik yo'qotish bo'ladi:

Kuchli ishonch holati — model obyektni sinfga tayinlaydi
0,99 ehtimollik bilan
Foydalanish uchun jarima MNC bo'ladi:

Foydalanish uchun jarima Logistik yo'qotish bo'ladi:

Ushbu misol qo'pol xatolik bo'lsa, yo'qotish funktsiyasini yaxshi ko'rsatadi Log yo'qotish dan sezilarli darajada ko'proq modelni jazolaydi MSE. Keling, yo'qotish funktsiyasidan foydalanishning nazariy asoslari nima ekanligini tushunib olaylik Log yo'qotish tasniflash muammolarida.
05. Maksimal ehtimollik usuli va logistik regressiya
Boshida va'da qilinganidek, maqola oddiy misollar bilan to'la. Studiyada yana bir misol va eski mehmonlar bor - bank qarz oluvchilar: Vasya, Fedya va Lesha.
Har holda, misolni ishlab chiqishdan oldin, hayotda biz o'nlab yoki yuzlab xususiyatlarga ega minglab yoki millionlab ob'ektlarning o'quv namunasi bilan shug'ullanayotganimizni eslatib o'taman. Biroq, bu erda raqamlar yangi boshlanuvchi ma'lumot olimining boshiga osongina mos kelishi uchun olingan.
Keling, misolga qaytaylik. Tasavvur qilaylik, bank direktori algoritm uni Leshaga bermaslikni aytganiga qaramay, barcha muhtojlarga kredit berishga qaror qildi. Endi esa yetarlicha vaqt o‘tdi va biz uchta qahramondan qaysi biri qarzni qaytargan, qaysi biri bermaganligini bilamiz. Nimani kutish kerak edi: Vasya va Fedya qarzni to'lashdi, lekin Lesha bermadi. Keling, tasavvur qilaylik, bu natija biz uchun yangi o'quv namunasi bo'ladi va shu bilan birga, kreditni to'lash ehtimoliga ta'sir qiluvchi omillar (qarz oluvchining ish haqi, oylik to'lov miqdori) haqidagi barcha ma'lumotlar yo'qolganga o'xshaydi. Keyin, intuitiv ravishda, biz har uchinchi qarz oluvchining bankka kreditni to'lamasligini yoki boshqacha qilib aytganda, keyingi qarz oluvchining kreditni qaytarish ehtimolini taxmin qilishimiz mumkin.
. Ushbu intuitiv taxmin nazariy jihatdan tasdiqlanadi va unga asoslanadi maksimal ehtimollik usuli, ko'pincha adabiyotda deyiladi maksimal ehtimollik printsipi.
Birinchidan, kontseptual apparat bilan tanishamiz.
Namuna olish ehtimoli aynan shunday namunani olish, aynan shunday kuzatishlar/natijalarni olish ehtimoli, ya'ni. har bir namunaviy natijalarni olish ehtimoli mahsuloti (masalan, Vasya, Fedya va Leshaning krediti bir vaqtning o'zida to'langanmi yoki to'lanmaganmi).
Ehtimollik funksiyasi Namuna ehtimolini taqsimlash parametrlarining qiymatlari bilan bog'laydi.
Bizning holatda, o'quv namunasi umumlashtirilgan Bernulli sxemasi bo'lib, unda tasodifiy o'zgaruvchi faqat ikkita qiymatni oladi:
yoki
. Shuning uchun namunaning ehtimolligi parametrning ehtimollik funksiyasi sifatida yozilishi mumkin
quyida bayon qilinganidek:


Yuqoridagi yozuvni quyidagicha talqin qilish mumkin. Vasya va Fedya qarzni to'lashning birgalikdagi ehtimoli teng
, Leshaning kreditni to'lamasligi ehtimoli teng
(chunki bu kreditni to'lash bo'lmagan), shuning uchun har uchala hodisaning birgalikdagi ehtimoli tengdir.
.
Maksimal ehtimollik usuli noma'lum parametrni maksimallashtirish orqali baholash usulidir ehtimollik funktsiyalari. Bizning holatda, biz bunday qiymatni topishimiz kerak
, qaysi vaqtda
maksimal darajaga etadi.
Haqiqiy g'oya qayerdan kelib chiqadi - ehtimollik funksiyasi maksimal darajaga etgan noma'lum parametrning qiymatini izlash? G'oyaning kelib chiqishi namuna aholi haqidagi biz uchun mavjud bo'lgan yagona bilim manbai degan fikrdan kelib chiqadi. Biz populyatsiya haqida bilgan hamma narsa namunada aks ettirilgan. Shuning uchun biz aytishimiz mumkin bo'lgan yagona narsa shundaki, namuna biz uchun mavjud bo'lgan populyatsiyaning eng aniq aksidir. Shuning uchun, biz mavjud bo'lgan namuna eng ehtimoliy bo'ladigan parametrni topishimiz kerak.
Shubhasiz, biz optimallashtirish muammosi bilan shug'ullanamiz, unda biz funktsiyaning ekstremum nuqtasini topishimiz kerak. Ekstremum nuqtani topish uchun birinchi tartib shartni ko'rib chiqish, ya'ni funksiyaning hosilasini nolga tenglashtirish va kerakli parametrga nisbatan tenglamani yechish kerak. Biroq, ko'p sonli omillar mahsulotining hosilasini izlash uzoq vaqt talab qilishi mumkin, buning oldini olish uchun maxsus texnika mavjud - logarifmga o'tish. ehtimollik funktsiyalari. Nima uchun bunday o'tish mumkin? Keling, funksiyaning ekstremumini qidirmasligimizga e'tibor qarataylik
, va ekstremum nuqtasi, ya'ni noma'lum parametrning qiymati
, qaysi vaqtda
maksimal darajaga etadi. Logarifmga o'tishda ekstremum nuqtasi o'zgarmaydi (garchi ekstremumning o'zi farq qilsa ham), chunki logarifm monotonik funktsiyadir.
Keling, yuqoridagilarga muvofiq, Vasya, Fedya va Leshadan olingan kreditlar bilan o'z misolimizni rivojlantirishni davom ettiraylik. Avvaliga davom etaylik ehtimollik funksiyasining logarifmi:

Endi biz iborani osongina farqlay olamiz
:

Va nihoyat, birinchi darajali shartni ko'rib chiqing - biz funktsiyaning hosilasini nolga tenglashtiramiz:

Shunday qilib, kreditni to'lash ehtimolini intuitiv baholashimiz
nazariy jihatdan asoslandi.
Ajoyib, lekin hozir bu ma'lumot bilan nima qilishimiz kerak? Agar har uchinchi qarz oluvchi pulni bankka qaytarmaydi deb hisoblasak, ikkinchisi muqarrar ravishda bankrot bo'ladi. To'g'ri, lekin faqat kreditni to'lash ehtimolini baholashda
Biz kreditni to'lashga ta'sir qiluvchi omillarni hisobga olmadik: qarz oluvchining ish haqi va oylik to'lov miqdori. Eslatib o'tamiz, biz ilgari xuddi shu omillarni hisobga olgan holda har bir mijoz tomonidan kreditni to'lash ehtimolini hisoblab chiqdik. Biz doimiy tengdan farqli ehtimollarni olganimiz mantiqan
.
Keling, namunalar ehtimolini aniqlaymiz:
Namuna ehtimolini hisoblash uchun kod
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)Doimiy qiymatda namuna olish ehtimoli
:

Faktorlarni hisobga olgan holda kreditni qaytarish ehtimolini hisoblashda namunaviy ehtimollik
:


Omillarga bog'liq holda hisoblangan ehtimolli namunaning ehtimoli doimiy ehtimollik qiymatiga ega bo'lgan ehtimoldan yuqori bo'lib chiqdi. Bu qanday ma'nono bildiradi? Bu shuni ko'rsatadiki, omillar haqidagi bilimlar har bir mijoz uchun kreditni to'lash ehtimolini aniqroq tanlash imkonini berdi. Shuning uchun, keyingi kreditni berishda, qarzni to'lash ehtimolini baholash uchun maqolaning 3-qismining oxirida taklif qilingan modeldan foydalanish to'g'ri bo'ladi.
Ammo keyin, agar biz maksimal darajada oshirishni xohlasak namuna ehtimoli funktsiyasi, unda nima uchun Vasya, Fedya va Lesha uchun ehtimolliklarni ishlab chiqaradigan algoritmdan foydalanmaslik kerak, masalan, mos ravishda 0.99, 0.99 va 0.01 ga teng. Ehtimol, bunday algoritm o'quv namunasida yaxshi ishlaydi, chunki u namunaning ehtimollik qiymatini yaqinlashtiradi.
, lekin, birinchidan, bunday algoritm umumlashtirish qobiliyati bilan bog'liq qiyinchiliklarga duch keladi, ikkinchidan, bu algoritm aniq chiziqli bo'lmaydi. Va agar ortiqcha mashg'ulotlarga qarshi kurash usullari (bir xil darajada zaif umumlashtirish qobiliyati) ushbu maqolaning rejasiga aniq kiritilmagan bo'lsa, keling, ikkinchi nuqtani batafsilroq ko'rib chiqaylik. Buning uchun oddiy savolga javob berish kifoya. Bizga ma'lum bo'lgan omillarni hisobga olgan holda, Vasya va Fedyaning kreditni qaytarish ehtimoli bir xil bo'lishi mumkinmi? Sog'lom mantiq nuqtai nazaridan, albatta, yo'q, mumkin emas. Shunday qilib, Vasya kreditni to'lash uchun oyiga ish haqining 2.5 foizini, Fedya esa deyarli 27,8 foizini to'laydi. Shuningdek, "Mijozlarni tasniflash" 2-grafigida biz Vasya Fedyaga qaraganda sinflarni ajratib turadigan chiziqdan ancha uzoqda ekanligini ko'ramiz. Va nihoyat, biz funktsiyani bilamiz
Vasya va Fedya uchun turli qiymatlarni oladi: Vasya uchun 4.24 va Fedya uchun 1.0. Endi, masalan, Fedya ko'proq buyurtma olgan bo'lsa yoki kichikroq qarz so'rasa, Vasya va Fedya uchun qarzni to'lash ehtimoli o'xshash bo'ladi. Boshqacha qilib aytganda, chiziqli qaramlikni aldab bo'lmaydi. Va agar biz haqiqatda koeffitsientlarni hisoblab chiqsak
, va ularni havodan olib chiqmadik, biz ishonch bilan aytishimiz mumkinki, bizning qadriyatlarimiz
eng yaxshisi har bir qarz oluvchi tomonidan kreditni to'lash ehtimolini baholashga imkon beradi, ammo biz koeffitsientlarni aniqlashga rozi bo'lganimiz sababli
barcha qoidalarga muvofiq amalga oshirildi, keyin biz shunday deb taxmin qilamiz - bizning koeffitsientlarimiz ehtimollikni yaxshiroq baholashga imkon beradi :)
Biroq, biz chekinamiz. Ushbu bo'limda biz og'irliklar vektori qanday aniqlanganligini tushunishimiz kerak
, bu har bir qarz oluvchi tomonidan kreditni qaytarish ehtimolini baholash uchun zarur.
Keling, qanday arsenal bilan ziddiyatlarni qidirayotganimizni qisqacha bayon qilaylik
:
1. Maqsadli o'zgaruvchi (bashorat qiymati) va natijaga ta'sir etuvchi omil o'rtasidagi bog'liqlik chiziqli deb faraz qilamiz. Shu sababdan foydalaniladi chiziqli regressiya funktsiyasi turlari
, uning chizig'i ob'ektlarni (mijozlarni) sinflarga ajratadi
и
yoki
(kreditni to'lashga qodir bo'lgan va to'lay olmaydigan mijozlar). Bizning holatda, tenglama shaklga ega
.
2. Biz foydalanamiz teskari logit funktsiyasi turlari
ob'ektning sinfga tegishli bo'lish ehtimolini aniqlash
.
3. Biz o'quv majmuamizni umumlashtirilganning amalga oshirilishi deb hisoblaymiz Bernoulli sxemalari, ya'ni har bir ob'ekt uchun tasodifiy o'zgaruvchi hosil bo'ladi, bu ehtimollik bilan
(har bir ob'ekt uchun o'z) 1 va ehtimollik qiymatini oladi
- 0.
4. Biz nimani maksimal darajada oshirishimiz kerakligini bilamiz namuna ehtimoli funktsiyasi qabul qilingan omillarni hisobga olgan holda mavjud namuna eng ishonchli bo'ladi. Boshqacha qilib aytganda, biz namunani eng maqbul bo'lgan parametrlarni tanlashimiz kerak. Bizning holatda, tanlangan parametr kreditni qaytarish ehtimoli hisoblanadi
, bu o'z navbatida noma'lum koeffitsientlarga bog'liq
. Shunday qilib, biz og'irliklarning bunday vektorini topishimiz kerak
, bunda namunaning ehtimoli maksimal bo'ladi.
5. Biz nimani maksimal darajada oshirishni bilamiz Namuna ehtimollik funksiyalari foydalanishingiz mumkin maksimal ehtimollik usuli. Va biz bu usul bilan ishlashning barcha hiyla-nayranglarini bilamiz.
Bu ko'p bosqichli harakat bo'lib chiqadi :)
Endi esda tutingki, maqolaning boshida biz ikki turdagi yo'qotish funktsiyalarini olishni xohladik Logistik yo'qotish ob'ekt sinflari qanday belgilanishiga bog'liq. Shunday bo'ldiki, ikkita sinf bilan tasniflash masalalarida sinflar sifatida belgilanadi
и
yoki
. Belgilanishga qarab, chiqish mos keladigan yo'qotish funktsiyasiga ega bo'ladi.
1-holat. Ob'ektlarning tasnifi
и 
Ilgari, qarz oluvchi tomonidan qarzni to'lash ehtimoli omillar va berilgan koeffitsientlar asosida hisoblangan namunaning ehtimolini aniqlashda.
, biz formulani qo'llaymiz:

Aslida
ma'nosidir logistika javob funksiyalari
berilgan og'irliklar vektori uchun 
Keyin hech narsa bizga namuna ehtimoli funktsiyasini quyidagicha yozishimizga to'sqinlik qilmaydi:

Ba'zida ba'zi yangi boshlanuvchilar uchun ushbu funktsiya qanday ishlashini darhol tushunish qiyin bo'ladi. Keling, narsalarni aniqlaydigan 4 ta qisqa misolni ko'rib chiqaylik:
1. agar
(ya'ni, o'quv namunasiga ko'ra, ob'ekt +1 sinfga tegishli) va bizning algoritmimiz
ob'ektni sinfga tasniflash ehtimolini aniqlaydi
0.9 ga teng bo'lsa, namunaning ehtimollik qismi quyidagicha hisoblanadi:

2. agar
va
, keyin hisoblash quyidagicha bo'ladi:

3. agar
va
, keyin hisoblash quyidagicha bo'ladi:

4. agar
va
, keyin hisoblash quyidagicha bo'ladi:

Ma'lumki, ehtimollik funksiyasi 1 va 3 holatlarida yoki umumiy holatda - ob'ektni sinfga belgilash ehtimolining to'g'ri taxmin qilingan qiymatlari bilan maksimal darajaga ko'tariladi.
.
Ob'ektni sinfga belgilash ehtimolini aniqlashda
Biz faqat koeffitsientlarni bilmaymiz
, keyin biz ularni qidiramiz. Yuqorida ta'kidlab o'tilganidek, bu optimallashtirish muammosi bo'lib, unda avval og'irliklar vektoriga nisbatan ehtimollik funksiyasining hosilasini topishimiz kerak.
. Biroq, birinchi navbatda o'zimiz uchun vazifani soddalashtirish mantiqan: biz logarifmning hosilasini qidiramiz. ehtimollik funktsiyalari.

Nima uchun logarifmdan keyin, in logistik xato funktsiyalaridan belgini o'zgartirdik
haqida
. Hammasi oddiy, chunki model sifatini baholash muammolarida funktsiya qiymatini minimallashtirish odatiy holdir, biz ifodaning o'ng tomonini ko'paytirdik.
va shunga mos ravishda, maksimallashtirish o'rniga, endi biz funktsiyani minimallashtiramiz.
Aslida, hozir sizning ko'zingiz oldida yo'qotish funktsiyasi og'riqli tarzda olingan - Logistik yo'qotish ikkita sinfdan iborat o'quv to'plami uchun:
и
.
Endi koeffitsientlarni topish uchun hosilani topish kifoya logistik xato funktsiyalari va keyin gradient tushishi yoki stokastik gradient tushishi kabi raqamli optimallashtirish usullaridan foydalanib, eng maqbul koeffitsientlarni tanlang.
. Ammo, maqolaning katta hajmini hisobga olgan holda, differentsiatsiyani mustaqil ravishda amalga oshirish taklif etiladi, yoki bu keyingi maqola uchun bunday batafsil misollarsiz juda ko'p arifmetik mavzu bo'lishi mumkin.
2-holat. Ob'ektlarning tasnifi
и 
Bu erda yondashuv sinflar bilan bir xil bo'ladi
и
, lekin yo'qotish funktsiyasining chiqishiga yo'lning o'zi Logistik yo'qotish, yanada bezakli bo'ladi. Qani boshladik. Ehtimollik funksiyasi uchun operatordan foydalanamiz "Agar ... keyin ...". Ya'ni, agar
th ob'ekt sinfga tegishli
, keyin namunaning ehtimolligini hisoblash uchun biz ehtimollikdan foydalanamiz
, agar ob'ekt sinfga tegishli bo'lsa
, keyin biz ehtimollikka almashtiramiz
. Ehtimollik funksiyasi shunday ko'rinadi:

Keling, uning qanday ishlashini barmoqlarimiz bilan tasvirlab beraylik. Keling, 4 ta holatni ko'rib chiqaylik:
1. agar
и
, keyin namuna olish ehtimoli "ketadi" 
2. agar
и
, keyin namuna olish ehtimoli "ketadi" 
3. agar
и
, keyin namuna olish ehtimoli "ketadi" 
4. agar
и
, keyin namuna olish ehtimoli "ketadi" 
Ko'rinib turibdiki, 1 va 3 hollarda, ehtimolliklar algoritm bilan to'g'ri aniqlanganda, ehtimollik funksiyasi maksimal darajaga ko'tariladi, ya'ni aynan biz olishni xohlagan narsa. Biroq, bu yondashuv juda og'ir va keyin biz yanada ixcham yozuvni ko'rib chiqamiz. Lekin, avvalo, ehtimollik funksiyasini belgini o'zgartirish bilan logarifm qilaylik, chunki endi biz uni minimallashtiramiz.

Keling, o'rniga almashtiraylik
ifoda qilish
:

Oddiy arifmetik usullardan foydalangan holda logarifm ostidagi to'g'ri atamani soddalashtiramiz va quyidagilarni olamiz:

Endi operatordan qutulish vaqti keldi "Agar ... keyin ...". E'tibor bering, qachon ob'ekt
sinfga tegishli
, keyin logarifm ostidagi ifodada, maxrajda,
hokimiyatga ko'tarildi
, agar ob'ekt sinfga tegishli bo'lsa
, keyin $e$ quvvatga ko'tariladi
. Shunday qilib, ikkala holatni birlashtirib, daraja uchun belgini soddalashtirish mumkin:
. Keyin logistik xato funktsiyasi shaklni oladi:

Logarifm qoidalariga muvofiq biz kasrni aylantiramiz va belgini qo'yamiz "
"(minus) logarifm uchun biz quyidagilarni olamiz:

Bu erda yo'qotish funktsiyasi logistik yo'qotish, u o'quv majmuasida sinflarga tayinlangan ob'ektlar bilan ishlatiladi:
и
.
Xo'sh, men ta'tilni olaman va maqolani yakunlaymiz.
Muallifning oldingi ishi "Chiziqli regressiya tenglamasini matritsa ko'rinishiga keltirish"
Yordamchi materiallar
1. Adabiyot
1) Amaliy regressiya tahlili / N. Draper, G. Smit - 2-nashr. – M.: Moliya va statistika, 1986 (ingliz tilidan tarjima)
2) Ehtimollar nazariyasi va matematik statistika / V.E. Gmurman - 9-nashr. - M.: Oliy maktab, 2003 yil
3) Ehtimollar nazariyasi / N.I. Chernova - Novosibirsk: Novosibirsk davlat universiteti, 2007 yil
4) Biznes tahlili: ma'lumotlardan bilimga / Paklin N. B., Oreshkov V. I. - 2-nashr. - Sankt-Peterburg: Pyotr, 2013 yil
5) Data Science Noldan maʼlumotlar fani / Joel Gras - Sankt-Peterburg: BHV Peterburg, 2017
6) Ma'lumotlar fanlari bo'yicha mutaxassislar uchun amaliy statistika / P. Bryus, E. Bryus - Sankt-Peterburg: BHV Peterburg, 2018 yil
2. Ma'ruzalar, kurslar (video)
1)
2)
3)
4)
5)
3. Internet manbalari
1)
2)
3)
4)
5)
6)
7)
8)
Manba: www.habr.com

в logistik javob funksiyasi 
vazifalari Logistik yo'qotish
:

, keyin funksiya qiymati
dan ijobiy bo'ladi
uchun
. Bu shuni anglatadiki, biz kreditni to'lash ehtimoli ichida deb taxmin qilishimiz mumkin
. Funktsiya qiymati qanchalik katta bo'lsa, ehtimollik shunchalik yuqori bo'ladi.
yoki
, u holda funktsiyaning qiymati dan manfiy bo'ladi
uchun
. Keyin biz qarzni to'lash ehtimoli ichida deb taxmin qilamiz
va funktsiyaning mutlaq qiymati qanchalik katta bo'lsa, bizning ishonchimiz shunchalik yuqori bo'ladi.
teng bo'ladi
va kreditni to'lash ehtimoli teng
.


logistika javob funksiyasida
и 
и 