Бул макалада биз трансформациянын теориялык эсептөөлөрүн талдап чыгабыз сызыктуу регрессия функциялары в тескери логистикалык трансформация функциясы (башкача логистикалык жооп функциясы деп аталат). Андан кийин, арсеналды колдонуу максималдуу ыктымалдык ыкмасы, логистикалык регрессия моделине ылайык, биз жоготуу функциясын чыгарабыз Логистикалык жоготуу, же башкача айтканда, биз логистикалык регрессия моделинде салмак векторунун параметрлери тандалган функцияны аныктайбыз. .
Макаланын схемасы:
- Эки өзгөрмөнүн ортосундагы сызыктуу байланышты кайталайлы
- Трансформациянын зарылдыгын аныктап көрөлү сызыктуу регрессия функциялары в логистикалык жооп функциясы
- Кайра курууну жана чыгарууну ишке ашыралы логистикалык жооп функциясы
- Келгиле, параметрлерди тандоодо эң кичине квадраттар ыкмасы эмне үчүн жаман экенин түшүнүүгө аракет кылалы милдеттери Логистикалык жоготуу
- Биз колдонобуз максималдуу ыктымалдык ыкмасы аныктоо үчүн параметр тандоо функциялары :
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 рублга чейинки эмгек акынын диапазонун алалы жана көрсөтүлгөн эмгек акы диапазонунда айлык төлөмдүн өлчөмүнүн эмгек акынын өлчөмүнө көз карандылыгы сызыктуу деп эсептейли. Келгиле, эмгек акынын көрсөтүлгөн диапазону үчүн эмгек акынын төлөмгө карата катышы XNUMXтөн төмөн түшпөй турганы жана карыз алуучунун резервинде дагы XNUMX рубль болушу керек экендиги аныкталды дейли. Жана ушул учурда гана биз карыз алуучу банкка насыяны төлөп берет деп ойлойбуз. Андан кийин, сызыктуу регрессия теңдемеси төмөнкү форманы алат:
кайда , , , - айлык - карыз алуучу, - кредит төлөө - карыз алуучу.
Эмгек акыны жана кредитти төлөөнү белгиленген параметрлер менен теңдемеге алмаштыруу Сиз кредитти берүү же баш тартууну чече аласыз.
Алдыга карап, биз берилген параметрлер менен белгилейбиз сызыктуу регрессия функциясы, колдонулган логистикалык жооп функциялары кредитти төлөө ыктымалдыгын аныктоо үчүн эсептөөлөрдү татаалдаштырат чоң баалуулуктарды өндүрөт. Ошондуктан биздин коэффициенттерди, айталы, 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 XNUMX рубльдан төлөй тургандай кылып алууну каалайт. Биз насыяны бекитүү үчүн Васянын айлыгы төлөмдүн суммасынан үч эсе көп болушу керек жана дагы XNUMX XNUMX рубль калуусу керек экенин аныктадык. Vasya бул талапты канааттандырат: . Ал тургай 106.000 XNUMX рубль калды. Эсептеп чыкканда ошого карабастан биз мүмкүнчүлүктөрдү азайттык 25.000 XNUMX жолу, натыйжасы бирдей болгон - кредит бекитилиши мүмкүн. Федя да насыя алат, бирок Леша эң көп алганына карабастан, табитин ооздуктоого туура келет.
Келгиле, бул иштин графигин тарталы.
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-бөлүмүндө кененирээк билебиз. Ал ортодо биз убада кылынган жерге — банкирибизге жана анын үч кардарына кайтып келебиз.
Функцияга рахмат биз кимге кредит бере аларын жана кимден баш тартуу керек экендигин билебиз. Бирок сен мындай маалымат менен директорго бара албайсың, анткени алар бизден ар бир карыз алуучунун кредитин кайтарып берүү ыктымалдыгын алгысы келген. Эмне кылуу керек? Жооп жөнөкөй - биз кандайдыр бир жол менен функцияны өзгөртүшүбүз керек , анын баалуулуктары диапазондо жатат маанилери диапазондо турган функцияга . Жана мындай функция бар, ал деп аталат логистикалык жооп функциясы же тескери-логит трансформациясы. Жолугушуу:
Анын кантип иштээрин этап-этабы менен карап көрөлү логистикалык жооп функциясы. Белгилей кетсек, биз карама-каршы багытта жүрөбүз, б.а. чейинки аралыкта жаткан ыктымалдык маанисин билебиз деп ойлойбуз үчүн андан кийин биз бул маанини сандардын бүткүл диапазонуна чейин “ачабыз” үчүн .
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 рубль берип туруу ыктымалдыгы XNUMX% га жакын. Айтмакчы, эгерде банктын саясаты, мисалы, XNUMX тен ашык кредитти кайтарып берүү ыктымалдыгы менен кардарларды насыялоону камсыз кылса, банк Лешага насыя бере аларын түшүнүшүбүз керек. Бул жөн гана бул учурда банк мүмкүн болгон жоготуулар үчүн көбүрөөк кам түзөт.
Ошондой эле, жок эле дегенде, 3 жана 5.000 RUR маржа менен эмгек акы-төлөө катышы шыптан алынган белгилей кетүү керек. Демек, салмактардын векторун баштапкы түрүндө колдоно алган жокпуз . Коэффициенттерди абдан кыскартышыбыз керек болчу жана бул учурда биз ар бир коэффициентти 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 болот:
Колдонуу үчүн айып Логистикалык жоготуу болот:
Бул мисал одоно ката болгон учурда жоготуу функциясын жакшы көрсөтүп турат Log Loss караганда моделин бир кыйла көп жазалайт ЭЭС. Келгиле, жоготуу функциясын колдонуунун теориялык негиздери эмне экенин түшүнөлү Log Loss классификация маселелеринде.
05. Максималдуу ыктымалдуулук ыкмасы жана логистикалык регрессия
Башында убада кылгандай, макала жөнөкөй мисалдар менен толукталган. Студияда дагы бир мисал жана эски коноктор бар - банктык карыз алуучулар: Вася, Федя жана Леша.
Болгондо да, мисалды иштеп чыгуудан мурун, жашоодо биз ондогон же жүздөгөн өзгөчөлүктөргө ээ болгон миңдеген же миллиондогон объектилердин машыгуу үлгүсү менен алектенип жатканыбызды эске сала кетейин. Бирок, бул жерде сандар үйрөнчүк маалымат таануучунун башына оңой эле бата тургандай кылып алынган.
Мисалга кайрылып көрөлү. Алгоритм Лешага бербегиле деп айтканына карабастан, банктын директору муктаж болгондордун баарына насыя берүүнү чечкенин элестетип көрөлү. Мына эми жетиштүү убакыт өттү, үч баатырдын кимиси насыяны төлөп, кайсынысы төлөбөгөнүн билебиз. Эмнени күтүш керек эле: Вася менен Федя насыяны төлөштү, бирок Леша төлөгөн жок. Эми бул жыйынтык биз үчүн жаңы окуу үлгүсү болот деп элестетип көрөлү жана ошол эле учурда кредитти төлөө ыктымалдыгына (карыз алуучунун эмгек акысы, айлык төлөмдүн өлчөмү) таасир этүүчү факторлор боюнча бардык маалыматтар жок болуп кеткендей. Андан кийин, интуитивдик түрдө, биз ар бир үчүнчү карыз алуучу банкка насыяны төлөбөйт деп болжолдоого болот, же башкача айтканда, кийинки карыз алуучунун насыяны төлөп берүү ыктымалдыгы. . Бул интуитивдик божомол теориялык ырастоого ээ жана ага негизделген максималдуу ыктымалдык ыкмасы, көбүнчө адабиятта деп аталат максималдуу ыктымалдуулук принциби.
Биринчиден, концептуалдык аппарат менен таанышалы.
Үлгү алуу ыктымалдыгы дал ушундай үлгүнү алуу, так ушундай байкоолорду/жыйынтыктарды алуу, б.а. ар бир үлгүдөгү натыйжаларды алуу ыктымалдыгынын продуктусу (мисалы, Вася, Федя жана Лешанын кредити бир эле учурда төлөнүп же төлөнбөй калганбы).
Ыктымалдуулук функциясы бөлүштүрүү параметрлеринин маанилери менен үлгүнүн ыктымалдыгын байланыштырат.
Биздин учурда, окутуу үлгүсү жалпыланган Бернулли схемасы болуп саналат, анда кокустук эки гана маанини алат: же . Демек, үлгү ыктымалдыгын параметрдин ыктымалдык функциясы катары жазууга болот төмөнкүдөй:
Жогорудагы жазууну төмөнкүчө чечмелесе болот. Вася менен Федя кредитти төлөп берүү ыктымалдыгы бирдей , Лешанын кредитти ТӨЛӨБӨЙ турган ыктымалдыгы барабар (анткени ал кредитти төлөө ЭМЕС болгон), ошондуктан бардык үч окуянын биргелешкен ыктымалдыгы бирдей .
Максималдуу ыктымалдык ыкмасы максимизациялоо жолу менен белгисиз параметрди баалоо ыкмасы ыктымалдык функциялары. Биздин учурда мындай баалуулукту табышыбыз керек анда максимумга жетет.
Ыктымалдуулук функциясы максимумга жеткен белгисиз параметрдин маанисин издөө үчүн чыныгы идея кайдан келип чыгат? Идеянын келип чыгышы үлгү популяция жөнүндө бизге жеткиликтүү билимдин жалгыз булагы деген ойдон келип чыгат. Калк жөнүндө биз билген нерселердин баары үлгүдө көрсөтүлгөн. Ошондуктан, биз айта алабыз, бир үлгү биз үчүн жеткиликтүү калктын так чагылдыруу болуп саналат. Ошондуктан, биз жеткиликтүү үлгү эң ыктымалдуу боло турган параметрди табышыбыз керек.
Албетте, биз оптималдаштыруу маселеси менен алектенип жатабыз, анда функциянын экстремум чекити табышыбыз керек. Экстремум чекитти табуу үчүн биринчи даражадагы шартты карап чыгуу керек, башкача айтканда, функциянын туундусун нөлгө теңеп, керектүү параметрге карата теңдемени чечүү керек. Бирок, көп сандагы факторлордун продуктунун туундусун издөө көпкө созулушу мүмкүн, муну болтурбоо үчүн атайын техника бар - логарифмге өтүү ыктымалдык функциялары. Эмне үчүн мындай өтүү мүмкүн? Функциянын экстремумун издебей жатканыбызга көңүл буралы, жана экстремум чекити, башкача айтканда, белгисиз параметрдин мааниси анда максимумга жетет. Логарифмге өткөндө экстремум чекити өзгөрбөйт (бирок экстремум өзү айырмаланат), анткени логарифм монотондук функция.
Келгиле, жогоруда айтылгандарга ылайык, Вася, Федя жана Лешанын насыялары менен үлгүбүздү өнүктүрүүнү уланталы. Адегенде ага өтөбүз ыктымалдык функциясынын логарифми:
Эми биз сөз айкашын оңой эле айырмалай алабыз :
Акырында, биринчи даражадагы шартты карап көрөлү - функциянын туундусун нөлгө теңейбиз:
Ошентип, биздин интуитивдик баа берүү ыктымалдыгы кредитти кайтарып берүү теориялык жактан акталды.
Жакшы, бирок биз азыр бул маалымат менен эмне кылышыбыз керек? Ар бир үчүнчү карыз алуучу акчасын банкка кайтарып бербейт деп ойлосок, экинчиси сөзсүз банкрот болот. Туура, бирок кредитти төлөө ыктымалдыгын баалоодо гана барабар Биз насыяны төлөөгө таасир этүүчү факторлорду эске алган жокпуз: карыз алуучунун эмгек акысы жана айлык төлөмдүн өлчөмү. Эске сала кетсек, биз мурда ушул эле факторлорду эске алуу менен ар бир кардар тарабынан насыяны төлөө ыктымалдыгын эсептеп чыкканбыз. Туруктуу барабардан башка ыктымалдыктарды алганыбыз логикалык .
Келгиле, үлгүлөрдүн ыктымалдыгын аныктайлы:
Үлгү ыктымалдыгын эсептөө үчүн код
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. Биз эмнени максималдаштырууну билебиз үлгү ыктымалдык функциялары сиз колдоно аласыз максималдуу ыктымалдык ыкмасы. Жана биз бул ыкма менен иштөөнүн бардык айла-амалдарын билебиз.
Бул көп кадамдуу кыймыл болуп чыгат :)
Эми эсиңизде болсун, макаланын эң башында биз жоготуу функцияларынын эки түрүн алгыбыз келген Логистикалык жоготуу объект класстары кандайча дайындалганына жараша. Ошентип, эки класстын классификациялык маселелеринде класстар катары белгиленет и же . Белгилүүлүгүнө жараша чыгаруу тиешелүү жоготуу функциясына ээ болот.
Case 1. Объекттердин классификациясы и
Мурда факторлордун жана берилген коэффициенттердин негизинде карыз алуучу тарабынан карызды төлөө ыктымалдыгы эсептелген үлгүнүн ыктымалдыгын аныктоодо , биз формуланы колдондук:
Чындыгында мааниси болуп саналат логистикалык жооп функциялары салмактардын берилген вектору үчүн
Анда бизге үлгү ыктымалдык функциясын төмөнкүдөй жазууга эч нерсе тоскоол болбойт:
Кээде кээ бир башталгыч аналитиктерге бул функция кантип иштээрин дароо түшүнүү кыйынга турат. Келгиле, нерселерди түшүндүрө турган 4 кыска мисалды карап көрөлү:
1. эгер (б.а., окутуу үлгүсүнө ылайык, объект +1 классына таандык) жана биздин алгоритм объектти класска классификациялоо ыктымалдыгын аныктайт 0.9га барабар болсо, анда үлгү ыктымалдыгынын бул бөлүгү төмөнкүчө эсептелет:
2. эгер жана , анда эсептөө төмөнкүдөй болот:
3. эгер жана , анда эсептөө төмөнкүдөй болот:
4. эгер жана , анда эсептөө төмөнкүдөй болот:
Ыктымалдуулук функциясы 1 жана 3 учурларда же жалпы учурда - объектти класска ыйгаруу ыктымалдыктарынын туура болжолдонгон маанилери менен максималдуу болоору айдан ачык. .
Объектти класска ыйгаруу ыктымалдыгын аныктоодо Болгону биз коэффициенттерди билбейбиз , анда биз аларды издейбиз. Жогоруда айтылгандай, бул оптималдаштыруу маселеси, анда адегенде салмактардын векторуна карата ыктымалдык функциясынын туундусун табышыбыз керек. . Бирок, адегенде өзүбүз үчүн тапшырманы жөнөкөйлөтүү мааниси бар: биз логарифмдин туундусун издейбиз. ыктымалдык функциялары.
Эмне үчүн логарифмден кийин, ичинде логистикалык ката функциялары, белгини өзгөрттүк боюнча . Баары жөнөкөй, анткени моделдин сапатын баалоо маселелеринде функциянын маанисин минимумга түшүрүү салтка айлангандыктан, биз туюнтуунун оң тарабын көбөйттүк. жана ошого жараша, максимизациялоонун ордуна, азыр функцияны минимумга түшүрөбүз.
Чынында, азыр, сиздин көз алдыңызда, жоготуу функциясы тырышчаактык менен алынган - Логистикалык жоготуу эки класстан турган окуу топтому үчүн: и .
Эми коэффициенттерди табуу үчүн биз жөн гана туундуну табышыбыз керек логистикалык ката функциялары анан, градиенттин түшүүсү же стохастикалык градиенттин түшүүсү сыяктуу сандык оптималдаштыруу ыкмаларын колдонуу менен эң оптималдуу коэффициенттерди тандаңыз . Бирок, макаланын олуттуу көлөмүн эске алуу менен, дифференциялоону өз алдынча жүргүзүү сунушталат, же бул, мисалы, деталдуу мисалдарсыз арифметика менен кийинки макаланын темасы болуп калышы мүмкүн.
Case 2. Объекттердин классификациясы и
Бул жерде мамиле класстар менен бирдей болот и , бирок жоготуу функциясынын чыгышына жолдун өзү Логистикалык жоготуу, дагы жасалгалуу болот. Келиңиз баштайлы. Ыктымалдуулук функциясы үчүн биз операторду колдонобуз "Эгер... анда..."... Башкача айтканда, эгерде th объект класска таандык , анда үлгүнүн ыктымалдыгын эсептөө үчүн биз ыктымалдуулукту колдонобуз , эгерде объект класска таандык болсо , анда биз ыктымалдуулукка алмаштырабыз . Ыктымалдуулук функциясы ушундай көрүнөт:
Анын кантип иштээрин манжаларыбыз менен сүрөттөп берели. 4 учурду карап көрөлү:
1. эгер и , анда үлгү алуу ыктымалдыгы "барат"
2. эгер и , анда үлгү алуу ыктымалдыгы "барат"
3. эгер и , анда үлгү алуу ыктымалдыгы "барат"
4. эгер и , анда үлгү алуу ыктымалдыгы "барат"
Ыктымалдуулуктар алгоритм менен туура аныкталган 1 жана 3 учурларда, ыктымалдык функциясы максималдуу болот, башкача айтканда, бул биз алууну каалаган нерсе. Бирок, бул ыкма бир топ түйшүктүү жана андан кийин биз бир кыйла компакт белгини карап чыгабыз. Бирок адегенде белгинин өзгөрүшү менен ыктымалдык функциясын логарифмдейли, анткени азыр биз аны минимумга түшүрөбүз.
Анын ордуна алмаштыралы билдирүү :
Жөнөкөй арифметикалык ыкмаларды колдонуу менен логарифмдин астындагы туура терминди жөнөкөйлөтүп, төмөнкүнү алалы:
Эми оператордон кутулуу керек "Эгер... анда...". Объект болгондо көңүл буруңуз класска таандык , анда логарифмдин астындагы туюнтмада, бөлүүчүдө, бийликке көтөрүлгөн , эгерде объект класска таандык болсо , анда $e$ күчкө көтөрүлөт . Демек, даража үчүн белгилер эки учурду бирге бириктирүү менен жөнөкөйлөштүрүлүшү мүмкүн: . ошондо логистикалык ката функциясы формада болот:
Логарифм эрежелерине ылайык, биз бөлчөктү которуп, белгисин коёбуз "" (минус) логарифм үчүн, биз алабыз:
Бул жерде жоготуу функциясы болуп саналат логистикалык жоготуу, ал класстарга дайындалган объектилер менен окуу комплексинде колдонулат: и .
Ошентип, мен эмгек өргүүсүн алып, макаланы жыйынтыктайбыз.
Көмөкчү материалдар
1. адабият
1) Колдонмо регрессиялык анализ / N. Draper, G. Smith - 2nd ed. – М.: Финансы жана статистика, 1986 (англис тилинен котормо)
2) Ыктымалдуулук теориясы жана математикалык статистика / В.Е. Гмурман - 9-бас. - М.: Жогорку мектеп, 2003-ж
3) Ыктымалдуулук теориясы / Н.И. Чернова - Новосибирск: Новосибирск мамлекеттик университети, 2007
4) Бизнес аналитика: маалыматтардан билимге / Паклин Н.Б., Орешков В.И. - 2-бас. — Санкт-Петербург: Петр, 2013
5) Маалымат илими Маалымат илими нөлдөн баштап / Джоэл Грас - Санкт-Петербург: BHV Petersburg, 2017
6) Data Science адистери үчүн практикалык статистика / П. Брюс, Э. Брюс - Санкт-Петербург: BHV Petersburg, 2018
2. Лекциялар, курстар (видео)
1)
2)
3)
4)
5)
3. Интернет булактары
1)
2)
3)
4)
6)