RĂ©gression logistique Ă  mĂącher



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:

  1. Répétons la relation simple entre deux variables
  2. 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
  3. Nous réalisons les transformations et dérivons la fonction de réponse logistique
  4. 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
  5. 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 graphique
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. 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: 120.000-3 $ * 3.000-5.000 = 106.000 $ . 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:

  1. 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.
  2. 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.
  3. 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 Ă  0,5 $ .

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 Ă  0,8 $ , 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,8

Ainsi, 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,8

Fé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
 #   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 


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,9801

La 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,0001

La pénalité lors de l'utilisation de Perte logistique est:
Pertedejournal=loge(1+e−4.595...) environ0,01

Cet 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.9

2. yi=+1 , σ(→wTX))=0.1 , :

0.11⋅(1−0.1)(1−1)=0.11⋅0.90=0.1

3. yi=0 , σ(→wTX))=0.1 , :

0.10⋅(1−0.1)(1−0)=0.10⋅0.91=0.9

4. 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.9

2. yi=+1 et σ(→wT→xi)=0.1 , «» 0.1

3. yi=−1 et σ(→wT→xi)=0.1 , «» 1−0.1=0.9

4. 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 Kashnitsky

4) 4, ( 47 )

5) ,

3. -


1)

2)

3)

4)

5)

6)

7)

8) e ?

9)

Source: https://habr.com/ru/post/fr485872/


All Articles