Yn dit artikel sille wy de teoretyske berekkeningen fan 'e transformaasje analysearje lineêre regression funksjes в inverse logit-transformaasjefunksje (oars neamd logistyske antwurdfunksje). Dan, mei help fan it arsenal maksimale kâns metoade, yn oerienstimming mei it logistyske regressionmodel, ûntliene wy de ferliesfunksje Logistyske ferlies, of mei oare wurden, wy sille in funksje definiearje wêrmei't de parameters fan 'e gewichtvektor selektearre wurde yn it logistyske regressionmodel .
Artikel oersjoch:
- Lit ús de lineêre relaasje tusken twa fariabelen werhelje
- Litte wy de needsaak foar transformaasje identifisearje lineêre regression funksjes в logistyske antwurd funksje
- Litte wy de transformaasjes en útfier útfiere logistyske antwurd funksje
- Lit ús besykje te begripen wêrom't de minste kwadraten metoade is min by it selektearjen fan parameters funksjes Logistyske ferlies
- Wy brûke maksimale kâns metoade foar it bepalen parameter seleksje funksjes :
5.1. Gefall 1: funksje Logistyske ferlies foar objekten mei klasse oantsjuttings 0 и 1:
5.2. Gefall 2: funksje Logistyske ferlies foar objekten mei klasse oantsjuttings -1 и +1:
It artikel is fol mei ienfâldige foarbylden wêryn alle berekkeningen maklik mûnling as op papier te meitsjen binne; yn guon gefallen kin in rekkenmasine ferplicht wurde. Dus klear :)
Dit artikel is primêr bedoeld foar gegevenswittenskippers mei in earste nivo fan kennis yn 'e basis fan masine learen.
It artikel sil ek koade leverje foar it tekenjen fan grafiken en berekkeningen. Alle koade is skreaun yn 'e taal python 2.7. Lit my fan tefoaren útlizze oer de "nijs" fan 'e brûkte ferzje - dit is ien fan' e betingsten foar it nimmen fan 'e bekende kursus fan Yandex op in like bekend online ûnderwiisplatfoarm Coursera, en, lykas men soe oannimme, it materiaal waard taret basearre op dizze kursus.
01. Rjochtline ôfhinklikens
It is frij ridlik om de fraach te stellen - wat hat lineêre ôfhinklikens en logistyske regression dêrmei te krijen?
It is ienfâldich! Logistyske regression is ien fan 'e modellen dy't hearre ta de lineêre klassifikaasje. Yn ienfâldige wurden is de taak fan in lineêre klassifikaasje om doelwearden te foarsizzen fan fariabelen (regressors) . It wurdt leaud dat de ôfhinklikheid tusken de skaaimerken en doelwearden lineêr. Dêrfandinne de namme fan 'e klassifikaasje - lineêr. Om it hiel rûch te sizzen is it logistyske regressionmodel basearre op de oanname dat der in lineêre relaasje is tusken de skaaimerken en doelwearden . Dit is de ferbining.
D'r is it earste foarbyld yn 'e studio, en it giet, krekt, oer de rjochtlinige ôfhinklikens fan 'e grutten dy't wurde bestudearre. Yn it proses fan it tarieden fan it artikel kaam ik in foarbyld tsjin dat in protte minsken al op 'e râne set hat - de ôfhinklikens fan stroom op spanning ("Applied regression analysis", N. Draper, G. Smith). Wy sille it hjir ek besjen.
Neffens Ohms wet:
wêr - hjoeddeistige sterkte, - foltaazje, - ferset.
As wy it net wisten Ohms wet, dan koenen wy de ôfhinklikens empirysk fine troch te feroarjen en mjitten , wylst it stypjen fêst. Dan soene wy sjen dat de ôfhinklikens grafyk от jout in min of mear rjochte line troch de oarsprong. Wy sizze "min of mear", om't, hoewol de relaasje eins krekt is, ús mjittingen lytse flaters kinne befetsje, en dêrom kinne de punten op 'e grafyk net krekt op' e line falle, mar wurde willekeurich ferspraat.
Grafyk 1 "Afhanklikheid" от »
Chart tekening koade
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. De needsaak om de lineêre regressionfergeliking te transformearjen
Litte wy nei in oar foarbyld sjen. Litte wy ús foarstelle dat wy yn in bank wurkje en ús taak is om de kâns te bepalen dat de liener de liening werombetellet ôfhinklik fan bepaalde faktoaren. Om de taak te ferienfâldigjen, sille wy mar twa faktoaren beskôgje: it moanlikse salaris fan 'e liener en it moanlikse bedrach fan' e liening.
De taak is tige betingst, mar mei dit foarbyld kinne wy begripe wêrom't it net genôch is om te brûken lineêre regression funksjes, en ek útfine hokker transformaasjes moatte wurde útfierd mei de funksje.
Litte wy weromgean nei it foarbyld. It wurdt begrepen dat hoe heger it salaris, hoe mear de liener moanliks kin allocearje om de liening werom te beteljen. Tagelyk, foar in bepaald salaris berik dizze relaasje sil wêze hiel lineêr. Bygelyks, lit ús nimme in salaris berik fan 60.000 RUR oan 200.000 RUR en oannimme dat yn de oantsjutte salaris berik, de ôfhinklikheid fan de grutte fan 'e moanlikse betelling op' e grutte fan it salaris is lineêr. Litte we sizze dat foar it oantsjutte berik fan leanen die bliken dien dat it salaris-to-betellingsferhâlding net ûnder 3 kin falle en de liener moat noch 5.000 RUR yn reserve hawwe. En allinnich yn dit gefal, wy sille der fan út dat de lener sil werombetelje de liening oan de bank. Dan sil de lineêre regressionfergeliking de foarm hawwe:
wêr , , , - salaris -de liener, - betelling betelling -th liener.
It ferfangen fan salaris en betelling fan liening mei fêste parameters yn 'e fergeliking Jo kinne beslute oft jo in liening útjaan of wegerje.
Foarútsjen, wy konstatearje dat, mei de opjûne parameters lineêre regression funksje, brûkt yn logistyske antwurd funksjes sil grutte wearden produsearje dy't berekkeningen sille komplisearje om de kânsen fan werombetelling fan lieningen te bepalen. Dêrom wurdt foarsteld om ús koeffizienten te ferminderjen, lit ús sizze, mei 25.000 kear. Dizze transformaasje yn 'e koeffizienten sil it beslút om in liening út te jaan net feroarje. Lit ús dit punt ûnthâlde foar de takomst, mar no, om it noch dúdliker te meitsjen wêr't wy it oer hawwe, litte wy de situaasje mei trije potinsjele lieners beskôgje.
Tabel 1 "Potensjele lieners"
Koade foar it generearjen fan de tabel
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']]
Yn oerienstimming mei de gegevens yn 'e tabel wol Vasya, mei in salaris fan 120.000 RUR, in liening krije, sadat hy it alle moannen werombetelje kin op 3.000 RUR. Wy hawwe bepaald dat om de liening goed te keuren, it salaris fan Vasya trije kear it bedrach fan 'e betelling moat wêze, en d'r moat noch 5.000 RUR oerbliuwe. Vasya foldocht oan dizze eask: . Sels 106.000 RUR bliuwt. Nettsjinsteande it feit dat by it berekkenjen wy hawwe ferlege de kânsen 25.000 kear, it resultaat wie itselde - de liening kin wurde goedkard. Fedya sil ek in liening krije, mar Lesha, nettsjinsteande it feit dat hy it measte krijt, sil syn appetit moatte beheine.
Litte wy in grafyk tekenje foar dit gefal.
Grafyk 2 "Klassifikaasje fan lieners"
Koade foar it tekenjen fan de grafyk
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()
Dat, ús rjochte line, konstruearre yn oerienstimming mei de funksje , skiedt "minne" lieners fan "goede". Dy lieners waans begearten net oerienkomme mei harren mooglikheden binne boppe de line (Lesha), wylst dyjingen dy't, neffens de parameters fan ús model, by steat binne om werombetelje de liening binne ûnder de line (Vasya en Fedya). Mei oare wurden, wy kinne dit sizze: ús direkte line ferdielt lieners yn twa klassen. Lit ús se as folget oantsjutte: nei klasse Wy sille klassifisearje dy lieners dy't it meast wierskynlik de liening werombetelje as of Wy sille de lieners opnimme dy't nei alle gedachten de liening net kinne werombetelje.
Lit ús de konklúzjes fan dit ienfâldige foarbyld gearfetsje. Litte wy in punt nimme en, it ferfangen fan de koördinaten fan it punt yn de oerienkommende fergeliking fan de line , beskôgje trije opsjes:
- As it punt is ûnder de line en wy tawize it oan de klasse , dan de wearde fan 'e funksje sil wêze posityf út до . Dit betsjut dat wy kinne oannimme dat de kâns fan werombetelje de liening binnen is . Hoe grutter de funksjewearde, hoe heger de kâns.
- As in punt is boppe in line en wy tawize it oan de klasse of , dan sil de wearde fan 'e funksje negatyf wêze fan до . Dan sille wy oannimme dat de kâns op ôflossing fan skulden binnen is en hoe grutter de absolute wearde fan 'e funksje, hoe heger ús fertrouwen.
- It punt leit op in rjochte line, op de grins tusken twa klassen. Yn dit gefal, de wearde fan 'e funksje sil gelyk wêze en de kâns fan werombetelje de liening is gelyk oan .
No, lit ús yntinke dat wy hawwe net twa faktoaren, mar tsientallen, en net trije, mar tûzenen lieners. Dan ynstee fan in rjochte line wy sille hawwe m-dimensionale fleanmasine en koeffizienten wy sille net wurde nommen út 'e loft, mar ôflaat neffens alle regels, en op basis fan opboude gegevens oer lieners dy't hawwe of hawwe net werombetelle de liening. En yndie, tink derom dat wy no lieners selektearje mei al bekende koeffizienten . Yn feite is de taak fan it logistyske regressionmodel krekt om de parameters te bepalen , wêrby't de wearde fan it ferlies funksje Logistyske ferlies sil oanstriid ta it minimum. Mar oer hoe't de vector wurdt berekkene , wy sille mear útfine yn 'e 5e seksje fan it artikel. Yn 'e tuskentiid geane wy werom nei it beloofde lân - nei ús bankier en syn trije kliïnten.
Mei tank oan de funksje wy witte wa't in liening jûn wurde kin en wa't wegere wurde moat. Mar jo kinne net nei de direkteur gean mei sokke ynformaasje, om't se fan ús de kâns krije wolle dat elke liener de liening werombetellet. Wat te dwaan? It antwurd is ienfâldich - wy moatte de funksje op ien of oare manier transformearje , waans wearden yn it berik lizze nei in funksje wêrfan de wearden yn it berik sille lizze . En sa'n funksje bestiet, hjit it logistyske antwurdfunksje of inverse-logit-transformaasje. Moetsje:
Litte wy stap foar stap sjen hoe't it wurket logistyske antwurd funksje. Tink derom dat wy yn 'e tsjinoerstelde rjochting sille rinne, d.w.s. wy sille oannimme dat wy kenne de kâns wearde, dy't leit yn it berik fan до en dan sille wy "unwind" dizze wearde oan it hiele berik fan nûmers út до .
03. Wy ûntliene de logistyske antwurdfunksje
Stap 1. Konvertearje de kânswearden yn in berik
Tidens de transformaasje fan 'e funksje в logistyske antwurd funksje Wy litte ús kredytanalist mei rêst en meitsje ynstee in rûnlieding troch de bookmakers. Nee, fansels, wy sille net pleatse bets, alles dat ynteresseart ús dêr is de betsjutting fan 'e útdrukking, bygelyks, de kâns is 4 oan 1. De kânsen, bekend foar alle bettors, binne de ferhâlding fan "sukses" oan " mislearrings”. Yn kâns termen, kânsen binne de kâns dat in evenemint plakfynt dield troch de kâns fan it barren net plakfine. Litte wy de formule opskriuwe foar de kâns dat in evenemint bart :
wêr - kâns dat in evenemint plakfynt, - kâns dat in evenemint NET plakfynt
Bygelyks, as de kâns dat in jong, sterk en boartlik hynder mei de bynamme "Veterok" in âlde en flakke âlde frou mei de namme "Matilda" sil slaan op in race is gelyk oan , dan sil de kâns op sukses foar "Veterok" wêze к en oarsom, wittende de kânsen, it sil net dreech foar ús te berekkenjen de kâns :
Sa, wy hawwe leard te "oersette" kâns yn kânsen, dy't nimme wearden út до . Litte wy noch ien stap nimme en learje de kâns te "oersette" nei de folsleine nûmerline fan до .
Stap 2. Konvertearje de kânswearden yn in berik
Dizze stap is heul ienfâldich - lit ús de logaritme fan 'e kânsen nimme nei de basis fan it nûmer fan Euler en wy krije:
No witte wy dat as , dan berekkenje de wearde sil heul ienfâldich wêze en boppedat moat it posityf wêze: . Dit is wier.
Lit ús út nijsgjirrigens kontrolearje wat as , dan ferwachtsje wy in negative wearde te sjen . Wy kontrolearje: . Dat kloppet.
No witte wy hoe't jo de kânswearde konvertearje fan до lâns de hiele nûmer line fan до . Yn 'e folgjende stap sille wy it tsjinoerstelde dwaan.
Foar no, wy konstatearje dat yn oerienstimming mei de regels fan logaritme, wittende de wearde fan 'e funksje , kinne jo de kânsen berekkenje:
Dizze metoade foar it bepalen fan odds sil foar ús nuttich wêze yn 'e folgjende stap.
Stap 3. Lit ús ôfliede in formule te bepalen
Sa learden wy, wittende , fine funksje wearden . Lykwols, yn feite, wy moatte krekt it tsjinoerstelde - witte de wearde fine . Om dit te dwaan, lit ús keare nei sa'n konsept as de omkearde odds funksje, neffens hokker:
Yn it artikel sille wy de boppesteande formule net ôfliede, mar wy sille it kontrolearje mei de nûmers út it foarbyld hjirboppe. Wy witte dat mei kânsen fan 4 oant 1 (), de kâns dat it barren plakfynt is 0.8 (). Litte wy in ferfanging meitsje: . Dit komt oerien mei ús berekkeningen dy't earder útfierd binne. Lit ús fierder gean.
Yn de lêste stap ha wy dat ôfmakke , wat betsjut dat jo kinne meitsje in ferfanging yn de omkearde odds funksje. Wy krije:
Diel sawol de teller as de neamer troch , Dan:
Foar it gefal, om der wis fan te wêzen dat wy nearne in flater makke hawwe, sille wy noch ien lytse kontrôle dwaan. Yn stap 2, wy foar dat bepaald . Dan, ferfange de wearde yn 'e logistyske antwurdfunksje, ferwachtsje wy te krijen . Wy ferfange en krije:
Lokwinsken, bêste lêzer, wy hawwe krekt de logistyske antwurdfunksje ôflaat en hifke. Litte wy nei de grafyk fan 'e funksje sjen.
Grafyk 3 "Logistyske antwurdfunksje"
Koade foar it tekenjen fan de grafyk
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()
Yn de literatuer kinne jo ek fine de namme fan dizze funksje as sigmoid funksje. De grafyk lit dúdlik sjen dat de wichtichste feroaring yn 'e kâns fan in objekt dat ta in klasse heart binnen in relatyf lyts berik foarkomt , earne fan до .
Ik stel foar om werom te gean nei ús kredytanalist en him te helpen de kâns op werombeteling fan lieningen te berekkenjen, oars riskeart hy sûnder bonus te bliuwen :)
Tabel 2 "Potensjele lieners"
Koade foar it generearjen fan de tabel
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']]
Dat, wy hawwe de kâns op werombetelje fan liening bepaald. Yn 't algemien liket dit wier te wêzen.
Ja, de kâns dat Vasya, mei in salaris fan 120.000 RUR, elke moanne 3.000 RUR kin jaan oan 'e bank is tichtby 100%. Troch de wei, wy moatte begripe dat in bank kin útjaan in liening oan Lesha as de bank syn belied foarsjocht, bygelyks, foar útlienen oan kliïnten mei in kâns fan werombetelje liening fan mear as, bygelyks, 0.3. It is gewoan dat yn dit gefal de bank in gruttere reserve sil meitsje foar mooglike ferliezen.
It moat ek opmurken wurde dat it salaris-to-betelling ferhâlding fan op syn minst 3 en mei in marzje fan 5.000 RUR waard nommen út it plafond. Dêrom, wy koenen net brûke de vector fan gewichten yn syn oarspronklike foarm . Wy moasten de koeffizienten sterk ferminderje, en yn dit gefal hawwe wy elke koeffizient dield troch 25.000, dat is, yn essinsje, wy hawwe it resultaat oanpast. Mar dit waard spesifyk dien om it begryp fan it materiaal yn 'e earste faze te ferienfâldigjen. Yn it libben sille wy gjin koeffizienten útfine en oanpasse, mar se fine. Yn 'e folgjende seksjes fan it artikel sille wy de fergelikingen ôfliede wêrmei't de parameters binne selektearre .
04. De minste kwadraten metoade foar it bepalen fan de vector fan gewichten yn 'e logistyske antwurdfunksje
Wy witte al dizze metoade foar it selektearjen fan in vector fan gewichten , as minste kwadraten metoade (LSM) en yn feite, wêrom brûke wy it dan net yn binêre klassifikaasjeproblemen? Yndied, neat foarkomt jo te brûken MNC, allinnich dizze metoade yn klassifikaasje problemen jout resultaten dy't minder akkuraat as Logistyske ferlies. Dêr is in teoretyske basis foar. Litte wy earst nei ien ienfâldich foarbyld sjen.
Litte wy oannimme dat ús modellen (br MSE и Logistyske ferlies) binne al begûn mei it selektearjen fan de fektor fan gewichten en wy stoppe de berekkening op guon stap. It makket net út oft yn 'e midden, oan' e ein of oan it begjin, it wichtichste is dat wy al wat wearden hawwe fan 'e gewichtfektor en lit ús oannimme dat yn dizze stap de gewichtfektor is foar beide modellen binne d'r gjin ferskillen. Nim dan de resultearjende gewichten en ferfange se yn logistyske antwurd funksje () foar in objekt dat heart by de klasse . Wy ûndersiikje twa gefallen as, yn oerienstimming mei de selektearre vector fan gewichten, ús model is tige ferkeard en oarsom - it model is tige wis dat it objekt heart ta de klasse . Litte wy sjen hokker boetes sille wurde útjûn by it brûken MNC и Logistyske ferlies.
Koade om boetes te berekkenjen ôfhinklik fan de brûkte ferliesfunksje
# класс объекта
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
In gefal fan in blunder - it model jout in objekt oan in klasse mei in kâns fan 0,01
Straf op gebrûk MNC sil wêze:
Straf op gebrûk Logistyske ferlies sil wêze:
In gefal fan sterk fertrouwen - it model jout in objekt oan in klasse mei in kâns fan 0,99
Straf op gebrûk MNC sil wêze:
Straf op gebrûk Logistyske ferlies sil wêze:
Dit foarbyld yllustrearret goed dat yn gefal fan in grutte flater de ferliesfunksje Log Loss penalizes it model signifikant mear as MSE. Litte wy no begripe wat de teoretyske eftergrûn is foar it brûken fan de ferliesfunksje Log Loss yn klassifikaasjeproblemen.
05. Maksimum kâns metoade en logistyske regression
Lykas oan it begjin tasein, is it artikel fol mei ienfâldige foarbylden. Yn it atelier is der in oar foarbyld en âlde gasten - bank lieners: Vasya, Fedya en Lesha.
Foar it gefal, foardat ik it foarbyld ûntwikkelje, lit my jo herinnerje dat wy yn it libben te krijen hawwe mei in trainingsmonster fan tûzenen as miljoenen objekten mei tsientallen of hûnderten funksjes. Hjir binne de nûmers lykwols nommen sadat se maklik passe kinne yn 'e holle fan in begjinnende gegevenswittenskipper.
Litte wy weromgean nei it foarbyld. Litte wy ús yntinke dat de direkteur fan 'e bank besleat om in liening út te jaan oan elkenien yn need, nettsjinsteande it feit dat it algoritme him fertelde dat it net oan Lesha soe útjaan. En no is der genôch tiid foarby en wy witte wa fan 'e trije helden de liening werombetelle en hokker net. Wat wie te ferwachtsjen: Vasya en Fedya betelle de liening werom, mar Lesha die net. Litte wy ús no yntinke dat dit resultaat in nije opliedingsmonster foar ús sil wêze en tagelyk is it as binne alle gegevens oer de faktoaren dy't ynfloed hawwe op 'e wikseling fan' e liening fan 'e liening (lean fan' e liener, grutte fan 'e moanlikse betelling) ferdwûn. Dan kinne wy yntuïtyf oannimme dat elke tredde liener de liening net oan 'e bank werombetellet, of mei oare wurden, de kâns dat de folgjende liener de liening werombeteart . Dizze yntuïtive oanname hat teoretyske befêstiging en is basearre op maksimale kâns metoade, faak yn 'e literatuer hjit it maksimum kâns prinsipe.
Lit ús earst yn 'e kunde komme mei it konseptuele apparaat.
Sampling kâns is de kâns om krekt sa'n stekproef te krijen, krekt sokke waarnimmings/resultaten te krijen, d.w.s. it produkt fan 'e kânsen om elk fan' e stekproefresultaten te krijen (bygelyks oft de liening fan Vasya, Fedya en Lesha waard werombetelle of net tagelyk werombetelle).
Wierskynlik funksje relatearret de kâns fan in stekproef oan 'e wearden fan' e distribúsjeparameters.
Yn ús gefal is it treningsprobleem in generalisearre Bernoulli-skema, wêryn de willekeurige fariabele mar twa wearden nimt: of . Dêrom kin de sample-wierskynlikens skreaun wurde as in kânsfunksje fan 'e parameter as folget:
De boppesteande yngong kin as folget ynterpretearre wurde. De mienskiplike kâns dat Vasya en Fedya de liening werombetelje is gelyk oan , De kâns dat Lesha de liening NET werombeteart is gelyk oan (om't it NET de ôflossing fan 'e liening wie dy't plakfûn), dêrom is de mienskiplike kâns fan alle trije eveneminten gelyk .
Maksimum kâns metoade is in metoade foar it skatten fan in ûnbekende parameter troch maksimalisearjen kâns funksjes. Yn ús gefal moatte wy sa'n wearde fine op hokker punt berikt syn maksimum.
Wêr komt it eigentlike idee wei - om te sykjen nei de wearde fan in ûnbekende parameter wêrby't de kânsfunksje in maksimum berikt? De oarsprong fan it idee komt út it idee dat in stekproef de ienige boarne fan kennis is dy't ús beskikber is oer de befolking. Alles wat wy witte oer de befolking is fertsjintwurdige yn 'e stekproef. Dêrom kinne wy alles sizze dat in stekproef de meast krekte refleksje is fan 'e populaasje dy't ús beskikber is. Dêrom moatte wy in parameter fine wêryn de beskikbere stekproef it meast wierskynlik wurdt.
Fansels hawwe wy te krijen mei in optimalisaasjeprobleem wêryn wy it ekstremumpunt fan in funksje fine moatte. Om it ekstremum punt te finen, is it nedich om de earste-oardere betingst te beskôgjen, dat is, de derivative fan 'e funksje oan nul lykje en de fergeliking oplosse mei respekt foar de winske parameter. It sykjen nei de derivative fan in produkt fan in grut oantal faktoaren kin lykwols in lange taak wêze; om dit te foarkommen is d'r in spesjale technyk - oerskeakelje nei de logaritme kâns funksjes. Wêrom is sa'n oergong mooglik? Lit ús omtinken jaan oan it feit dat wy net sykje nei it ekstremum fan 'e funksje sels, en it ekstremum punt, dat is, de wearde fan de ûnbekende parameter op hokker punt berikt syn maksimum. By it ferpleatsen nei in logaritme feroaret it ekstremumpunt net (hoewol't it ekstreem sels oars sil), om't de logaritme in monotoane funksje is.
Litte wy, yn oerienstimming mei it boppesteande, trochgean mei it ûntwikkeljen fan ús foarbyld mei lieningen fan Vasya, Fedya en Lesha. Lit ús earst fierder gean nei logaritme fan 'e wierskynlikheidsfunksje:
No kinne wy de útdrukking maklik ûnderskiede troch :
En as lêste, beskôgje de earste-order betingst - wy lykje de derivative fan 'e funksje oan nul:
Sa, ús yntuïtive skatting fan de kâns op werombetelje liening wie teoretysk rjochtfeardige.
Geweldich, mar wat moatte wy no mei dizze ynformaasje? As wy oannimme dat elke tredde liener it jild net oan 'e bank werombringt, dan sil de lêste ûnûntkomber fallyt gean. Dat is rjocht, mar allinnich by it beoardieljen fan de kâns fan werombetelje liening gelyk oan Wy hawwe gjin rekken holden mei de faktoaren dy't ynfloed hawwe op it werombeteljen fan lieningen: it salaris fan 'e liening en de grutte fan' e moanlikse betelling. Lit ús ûnthâlde dat wy earder berekkene de kâns dat elke klant werombetelje de liening, rekken hâldend mei deselde faktoaren. It is logysk dat wy krigen kânsen oars as de konstante gelyk .
Litte wy de kâns fan samples definiearje:
Koade foar berekkenjen sample kânsen
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)
Sample kâns op in konstante wearde :
Sample kâns by it berekkenjen fan de kâns op werombetelje liening mei rekken hâldend mei faktoaren :
De kâns op in stekproef mei in kâns berekkene ôfhinklik fan de faktoaren die bliken heger te wêzen as de kâns mei in konstante kâns wearde. Wat betsjut dit? Dit suggerearret dat kennis oer de faktoaren makke it mooglik om krekter selektearje de kâns fan werombetelje liening foar eltse klant. Dêrom, by it útjaan fan de folgjende liening, soe it krekter wêze om it model foarsteld oan 'e ein fan' e seksje 3 fan it artikel te brûken foar it beoardieljen fan 'e kâns op werombetelje fan skuld.
Mar dan, as wy wolle maksimalisearje sample kâns funksje, dan wêrom net brûke wat algoritme dat sil produsearje kânsen foar Vasya, Fedya en Lesha, bygelyks, gelyk oan 0.99, 0.99 en 0.01, respektivelik. Miskien sil sa'n algoritme goed prestearje op 'e trainingsmonster, om't it de wearde fan' e sample-wierskynlikheid tichterby bringt , mar as earste, sa'n algoritme sil nei alle gedachten hawwe swierrichheden mei generalisaasje fermogen, en twad, dit algoritme sil perfoarst net wêze lineêr. En as metoaden foar it bestriden fan overtraining (like swakke generalisaasjefeardigens) dúdlik net opnommen binne yn it plan fan dit artikel, litte wy it twadde punt yn mear detailje gean. Om dit te dwaan, beäntwurdzje gewoan in ienfâldige fraach. Kin de kâns dat Vasya en Fedya de liening werombetelje itselde wêze, rekken hâldend mei de faktoaren dy't ús bekend binne? Ut it eachpunt fan lûdlogika, fansels net, kin it net. Sa sil Vasya 2.5% fan syn salaris per moanne betelje om de liening werom te beteljen, en Fedya - hast 27,8%. Ek yn grafyk 2 "Klantklassifikaasje" sjogge wy dat Vasya folle fierder fan 'e line is dy't de klassen skiedt dan Fedya. En as lêste, wy witte dat de funksje foar Vasya en Fedya nimt ferskillende wearden: 4.24 foar Vasya en 1.0 foar Fedya. No, as Fedya, bygelyks, in folchoarder fan grutte mear fertsjinne of frege om in lytsere liening, dan soene de kânsen om de liening foar Vasya en Fedya werom te beteljen gelyk wêze. Mei oare wurden, lineêre ôfhinklikens kin net ferrifelje. En as wy eins berekkene de kânsen , en net nimme se út 'e loft, kinne wy feilich sizze dat ús wearden bêste tastean ús te skatten de kâns op werombetelje fan de liening troch elke liening, mar sûnt wy ôfpraat om oan te nimmen dat de bepaling fan de koeffizienten waard útfierd neffens alle regels, dan sille wy dat oannimme - ús koeffizienten kinne ús in bettere skatting jaan fan 'e kâns :)
Wy geane lykwols ôf. Yn dizze paragraaf moatte wy begripe hoe't de vector fan gewichten wurdt bepaald , dy't nedich is om de kâns te beoardieljen fan werombetelje fan 'e liening troch elke liener.
Lit ús koart gearfetsje mei hokker arsenal wy sykje nei odds :
1. Wy geane der fan út dat de relaasje tusken de doelfariabele (foarsizzingswearde) en de faktor dy't it resultaat beynfloedet lineêr is. Om dizze reden wurdt it brûkt lineêre regression funksje soart , de line wêrfan objekten (kliïnten) yn klassen dielt и of (kliïnten dy't by steat binne om werombetelje de liening en dyjingen dy't net). Yn ús gefal hat de fergeliking de foarm .
2. Wy brûke inverse logit funksje soart om de kâns te bepalen fan in objekt dat ta in klasse heart .
3. Wy beskôgje ús training set as in útfiering fan in generalisearre Bernoulli schemes, dat is, foar elk foarwerp wurdt generearre in willekeurige fariabele, dy't mei kâns (syn eigen foar elk foarwerp) nimt de wearde 1 en mei kâns - 0.
4. Wy witte wat wy moatte maksimalisearje sample kâns funksje rekken hâldend mei de akseptearre faktoaren sadat de beskikbere stekproef wurdt de meast plausibele. Mei oare wurden, wy moatte selektearje parameters dêr't de stekproef sil wêze meast plausibel. Yn ús gefal is de selektearre parameter de kâns op werombeteling fan liening , dy't op syn beurt ôfhinklik is fan ûnbekende koeffizienten . Sa moatte wy sa'n vector fan gewichten fine , wêrby't de kâns fan 'e stekproef maksimaal wêze sil.
5. Wy witte wat te maksimalisearjen Sample wierskynlikheidsfunksjes kin brûkt wurde maksimale kâns metoade. En wy kenne alle lestige trúkjes om mei dizze metoade te wurkjen.
Dit is hoe't it in stap mei meardere stappen blykt te wêzen :)
Tink derom dat wy oan it begjin fan it artikel twa soarten ferliesfunksjes wolle ôfliede Logistyske ferlies ôfhinklik fan hoe't objektklassen wurde oanwiisd. It barde sa dat yn klassifikaasjeproblemen mei twa klassen de klassen wurde oantsjutten as и of . Ofhinklik fan 'e notaasje sil de útfier in oerienkommende ferliesfunksje hawwe.
Case 1. Klassifikaasje fan objekten yn и
Earder, by it fêststellen fan de kâns op in stekproef, wêryn de kâns op werombetelje fan skuld troch de liener waard berekkene op basis fan faktoaren en opjûne koeffizienten , ha wy de formule tapast:
Yn feite is de betsjutting logistyske antwurdfunksjes foar in opjûne vector fan gewichten
Dan hinderet neat ús om de foarbyldfunksje as folgjend te skriuwen:
It bart dat it soms lestich is foar guon begjinnende analisten om fuortendaliks te begripen hoe't dizze funksje wurket. Litte wy nei 4 koarte foarbylden sjen dy't alles dúdlik meitsje:
1. as (dat wol sizze, neffens de training sample, it objekt heart ta klasse +1), en ús algoritme bepaalt de kâns op it klassifisearjen fan in objekt yn in klasse lyk oan 0.9, dan sil dit stikje sample-wierskynlikens as folget wurde berekkene:
2. as en , dan sil de berekkening sa wêze:
3. as en , dan sil de berekkening sa wêze:
4. as en , dan sil de berekkening sa wêze:
It is fanselssprekkend dat de kânsfunksje maksimalisearre wurdt yn gefallen 1 en 3 as yn it algemien gefal - mei korrekt riede wearden fan 'e kânsen fan it tawizen fan in objekt oan in klasse .
Fanwegen it feit dat by it fêststellen fan de kâns op it tawizen fan in objekt oan in klasse Wy witte allinich de koeffizienten net , dan sille wy se sykje. Lykas hjirboppe neamd, is dit in optimisaasjeprobleem wêryn wy earst de derivative fan 'e wierskynlikheidsfunksje moatte fine mei respekt foar de fektor fan gewichten . Dochs is it earst sinfol om de taak foar ússels te ferienfâldigjen: wy sille sykje nei de derivative fan 'e logaritme kâns funksjes.
Wêrom nei logaritme, yn logistyk flater funksjes, wy feroare it teken fan op . Alles is ienfâldich, om't yn problemen fan it beoardieljen fan de kwaliteit fan in model gewoanlik is om de wearde fan in funksje te minimalisearjen, fermannichfâldigje wy de rjochterkant fan 'e útdrukking mei en dêrom, ynstee fan maksimalisearjen, no minimalisearje wy de funksje.
Eins, no, foar jo eagen, is de ferliesfunksje pynlik ôflaat - Logistyske ferlies foar in trainingsset mei twa klassen: и .
No, om de koeffizienten te finen, moatte wy gewoan de derivative fine logistyk flater funksjes en dan, mei help fan numerike optimisaasjemetoaden, lykas gradient ôfstamming of stochastyske gradient ôfstamming, selektearje de meast optimale koeffizienten . Mar, sjoen it grutte folume fan it artikel, wurdt it foarsteld om de differinsjaasje op jo eigen út te fieren, of miskien sil dit in ûnderwerp wêze foar it folgjende artikel mei in protte rekkenjen sûnder sokke detaillearre foarbylden.
Case 2. Klassifikaasje fan objekten yn и
De oanpak hjir sil itselde wêze as by klassen и , mar it paad sels nei de útfier fan it ferlies funksje Logistyske ferlies, sil mear sierlik wêze. Litte wy begjinne. Foar de kânsfunksje sille wy de operator brûke "as ... dan ..."... Dat is, as It objekt heart ta de klasse , dan brûke wy de kâns om de kâns fan 'e stekproef te berekkenjen , as it objekt heart ta de klasse , dan ferfange wy yn 'e kâns . Dit is hoe't de kânsfunksje derút sjocht:
Lit ús beskriuwe op ús fingers hoe't it wurket. Litte wy 4 gefallen beskôgje:
1. as и , dan sil de sampling kâns "gean"
2. as и , dan sil de sampling kâns "gean"
3. as и , dan sil de sampling kâns "gean"
4. as и , dan sil de sampling kâns "gean"
It is fanselssprekkend dat yn gefallen 1 en 3, doe't de kânsen goed waarden bepaald troch it algoritme, kâns funksje sil wurde maksimalisearre, dat is, dit is krekt wat wy woenen te krijen. Dizze oanpak is lykwols frijwat omslachtig en dan sille wy in kompakter notaasje beskôgje. Mar earst litte wy de kânsfunksje logaritme mei in feroaring fan teken, om't wy it no sille minimalisearje.
Litte wy ynstee ferfange útdrukking :
Litte wy de juste term ferienfâldigje ûnder de logaritme mei ienfâldige rekenkundige techniken en krije:
No is it tiid om de operator kwyt te reitsjen "as ... dan ...". Tink derom dat wannear in foarwerp heart by de klasse , dan yn 'e útdrukking ûnder de logaritme, yn 'e neamer, opheven ta de macht , as it objekt heart ta de klasse , dan $e$ wurdt ferhege ta de macht . Dêrom kin de notaasje foar de graad wurde ferienfâldige troch beide gefallen te kombinearjen yn ien: . Dan logistyske flater funksje sil de foarm oannimme:
Yn oerienstimming mei de regels fan logaritme draaie wy de fraksje om en sette it teken "" (minus) foar de logaritme krije wy:
Hjir is de ferliesfunksje logistyk ferlies, dat wurdt brûkt yn de training set mei objekten tawiisd oan klassen: и .
No, op dit punt nim ik ôfskie en wy slute it artikel.
Auxiliary materialen
1. Literatuer
1) Applied regression analyze / N. Draper, G. Smith - 2e edysje. – M.: Finânsjes en Statistyk, 1986 (oersetting út it Ingelsk)
2) Kâns teory en wiskundige statistyk / V.E. Gmurman - 9e ed. - M.: Hegerskoalle, 2003
3) Wierskynlikens teory / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007
4) Business analytics: fan gegevens nei kennis / Paklin N. B., Oreshkov V. I. - 2e ed. - Sint Petersburg: Peter, 2013
5) Data Science Data science from scratch / Joel Gras - Sint Petersburg: BHV Petersburg, 2017
6) Praktyske statistiken foar spesjalisten fan Data Science / P. Bruce, E. Bruce - Sint-Petersburch: BHV Petersburg, 2018
2. Lêzingen, kursussen (fideo)
1)
2)
3)
4)
5)
3. Ynternet boarnen
1)
2)
4)