У гэтым артыкуле, мы будзем разбіраць тэарэтычныя выкладкі пераўтварэнні функцыі лінейнай рэгрэсіі в функцыю зваротнага логіт-пераўтварэнні (інакш кажуць, функцыю лагістычнага водгуку). Затым, скарыстаўшыся арсеналам метаду максімальнага праўдападабенства, у адпаведнасці з мадэллю лагістычнай рэгрэсіі, вывядзем функцыю страт Logistic Loss, ці іншымі словамі, мы вызначым функцыю, з дапамогай якой у мадэлі лагістычнай рэгрэсіі падбіраюцца параметры вектара вагаў .
План артыкула:
- Паўторым аб прамалінейнай залежнасці паміж двума зменнымі
- Выявім неабходнасць пераўтварэння функцыі лінейнай рэгрэсіі в функцыю лагістычнага водгуку
- Правядзем пераўтварэнні і выведзем функцыю лагістычнага водгуку
- Паспрабуем зразумець, чым дрэнны метад найменшых квадратаў пры падборы параметраў функцыі Logistic Loss
- Выкарыстоўваны метад максімальнага праўдападабенства для вызначэння функцыі падбору параметраў :
5.1. Выпадак 1: функцыя Logistic Loss для аб'ектаў з абазначэннем класаў 0 и 1:
5.2. Выпадак 2: функцыя Logistic Loss для аб'ектаў з абазначэннем класаў -1 и +1:
Артыкул мае шмат простых прыкладаў, у якіх усе разлікі лёгка зрабіць вусна або на паперы, у некаторых выпадках можа спатрэбіцца калькулятар. Так што падрыхтуйцеся 🙂
Дадзены артыкул у большай меры разлічаны на датасайнтыстаў з пачатковым узроўнем спазнанняў у асновах машыннага навучання.
У артыкуле таксама будзе прыведзены код для адмалёўкі графікаў і разлікаў. Увесь код напісаны на мове python 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()
Такім чынам, наша прамая, пабудаваная ў адпаведнасці з функцыяй , аддзяляе «дрэнных» пазычальнікаў ад «добрых». Тыя пазычальнікі, у каго жаданні не супадаюць з магчымасцямі знаходзяцца вышэй прамой (Лёша), тыя ж, хто здольны паводле параметраў нашай мадэлі, вярнуць крэдыт, знаходзяцца пад прамой (Вася і Федзя). Інакш можна сказаць так - наша прамая падзяляе пазычальнікаў на два класы. Абазначым іх наступным чынам: да класа аднясем тых пазычальнікаў, якія хутчэй за ўсё вернуць крэдыт, да класа або аднясем тых пазычальнікаў, якія хутчэй за ўсё не змогуць вярнуць крэдыт.
Абагульнім высновы з гэтага прасценькага прыкладу. Возьмем кропку і, падстаўляючы каардынаты кропкі ў адпаведнае раўнанне прамой , разгледзім тры варыянты:
- Калі кропка знаходзіцца пад прамой, і мы адносім яе да класа , тое значэнне функцыі будзе станоўчым ад да . Значыць, мы можам лічыць, што верагоднасць пагашэння крэдыту, знаходзіцца ў межах . Чым большае значэнне функцыі, тым вышэйшая верагоднасць.
- Калі кропка знаходзіцца над прамой і мы адносім яе да класа або , тое значэнне функцыі будзе адмоўным ад да . Тады мы будзем лічыць, што верагоднасць пагашэння запазычанасці знаходзіцца ў межах і, чым больш па модулі значэнне функцыі, тым вышэйшая наша ўпэўненасць.
- Кропка знаходзіцца на прамой, на мяжы паміж двума класамі. У такім выпадку значэнне функцыі будзе роўна і верагоднасць пагашэння крэдыту роўная .
Цяпер, уявім, што ў нас не два фактары, а дзясяткі, пазычальнікаў не тры, а тысячы. Тады замест прамой у нас будзе m-мерная плоскасць і каэфіцыенты у нас будуць узятыя не са столі, а выведзены па ўсіх правілах, ды на аснове назапашаных дадзеных аб пазычальніках, якія вярнулі або не вярнулі крэдыт. Заўважце, мы зараз адбіраем пазычальнікаў пры ўжо вядомых каэфіцыентах . Насамрэч, задача мадэлі лагістычнай рэгрэсіі як раз і складаецца ў тым, каб вызначыць параметры. , пры якіх значэнне функцыі страт Logistic Loss будзе імкнуцца да мінімальнага. Але пра тое, як разлічваецца вектар , мы яшчэ даведаемся ў 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. Проста ў такім выпадку банк сфармуе большы рэзерв пад магчымыя страты.
Таксама варта адзначыць, што суадносіны зарплаты да плацяжу не менш за 3 і з запасам у 5.000Р было ўзята са столі. Таму нам нельга было выкарыстоўваць у першапачатковым выглядзе вектар шаляў . Нам патрабавалася моцна паменшыць каэфіцыенты і ў такім разе мы падзялілі кожны каэфіцыент на 25.000, гэта значыць у сутнасці мы падагналі вынік. Але гэта зроблена было спецыяльна, каб спрасціць разуменне матэрыялу на пачатковым этапе. У жыцці ж нам спатрэбіцца не выдумляць і падганяць каэфіцыенты, а знаходзіць іх. Якраз у наступных раздзелах артыкула мы выведзем раўнанні, з дапамогай якіх падбіраюцца параметры .
04. Метад найменшых квадратаў пры вызначэнні вектара вагаў у функцыі лагістычнага водгуку
Нам ужо вядомы такі метад падбору вектара шаляў. , Як метад найменшых квадратаў (МНК) і, уласна, чаму б нам тады не выкарыстоўваць яго ў задачах бінарнай класіфікацыі? Сапраўды, нішто не замінае выкарыстоўваць МНК, толькі вось дадзены спосаб у задачах класіфікацыі дае вынікі менш дакладныя, чым Logistic Loss. Гэтаму ёсць тэарэтычнае абгрунтаванне. Давайце спачатку паглядзім на адзін просты прыклад.
Выкажам здагадку, што нашы мадэлі (якія выкарыстоўваюць MSE и Logistic Loss) ужо пачалі падбор вектара вагаў і мы спынілі разлік на нейкім кроку. Усё роўна, у сярэдзіне, у канцы ці ў пачатку, галоўнае, што ў нас ужо ёсць нейкія значэнні вектара шаляў і дапусцім, што на гэтым кроку, вектара шаляў для абедзвюх мадэляў не маюць адрозненняў. Тады возьмем атрыманыя вагі і падставім іх у функцыю лагістычнага водгуку () для якога-небудзь аб'екта, які адносіцца да класа . Даследуем два выпадкі, калі ў адпаведнасці з падабраным вектарам шаляў наша мадэль моцна памыляецца і наадварот мадэль моцна ўпэўненая ў тым, што аб'ект ставіцца да класа. . Паглядзім якія штрафы будуць "выпісаны" пры выкарыстанні. МНК и Logistic Loss.
Код для разліку штрафаў у залежнасці ад выкарыстоўванай функцыі страт
# класс объекта
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
Штраф пры выкарыстанні МНК складзе:
Штраф пры выкарыстанні Logistic Loss складзе:
Выпадак з моцнай упэўненасцю - мадэль адносіць аб'ект да класа з верагоднасцю ў 0,99
Штраф пры выкарыстанні МНК складзе:
Штраф пры выкарыстанні Logistic Loss складзе:
Гэты прыклад добра ілюструе, што пры грубай памылцы функцыя страт Страта часопіса штрафуе мадэль значна мацней, чым MSE. Давайце зараз разбярэмся, якія тэарэтычныя перадумовы выкарыстання функцыі страт Страта часопіса у задачах класіфікацыі.
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. Мы ведаем, што для максімізацыі функцыі праўдападабенства выбаркі можна выкарыстоўваць метад максімальнага праўдападабенства. І мы ведаем усе хітрыя прыёмы для працы з гэтым метадам.
Вось такая шматхадовачка атрымліваецца 🙂
А цяпер успомнім, што ў самым пачатку артыкула мы хацелі вывесці два віды функцыі страт. Logistic Loss у залежнасці ад таго як абазначаюцца класы аб'ектаў. Так павялося, што ў задачах класіфікацыі з двума класамі, класы абазначаюць як и або . У залежнасці ад абазначэння, на выхадзе будзе адпаведная функцыя страт.
Выпадак 1. Класіфікацыя аб'ектаў на и
Ранняе, пры вызначэнні праўдападабенства выбаркі, у якім верагоднасць пагашэння запазычанасці пазычальнікам разлічвалася зыходзячы з фактараў і зададзеных каэфіцыентаў , мы ўжылі формулу:
На самай справе - Гэта значэнне функцыі лагістычнага водгуку пры зададзеным вектары шаляў
Тады нам нішто не замінае запісаць функцыю праўдападабенства выбаркі так:
Бывае так, што часам, некаторым пачаткоўцам аналітыкам складана адразу зразумець, як гэтая функцыя працуе. Давайце разгледзім 4 кароткія прыклады, якія ўсё растлумачаць:
1. Калі (г.зн. у адпаведнасці з навучальнай выбаркай аб'ект ставіцца да класа +1), а наш алгарытм вызначае верагоднасць аднясення аб'екта да класа роўнай 0.9, то вось гэты кавалачак праўдападабенства выбаркі будзе разлічвацца так:
2. Калі , А , то разлік будзе такім:
3. Калі , А , то разлік будзе такім:
4. Калі , А , то разлік будзе такім:
Відавочна, што функцыя праўдападабенства будзе максымізавацца ў выпадках 1 і 3 або ў агульным выпадку - пры правільна адгаданых значэннях верагоднасцяў аднясення аб'екта да класа .
У сувязі з тым, што пры вызначэнні верагоднасці аднясення аб'екта да класа нам не вядомыя толькі каэфіцыенты , то мы іх і будзем шукаць. Як і гаварылася вышэй, гэта задача аптымізацыі, у якой для пачатку нам патрабуецца знайсці вытворную ад функцыі праўдападабенства па вектары шаляў . Аднак папярэдне мае сэнс спрасціць сабе задачу: вытворную будзем шукаць ад лагарыфма. функцыі праўдападабенства.
Чаму пасля лагарыфмавання, у функцыі лагістычнай памылкі, мы памянялі знак з на . Усё проста, бо ў задачах адзнакі якасці мадэлі прынята мінімізаваць значэнне функцыі, то мы памножылі правую частку выраза на і адпаведна замест максімізацыі, зараз мінімізуем функцыю.
Уласна, зараз, на вашых вачах была шмат пакутліва выведзена функцыя страт Logistic Loss для навучальнай выбаркі з двума класамі: и .
Зараз, для знаходжання каэфіцыентаў, нам запатрабуецца ўсяго толькі знайсці вытворную. функцыі лагістычнай памылкі і далей, выкарыстоўваючы лікавыя метады аптымізацыі, такія як градыентны спуск або стахастычны градыентны спуск, падабраць найболей аптымальныя каэфіцыенты . Але, улічваючы, ужо не малы аб'ём артыкула, прапануецца правесці дыферэнцыяванне самастойна ці, быць можа, гэта будзе тэмай для наступнага артыкула з вялікай колькасцю арыфметыкі без такіх падрабязных прыкладаў.
Выпадак 2. Класіфікацыя аб'ектаў на и
Падыход тут будзе такі ж, як і з класамі и , але сама дарожка да высновы функцыі страт Logistic Loss, будзе больш мудрагелістай. Прыступаем. Будзем для функцыі праўдападабенства выкарыстоўваць аператар «калі…, то…». Гэта значыць, калі -ы аб'ект ставіцца да класа , то для разліку праўдападабенства выбаркі выкарыстоўваем верагоднасць , калі аб'ект адносіцца да класа , то ў праўдападабенства падстаўляем . Вось так выглядае функцыя праўдападабенства:
На пальцах распішам як гэта працуе. Разгледзім 4 выпадкі:
1. Калі и , то ў праўдападабенства выбаркі «пойдзе»
2. Калі и , то ў праўдападабенства выбаркі «пойдзе»
3. Калі и , то ў праўдападабенства выбаркі «пойдзе»
4. Калі и , то ў праўдападабенства выбаркі «пойдзе»
Відавочна, што ў 1 і 3 выпадку, калі верагоднасці былі правільна вызначаны алгарытмам, функцыя праўдападабенства будзе максымізавацца, то бок менавіта гэта мы і хацелі атрымаць. Аднак, такі падыход досыць грувасткі і далей мы разгледзім больш кампактны запіс. Але для пачатку, лагарыфмаваны функцыю праўдападабенства з заменай знака, бо зараз мы будзем мінімізаваць яе.
Падставім замест выраз :
Спрасцім правае складнік пад лагарыфмам, выкарыстоўваючы простыя арыфметычныя прыёмы і атрымаем:
А зараз надышоў час пазбавіцца ад аператара «калі…, то…». Заўважым, што калі аб'ект адносіцца да класа , то ў выразе пад лагарыфмам, у назоўніку, узводзіцца ў ступень , калі аб'ект адносіцца да класа , то $e$ узводзіцца ў ступень . Такім чынам запіс ступені можна спрасціць - аб'яднаць абодва выпадку ў адзін: . Тады функцыя лагістычнай памылкі прыме выгляд:
У адпаведнасці з правіламі лагарыфміравання, перавернем дроб і вынесем знак "" (мінус) за лагарыфм, атрымаем:
Перад вамі функцыя страт logistic Loss, якая ўжываецца ў навучальнай выбарцы з аб'ектамі якія адносяцца да класаў: и .
Што ж, на гэтым моманце я адкланяюся і мы завяршаем артыкул.
Дапаможныя матэрыялы
1. Літаратура
1) Прыкладны рэгрэсійны аналіз / Н. Дрэйпер, Г. Сміт - 2-е выд. – М.: Фінансы і статыстыка, 1986 (пераклад з англійскай)
2) Тэорыя верагоднасцяў і матэматычная статыстыка / У.Я. Гмурман - 9-е выд. - М .: Вышэйшая школа, 2003
3) Тэорыя верагоднасцяў / Н.І. Чарнова - Новасібірск: Новасібірскі дзяржаўны універсітэт, 2007
4) Бізнес-аналітыка: ад дадзеных да ведаў / Паклін Н. Б., Арэшкаў В. І. - 2-е выд. - Санкт-Пецярбург: Піцер, 2013
5) Data Science Навука аб дадзеных з нуля / Джоэл Грас – Санкт-Пецярбург: БХВ Пецярбург, 2017
6) Практычная статыстыка для спецыялістаў Data Science / П.Брус, Э.Брус - Санкт-Пецярбург: БХВ Пецярбург, 2018
2. Лекцыі, курсы (відэа)
1)
2)
3)
4)
5)
3. Інтэрнэт-крыніцы
1)
2)
3)
4)
6)
7)
8)
Крыніца: habr.com