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_2
Qo'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.
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)
4)