Энэ нийтлэлд бид өөрчлөлтийн онолын тооцоонд дүн шинжилгээ хийх болно шугаман регрессийн функцууд в урвуу логит хувиргах функц (өөрөөр логистик хариу үйлдэл гэж нэрлэдэг). Дараа нь арсенал ашиглана хамгийн их магадлалын арга, логистик регрессийн загварын дагуу бид алдагдлын функцийг гаргаж авдаг Логистикийн алдагдал, эсвэл өөрөөр хэлбэл бид логистик регрессийн загварт жингийн векторын параметрүүдийг сонгох функцийг тодорхойлно. .
Нийтлэлийн тойм:
- Хоёр хувьсагчийн шугаман хамаарлыг давтъя
- Өөрчлөлт хийх хэрэгцээг тодорхойлъё шугаман регрессийн функцууд в логистик хариу үйлдэл
- Өөрчлөлт, гаралтыг хийцгээе логистик хариу үйлдэл
- Параметрүүдийг сонгохдоо хамгийн бага квадратын арга яагаад муу болохыг ойлгохыг хичээцгээе үйл ажиллагаа Логистикийн алдагдал
- Бидний хэрэглэдэг хамгийн их магадлалын арга тодорхойлоход зориулагдсан параметр сонгох функцууд :
5.1. Тохиолдол 1: функц Логистикийн алдагдал ангиллын тэмдэглэгээтэй объектуудын хувьд 0 и 1:
5.2. Тохиолдол 2: функц Логистикийн алдагдал ангиллын тэмдэглэгээтэй объектуудын хувьд -1 и +1:
Нийтлэл нь бүх тооцоог амаар эсвэл цаасан дээр хийхэд хялбар байдаг энгийн жишээнүүдээр дүүрэн байдаг бөгөөд зарим тохиолдолд тооны машин шаардлагатай байж болно. Тиймээс бэлдээрэй :)
Энэ нийтлэл нь үндсэндээ машин сургалтын үндсийг анхан шатны мэдлэгтэй өгөгдөл судлаачдад зориулагдсан болно.
Мөн нийтлэлд график зурах, тооцоолох кодыг өгөх болно. Бүх кодыг хэлээр бичдэг питон 2.7. Ашигласан хувилбарын "шинэлэг байдлын" талаар урьдчилан тайлбарлая - энэ бол алдартай курст суралцах нөхцлүүдийн нэг юм. Яндекс адил алдартай онлайн боловсролын платформ дээр Coursera, мөн энэ хичээл дээр үндэслэн материалыг бэлтгэсэн гэж таамаглаж магадгүй юм.
01. Шулуун шугамын хамаарал
Шугаман хамаарал ба логистик регресс нь үүнтэй ямар холбоотой вэ гэсэн асуултыг тавих нь нэлээд үндэслэлтэй юм.
Энэ бол энгийн! Логистик регресс нь шугаман ангилагчд хамаарах загваруудын нэг юм. Энгийнээр хэлбэл, шугаман ангилагчийн үүрэг бол зорилтот утгыг урьдчилан таамаглах явдал юм хувьсагчаас (регресс) . Энэ нь шинж чанаруудын хоорондын хамаарал гэж үздэг болон зорилтот үнэ цэнэ шугаман. Тиймээс ангилагчийн нэр - шугаман. Маш бүдүүлэгээр хэлбэл, логистик регрессийн загвар нь шинж чанаруудын хооронд шугаман хамаарал байдаг гэсэн таамаглал дээр суурилдаг. болон зорилтот үнэ цэнэ . Энэ бол холболт юм.
Студид эхний жишээ байгаа бөгөөд энэ нь судалж буй хэмжигдэхүүний шулуун шугаман хамаарлын тухай юм. Өгүүллийг бэлтгэх явцад би олон хүнийг аль хэдийн ирмэг дээр тавьсан жишээтэй танилцсан - гүйдлийн хүчдэлээс хамаарал. (“Хэрэглээний регрессийн шинжилгээ”, Н. Дрэйпер, Г. Смит). Бид энд бас авч үзэх болно.
Дагуу Ом-ын хууль:
хаана - одоогийн хүч чадал, - хүчдэл, - эсэргүүцэл.
Хэрэв бид мэдэхгүй байсан бол Ом-ын хууль, дараа нь бид өөрчлөлтөөр хамаарлыг эмпирик байдлаар олж болно болон хэмжилт , дэмжиж байхдаа тогтмол. Дараа нь бид хамаарлын графикийг харах болно нь гарал үүслээр их бага шулуун шугам өгдөг. Бид "илүү бага" гэж хэлдэг, учир нь энэ хамаарал нь үнэн зөв боловч бидний хэмжилтүүд жижиг алдаатай байж болох тул график дээрх цэгүүд яг шугаман дээр унахгүй, харин эргэн тойронд санамсаргүй байдлаар тархах болно.
График 1 "Хараат байдал" нь »
График зурах код
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. Шугаман регрессийн тэгшитгэлийг хувиргах хэрэгцээ
Өөр нэг жишээг харцгаая. Бид банкинд ажилладаг гэж төсөөлөөд үз дээ, бидний үүрэг бол тодорхой хүчин зүйлээс хамааран зээлдэгч зээлээ төлөх магадлалыг тодорхойлох явдал юм. Даалгаврыг хялбарчлахын тулд бид зөвхөн хоёр хүчин зүйлийг авч үзэх болно: зээлдэгчийн сарын цалин, сарын зээлийн эргэн төлөлтийн хэмжээ.
Даалгавар нь маш нөхцөлтэй боловч энэ жишээн дээр яагаад үүнийг ашиглахад хангалтгүй байгааг ойлгож чадна шугаман регрессийн функцууд, мөн функцээр ямар өөрчлөлт хийх шаардлагатайг олж мэдээрэй.
Жишээ рүүгээ буцъя. Цалин өндөр байх тусам зээлдэгч сар бүр зээлээ төлөх боломжтой болно гэж ойлгож байгаа. Үүний зэрэгцээ тодорхой цалингийн хүрээнд энэ харилцаа нэлээд шугаман байх болно. Жишээлбэл, 60.000 рубльээс 200.000 рубль хүртэлх цалингийн хүрээг авч, тогтоосон цалингийн хүрээнд сарын төлбөрийн хэмжээ нь цалингийн хэмжээнээс хамаарах шугаман байна гэж үзье. Тодорхой хэмжээний цалингийн хувьд цалингийн төлбөрийн харьцаа 3-аас доош бууж болохгүй, зээлдэгч 5.000 рубльтэй байх ёстой гэж хэлье. Зөвхөн энэ тохиолдолд зээлдэгч банкинд зээлээ төлнө гэж бид таамаглах болно. Дараа нь шугаман регрессийн тэгшитгэл нь дараах хэлбэртэй болно.
хаана , , , - цалин - зээлдэгч, - зээлийн төлбөр -р зээлдэгч.
Цалин, зээлийн төлбөрийг тогтмол үзүүлэлтээр тэгшитгэлд орлуулах Зээл олгох, татгалзах эсэхээ шийдэж болно.
Урагшаа харахад өгөгдсөн параметрийн дагуу бид үүнийг тэмдэглэж байна шугаман регрессийн функц,-д ашигласан логистикийн хариу үйлдэл Зээлийн эргэн төлөгдөх магадлалыг тодорхойлох тооцоололд хүндрэл учруулах томоохон утгыг бий болгоно. Тиймээс манай коэффициентийг 25.000 дахин бууруулахыг санал болгож байна. Коэффициентийн энэ өөрчлөлт нь зээл олгох шийдвэрийг өөрчлөхгүй. Ирээдүйд энэ цэгийг санацгаая, гэхдээ одоо юу ярьж байгаагаа илүү тодорхой болгохын тулд гурван боломжит зээлдэгчийн нөхцөл байдлыг авч үзье.
Хүснэгт 1 "Боломжтой зээлдэгчид"
Хүснэгт үүсгэх код
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']]
Хүснэгтийн дагуу 120.000 рублийн цалинтай Вася зээл авахыг хүсч байгаа бөгөөд ингэснээр сар бүр 3.000 рубль төлөх боломжтой болно. Зээлийг батлахын тулд Васягийн цалин төлбөрийн хэмжээнээс гурав дахин их байх ёстой бөгөөд 5.000 рубль үлдэх ёстой гэдгийг бид тогтоосон. Вася энэ шаардлагыг хангаж байна: . Бүр 106.000 рубль үлдсэн. Хэдийгээр тооцоолж байхдаа Бид магадлалыг бууруулсан 25.000 удаа, үр дүн нь ижил байсан - зээлийг зөвшөөрч болно. Федя бас зээл авах болно, гэхдээ Леша хамгийн их мөнгө авдаг байсан ч хоолны дуршлаа дарах хэрэгтэй болно.
Энэ тохиолдолд график зуръя.
График 2 "Зээлдэгчдийн ангилал"
График зурах код
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()
Тиймээс, бидний шулуун шугам, функцийн дагуу баригдсан , "муу" зээлдэгчийг "сайн" зээлээс тусгаарладаг. Хүсэл эрмэлзэл нь тэдний чадавхитай давхцдаггүй зээлдэгчид шугаман дээгүүр (Леша), харин манай загварын параметрийн дагуу зээлээ төлөх боломжтой хүмүүс шугамаас доогуур байна (Вася, Федя). Өөрөөр хэлбэл, бид үүнийг хэлж болно: манай шууд шугам зээлдэгчдийг хоёр ангилдаг. Тэдгээрийг дараах байдлаар тэмдэглэе: ангид Зээлийн эргэн төлөгдөх магадлал өндөр байгаа зээлдэгчийг бид ангилах болно буюу Зээлээ төлж чадахгүй байх магадлалтай зээлдэгчдийг бид хамруулна.
Энэхүү энгийн жишээнээс дүгнэлтийг нэгтгэн дүгнэж үзье. Нэг цэг авч үзье мөн цэгийн координатыг шугамын харгалзах тэгшитгэлд орлуулах , гурван сонголтыг авч үзье:
- Хэрэв цэг нь шугамын доор байгаа бол бид үүнийг ангид хуваарилдаг , дараа нь функцийн утга -аас эерэг байх болно нь . Энэ нь бид зээлээ төлөх магадлал дотор байгаа гэж үзэж болно гэсэн үг юм . Функцийн утга их байх тусам магадлал өндөр болно.
- Хэрэв цэг нь шугамаас дээш байвал бид үүнийг ангид хуваарилдаг буюу , дараа нь функцийн утга нь сөрөг байх болно нь . Дараа нь бид өр барагдуулах магадлал дотор байна гэж үзэх болно Функцийн үнэмлэхүй утга их байх тусам бидний итгэл өндөр болно.
- Цэг нь шулуун шугам дээр, хоёр ангийн зааг дээр байна. Энэ тохиолдолд функцийн утга тэнцүү байх болно мөн зээлээ төлөх магадлал тэнцүү байна .
Одоо бид хоёр биш, хэдэн арван, гурав биш, мянга мянган зээлдэгчтэй гэж төсөөлөөд үз дээ. Дараа нь бид шулуун шугамын оронд байх болно м хэмжээст хавтгай ба коэффициентүүд Биднийг агаараас гаргахгүй, харин бүх дүрэм журмын дагуу, зээлсэн болон эргэн төлөгдөөгүй зээлдэгчдийн хуримтлагдсан мэдээлэлд үндэслэн гаргаж авах болно. Мөн бид одоо аль хэдийн мэдэгдэж байсан коэффициентүүдийг ашиглан зээлдэгчийг сонгож байгааг анхаарна уу . Үнэн хэрэгтээ логистик регрессийн загварын даалгавар бол параметрүүдийг нарийн тодорхойлох явдал юм , алдагдах функцийн утга Логистикийн алдагдал хамгийн бага хэмжээнд хүрэх болно. Гэхдээ векторыг хэрхэн тооцоолох талаар , бид нийтлэлийн 5-р хэсэгт илүү ихийг олж мэдэх болно. Энэ хооронд бид амласан газар руугаа буцаж ирдэг - банкир болон түүний гурван үйлчлүүлэгчид.
Функцийн ачаар хэнд зээл өгч болох, хэнд татгалзах ёстойг бид мэднэ. Гэхдээ та ийм мэдээлэлтэй захирал руу очиж чадахгүй, учир нь тэд зээлдэгч бүрийн зээлийг төлөх магадлалыг биднээс авахыг хүссэн. Юу хийх вэ? Хариулт нь энгийн - бид функцийг ямар нэгэн байдлаар өөрчлөх хэрэгтэй , утгууд нь мужид оршдог утга нь мужид байрлах функцэд . Мөн ийм функц байдаг, үүнийг нэрлэдэг логистик хариу үйлдэл эсвэл урвуу-логит хувиргалт. Уулзах:
Энэ нь хэрхэн ажилладагийг алхам алхмаар харцгаая логистик хариу үйлдэл. Бид эсрэг чиглэлд алхах болно гэдгийг анхаарна уу, i.e. -ийн хооронд орших магадлалын утгыг бид мэднэ гэж үзэх болно нь дараа нь бид энэ утгыг бүх тоонуудын хооронд "тайлах" болно нь .
03. Бид логистик хариу үйлдлийг гаргаж авдаг
Алхам 1. Магадлалын утгыг муж болгон хөрвүүлэх
Функцийг хувиргах явцад в логистик хариу үйлдэл Бид зээлийн шинжээчээ ганцааранг нь орхиж, оронд нь букмейкерийн газруудтай танилцах болно. Үгүй ээ, мэдээжийн хэрэг, бид бооцоо тавихгүй, бидний сонирхдог зүйл бол илэрхийллийн утга юм, жишээлбэл, боломж нь 4-ээс 1. Бүх бооцоочдын мэддэг магадлал нь "амжилт" ба "" харьцаа юм. бүтэлгүйтэл". Магадлалын хувьд магадлал гэдэг нь тохиолдох үйл явдлын магадлалыг тохиолдохгүй байх магадлалд хуваах явдал юм. Үйл явдал болох магадлалын томьёог бичье :
хаана - үйл явдал болох магадлал; - үйл явдал болохгүй байх магадлал
Жишээлбэл, "Ветерок" хочит залуу, хүчтэй, хөгжилтэй морь "Матилда" хэмээх хөгшин, сул дорой хөгшин эмгэнийг уралдаанд зодох магадлал тэнцүү бол. , дараа нь "Ветерок" амжилтанд хүрэх магадлал өндөр байх болно к ба эсрэгээр, магадлалыг нь мэдэж байгаа тул магадлалыг тооцоолоход бидэнд хэцүү биш байх болно :
Тиймээс бид магадлалыг үнэ цэнийг авдаг боломж болгон "орчуулж" сурсан нь . Дахиад нэг алхам хийж, магадлалыг бүхэл тоон мөрөнд "орчуулж" сурцгаая нь .
Алхам 2. Магадлалын утгыг муж болгон хөрвүүлэх
Энэ алхам нь маш энгийн - Эйлерийн тооны суурь дахь магадлалын логарифмыг авч үзье. мөн бид авах:
Одоо бид үүнийг мэдэж байгаа бол , дараа нь утгыг тооцоол маш энгийн бөгөөд үүнээс гадна эерэг байх ёстой: . Энэ бол үнэн.
Сонирхолтой учраас яах бол гэдгийг шалгацгаая , дараа нь бид сөрөг утгыг харах болно гэж найдаж байна . Бид шалгаж байна: . Яг зөв.
Одоо бид магадлалын утгыг хэрхэн хөрвүүлэхээ мэддэг болсон нь -аас бүх тооны шугамын дагуу нь . Дараагийн алхамд бид эсрэгээр нь хийх болно.
Одоогоор бид логарифмын дүрмийн дагуу функцийн утгыг мэдэж байгааг тэмдэглэж байна , та магадлалыг тооцоолж болно:
Энэ магадлалыг тодорхойлох арга нь дараагийн алхамд бидэнд хэрэг болно.
Алхам 3. Тодорхойлох томьёо гаргая
Тиймээс бид мэдэж, сурсан , функцийн утгыг ол . Гэсэн хэдий ч үнэн хэрэгтээ бидэнд яг эсрэг зүйл хэрэгтэй - үнэ цэнийг мэдэх хэрэгтэй олох . Үүнийг хийхийн тулд урвуу магадлалын функц гэх мэт ойлголтыг авч үзье, үүний дагуу:
Өгүүлэлд бид дээрх томьёог гаргахгүй, харин дээрх жишээн дээрх тоонуудыг ашиглан шалгах болно. 4-ээс 1-ийн харьцаатай гэдгийг бид мэднэ (), үйл явдал болох магадлал 0.8 (). Орлуулалт хийцгээе: . Энэ нь бидний өмнө нь хийсэн тооцоотой давхцаж байна. Үргэлжлүүлье.
Сүүлийн шатанд бид үүнийг гаргасан , энэ нь та урвуу магадлалын функцэд орлуулалт хийж болно гэсэн үг юм. Бид авах:
Тоолуур ба хуваагчийг хоёуланг нь хуваа , Дараа нь:
Бид хаана ч алдаа гаргаагүй байгаа эсэхийг шалгахын тулд дахин нэг жижиг шалгалт хийх болно. 2-р алхамд бид гэж тодорхойлсон . Дараа нь утгыг орлуулна логистикийн хариу үйл ажиллагаанд оруулах, бид авах гэж найдаж байна . Бид орлуулж аваад:
Баяр хүргэе, эрхэм уншигч, бид дөнгөж сая логистикийн хариу үйлдлийг гаргаж, туршиж үзлээ. Функцийн графикийг харцгаая.
График 3 "Логистик хариу үйлдэл"
График зурах код
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()
Уран зохиолоос та энэ функцийн нэрийг бас олж болно сигмоид функц. Ангид хамаарах объектын магадлалын үндсэн өөрчлөлт нь харьцангуй бага хүрээнд явагддагийг график тодорхой харуулж байна. , хаа нэгтээгээс нь .
Би манай зээлийн шинжээч рүү буцаж очоод зээлээ төлөх магадлалыг тооцоолоход нь туслахыг санал болгож байна, эс тэгвээс тэр урамшуулалгүй үлдэх эрсдэлтэй :)
Хүснэгт 2 "Боломжтой зээлдэгчид"
Хүснэгт үүсгэх код
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']]
Ингээд зээлийн эргэн төлөгдөх магадлалыг тогтоосон. Ерөнхийдөө энэ нь үнэн юм шиг санагдаж байна.
Үнэхээр 120.000 рублийн цалинтай Вася банкинд сар бүр 3.000 рубль өгөх магадлал 100% дөхөж байна. Дашрамд хэлэхэд, хэрэв банкны бодлого нь жишээлбэл, 0.3-аас дээш зээлийн эргэн төлөгдөх магадлал бүхий үйлчлүүлэгчдэд зээл олгохоор заасан бол банк Лешад зээл олгож болно гэдгийг бид ойлгох ёстой. Энэ тохиолдолд банк боломжит алдагдлын төлөө илүү их нөөц бий болгоно.
Мөн цалин, төлбөрийн харьцааг 3-аас доошгүй, 5.000 рублийн ахиутай дээд хязгаараас авсан гэдгийг тэмдэглэх нь зүйтэй. Тиймээс бид жингийн векторыг анхны хэлбэрээр нь ашиглаж чадаагүй . Бид коэффициентүүдийг их хэмжээгээр бууруулах шаардлагатай байсан бөгөөд энэ тохиолдолд бид коэффициент бүрийг 25.000-д хуваасан, өөрөөр хэлбэл бид үр дүнг тохируулсан. Гэхдээ энэ нь эхний шатанд материалыг ойлгоход хялбар болгох үүднээс тусгайлан хийгдсэн. Амьдралд бид коэффициентийг зохион бүтээх, тохируулах шаардлагагүй, харин тэдгээрийг олох болно. Өгүүллийн дараагийн хэсгүүдэд бид параметрүүдийг сонгох тэгшитгэлийг гаргаж авах болно .
04. Жингийн векторыг тодорхойлох хамгийн бага квадратын арга логистикийн хариу функцэд
Жингийн векторыг сонгох энэ аргыг бид аль хэдийн мэддэг болсон , хамгийн бага квадратын арга (LSM) Үнэндээ бид үүнийг хоёртын ангиллын бодлогод яагаад ашиглаж болохгүй гэж? Үнэн хэрэгтээ таныг ашиглахад юу ч саад болохгүй MNC, ангиллын асуудалд зөвхөн энэ арга нь арай бага нарийвчлалтай үр дүнг өгдөг Логистикийн алдагдал. Үүнд онолын үндэслэл бий. Эхлээд нэг энгийн жишээг харцгаая.
Манай загварууд (. ашиглаж байна) гэж бодъё МХБ и Логистикийн алдагдал) жингийн векторыг аль хэдийн сонгож эхэлсэн байна тэгээд бид тооцоогоо нэг алхамаар зогсоосон. Дунд, төгсгөл эсвэл эхэнд байх нь хамаагүй, гол зүйл бол бид жингийн векторын зарим утгыг аль хэдийн авсан бөгөөд энэ алхамд жингийн вектор байна гэж бодъё. Хоёр загварын хувьд ялгаа байхгүй. Дараа нь үүссэн жинг авч, тэдгээрийг орлуулна логистик хариу үйлдэл () ангилалд хамаарах зарим объектын хувьд . Сонгосон жингийн векторын дагуу манай загвар маш алдаатай, эсрэгээр нь загвар нь тухайн объект нь ангилалд хамаарах гэдэгт маш итгэлтэй байгаа хоёр тохиолдлыг судалж байна. . Ашиглахад ямар торгууль ногдуулахыг харцгаая MNC и Логистикийн алдагдал.
Ашигласан алдагдлын функцээс хамааран торгуулийг тооцох код
# класс объекта
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
Алдаа гаргасан тохиолдол - загвар нь объектыг ангид хуваарилдаг 0,01 магадлалтай
Ашиглалтын торгууль MNC байх болно:
Ашиглалтын торгууль Логистикийн алдагдал байх болно:
Хүчтэй итгэлтэй тохиолдол - загвар нь объектыг ангид хуваарилдаг 0,99 магадлалтай
Ашиглалтын торгууль MNC байх болно:
Ашиглалтын торгууль Логистикийн алдагдал байх болно:
Энэ жишээ нь ноцтой алдаа гарсан тохиолдолд алдагдлын функцийг сайн харуулж байна Бүртгэлийн алдагдал -аас хамаагүй илүү загварыг шийтгэдэг МХБ. Одоо алдагдлын функцийг ашиглах онолын үндэслэл юу болохыг ойлгоцгооё Бүртгэлийн алдагдал ангиллын асуудалд.
05. Хамгийн их магадлалтай арга ба логистик регресс
Эхэндээ амласанчлан нийтлэл нь энгийн жишээнүүдээр дүүрэн байна. Студид өөр нэг жишээ, хуучин зочид байдаг - банкны зээлдэгчид: Вася, Федя, Леша.
Жишээлбэл, жишээг боловсруулахаасаа өмнө бид амьдралдаа хэдэн арван, хэдэн зуун онцлог шинж чанартай олон мянган, сая сая объектуудын сургалтын дээжтэй харьцаж байгааг сануулъя. Гэсэн хэдий ч энд тоонуудыг шинэхэн өгөгдөл судлаачийн толгойд амархан багтах үүднээс авсан болно.
Жишээ рүү буцъя. Алгоритм нь түүнийг Лешад олгохгүй гэж хэлсэн ч банкны захирал хэрэгцээтэй бүх хүнд зээл олгохоор шийдсэн гэж төсөөлөөд үз дээ. Одоо хангалттай хугацаа өнгөрч, гурван баатрын аль нь зээлээ төлж, аль нь төлөөгүйг бид мэднэ. Юу хүлээж байсан бэ: Вася, Федя нар зээлээ төлсөн боловч Леша тэгээгүй. Одоо энэ үр дүн нь бидний хувьд сургалтын шинэ загвар байх болно гэж төсөөлөөд үз дээ, тэр үед зээлээ төлөх магадлалд нөлөөлж буй хүчин зүйлсийн (зээлдэгчийн цалин, сарын төлбөрийн хэмжээ) бүх мэдээлэл алга болсон мэт. Дараа нь бид зөн совингоор гурав дахь зээлдэгч бүр банкинд зээлээ төлдөггүй, өөрөөр хэлбэл дараагийн зээлдэгч зээлээ төлөх магадлалыг тооцож болно. . Энэхүү зөн совингийн таамаглал нь онолын баталгаатай бөгөөд үндэслэсэн болно хамгийн их магадлалын арга, ихэвчлэн уран зохиолд үүнийг гэж нэрлэдэг хамгийн их магадлалын зарчим.
Эхлээд концепцийн аппараттай танилцъя.
Дээж авах магадлал яг ийм дээж авах, яг ийм ажиглалт/үр дүнг олж авах магадлал, i.e. түүврийн үр дүн тус бүрийг олж авах магадлалын бүтээгдэхүүн (жишээлбэл, Вася, Федя, Леша нарын зээлийг нэгэн зэрэг төлсөн эсэх).
Магадлалын функц түүврийн магадлалыг тархалтын параметрүүдийн утгатай холбодог.
Манай тохиолдолд сургалтын түүвэр нь Бернуллигийн ерөнхий схем бөгөөд санамсаргүй хэмжигдэхүүн нь зөвхөн хоёр утгыг авдаг. буюу . Тиймээс түүврийн магадлалыг параметрийн магадлалын функц болгон бичиж болно дараах байдлаар:
Дээрх оруулгыг дараах байдлаар тайлбарлаж болно. Вася, Федя нар зээлээ төлөх хамтарсан магадлал нь тэнцүү байна , Леша зээлээ ТӨЛӨХГҮЙ байх магадлал нь тэнцүү байна (зээлийн эргэн төлөлт хийгээгүй тул) бүх гурван үйл явдлын хамтарсан магадлал тэнцүү байна. .
Хамгийн их магадлалын арга нь үл мэдэгдэх параметрийг дээд зэргээр тооцох арга юм магадлалын функцууд. Манайд ийм үнэ цэнийг олох хэрэгтэй аль нь дээд цэгтээ хүрдэг.
Бодит санаа хаанаас ирсэн бэ - магадлалын функц хамгийн ихдээ хүрэх үл мэдэгдэх параметрийн утгыг хайх вэ? Энэхүү санааны гарал үүсэл нь популяцийн талаархи мэдлэгийн цорын ганц эх сурвалж нь дээж юм гэсэн санаанаас үүдэлтэй. Популяцийн талаар бидний мэддэг бүх зүйлийг түүвэрт тусгасан болно. Тиймээс бидний хэлж чадах зүйл бол түүвэр бол хүн амын хамгийн зөв тусгал юм. Тиймээс бид боломжтой дээж хамгийн их магадлалтай болох параметрийг олох хэрэгтэй.
Бид функцийн экстремум цэгийг олох шаардлагатай оновчлолын асуудлыг шийдэж байгаа нь ойлгомжтой. Экстремум цэгийг олохын тулд нэгдүгээр эрэмбийн нөхцөлийг авч үзэх шаардлагатай, өөрөөр хэлбэл, функцийн деривативыг тэгтэй тэнцүүлж, хүссэн параметрийн дагуу тэгшитгэлийг шийдвэрлэх шаардлагатай. Гэсэн хэдий ч олон тооны хүчин зүйлсийн бүтээгдэхүүний деривативыг хайх нь урт ажил байж болох тул үүнээс зайлсхийхийн тулд логарифм руу шилжих тусгай арга байдаг. магадлалын функцууд. Яагаад ийм шилжилт хийх боломжтой вэ? Бид функцийн экстремумыг хайхгүй байгаадаа анхаарлаа хандуулцгаая, ба экстремум цэг, өөрөөр хэлбэл үл мэдэгдэх параметрийн утга аль нь дээд цэгтээ хүрдэг. Логарифм руу шилжих үед экстремум цэг өөрчлөгддөггүй (хэдийгээр экстремум нь өөр байх болно), учир нь логарифм нь монотон функц юм.
Дээр дурдсаны дагуу Вася, Федя, Леша нарын зээлээр жишээгээ үргэлжлүүлэн хөгжүүлцгээе. Эхлээд цаашаа явцгаая магадлалын функцийн логарифм:
Одоо бид илэрхийллийг хялбархан ялгаж чадна :
Эцэст нь нэгдүгээр эрэмбийн нөхцөлийг авч үзье - бид функцийн деривативыг тэгтэй тэнцүүлж байна:
Тиймээс зээлийн эргэн төлөгдөх магадлалыг бидний зөн совингоор тооцоолсон онолын хувьд үндэслэлтэй байсан.
Гайхалтай, гэхдээ бид одоо энэ мэдээллийг яах ёстой вэ? Гурав дахь зээлдэгч бүр банкинд мөнгөө буцааж өгдөггүй гэж үзвэл дараагийнх нь дампуурах нь дамжиггүй. Энэ нь зөв, гэхдээ зөвхөн зээлийн эргэн төлөлтийн магадлалыг үнэлэх үед л болно Зээлийн эргэн төлөлтөд нөлөөлж буй хүчин зүйлсийг харгалзан үзээгүй: зээлдэгчийн цалин, сарын төлбөрийн хэмжээ. Өмнө нь бид үйлчлүүлэгч бүрийн зээлийн эргэн төлөлтийн магадлалыг эдгээр хүчин зүйлсийг харгалзан тооцож байсныг санацгаая. Тогтмол тэнцүүгээс ялгаатай магадлалыг бид олж авсан нь логик юм .
Дээжийн магадлалыг тодорхойлъё:
Түүврийн магадлалыг тооцоолох код
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)
Тогтмол утгад түүврийн магадлал :
Зээлийн эргэн төлөгдөх магадлалыг хүчин зүйлсийг харгалзан тооцохдоо магадлалын жишээ :
Хүчин зүйлээс хамааран тооцоолсон магадлал бүхий түүврийн магадлал нь тогтмол магадлалын утгатай магадлалаас өндөр байна. Энэ юу гэсэн үг вэ? Энэ нь хүчин зүйлсийн талаархи мэдлэг нь үйлчлүүлэгч бүрийн зээлийн эргэн төлөлтийн магадлалыг илүү нарийвчлалтай сонгох боломжийг олгосон болохыг харуулж байна. Тиймээс дараагийн зээлийг олгохдоо өр барагдуулах магадлалыг үнэлэхийн тулд зүйлийн 3-р хэсгийн төгсгөлд санал болгож буй загварыг ашиглах нь илүү зөв байх болно.
Гэхдээ дараа нь, хэрэв бид хамгийн их байлгахыг хүсч байвал түүвэр магадлалын функц, тэгвэл Вася, Федя, Леша нарын магадлалыг 0.99, 0.99, 0.01-тэй тэнцүү болгох алгоритмыг яагаад ашиглаж болохгүй гэж. Магадгүй ийм алгоритм нь сургалтын дээж дээр сайн ажиллах болно, учир нь энэ нь түүврийн магадлалын утгыг ойртуулах болно. , гэхдээ нэгдүгээрт, ийм алгоритм нь ерөнхийлөлт хийхэд бэрхшээлтэй байх болно, хоёрдугаарт, энэ алгоритм нь шугаман биш байх болно. Хэрэв хэт ачаалалтай тэмцэх аргууд (ямар нэгэн адил сул ерөнхий чадвар) энэ нийтлэлийн төлөвлөгөөнд тусгаагүй бол хоёр дахь цэгийг илүү нарийвчлан авч үзье. Үүнийг хийхийн тулд энгийн асуултанд хариулна уу. Бидэнд мэдэгдэж байгаа хүчин зүйлсийг харгалзан Вася, Федя хоёрын зээлийг төлөх магадлал ижил байж чадах уу? Зөв логикийн үүднээс авч үзвэл мэдээж үгүй, чадахгүй. Тиймээс Вася зээлээ төлөхийн тулд сар бүр цалингийнхаа 2.5%, Федя бараг 27,8% -ийг төлөх болно. Мөн "Үйлчлүүлэгчийн ангилал" 2-р графикаас бид Вася нь Федягаас ангиудыг тусгаарлах шугамаас хамаагүй хол байгааг харж байна. Эцэст нь бид функц гэдгийг мэднэ Вася, Федя нарын хувьд өөр өөр утгыг авдаг: Васягийн хувьд 4.24, Федягийн хувьд 1.0 байна. Жишээлбэл, Федя илүү их хэмжээний захиалга авсан эсвэл бага хэмжээний зээл хүссэн бол Вася, Федя нарын зээлийг төлөх магадлал ижил байх болно. Өөрөөр хэлбэл, шугаман хамаарлыг хуурч болохгүй. Хэрэв бид магадлалыг бодитоор тооцсон бол , мөн тэднийг агаараас гаргаагүй ч бид өөрсдийн үнэт зүйл гэдгийг баттай хэлж чадна Зээлдэгч бүрийн зээлийг эргэн төлөх магадлалыг хамгийн сайн тооцоолох боломжийг бидэнд олгодог боловч коэффициентийг тодорхойлоход бид тохиролцсон тул бүх дүрмийн дагуу явагдсан бол бид тэгж таамаглах болно - бидний коэффициентүүд магадлалыг илүү сайн тооцоолох боломжийг бидэнд олгодог :)
Гэсэн хэдий ч бид ухарч байна. Энэ хэсэгт жингийн вектор хэрхэн тодорхойлогддогийг ойлгох хэрэгтэй , энэ нь зээлдэгч бүрийн зээлийг эргэн төлөх магадлалыг үнэлэхэд зайлшгүй шаардлагатай.
Бид ямар зэвсгийн нөөцийг хайж байгаагаа товчхон дүгнэж үзье :
1. Зорилтот хувьсагч (урьдчилан таамаглах утга) болон үр дүнд нөлөөлөх хүчин зүйлийн хоорондын хамаарлыг бид шугаман гэж үздэг. Энэ шалтгааны улмаас үүнийг ашиглаж байна шугаман регрессийн функц зүйл , мөр нь объектыг (үйлчлүүлэгч) ангиудад хуваадаг и буюу (зээлийг төлөх чадвартай болон төлөх боломжгүй үйлчлүүлэгчид). Манай тохиолдолд тэгшитгэл нь хэлбэртэй байна .
2. Бид ашигладаг урвуу логит функц зүйл ангид хамаарах объектын магадлалыг тодорхойлох .
3. Бид сургалтын багцаа ерөнхийд нь хэрэгжүүлсэн гэж үздэг Бернуллигийн схемүүд, өөрөөр хэлбэл объект бүрийн хувьд магадлал бүхий санамсаргүй хэмжигдэхүүнийг үүсгэдэг (объект бүрийн хувьд өөрийн гэсэн) 1-ийн утгыг ба магадлалаар авна - 0.
4. Бид юуг дээд зэргээр нэмэгдүүлэх хэрэгтэйг мэддэг түүвэр магадлалын функц Хүлээн зөвшөөрөгдсөн хүчин зүйлсийг харгалзан үзэхийн тулд боломжтой дээжийг хамгийн үнэмшилтэй болгох. Өөрөөр хэлбэл, бид дээж хамгийн үнэмшилтэй байх параметрүүдийг сонгох хэрэгтэй. Манай тохиолдолд сонгосон параметр нь зээлийн эргэн төлөгдөх магадлал юм , энэ нь эргээд үл мэдэгдэх коэффициентээс хамаарна . Тиймээс бид жингийн ийм векторыг олох хэрэгтэй , энэ үед түүврийн магадлал хамгийн их байх болно.
5. Бид юуг нэмэгдүүлэхээ мэддэг түүвэр магадлалын функцууд та ашиглаж болно хамгийн их магадлалын арга. Мөн бид энэ аргаар ажиллах бүх заль мэхийг мэддэг.
Энэ нь олон шат дамжлагатай нүүдэл болж хувирдаг :)
Өгүүллийн эхэнд бид хоёр төрлийн алдагдлын функцийг гаргахыг хүссэн гэдгийг санаарай Логистикийн алдагдал объектын ангиудыг хэрхэн тодорхойлохоос хамаарна. Хоёр ангитай ангиллын бодлогод ангиудыг ингэж тэмдэглэдэг болсон и буюу . Тэмдэглэгээнээс хамааран гаралт нь харгалзах алдагдлын функцтэй байна.
Тохиолдол 1. Объектуудын ангилал и
Өмнө нь зээлдэгчийн өрийг төлөх магадлалыг хүчин зүйл, өгөгдсөн коэффициент дээр үндэслэн тооцсон түүврийн магадлалыг тодорхойлохдоо. , бид томъёог ашигласан:
Үнэндээ утга учир юм логистикийн хариу үйлдэл өгөгдсөн жингийн векторын хувьд
Дараах байдлаар жишээний магадлалын функцийг бичихэд юу ч саад болохгүй.
Заримдаа шинэхэн шинжээчид энэ функц хэрхэн ажилладагийг шууд ойлгоход хэцүү байдаг. Бүх зүйлийг тодруулах 4 богино жишээг харцгаая:
1. бол (өөрөөр хэлбэл, сургалтын түүврийн дагуу объект нь +1 ангилалд багтдаг), бидний алгоритм объектыг ангид ангилах магадлалыг тодорхойлдог 0.9-тэй тэнцүү бол энэ түүврийн магадлалыг дараах байдлаар тооцоолно.
2. бол болон , дараа нь тооцоо дараах байдалтай байна.
3. бол болон , дараа нь тооцоо дараах байдалтай байна.
4. бол болон , дараа нь тооцоо дараах байдалтай байна.
1 ба 3-р тохиолдолд эсвэл ерөнхий тохиолдолд объектыг ангид оруулах магадлалын зөв таасан утгуудын тусламжтайгаар магадлалын функцийг нэмэгдүүлэх нь ойлгомжтой. .
Тухайн ангид объект оноох магадлалыг тодорхойлохдоо Бид зөвхөн коэффициентийг мэддэггүй , дараа нь бид тэднийг хайх болно. Дээр дурьдсанчлан, энэ нь оновчлолын асуудал бөгөөд эхлээд жингийн вектортой холбоотой магадлалын функцийн деривативыг олох хэрэгтэй. . Гэсэн хэдий ч эхлээд даалгаврыг өөрсдөдөө хялбарчлах нь утга учиртай: бид логарифмын деривативыг хайх болно. магадлалын функцууд.
Яагаад логарифмын дараа, дотор логистик алдааны функцууд, бид тэмдгийг өөрчилсөн тухай . Загварын чанарыг үнэлэх асуудалд функцийн утгыг багасгах нь заншилтай тул бүх зүйл энгийн байдаг тул бид илэрхийллийн баруун талыг үржүүлсэн. Үүний дагуу бид хамгийн их болгохын оронд функцийг багасгаж байна.
Яг одоо таны нүдний өмнө алдагдлын функцийг маш их хичээнгүйлэн гаргаж авсан - Логистикийн алдагдал хоёр анги бүхий сургалтын багцад: и .
Одоо коэффициентийг олохын тулд бид зөвхөн деривативыг олох хэрэгтэй логистик алдааны функцууд дараа нь градиент уналт эсвэл стохастик градиент уналт гэх мэт тоон оновчлолын аргуудыг ашиглан хамгийн оновчтой коэффициентийг сонгоно. . Гэсэн хэдий ч, нийтлэлийн нэлээд их хэмжээний эзэлхүүнийг харгалзан ялгах ажлыг бие даан хийхийг санал болгож байна, эс тэгвээс энэ нь ийм нарийн жишээгүйгээр олон тооны арифметик бүхий дараагийн өгүүллийн сэдэв байх болно.
Тохиолдол 2. Объектуудын ангилал и
Энд хандах хандлага нь хичээлтэй адил байх болно и , гэхдээ алдагдлын функцийн гаралтад хүрэх зам нь өөрөө Логистикийн алдагдал, илүү гоёмсог байх болно. Эхэлцгээе. Магадлалын функцийн хувьд бид операторыг ашиглана "Хэрэв... тэгвэл ...". Өөрөөр хэлбэл, хэрэв th объект нь ангилалд хамаарна , дараа нь түүврийн магадлалыг тооцоолохын тулд бид магадлалыг ашиглана , хэрэв объект ангид хамаарах бол , дараа нь бид магадлалыг орлуулна . Магадлалын функц иймэрхүү харагдаж байна:
Энэ нь хэрхэн ажилладагийг хуруугаараа дүрсэлцгээе. 4 тохиолдлыг авч үзье:
1. бол и , дараа нь дээж авах магадлал "явж"
2. бол и , дараа нь дээж авах магадлал "явж"
3. бол и , дараа нь дээж авах магадлал "явж"
4. бол и , дараа нь дээж авах магадлал "явж"
1 ба 3-р тохиолдолд магадлалыг алгоритмаар зөв тодорхойлсон тохиолдолд магадлалын функц хамгийн их байх болно, өөрөөр хэлбэл энэ нь бидний авахыг хүссэн зүйл юм. Гэсэн хэдий ч энэ арга нь нэлээд төвөгтэй бөгөөд дараа нь бид илүү нягт тэмдэглэгээг авч үзэх болно. Гэхдээ эхлээд магадлалын функцийг тэмдгийн өөрчлөлтөөр логарифм болгоё, учир нь одоо бид үүнийг багасгах болно.
Оронд нь орлуулъя илэрхийлэл :
Энгийн арифметик аргуудыг ашиглан логарифмын дагуу зөв нэр томъёог хялбарчилж, дараахь зүйлийг олж авцгаая.
Одоо оператороос салах цаг болжээ "Хэрэв... тэгвэл ...". объект байх үед гэдгийг анхаарна уу ангилалд багтдаг , дараа нь логарифмын доорх илэрхийлэлд, хуваарьт, эрх мэдэлд хүрсэн , хэрэв объект ангид хамаарах бол , дараа нь $e$ нь хүч чадалд нэмэгдэнэ . Тиймээс, хоёр тохиолдлыг нэг болгон нэгтгэснээр зэрэглэлийн тэмдэглэгээг хялбаршуулж болно. Байна. Дараа нь Логистик алдааны функц хэлбэрийг авна:
Логарифмын дүрмийн дагуу бид бутархайг эргүүлж, тэмдгийг тавьдаг." (хасах) логарифмын хувьд бид дараахь зүйлийг авна.
Энд алдагдлын функц байна логистикийн алдагдалАнгиудад хуваарилагдсан объектуудтай сургалтын багцад ашигладаг . и .
За, энэ үед би амралтаа аваад нийтлэлээ дуусгаж байна.
Туслах материал
1. Уран зохиол
1) Хэрэглээний регрессийн шинжилгээ / N. Draper, G. Smith - 2-р хэвлэл. – М.: Санхүү, статистик, 1986 (англи хэлнээс орчуулга)
2) Магадлалын онол ба математикийн статистик / V.E. Гмурман - 9-р хэвлэл. - М.: Дээд сургууль, 2003 он
3) Магадлалын онол / N.I. Чернова - Новосибирск: Новосибирскийн улсын их сургууль, 2007 он
4) Бизнесийн аналитик: өгөгдлөөс мэдлэг хүртэл / Паклин Н.Б., Орешков В.И. - 2-р хэвлэл. - Санкт-Петербург: Петр, 2013
5) Өгөгдлийн шинжлэх ухаан Өгөгдлийн шинжлэх ухаан эхнээс нь / Жоэл Грас - Санкт-Петербург: BHV Peterburg, 2017
6) Өгөгдлийн шинжлэх ухааны мэргэжилтнүүдэд зориулсан практик статистик / P. Bruce, E. Bruce - Санкт-Петербург: BHV Petersburg, 2018
2. Лекц, курс (видео)
1)
2)
3)
4)
5)
3. Интернетийн эх сурвалжууд
1)
2)
4)
7)
Эх сурвалж: www.habr.com