
Dans cet article, nous analyserons les calculs théoriques de conversion de
la fonction de régression linéaire en fonction de transformation logarithmique inverse (en d'autres termes, la fonction de réponse logistique) . Ensuite, en utilisant l'arsenal de
la méthode du maximum de vraisemblance , conformément au modÚle de régression logistique, nous dérivons la fonction
de perte Perte logistique , ou en d'autres termes, nous déterminons la fonction par laquelle les paramÚtres du vecteur de poids sont sélectionnés dans le modÚle de régression logistique
vecw .
Le plan de l'article:
- Répétons la relation simple entre deux variables
- Nous identifions le besoin de convertir la fonction de rĂ©gression linĂ©aire f(w,xi)= vecwT vecxi Ă la fonction de rĂ©ponse logistique sigma( vecwT vecxi)= frac11+eâ vecwT vecxi
- Nous réalisons les transformations et dérivons la fonction de réponse logistique
- Essayons de comprendre pourquoi la méthode des moindres carrés est mauvaise lors du choix des paramÚtres vecw Caractéristiques de perte logistique
- Nous utilisons la méthode du maximum de vraisemblance pour déterminer la fonction de sélection des paramÚtres vecw :
5.1. Cas 1: fonction de perte logistique pour les objets avec la désignation de classe 0 et 1 :
Llog(X, vecy, vecw)= sum limitsni=1(âyi mkern2muloge mkern5mu sigma( vecwT vecxi)â(1âyi) mkern2muloge mkern5mu(1â sigma( vecwT vecxi))) rightarrowmin
5.2. Cas 2: Fonction de perte logistique pour les objets avec les désignations de classe -1 et +1 :
Llog(X, vecy, vecw)= sum limitsni=1 mkern2muloge mkern5mu(1+eâyi vecwT vecxi) rightarrowmin
L'article est rempli d'exemples simples dans lesquels tous les calculs sont faciles Ă faire verbalement ou sur papier, dans certains cas, une calculatrice peut ĂȘtre nĂ©cessaire. Alors prĂ©parez-vous :)
Cet article est plus destiné aux spécialistes des données ayant un niveau initial de connaissances dans les bases de l'apprentissage automatique.
L'article fournira également du code pour dessiner des graphiques et des calculs. Tout le code est écrit en
python 2.7 . Je vais expliquer à l'avance la «nouveauté» de la version utilisée - c'est l'une des conditions pour suivre un cours bien connu de
Yandex sur la plate-forme en ligne non moins bien connue pour l'enseignement en ligne
Coursera , et, comme vous pouvez le supposer, le matériel a été préparé sur la base de ce cours.
01. Ligne droite
Il est tout Ă fait raisonnable de se poser la question - oĂč est la relation directe et la rĂ©gression logistique?
Tout est simple! La régression logistique est l'un des modÚles qui appartiennent au classificateur linéaire. En termes simples, l'objectif d'un classificateur linéaire est de prédire les valeurs cibles
y à partir de variables (régresseurs)
X . On pense que la relation entre les signes
X et valeurs cibles
y linĂ©aire. Par consĂ©quent, le nom du classificateur lui-mĂȘme est linĂ©aire. GĂ©nĂ©ralisĂ© trĂšs grossiĂšrement, le modĂšle de rĂ©gression logistique est basĂ© sur l'hypothĂšse qu'il existe une relation linĂ©aire entre les caractĂ©ristiques
X et valeurs cibles
y . Le voici - une connexion.
Le studio est le premier exemple, Ă juste titre, de la dĂ©pendance directe des quantitĂ©s Ă©tudiĂ©es. Dans le processus de prĂ©paration de l'article, je suis tombĂ© sur un exemple qui a dĂ©jĂ
eu mal à la gorge - la dépendance de l'intensité du courant sur la tension
(«Analyse de régression appliquée», N. Draper, G. Smith) . Ici, nous le considérerons aussi.
Conformément à la
loi d'
Ohm:I=U/R oĂč
I - force actuelle
U - tension
R - résistance.
Si nous ne connaissions pas la
loi d'Ohm , nous pourrions trouver la dépendance empiriquement en changeant
U et mesurer
I tout en soutenant
R fixe. Ensuite, nous verrions que le graphique de dépendance
I de
U donne une ligne plus ou moins droite passant par l'origine. Nous avons dit «plus ou moins», car, bien que la dépendance soit en fait exacte, nos mesures peuvent contenir de petites erreurs, et donc les points sur le graphique peuvent ne pas tomber exactement sur la ligne, mais seront dispersés au hasard autour d'elle.
Graphique 1 «Dépendance
I de
U "

Code de rendu graphiqueimport 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. Le besoin de transformations de l'équation de régression linéaire
Prenons un autre exemple. Imaginez que nous travaillons dans une banque et que nous soyons confrontĂ©s Ă la tĂąche de dĂ©terminer la probabilitĂ© de remboursement d'un prĂȘt par un emprunteur, en fonction de certains facteurs. Pour simplifier la tĂąche, nous considĂ©rons seulement deux facteurs: le salaire mensuel de l'emprunteur et le paiement mensuel pour le remboursement du prĂȘt.
La tĂąche est trĂšs conditionnelle, mais avec cet exemple, nous pouvons comprendre pourquoi il ne suffit pas d'utiliser
la fonction de régression linéaire pour la résoudre, et nous découvrirons également quelles transformations avec la fonction que vous devez effectuer.
Nous revenons par exemple. Il est entendu que plus le salaire est Ă©levĂ©, plus l'emprunteur pourra diriger mensuellement pour rembourser le prĂȘt. Dans le mĂȘme temps, pour une certaine fourchette de salaires, cette dĂ©pendance sera assez linĂ©aire pour elle-mĂȘme. Par exemple, prenez une fourchette de salaire de 60 000 Ă 200 000 et supposez que dans la fourchette de salaires indiquĂ©e, la dĂ©pendance de la taille du paiement mensuel sur le montant du salaire est linĂ©aire. Supposons que, pour la fourchette de salaires spĂ©cifiĂ©e, il ait Ă©tĂ© rĂ©vĂ©lĂ© que le rapport du salaire au paiement ne peut pas tomber en dessous de 3 et que l'emprunteur devrait encore avoir 5.000 en rĂ©serve. Et seulement dans ce cas, nous supposerons que l'emprunteur remboursera le prĂȘt Ă la banque. Ensuite, l'Ă©quation de rĂ©gression linĂ©aire prend la forme:
f(w,xi)=w0+w1xi1+w2xi2,oĂč
w0=â5,000 ,
w1=1 ,
w2=â3 ,
xi1 -
salaire i emprunteur
xi2 -
paiement du prĂȘt i emprunteur.
Substitution du salaire et du paiement du prĂȘt par des paramĂštres fixes dans l'Ă©quation
vecw Vous pouvez dĂ©cider d'accorder ou de refuser un prĂȘt.
Pour l'avenir, nous notons que, pour des paramÚtres donnés
vecw la fonction de régression linéaire utilisée dans
la fonction de rĂ©ponse logistique produira des valeurs importantes qui rendent difficile le calcul des probabilitĂ©s de remboursement du prĂȘt. Par consĂ©quent, il est proposĂ© de rĂ©duire nos coefficients, disons, 25 000 fois. A partir de cette conversion en ratios, la dĂ©cision d'octroyer un prĂȘt ne changera pas. Souvenons-nous de ce moment pour l'avenir, et maintenant, pour que ce soit encore plus clair, nous allons examiner la situation avec trois emprunteurs potentiels.
Tableau 1 "Emprunteurs potentiels"

Code de génération de la table 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']]
Selon le tableau, Vasya, avec un salaire de 120.000, veut obtenir un tel prĂȘt afin de le rembourser Ă 3.000 mensuellement. Nous avons dĂ©terminĂ© que pour approuver le prĂȘt, le salaire de Vasya devait ĂȘtre trois fois le montant du paiement, et qu'il resterait alors 5.000P. Vasya satisfait Ă cette exigence:

. Il reste mĂȘme 106 000P. MalgrĂ© le fait que lors du calcul
f(w,xi) nous avons réduit les chances
vecw 25 000 fois, le rĂ©sultat est le mĂȘme: le prĂȘt peut ĂȘtre approuvĂ©. Fedya recevra Ă©galement un prĂȘt, mais Lesha, malgrĂ© le fait qu'il en reçoive le plus, devra restreindre son appĂ©tit.
Dessinons un calendrier pour ce cas.
Graphique 2 «Classification des emprunteurs»

Code de traçage 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()
Ainsi, notre ligne, construite conformément à la fonction
f(w,xi)=w0+w1xi1+w2xi2 , sĂ©pare les «mauvais» emprunteurs des «bons». Les emprunteurs dont les dĂ©sirs ne coĂŻncident pas avec les opportunitĂ©s sont au dessus de la ligne directe (Lesha), ceux qui sont en mesure de rembourser le prĂȘt selon les paramĂštres de notre modĂšle sont sous la ligne directe (Vasya et Fedya). Sinon, nous pouvons dire ceci - notre ligne divise les emprunteurs en deux classes. Nous les dĂ©signons comme suit: Ă la classe
+1 classer les emprunteurs susceptibles de rembourser le prĂȘt Ă la classe
â1 ou
0 nous assignerons les emprunteurs qui ne seront probablement pas en mesure de rembourser le prĂȘt.
Résumez les conclusions de cet exemple simple. Prenez un point
M(x1,x2) et, en remplaçant les coordonnées du point dans l'équation correspondante de la ligne
f(w,xi)=w0+w1xi1+w2xi2 , envisagez trois options:
- Si le point est sous la ligne, et nous l'assignons Ă la classe +1 , puis la valeur de la fonction f(w,xi)=w0+w1xi1+w2xi2 sera positif de 0 avant + infty . Nous pouvons donc supposer que la probabilitĂ© de remboursement du prĂȘt est infĂ©rieure Ă (0,5,1] . Plus la valeur de la fonction est Ă©levĂ©e, plus la probabilitĂ© est Ă©levĂ©e.
- Si le point est au-dessus de la ligne et que nous le rapportons Ă la classe â1 ou 0 , alors la valeur de la fonction sera nĂ©gative de 0 avant â infty . Ensuite, nous supposerons que la probabilitĂ© de remboursement de la dette est infĂ©rieure Ă [0,0,5) et, plus la valeur de la fonction modulo est Ă©levĂ©e, plus notre confiance est Ă©levĂ©e.
- Le point est sur une ligne droite, Ă la frontiĂšre entre deux classes. Dans ce cas, la valeur de la fonction f(w,xi)=w0+w1xi1+w2xi2 sera Ă©gal 0 et la probabilitĂ© de remboursement du prĂȘt est Ă©gale Ă
.
Maintenant, imaginez que nous n'avons pas deux facteurs, mais des dizaines, des emprunteurs non pas trois, mais des milliers. Ensuite, au lieu d'une ligne droite, nous aurons un plan Ă
m dimensions et des coefficients
w nous ne serons pas prĂ©levĂ©s sur le plafond, mais retirĂ©s conformĂ©ment Ă toutes les rĂšgles, mais sur la base des donnĂ©es accumulĂ©es sur les emprunteurs qui ont remboursĂ© ou non le prĂȘt. Et vraiment, attention, nous sĂ©lectionnons maintenant des emprunteurs avec des ratios dĂ©jĂ connus
w . En fait, la tùche du modÚle de régression logistique est précisément de déterminer les paramÚtres
w Ă laquelle la valeur de la fonction
de perte Perte logistique tendra au minimum. Mais comment le vecteur est calculé
vecw , nous découvrons toujours dans la 5Úme section de l'article. En attendant, nous retournons à la terre promise - à notre banquier et à ses trois clients.
Merci Ă la fonction
f(w,xi)=w0+w1xi1+w2xi2 nous savons qui peut bĂ©nĂ©ficier d'un prĂȘt et qui doit ĂȘtre refusĂ©. Mais vous ne pouvez pas vous adresser au directeur avec de telles informations, car il voulait obtenir de nous la probabilitĂ© de remboursement du prĂȘt de chaque emprunteur. Que faire La rĂ©ponse est simple - nous devons en quelque sorte transformer la fonction
f(w,xi)=w0+w1xi1+w2xi2 dont les valeurs se situent dans la plage
(â infty,+ infty) sur une fonction dont les valeurs se situent dans la plage
[0,1] . Et une telle fonction existe, elle s'appelle la
fonction de réponse logistique ou conversion en logit inverse . Rencontrez:
sigma( vecwT vecxi)= frac11+eâ vecwT vecxi
Voyons les étapes pour obtenir
la fonction de réponse logistique . Notez que nous allons avancer dans la direction opposée, c'est-à -dire nous supposons que nous connaissons la valeur de la probabilité, qui se situe dans la plage de
0 avant
1 puis nous allons "tourner" cette valeur sur toute la plage de nombres de
â infty avant
+ infty .
03. Sortie de la fonction de réponse logistique
Ătape 1. TransfĂ©rez les valeurs de probabilitĂ© dans la plage [0,+ infty)
Au moment de la transformation des fonctions
f(w,xi)=w0+w1xi1+w2xi2 Ă
la fonction de réponse logistique sigma( vecwT vecxi)= frac11+e vecwT vecxi nous laisserons notre analyste de crédit tranquille, et passerons plutÎt par les bookmakers. Non, bien sûr, nous ne ferons pas de paris, tout ce qui nous intéresse, c'est le sens de l'expression, par exemple, une chance de 4 pour 1. Les cotes familiÚres à tous les joueurs de paris sont le rapport des «succÚs» aux «échecs». En termes de probabilités, les chances sont la probabilité qu'un événement se produise divisé par la probabilité que l'événement ne se produise pas. Nous écrivons la formule pour la chance d'un événement
(cote+) :
odds+= fracp+1âp+
oĂč
p+ - probabilité d'occurrence d'un événement,
(1âp+) - probabilitĂ© de NON apparition d'un Ă©vĂ©nement
Par exemple, si la probabilitĂ© qu'un cheval jeune, fort et fougueux, surnommĂ© "Veterok" batte lors des courses, une vieille femme flasque surnommĂ©e "Matilda" est Ă©gale Ă

, alors les chances de succĂšs de Veterka seront
4 Ă
1(0,8/(1â0,8)) et vice versa, connaissant les chances, il ne nous sera pas difficile de calculer la probabilitĂ©
p+ :
fracp+1âp+=4 mkern15mu Longrightarrow mkern15mup+=4(1âp+) mkern15mu Longrightarrow mkern15mu5p+=4 mkern15mu Longrightarrow mkern15mup+=0,8Ainsi, nous avons appris à «traduire» la probabilitĂ© en cotes qui prennent des valeurs de
0 avant
+ infty . Faisons un pas de plus et apprenons à «traduire» la probabilité sur la droite entiÚre de
â infty avant
+ infty .
Ătape 2. Nous traduisons les valeurs de probabilitĂ© dans la plage (â infty,+ infty)
Cette étape est trÚs simple - nous prologue les cotes en fonction du nombre d'Euler
e et obtenez:
f(w,xi)= vecwT vecx=ln(cote+)
Maintenant, nous savons que si
p+=0,8 puis calculez la valeur
f(w,xi) ce sera trĂšs simple et, en plus, ça devrait ĂȘtre positif:
f(w,xi)=ln(cote+)=ln(0,8/0,2)=ln(4) environ+1,38629 . Il en est ainsi.
Par curiosité, nous vérifions que si
p+=0,2 nous nous attendons à voir une valeur négative
f(w,xi) . Nous vérifions:
f(w,xi)=ln(0,2/0,8)=ln(0,25) environâ1,38629 . D'accord.
Maintenant, nous savons comment traduire la valeur de probabilité de
0 avant
1 sur toute la ligne numérique de
â infty avant
+ infty . à l'étape suivante, nous ferons le contraire.
En attendant, on note que conformément aux rÚgles du logarithme, connaßtre la valeur de la fonction
f(w,xi) , vous pouvez calculer les cotes:
odds+=ef(w,xi)=e vecwT vecx
Cette méthode de détermination des chances vous sera utile à l'étape suivante.
Ătape 3. Nous dĂ©rivons une formule pour dĂ©terminer p+
Nous avons donc appris, sachant
p+ trouver des valeurs de fonction
f(w,xi) . Cependant, en fait, nous avons besoin de tout exactement le contraire - connaĂźtre la valeur
f(w,xi) trouver
p+ . Pour ce faire, nous nous tournons vers un concept tel que la fonction inverse des chances, selon lequel:
p+= fracodds+1+odds+
Dans l'article, nous ne dériverons pas la formule ci-dessus, mais vérifions les chiffres de l'exemple ci-dessus. Nous savons qu'avec des cotes de 4 à 1 (
cotes+=4 ), la probabilité qu'un événement se produise est de 0,8 (
p+=0,8 ) Faisons une substitution:
p+= frac41+4=0,8 . Cela coïncide avec nos calculs effectués précédemment. Nous continuons.
Dans la derniÚre étape, nous avons déduit que
odds+=e vecwT vecx , ce qui signifie que vous pouvez effectuer une substitution dans la fonction inverse des cotes. Nous obtenons:
p+= frace vecwT vecx1+e vecwT vecx
Divisez le numérateur et le dénominateur par
e vecwT vecx puis:
p+= frac11+eâ vecwT vecx= sigma( vecwT vecx)
Pour chaque pompier, afin de nous assurer que nous nâavons commis aucune erreur, nous ferons encore une petite vĂ©rification. Ă l'Ă©tape 2, nous sommes pour
p+=0,8 déterminé que
f(w,xi) environ+1,38629 . Ensuite, en remplaçant la valeur
f(w,xi) dans la fonction de réponse logistique, nous nous attendons à obtenir
p+=0,8 . Remplacez et obtenez:
p+= frac11+eâ1.38629=0,8FĂ©licitations, cher lecteur, nous venons de dĂ©velopper et de tester la fonction de rĂ©ponse logistique. Regardons le graphe de fonction.
Graphique 3 «Fonction de réponse logistique»

Code de traçage 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()
Dans la littérature, vous pouvez également trouver le nom de cette fonction en tant que
fonction sigmoïde . Le graphique montre clairement que le principal changement dans la probabilité d'appartenance d'un objet à une classe se produit dans une plage relativement petite
f(w,xi) quelque part
â4 avant
+4 .
Je propose de revenir Ă notre analyste crĂ©dit et de l'aider Ă calculer la probabilitĂ© de remboursement des prĂȘts, sinon il court le risque de se retrouver sans bonus :)
Tableau 2 "Emprunteurs potentiels"

Code de génération de la table 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']]
Nous avons donc dĂ©terminĂ© la probabilitĂ© de remboursement du prĂȘt. Dans l'ensemble, cela semble ĂȘtre vrai.
En effet, la probabilitĂ© que Vasya avec un salaire de 120 000 puisse donner 3.000 mensuellement Ă la banque est proche de 100%. Soit dit en passant, nous devons comprendre que la banque peut Ă©galement accorder un prĂȘt Ă Lesha si la politique de la banque prĂ©voit, par exemple, de prĂȘter aux clients avec une probabilitĂ© de remboursement du prĂȘt supĂ©rieure Ă , disons, 0,3. Dans ce cas, la banque constituera une rĂ©serve plus importante pour d'Ă©ventuelles pertes.
Il convient également de noter que le rapport du salaire au paiement d'au moins 3 et avec une marge de 5.000 a été prélevé sur le plafond. Par conséquent, nous n'avons pas pu utiliser le vecteur de poids dans sa forme d'origine
vecw=(â5000,1,â3) . Nous devions rĂ©duire considĂ©rablement les coefficients, et dans ce cas, nous avons divisĂ© chaque coefficient par 25 000, c'est-Ă -dire que nous avons ajustĂ© le rĂ©sultat. Mais cela a Ă©tĂ© fait exprĂšs pour simplifier la comprĂ©hension du matĂ©riel au stade initial. Dans la vie, il ne faut pas inventer et ajuster les coefficients, mais les trouver. Juste dans les prochaines sections de l'article, nous dĂ©riverons les Ă©quations avec lesquelles les paramĂštres sont sĂ©lectionnĂ©s
vecw .
04. Méthode des moindres carrés pour déterminer le vecteur de poids vecw dans la fonction de réponse logistique
Nous connaissons déjà une telle méthode pour sélectionner un vecteur de poids
vecw comme
la mĂ©thode des moindres carrĂ©s (OLS) et, en fait, pourquoi ne l'utilisons-nous pas alors dans les problĂšmes de classification binaire? En effet, rien n'empĂȘche l'utilisation des
MNC , seule cette méthode dans les problÚmes de classification donne des résultats moins précis que la
Perte Logistique . Il y a une justification théorique à cela. Commençons par regarder un exemple simple.
Supposons que nos modĂšles (utilisant
MSE et
Logistic Loss ) aient déjà commencé la sélection du vecteur de poids
vecw et nous avons arrĂȘtĂ© le calcul Ă un moment donnĂ©. Peu importe, au milieu, Ă la fin ou au dĂ©but, l'essentiel est que nous ayons dĂ©jĂ quelques valeurs du vecteur de poids et supposons, Ă cette Ă©tape, le vecteur de poids
vecw pour les deux modÚles n'ont pas de différences. Ensuite, nous prenons les poids obtenus et les substituons dans
la fonction de réponse logistique (
frac11+eâ vecwT vecx ) pour un objet appartenant Ă la classe
+1 . Nous Ă©tudierons deux cas oĂč, conformĂ©ment au vecteur de poids sĂ©lectionnĂ©, notre modĂšle se trompe grandement et vice versa - le modĂšle est fortement confiant que l'objet appartient Ă la classe
+1 . Voyons quelles amendes seront "émises" lors de l'utilisation de
MNC et
de perte logistique .
Code de calcul des amendes en fonction de la fonction de perte utilisée Le cas avec une erreur brute - le modÚle classe l'objet
+1 avec une probabilité de 0,01
La pénalité lors de l'utilisation d'
OLS est:
MSE=(yâp+)=(1â0,01)2=0,9801La pĂ©nalitĂ© lors de l'utilisation
de Perte logistique est:
Pertedejournal=loge(1+eâyf(w,x))=loge(1+eâ1(â4.595...)) environ4,605ââCas avec une grande certitude - le modĂšle classe l'objet
+1 avec une probabilité de 0,99
La pénalité lors de l'utilisation d'
OLS est:
MSE=(1â0,99)2=0,0001La pĂ©nalitĂ© lors de l'utilisation
de Perte logistique est:
Pertedejournal=loge(1+eâ4.595...) environ0,01Cet exemple illustre bien qu'avec une erreur brute, la fonction de perte de
perte de journal inflige une amende beaucoup plus importante au modĂšle que
MSE . Voyons maintenant quelles sont les conditions préalables théoriques pour utiliser la fonction de perte de
perte de journal dans les problĂšmes de classification.
05. Méthode de crédibilité maximale et régression logistique
Comme promis au début, l'article regorge d'exemples simples. Dans le studio, un autre exemple et d'anciens invités sont les emprunteurs de la banque: Vasya, Fedya et Lesha.
Pour chaque pompier, avant de dĂ©velopper un exemple, permettez-moi de vous rappeler que dans la vie, nous avons affaire Ă un Ă©chantillon d'entraĂźnement de milliers ou de millions d'objets avec des dizaines ou des centaines de signes. Cependant, ici, les chiffres sont pris de sorte qu'ils s'intĂšgrent facilement dans la tĂȘte d'un dataintest novice.
Nous revenons par exemple. Imaginez que le directeur de la banque ait dĂ©cidĂ© d'accorder un prĂȘt Ă tous ceux qui en avaient besoin, malgrĂ© le fait que l'algorithme ait suggĂ©rĂ© de ne pas le donner Ă Lesha. Et donc assez de temps s'est Ă©coulĂ© et nous avons rĂ©alisĂ© lequel des trois hĂ©ros a remboursĂ© le prĂȘt et qui ne l'a pas fait. Ă quoi s'attendre: Vasya et Fedya ont remboursĂ© le prĂȘt, mais Alex ne l'a pas fait. Imaginons maintenant que ce rĂ©sultat soit un nouvel Ă©chantillon de formation pour nous et, en mĂȘme temps, toutes les donnĂ©es sur les facteurs affectant la probabilitĂ© de remboursement du prĂȘt (salaire de l'emprunteur, montant du paiement mensuel) semblent avoir disparu. Ensuite, intuitivement, nous pouvons supposer qu'un emprunteur sur trois ne rembourse pas un prĂȘt Ă la banque, ou en d'autres termes, la probabilitĂ© qu'un prĂȘt soit remboursĂ© par l'emprunteur suivant
p= frac23 . Il existe des preuves théoriques de cette hypothÚse intuitive et elle est basée sur la
méthode du
maximum de vraisemblance , souvent appelée dans la littérature
le principe du maximum de vraisemblance .
Tout d'abord, familiarisez-vous avec l'appareil conceptuel.
La probabilité d'un
Ă©chantillon est la probabilitĂ© d'obtenir exactement un tel Ă©chantillon, d'obtenir prĂ©cisĂ©ment ces observations / rĂ©sultats, c'est-Ă -dire le produit des probabilitĂ©s d'obtenir chacun des rĂ©sultats de l'Ă©chantillon (par exemple, le prĂȘt de Vasya, Feday et Lesha en mĂȘme temps a Ă©tĂ© remboursĂ© ou non remboursĂ©).
La fonction de vraisemblance associe la vraisemblance d'un échantillon aux valeurs des paramÚtres de distribution.
Dans notre cas, l'échantillon d'apprentissage est un schéma de Bernoulli généralisé dans lequel une variable aléatoire ne prend que deux valeurs:
1 ou
0 . Par consĂ©quent, la probabilitĂ© de l'Ă©chantillon peut ĂȘtre Ă©crite en fonction de la probabilitĂ© du paramĂštre
p comme suit:
P( mkern5mu vecy mkern5mu| mkern5mup)= prod limits3i=1pyi(1âp)(1âyi) mkern5mu= mkern5mup1(1âp)1â1 centerdotp1(1âp)1â1 centerdotp0(1âp)1â0 mkern5mu== mkern5mup centerdotp centerdot(1âp) mkern5mu= mkern5mup2(1âp)L'enregistrement ci-dessus peut ĂȘtre interprĂ©tĂ© comme suit. La probabilitĂ© conjointe que Vasya et Fedya remboursent le prĂȘt est Ă©gale Ă
p centerdotp=p2 , la probabilitĂ© qu'Alex ne rembourse PAS le prĂȘt est
1âp (puisqu'il ne s'agissait PAS du remboursement du prĂȘt), la probabilitĂ© conjointe des trois Ă©vĂ©nements est donc
p2(1âp) .
La méthode du
maximum de vraisemblance est une méthode d'estimation d'un paramÚtre inconnu en maximisant
la fonction de vraisemblance .
p ,
P(ây|p)=p2(1âp) .
â , ? , â , , . , , . , , , , â , . , , .
, , . , . , â
. ? ,
P(ây|p) , ,
p ,
P(ây|p) . ( ), â .
, , , .
:
logP(ây|p)=logp2(1âp)=2logp+log(1âp)p :
âlogP(ây|p)âp=ââp(2logp+log(1âp))=2pâ11âp, â :
2pâ11âp=0âč2p=11âpâč2(1âp)=pâčp=23,
p=23 .
, ? , , . - ,
23 , : . , . ,
23 .
:
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)
p=23 :P(ây|p)=p2(1âp)=232(1â23)â0.148âx :P(ây|p)=3âi=1pyi(1âp)(1âyi)=p11(1âp1)1â1â
p12(1âp2)1â1â
p03(1âp3)1â0==p1â
p2â
(1âp3)=0.99â
0.73â
(1â0.45)â0.397, . ? , . , , , 3- , .
,
, - , , , , 0.99, 0.99 0.01 . ,
1 , , -, , , -, . , ( ) , . , . ? , . 2.5% , â 27,8%. 2 « » , , , . , ,
f(w,x)=w0+w1x1+w2x2 : 4.24 1.0 . , , , . , .
w , , ,
w , ,
w , â :)
.
âw , .
,
w :
1. , ( ) , â .
f(w,x)=âwTX , ()
+1 et
â1 ou
0 (, ).
f(w,x)=w0+w1x1+w2x2 .
2.
- p+=11+eââwTâx=Ï(âwTâx) +1 .
3.
, ,
p ( ) 1
(1âp) â 0.
4. ,
, . , , . â
p ,
w .
âw , .
5. ,
. .
:)
,
Logistic Loss . , ,
+1 et
0 ou
â1 . , .
1. +1 et 0
, ,
w , :
P(ây|p)=3âi=1pyi(1âp)(1âyi)En fait
pi â
p+=11+eââwTâx=Ï(âwTâx) âw:
P(ây|Ï(âwTX))=nâi=1Ï(âwTâxi)yi(1âÏ(âwTâxi)(1âyi)âmax
, , , . 4 , :
1. yi=+1 (.. +1),
Ï(âwTX)) +1 0.9, :
0.91â
(1â0.9)(1â1)=0.91â
0.10=0.92. yi=+1 ,
Ï(âwTX))=0.1 , :
0.11â
(1â0.1)(1â1)=0.11â
0.90=0.13. yi=0 ,
Ï(âwTX))=0.1 , :
0.10â
(1â0.1)(1â0)=0.10â
0.91=0.94. yi=0 ,
Ï(âwTX))=0.9 , :
0.90â
(1â0.9)(1â0)=0.90â
0.11=0.1, 1 3 â
+1 .
,
+1 w , . , ,
w . :
.
Llog(X,ây,âw)=nâi=1(âyilogeÏ(âwTâxi)â(1âyi)loge(1âÏ(âwTâxi)))âmin
,
,
+ â . , ,
â , .
, , â
Logistic Loss :
+1 et
0 .
, ,
, , ,
w . , , , , , .
2. +1 et â1
,
1 et
0 ,
Logistic Loss , . .
«..., ...» . ,
i -
+1 ,
p ,
â1 ,
(1âp) . :
P(ây|Ï(âwTX))=nâi=1Ï(âwTâxi)[yi=+1](1âÏ(âwTâxi)[yi=â1])âmax
. 4 :
1. yi=+1 et
Ï(âwTâxi)=0.9 , «»
0.92. yi=+1 et
Ï(âwTâxi)=0.1 , «»
0.13. yi=â1 et
Ï(âwTâxi)=0.1 , «»
1â0.1=0.94. yi=â1 et
Ï(âwTâxi)=0.9 , «»
1â0.9=0.1, 1 3 , ,
, . , . , , .
Llog(X,ây,âw)=nâi=1(â[yi=+1]logeÏ(âwTâxi)â[yi=â1]loge(1âÏ(âwTâxi)))âmin
Ï(âwTâxi) 11+eââwTâxi :
Llog(X,ây,âw)=nâi=1(â[yi=+1]loge(11+eââwTâxi)â[yi=â1]loge(1â11+eââwTâxi))âmin
, :
Llog(X,ây,âw)=nâi=1(â[yi=+1]loge(11+eââwTâxi)â[yi=â1]loge(11+eâwTâxi))âmin
«..., ...» . ,
yi +1 , , ,
e ââwTâxi ,
â1 , $e$
+âwTâxi . â :
âyiâwTâxi .
:
Llog(X,ây,âw)=nâi=1âloge(11+eâyiâwTâxi)âmin
, "
â " () , :
Llog(X,ây,âw)=nâi=1loge(1+eâyiâwTâxi)âmin
logistic Loss , :
+1 et
â1 .
, .
â â « »1.
1) / . , . â 2- . â .: , 1986 ( )
2) / .. â 9- . â .: , 2003
3) / .. â : , 2007
4) -: / . ., . . â 2- . â -: , 2013
5) Data Science / â -: , 2017
6) Data Science / ., . â -: , 2018
2. , ()
1)
,2)
,3)
. ODS, Yury Kashnitsky4)
4, ( 47 )5)
,3. -
1)
2)
3)
4)
5)
6)
7)
8)
e ?9)