machine learning, statistiques et programmation
TRANSCRIPT
Machine Learning Statistiques etProgrammation
Version 035930
mai 30 2022
Contents
1 Clustering 111 k-means 112 Meacutelange de lois normales 1713 Carte de Kohonen 20
2 Non lineacuteaire 2521 Reacuteseaux de neurones 2522 Classification agrave lrsquoaide des plus proches voisins 7223 Liens entre factorisation de matrices ACP k-means 8124 Un arbre de deacutecision en reacuteseaux de neurones 87
3 Reacutegression lineacuteaire 10731 Reacutegression lineacuteaire 10732 Reacutegression quantile 12133 Reacutegression lineacuteaire par morceaux 12834 Normalisation des coefficients 152
4 Reacutegression logistique 15541 Reacutegression logistique diagramme de Voronoiuml k-Means 15542 Reacutegression logistique par morceaux arbres de deacutecision 18443 Reacuteseaux de neurones 19244 Analyse de survie 195
5 NLP 20151 Compleacutetion 201
6 Meacutetriques 21961 Courbe ROC 21962 Confidence Interval and p-Value 229
7 Algorithmes 24771 Distance drsquoeacutedition 24772 Distance between two graphs 25373 Deacutetection de segments 258
8 Peacutereacutegrinations 26781 Reacutepartir en base drsquoapprentissage et de test 267
i
82 Correacutelations non lineacuteaires 28283 File drsquoattente un petit exemple 30184 Optimisation avec donneacutees aleacuteatoires 30885 Le gradient et le discret 313
9 Galleries 32391 Gallery of examples 32392 Galleries 326
10 API 383101 Machine Learning 383102 Optimisation 384103 Traitement du langage naturel 384104 Source de donneacutees 386105 Graphes 386106 Image 387
11 Index 389
Bibliography 391
ii
CHAPTER 1
Clustering
11 k-means
bull Principe (page 2)ndash Homogeacuteneacuteiteacute des dimensions (page 4)
bull Ameacuteliorations de lrsquoinitialisation (page 5)ndash K-means++ (page 5)ndash K-means|| (page 5)
bull Estimation de probabiliteacutes (page 6)bull Seacutelection du nombre de classes (page 7)
ndash Critegravere de qualiteacute (page 7)ndash Maxima de la fonction densiteacute (page 8)ndash Deacutecroissance du nombre de classes (page 9)
bull Extension des nueacutees dynamiques (page 11)ndash Classes elliptiques (page 11)ndash Rival Penalized Competitive Learning (RPCL) (page 12)ndash RPCL-based local PCA (page 14)ndash Frequency Sensitive Competitive Learning (FSCL) (page 16)
bull k-means norme L1 (page 16)bull Bibliographie (page 17)
Deacutenomination franccedilaise algorithme des centres mobiles
1
Machine Learning Statistiques et Programmation Version 035930
111 Principe
Les centres mobiles ou nueacutees dynamiques sont un algorithme de classification non superviseacutee A partir drsquoun ensemblede points il deacutetermine pour un nombre de classes fixeacute une reacutepartition des points qui minimise un critegravere appeleacute inertieou variance intra-classe
Algorithme A1 centre mobile k-meansOn considegravere un ensemble de points
(Xi)1⩽i⩽P isin(RN)P
A chaque point est associeacutee une classe (ci)1⩽i⩽P isin 1 CP On deacutefinit les barycentres des classes (Gi)1⩽i⩽C isin(
RN)C
InitialisationLrsquoinitialisation consiste agrave choisir pour chaque point une classe aleacuteatoirement dans 1 C On pose t = 0Calcul des barycentres
for k in 1C
Gtk larrminus
sumPi=1 Xi 1cti=k
sumPi=1 1cti=k
Calcul de lrsquoinertie
It larrminussumP
i=1 d2(Xi G
tcti
)t larrminus t+ 1
if t gt 0 et It sim Itminus1
arrecirct de lrsquoalgorithmeAttribution des classes
for in 1P
ct+1i larrminus argmin
kd (Xi G
tk)
ougrave d (Xi Gtk) est la distance entre Xi et Gt
k
Retour agrave lrsquoeacutetape du calcul des barycentres jusqursquoagrave convergence de lrsquoinertie It
Theacuteoregraveme T1 convergence des k-meansQuelque soit lrsquoinitialisation choisie la suite (It)t⩾0 construite par lrsquoalgorithme des k-means (page 2) converge
La deacutemonstration du theacuteoregraveme neacutecessite le lemme suivant
Lemme L1 inertie minimumSoit (X1 XP ) isin
(RN)P P points de RN le minimum de la quantiteacute Q
(Y isin RN
)
Q (Y ) =
Psumi=1
d2 (Xi Y ) (11)
2 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
est atteint pour Y = G =1
P
sumPi=1 Xi le barycentre des points (X1 XP )
Soit (X1 XP ) isin(RN)P P points de RN
Psumi=1
minusminusrarrGXi =
minusrarr0 =rArr
Psumi=1
d2 (Xi Y ) =
Psumi=1
d2 (Xi G) + P d2 (GY )
=rArr argminY isinRN
Psumi=1
d2 (Xi Y ) = G
On peut maintenant deacutemontrer le theacuteoregraveme Lrsquoeacutetape drsquoattribution des classes consiste agrave attribuer agrave chaque point lebarycentre le plus proche On deacutefinit Jt par
J t+1 =
Psumi=1
d2(Xi G
tct+1i
)(12)
On en deacuteduit que
J t+1 =sum
icti =ct+1i
d2(Xi G
tct+1i
)+ J t+1
sumicti=ct+1
i
d2(Xi G
tct+1i
)(13)
J t+1 ⩽sum
icti =ct+1i
d2(Xi G
tcti
)+
sumicti=ct+1
i
d2(Xi G
tcti
)(14)
J t+1 ⩽ It (15)
Le lemme preacuteceacutedent appliqueacute agrave chacune des classes 1 C permet drsquoaffirmer que It+1 ⩽ J t+1 Par conseacutequentla suite (It)t⩾0 est deacutecroissante et minoreacutee par 0 elle est donc convergenteLrsquoalgorithme des centres mobiles cherche agrave attribuer agrave chaque point de lrsquoensemble une classe parmi les C disponiblesLa solution trouveacutee deacutepend de lrsquoinitialisation et nrsquoest pas forceacutement celle qui minimise lrsquoinertie intra-classe lrsquoinertiefinale est un minimum local Neacuteanmoins elle assure que la partition est formeacutee de classes convexes soit c1 et c2deux classes diffeacuterentes on note C1 et C2 les enveloppes convexes des points qui constituent ces deux classes alorso
C1 capo
C2 = empty La figure suivante preacutesente un exemple drsquoutilisation de lrsquoalgorithme des centres mobiles Des pointssont geacuteneacutereacutes aleacuteatoirement dans le plan et reacutepartis en quatre groupes
11 k-means 3
Machine Learning Statistiques et Programmation Version 035930
Crsquoest une application des centres mobiles avec une classification en quatre classes drsquoun ensemble aleacuteatoire de pointsplus dense sur la partie droite du graphe Les quatre classes ainsi formeacutees sont convexes
Homogeacuteneacuteiteacute des dimensions
Les coordonneacutees des points (Xi) isin RN sont geacuteneacuteralement non homogegravenes les ordres de grandeurs de chaquedimension sont diffeacuterents Crsquoest pourquoi il est conseilleacute de centrer et normaliser chaque dimension On note foralli isin 1 middot middot middot P Xi = (Xi1 XiN )
gk = (EX)k =1
P
Psumi=1
Xik
vkk =(E (X minus EX)
2)kk
=(EX2
)kkminus g2k
Les points centreacutes et normaliseacutes sont
foralli isin 1 middot middot middot P X primei =
(xi1 minus g1radic
v11
xiN minus gNradicvNN
)
4 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
Lrsquoalgorithme des centres mobiles est appliqueacute sur lrsquoensemble (X primei)1⩽i⩽P Il est possible ensuite de deacutecorreacuteler les
variables ou drsquoutiliser une distance dite de Malahanobis1 deacutefinie par dM (XY ) = XM Y prime ougrave Y prime deacutesigne la transposeacuteede Y et M est une matrice symeacutetrique deacutefinie positive Dans le cas de variables correacuteleacutees la matrice M = Σminus1 ougraveΣminus1 est la matrice de variance-covariance des variables aleacuteatoires (Xi)i
112 Ameacuteliorations de lrsquoinitialisation
K-means++
Lrsquoarticle [Arthur2007] montre que lrsquoinitialisation aleacuteatoire nrsquoest pas efficace et est sensible aux outliers ou pointsaberrants Lrsquoeacutetape drsquoinitialisation est remplaceacutee par la suivante
Algorithme A2 initialisation k-means++Cette eacutetape drsquoinitialisation viendra remplacer celle deacutefinie dans lrsquoalgorithme k-means (page 2) On considegravere unensemble de points
X = (Xi)1⩽i⩽P isin(RN)P
A chaque point est associeacutee une classe (ci)1⩽i⩽P isin 1 CP
Pour k centres on choisit C1 au hasard dans lrsquoensemble X Pour les suivants 1 k larr 2
2 On choisit aleacuteatoirement Gk isin X avec la probabiliteacute P (x) = Dkminus1(x)2sum
xisinX Dkminus1(x)2
3 k larr k + 1
4 On revient agrave lrsquoeacutetape 2 jusqursquoagrave ce que k = CLa fonction Dk est deacutefinie par la distance du point x au centre Gl choisi parmi les k premiers centres Dk(x) =min1⩽l⩽k d(xminusGl)La suite de lrsquoalgorithme k-means++ reprend les mecircmes eacutetapes que k-means (page 2)
Cette initilisation eacuteloigne le prochain centre le plus possibles des centres deacutejagrave choisis Lrsquoarticle montre que
Theacuteoregraveme T2 Borne supeacuterieure de lrsquoerreur produite par k-means++On deacutefinit lrsquoinertie par J(X) =
sumPi=1 minG d2(Xi G) Si JOPT deacutefinit lrsquoinertie optimale alors EJ(X) ⩽ 8(lnC +
2)JOPT (X)
La deacutemonstration est disponible dans lrsquoarticle [Arthur2007]
K-means||
Lrsquoarticle [Bahmani2012] propose une autre initialisation que K-means++ (page 5) mais plus rapide et paralleacutelisable
Algorithme A3 initialisation k-means||Cette eacutetape drsquoinitialisation viendra remplacer celle deacutefinie dans lrsquoalgorithme k-means (page 2) On considegravere unensemble de points
X = (Xi)1⩽i⩽P isin(RN)P
A chaque point est associeacutee une classe (ci)1⩽i⩽P isin 1 CP
Pour k centres on choisit G = G1 au hasard dans lrsquoensemble X 1 httpsfrwikipediaorgwikiDistance_de_Mahalanobis
11 k-means 5
Machine Learning Statistiques et Programmation Version 035930
on reacutepegravete O(lnD(GX)) fois Gprime larr eacutechantillon aleacuteatoire issue de X de probabiliteacute p(x) = l D(Gx)2sum
x D(Gx)2
Glarr G cupGprime
La fonction D(G x) est deacutefinie par la distance du point x au plus proche centre g isin G D(g x) = mingisinG d(xminus g)Cette eacutetape ajoute agrave lrsquoensemble des centres G un nombre aleacuteatoire de centres agrave chaque eacutetape Lrsquoensemble G contiendraplus de C centres
1 Pour tout g isin G on assigne le poids wg = card y|d(x y) lt minhisinG d(x h)2 On clusterise lrsquoensemble des points G en C clusters (avec un k-means classique par exemple)
Au lieu drsquoajouter les centres un par un comme dans lrsquoalgorithme k-means++ (page 5) plusieurs sont ajouteacutes agrave chaquefois plus l est grand plus ce nombre est grand Le tirage drsquoun eacutechantillon aleacuteatoire consiste agrave inclure chaque point xavec la probabiliteacute p(x) = l D(Gx)2sum
x D(Gx)2
113 Estimation de probabiliteacutes
A partir de cette classification en C classes on construit un vecteur de probabiliteacutes pour chaque point (Xi)1⩽i⩽P ensupposant que la loi de X sachant sa classe cX est une loi normale multidimensionnelle La classe de Xi est noteacutee ciOn peut alors eacutecrire
foralli isin 1 middot middot middot C
Gi = E(X11cX=i
)=
sumPk=1 Xk11ck=isumPk=1 11ck=i
Vi = E(XX prime11cX=i
)=
sumPk=1 XkX
primek11ck=isumP
k=1 11ck=i
P (cX = i) =
Psumk=1
11ck=i
f (X|cX = i) =1
(2π)N2radic
det (Vi)eminus
12 (XminusGi)
prime V minus1i (XminusGi)
f (X) =
Psumk=1
f (X|cX = i)P (cX = i)
On en deacuteduit que
P (cX = i|X) =f (X|cX = i)P (cX = i)
f (X)
La densiteacute des obervations est alors modeacuteliseacutee par une meacutelange de lois normales chacune centreacutee au barycentrede chaque classe Ces probabiliteacutes peuvent eacutegalement ecirctre apprises par un reacuteseau de neurones classifieur ougrave servirdrsquoinitialisation agrave un algorithme EM2
2 httpsfrwikipediaorgwikiAlgorithme_espC3A9rance-maximisation
6 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
114 Seacutelection du nombre de classes
Critegravere de qualiteacute
Lrsquoalgorithme des centres mobiles effectue une classification non superviseacutee agrave condition de connaicirctre au preacutealable lenombre de classes et cette information est rarement disponible Une alternative consiste agrave estimer la pertinence desclassifications obtenues pour diffeacuterents nombres de classes le nombre de classes optimal est celui qui correspond agrave laclassification la plus pertinente Cette pertinence ne peut ecirctre estimeacutee de maniegravere unique elle deacutepend des hypothegravesesfaites sur les eacuteleacutements agrave classer notamment sur la forme des classes qui peuvent ecirctre convexes ou pas ecirctre modeacuteliseacuteespar des lois normales multidimensionnelles agrave matrice de covariances diagonales Les deux critegraveres qui suivent sontadapteacutes agrave lrsquoalgorithme des centres mobiles Le critegravere de Davies-Bouldin3 (voir [Davies1979]) est minimum lorsquele nombre de classes est optimal
DB =1
C
Csumi=1
maxi =j
σi + σj
d (Ci Cj)(16)
Avec
C nombre de classesσi eacutecart-type des distances des observations de la classe iCi centre de la classe i
Le critegravere de Goodman-Kruskal4 (voir [Goodman1954]) est quant agrave lui maximum lorsque le nombre de classes estoptimal Il est toutefois plus coucircteux agrave calculer
GK =S+ minus Sminus
S+ + Sminus (17)
Avec
S+ = (q r s t) |d (q r) lt d (s t)Sminus = (q r s t) |d (q r) lt d (s t)
Ougrave (q r) sont dans la mecircme classe et (s t) sont dans des classes diffeacuterentes3 httpsenwikipediaorgwikiDaviesE28093Bouldin_index4 httpsenwikipediaorgwikiGoodman_and_Kruskal27s_gamma
11 k-means 7
Machine Learning Statistiques et Programmation Version 035930
Classification en quatre classes nombre de classes seacutelectionneacutees par le critegravere de Davies-Bouldin dont les valeurs sontillustreacutees par le graphe apposeacute agrave droite
Maxima de la fonction densiteacute
Lrsquoarticle [Herbin2001] propose une meacutethode diffeacuterente pour estimer le nombre de classes il srsquoagit tout drsquoaborddrsquoestimer la fonction densiteacute du nuage de points qui est une fonction de Rn minusrarr R Cette estimation est effectueacutee aumoyen drsquoune meacutethode non paramegravetrique telle que les estimateurs agrave noyau (voir [Silverman1986]) Soit (X1 XN )un nuage de points inclus dans une image on cherche agrave estimer la densiteacute fH (x) au pixel x
fH (x) =1
N
Nsumi=1
1
detHK(Hminus1 (xminusXi)
)Ougrave
K (x) =1
(2π)d2
eminus∥x∥2
2
H est un paramegravetre estimeacutee avec la regravegle de Silverman Lrsquoexemple utiliseacute dans cet article est un problegraveme desegmentation drsquoimage qui ne peut pas ecirctre reacutesolu par la meacutethode des nueacutees dynamiques puisque la forme des classesnrsquoest pas convexe ainsi que le montre la figure suivante La fonction de densiteacute f est seuilleacutee de maniegravere agrave obtenir unefonction g Rn minusrarr 0 1 deacutefinie par
g (x) = 11f(x)⩾s
Lrsquoensemble gminus1 (1) sub Rn est composeacutee de N composantes connexes noteacutees (C1 CN ) la classe drsquoun point xest alors lrsquoindice de la composante connexe agrave la laquelle il appartient ou la plus proche le cas eacutecheacuteant
8 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
Exemple de classification non superviseacutee appliqueacutee agrave un problegraveme de segmentation drsquoimage la premiegravere figure montrela densiteacute obtenue la seconde figure illustre la classification obtenue figure extraite de [Herbin2001] Cette meacutethodeparaicirct neacuteanmoins difficilement applicable lorsque la dimension de lrsquoespace vectoriel atteint de grande valeur Lrsquoexemplede lrsquoimage est pratique elle est deacutejagrave deacutecoupeacutee en reacutegion repreacutesenteacutees par les pixels lrsquoensemble gminus1 (1) correspondagrave lrsquoensemble des pixels x pour lesquels f (x) ⩾ s
Deacutecroissance du nombre de classes
Lrsquoarticle [Kothari1999] propose une meacutethode permettant de faire deacutecroicirctre le nombre de classes afin de choisir le nombreapproprieacute Lrsquoalgorithme des centres mobiles proposent de faire deacutecroicirctre lrsquoinertie noteacutee I deacutefinie pour un ensemble depoints noteacute X = (x1 xN ) et K classes La classe drsquoun eacuteleacutement x est noteacutee C (x) Les centres des classes sontnoteacutes Y = (y1 yK) Lrsquoinertie de ce nuage de points est deacutefinie par
I =sumxisinX
∥∥xminus yC(x)
∥∥2On deacutefinit tout drsquoabord une distance α isin R+ puis lrsquoensemble V (y α) = z isin Y |d (y z) ⩽ α V (y α) est donclrsquoensemble des voisins des centres dont la distance avec y est infeacuterieur agrave α Lrsquoarticle [Kothari1999] propose deminimiser le coucirct J (α) suivant
J (α) =sumxisinX
∥∥xminus yC(x)
∥∥2 + sumxisinX
sumyisinV (yC(x)α)
λ (y)∥∥y minus yC(x)
∥∥2Lorsque α est nul ce facteur est eacutegal agrave lrsquoinertie I = J (0) et ce terme est minimal lorsqursquoil y a autant de classes quedrsquoeacuteleacutements dans X Lorsque α tend vers lrsquoinfini J (α)rarr J (infin) ougrave
J (infin) =sumxisinX
∥∥xminus yC(x)
∥∥2 + sumxisinX
sumyisinY
λ (y)∥∥y minus yC(x)
∥∥2Ici encore il est possible de montrer que ce terme J (infin) est minimal lorsqursquoil nrsquoexiste plus qursquoune seule classe Leprincipe de cette meacutethode consiste agrave faire varier le paramegravetre α plus le paramegravetre α augmente plus le nombre declasses devra ecirctre reacuteduit Neacuteanmoins il existe des intervalles pour lequel ce nombre de classes est stable le veacuteritablenombre de classes de lrsquoensemble X sera consideacutereacute comme celui correspondant au plus grand intervalle stable
11 k-means 9
Machine Learning Statistiques et Programmation Version 035930
(a) (b)
Evolutation du nombre de classes en fonction du paramegravetre α lors de la minimisation du critegravere J (α) figure extraitede [Kothari1999] La premiegravere image repreacutesente le nuage de points illustrant quatre classes sans recouvrement Laseconde image montre que quatre classes est lrsquoeacutetat le plus longtemps stable lorsque α croicirctLe coucirct J (α) est une somme de coucirct dont lrsquoimportance de lrsquoun par rapport agrave lrsquoautre est controcircle par les paramegravetresλ (y) Le problegraveme de minimisation de J (α) est reacutesolu par lrsquoalgorithme qui suit Il srsquoappuie sur la meacutethode desmultiplicateurs de Lagrange
Algorithme A4 seacutelection du nombre de classes(voir [Kothari1999]) Les notations sont celles utiliseacutes dans les paragraphes preacuteceacutedents On suppose que le paramegravetre αeacutevolue dans lrsquointervalle [α1 α2] agrave intervalle reacutegulier αt Le nombre initial de classes est noteacute K et il est supposeacutesurestimer le veacuteritable nombre de classes Soit η isin ]0 1[ ce paramegravetre doit ecirctre choisi de telle sorte que danslrsquoalgorithme qui suit lrsquoeacutevolution des centres yk soit autant assureacutee par le premier de la fonction de coucirct que par lesecondinitialisation
αlarrminus α1
On tire aleacuteatoirement les centres des K classes (y1 yK)preacuteparationOn deacutefinit les deux suites entiegraveres
(c11 c
1K
)(c21 c
2K
) et les deux suites de vecteur
(z11 z
1K
)(z21 z
2K
)
forallk c1k = 0forallk c2k = 0forallk z1k = 0forallk z2k = 0
calcul des mises agrave jour
for i in 1N
Mise agrave jour drsquoapregraves le premier terme de la fonction de coucirct J (α)w larrminus argmin
1⩽l⩽K∥xi minus yl∥2
z1w larrminus z1w + η (xi minus yw)
c1w larrminus c1w + 1
10 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
Mise agrave jour drsquoapregraves le second terme de la fonction de coucirct J (α)
for v in 1k
if ∥yv minus yw∥ lt α
z2v larrminus z2v minus (yv minus yw)
c2v larrminus c2v + 1
for v in 1k
λv larrminusc2v∥z1
v∥c1v∥z2
v∥
yv larrminus yv + z1v + λvz2v
convergenceTant que lrsquoeacutetape preacuteceacutedente nrsquoa pas convergeacute vers une version stable des centres yk retour agrave lrsquoeacutetape preacuteceacutedente Sinontous les couples de classes (i j) veacuterifiant ∥yi minus yj∥ gt α sont fusionneacutes α larrminus α + αt Si α ⩽ α2 retour agrave lrsquoeacutetapede preacuteparationterminaisonLe nombre de classes est celui ayant preacutevalu pour le plus grand nombre de valeur de α
115 Extension des nueacutees dynamiques
Classes elliptiques
La version de lrsquoalgorithme des nueacutees dynamique proposeacutee dans lrsquoarticle [Cheung2003] suppose que les classes ne sontplus de forme circulaire mais suivent une loi normale quelconque La loi de lrsquoeacutechantillon constituant le nuage de pointsest de la forme
f (x) =
Nsumi=1
pi1
(2π)d2radicdetΣi
exp
(minus1
2(xminus microi)
primeΣminus1
i (xminus microi)
)Avec sumN
i=1 pi = 1 On deacutefinit
G (x microΣ) =1
(2π)d2radicdetΣ
exp
(minus1
2(xminus micro)
primeΣminus1 (xminus micro)
)Lrsquoalgorithme qui suit a pour objectif de minimiser la quantiteacute pour un eacutechantillon (X1 XK)
I =
Nsumi=1
Ksumk=1
11i=argmax
1⩽j⩽NG(Xkmicroj Σj)
ln [piG (Xk microiΣi)]
Algorithme A5 nueacutees dynamiques geacuteneacuteraliseacuteesLes notations sont celles utiliseacutees dans ce paragraphe Soient η ηs deux reacuteels tels que η gt ηs La regravegle preacuteconiseacutee parlrsquoarticle [Cheung2003] est ηs sim η
10 initialisationtlarrminus 0 Les paramegravetres
p0i micro
0i Σ
0i |1 ⩽ i ⩽ N
sont initialiseacutes gracircce agrave un algorithme des k-means (page 2) ou FSCL
(page 16) foralli p0i = 1N et β0
i = 0
11 k-means 11
Machine Learning Statistiques et Programmation Version 035930
reacutecurrenceSoit Xk choisi aleacuteatoirement dans (X1 XK)
i = argmin1⩽i⩽N
G(Xk micro
tiΣ
ti
)
for i in 1N
microt+1i = microt
i + η (Σti)
minus1(Xk minus microt
i)
βt+1i = βt
i + η (1minus αti)
Σt+1i = (1minus ηs) Σ
ti + ηs (Xk minus microt
i) (Xk minus microti)
prime
for i in 1N
pt+1i = eβ
t+1isumN
j=1 eβt+1j
tlarrminus t+ 1
terminaisonTant que argmin
1⩽i⩽NG (Xk micro
tiΣ
ti) change pour au moins un des points Xk
Lors de la mise agrave jour de Σminus1 lrsquoalgorithme preacuteceacutedent propose la mise agrave jour de Σi alors que le calcul de G ( microiΣi)implique Σminus1
i par conseacutequent il est preacutefeacuterable de mettre agrave jour directement la matrice Σminus1
(Σt+1
i
)minus1=
(Σti)
minus1
1minus ηs
[I minus ηs (Xk minus microt
i) (Xk minus microti)
prime(Σt
i)minus1
1minus ηs + ηs (Xk minus microti)
prime(Σt
i)minus1
(Xk minus microti)
]
Rival Penalized Competitive Learning (RPCL)
Lrsquoalgorithme suivant deacuteveloppeacute dans [Xu1993] est une variante de celui des centres mobiles Il entreprend agrave la foisla classification et la seacutelection du nombre optimal de classes agrave condition qursquoil soit infeacuterieur agrave une valeur maximale agravedeacuteterminer au deacutepart de lrsquoalgorithme Un meacutecanisme permet drsquoeacuteloigner les centres des classes peu pertinentes de sorteqursquoaucun point ne leur sera affecteacute
Algorithme A6 RPCLSoient (X1 XN ) N vecteurs agrave classer en au plus T classes de centres (C1 CT ) Soient deux reacuteels αr et αc
tels que 0 lt αr ≪ αc lt 1initialisationTirer aleacuteatoirement les centres (C1 CT )
for j in 1C
n0j larrminus 1
calcul de poidsChoisir aleacuteatoirement un point Xi
for j in 1C
γj =njsumCk=1 nk
12 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
for j in 1C
uj =
1 si j isin argmink
[γk d (Xi Ck)]
-1 si j isin argminj =k
[γk d (Xi Ck)]
0 sinon
mise agrave jour
for j in 1C
Ct+1j larrminus Ct
j +
αc (Xi minus Cj) si uj = 1minusαr (Xi minus Cj) si uj = minus10 sinon
ntj +
1 si uj = 10 sinon
tlarrminus t+ 1
terminaisonSrsquoil existe un indice j pour lequel Ct+1
j = Ctj alors retourner agrave lrsquoeacutetape de calcul de poids ou que les centres des classes
jugeacutees inutiles ont eacuteteacute repousseacutes vers lrsquoinfini
Pour chaque point le centre de la classe la plus proche en est rapprocheacute tandis que le centre de la seconde classe laplus proche en est eacuteloigneacute mais drsquoune faccedilon moins importante (condition αr ≪ αc) Apregraves convergence les centresdes classes inutiles ou non pertinentes seront repousseacutes vers lrsquoinfini Par conseacutequent aucun point nrsquoy sera rattacheacuteLrsquoalgorithme doit ecirctre lanceacute plusieurs fois Lrsquoalgorithme RPCL peut terminer sur un reacutesultat comme celui de la figuresuivante ougrave un centre reste coinceacute entre plusieurs autres Ce problegraveme est moins important lorsque la dimension delrsquoespace est plus grande
11 k-means 13
Machine Learning Statistiques et Programmation Version 035930
Application de lrsquoalgorithme RPCL (page 12) la classe 0 est incrusteacute entre les quatre autres et son centre ne peut seńăfaufileră vers lrsquoinfini
RPCL-based local PCA
Lrsquoarticle [Liu2003] propose une extension de lrsquoalgorithme RPCL (page 12) et suppose que les classes ne sont plusde forme circulaire mais suivent une loi normale quelconque Cette meacutethode est utiliseacutee pour la deacutetection de ligneconsideacutereacutees ici comme des lois normales deacutegeacuteneacutereacutees en deux dimensions la matrice de covariance deacutefinit une ellipsedont le grand axe est tregraves supeacuterieur au petit axe ce que montre la figure suivante Cette meacutethode est aussi preacutesenteacuteecomme un possible algorithme de squelettisation
14 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
Figure extraite de [Liu2003] lrsquoalgorithme est utiliseacute pour la deacutetection de lignes consideacutereacutees ici comme des lois normalesdont la matrice de covariance deacutefinit une ellipse deacutegeacuteneacutereacutee dont le petit axe est tregraves infeacuterieur au grand axe Les traitsfin griseacutes correspondent aux classes isoleacutees par lrsquoalgorithme RPCL-based local PCAOn modeacutelise le nuage de points par une meacutelange de lois normales
f (x) =
Nsumi=1
pi1
(2π)d2radicdetΣi
exp
(minus1
2(xminus microi)
primeΣminus1
i (xminus microi)
)
AvecsumN
i=1 pi = 1On suppose que le nombre de classes initiales N surestime le veacuteritable nombre de classes Lrsquoarticle [Liu2003]srsquointeacuteresse au cas particulier ougrave les matrices de covariances veacuterifient Σi = ζi I+σi ϕiϕ
primei avec ζi gt 0 σi gt 0 ϕprime
iϕi =1On deacutefinit eacutegalement
G (x microΣ) =1
(2π)d2radicdetΣ
exp
(minus1
2(xminus micro)
primeΣminus1 (xminus micro)
)Lrsquoalgorithme utiliseacute est similaire agrave lrsquoalgortihme RPCL (page 12) La distance d utiliseacutee lors de lrsquoeacutetape de calcul despoids afin de trouver la classe la plus probable pour un point donneacute Xk est remplaceacutee par lrsquoexpression
d (Xk classe i) = minus ln pti G(Xk micro
ti Σ
ti
)Lrsquoeacutetape de mise agrave jour des coefficients est remplaceacutee par
xt+1 larrminus xt +
αcnablaxt si uj = 1minusαrnablaxt si uj = minus10 sinon
Ougrave xt joue le rocircle drsquoun paramegravetre et est remplaceacute successivement par pti microti ζti σt
i ϕti
nablapti = minus 1pti
nablamicroti = minus (Xk minus microt
i)
nablaζti = 12 tr
[(Σt
i)minus1(I minus (Xk minus microt
i) (Xk minus microti)
prime(Σt
i)minus1)]
nablaσti = 1
2 (ϕti)
prime(Σt
i)minus1(I minus (Xk minus microt
i) (Xk minus microti)
prime(Σt
i)minus1)ϕti
nablaϕti = σt
i (Σti)
minus1(I minus (Xk minus microt
i) (Xk minus microti)
prime(Σt
i)minus1)ϕti
11 k-means 15
Machine Learning Statistiques et Programmation Version 035930
Frequency Sensitive Competitive Learning (FSCL)
Lrsquoalgorithme Frequency Sensitive Competitive Learning est preacutesenteacute dans [Balakrishnan1996] Par rapport agravelrsquoalgorithme des centres mobiles classique lors de lrsquoestimation des centres des classes lrsquoalgorithme eacutevite la formationde classes sous-repreacutesenteacutees
Algorithme A7 FSCLSoit un nuage de points (X1 XN ) soit C vecteurs (ω1 ωC) initialiseacutes de maniegravere aleacuteatoires Soit F (u t) isinR2 minusrarr R+ croissante par rapport agrave u Soit une suite de reacuteels (u1 uC) soit une suite ϵ (t) isin [0 1] deacutecroissanteougrave t repreacutesente le nombre drsquoiteacuterations Au deacutebut tlarr 0meilleur candidatPour un vecteur Xk choisi aleacuteatoirement dans lrsquoensemble (X1 XN ) on deacutetermine
ilowast isin argmin Di = F (ui t) d (Xk ωi)
mise agrave jour
ωilowast (t+ 1)larrminus ωilowast (t) + ϵ (t) (Xk minus ωilowast (t))
tlarrminus t+ 1
uilowast larrminus uilowast + 1
Retour agrave lrsquoeacutetape preacuteceacutedente jusqursquoagrave ce que les nombres uisumi ui
convergent
Exemple de fonctions pour F ϵ (voir [Balakrishnan1996])
F (u t) = uβeminustT avec β = 0 06 et 1T = 0 00005
ϵ (t) = β eminusγt avec γ = 0 05
Cet algorithme ressemble agrave celui des cartes topographiques de Kohonen sans toutefois utiliser un maillage entre lesneurones (ici les vecteurs ωi) Contrairement agrave lrsquoalgorithme RPCL les neurones ne sont pas repousseacutes srsquoils ne sontpas choisis mais la fonction croissante F (u t) par rapport agrave u assure que plus un neurone est seacutelectionneacute moins il ade chance de lrsquoecirctre bien que cet avantage disparaisse au fur et agrave mesure des iteacuterations
116 k-means norme L1
Lrsquoalgorithme dans sa version la plus courante optimise lrsquoinertie deacutefinie parsumP
i=1 d2(Xi G
tcti
) qui est en quelque
sorte une inertie L2 Que devriendrait lrsquoalgorithme si la norme choisie eacutetait une norme L1 il faudrait alors choisir agravechaque iteacuteration t des points qui minimise la quantiteacute
sumPi=1 d1
(Xi G
tcti
)ougrave d1 est la norme L1 entre deux points
XY d1(XY ) =sum
i |Xi minus Yi| Avant de continuer on rappelle un theacuteoregraveme
proprieacuteteacute P1 Meacutediane et valeur absolueSoit A = (x1 xn) un ensembl de n reacuteels quelconque On note m = med(x1 xn) la meacutediane de lrsquoensemble depoints A Alors la meacutediane m minimise la quantiteacute
sumni=1 |mminus xi|
Crsquoest cette proprieacuteteacute qui est utiliseacutee pour deacutefinir ce qursquoest la reacutegression quantile (page 121) et sa deacutemonstration estpreacutesenteacutee agrave la page Meacutediane et valeur absolue (page 122) Il ne reste plus qursquoagrave se servir de ce reacutesultat pour mettre agravejour lrsquoalgorithme centre mobile k-means (page 2) Lrsquoeacutetape qui consiste agrave affecter un point agrave un cluster repreacutesenteacute par unpoint ne pose pas de problegraveme si on utilise cette nouvelle norme Il ne reste plus qursquoagrave deacuteterminer le point qui repreacutesente
16 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
un cluster sachant les points qui le constituent Autrement dit il faut deacuteterminer le point qui minimiser la pseudo-inertiedeacutefinie comme suit pour un ensemble de points (X1 Xn) appartenant agrave un espace vectoriel de dimension k
I(GX1 Xn) = ∥GminusXi∥1 =nsum
i=1
dsumk=1
|Gk minusXik|
On cherche le point G qui minimise la quantiteacute I(GX1 Xn) Commesumn
i=1
sumdk=1 |Gk minusXik| =sumd
k=1
sumni=1 |Gk minusXik| on en deacuteduit qursquoon peut chercher la coordonneacutee Gk indeacutependemment les unes des autres
On en deacuteduit que le barycentre de norme L1 drsquoun ensemble de points dans un espace vectoriel de dimension d apour coordonneacutees les d meacutedianes extraites sur chacune des dimensions Lrsquoalgorithme est impleacutementeacute dans le modulemlinsights5 en srsquoinspirant du code KMeans6
117 Bibliographie
12 Meacutelange de lois normales
bull Algorithme EM (page 17)bull Competitive EM algorithm (page 18)bull Bibliographie (page 20)
121 Algorithme EM
Deacutefinition D1 meacutelange de lois normalesSoitX une variable aleacuteatoire drsquoun espace vectoriel de dimension d X suit un la loi drsquoun meacutelange de N lois gaussiennesde paramegravetres (microiΣi)1⩽i⩽N alors la densiteacute f de X est de la forme
f (x) =
Nsumi=1
pi1
(2π)d2radicdetΣi
exp
(minus1
2(xminus microi)
primeΣminus1
i (xminus microi)
)(18)
(19)
Avec sumN
i=1 pi = 1
Dans le cas drsquoune loi normale agrave valeur reacuteelle Σ = σ2 lrsquoalgorithme permet drsquoestimer la loi de lrsquoeacutechantillon(X1 XT ) il srsquoeffectue en plusieurs iteacuterations les paramegravetres pi (0) microi (0) σ2 (0) sont choisis de maniegravere aleacuteatoire
5 httpwwwxavierduprefrappmlinsightshelpsphinxindexhtml6 httpsscikit-learnorgstablemodulesgeneratedsklearnclusterKMeanshtml
12 Meacutelange de lois normales 17
Machine Learning Statistiques et Programmation Version 035930
agrave lrsquoiteacuteration t+ 1 la mise agrave jour des coefficients est faite comme suit
fki (t) = pi (t)1
(2π)d2radicdetΣi (t)
exp
(minus1
2(Xk minus microi (t))
primeΣminus1
i (t) (Xk minus microi (t))
)(110)
fki (t) =fki (t)sumi fki (t)
(111)
pi (t+ 1) =1
T
Tsumk=1
fki (t) (112)
microi (t+ 1) =
[Tsum
k=1
fki (t)
]minus1 Tsumk=1
fki (t)Xk (113)
Σ2i (t+ 1) =
[Tsum
k=1
fki (t)
]minus1 Tsumk=1
fki (t) (Xk minus microi (t+ 1)) (Xk minus microi (t+ 1))prime (114)
Lrsquoestimation drsquoune telle densiteacute srsquoeffectue par lrsquointermeacutediaire drsquoun algorithme de type Expectation Maximization(EM)10 (voir [Dempster1977]) ou de ses variantes SEM11 SAEM12 (voir [Celeux1995] [Celeux1985b]) Laseacutelection du nombre de lois dans le meacutelange reste un problegraveme ouvert abordeacute par lrsquoarticle [Biernacki2001]
122 Competitive EM algorithm
Lrsquoalgorithme deacuteveloppeacute dans lrsquoarticle [ZhangB2004] tente de corriger les deacutefauts de lrsquoalgorithme EM Cette nouvelleversion appeleacutee ńăCompetitive EMă ou CEM srsquoapplique agrave un meacutelange de lois - normales en particulier - il deacuteterminele nombre de classes optimal en supprimant ou en ajoutant des classes
Figures extraites de [ZhangB2004] la premiegravere image montre deux classes incluant deux autres classes qui devraitdonc ecirctre supprimeacutees La seconde image montre une classe aberrante tandis que la troisiegraveme image montre des classesse recouvrant partiellementOn considegravere un eacutechantillon de variables aleacuteatoires indeacutependantes et identiquement distribueacutees agrave valeur dans un espacevectoriel de dimension d Soit X une telle variable on suppose que X suit la loi du meacutelange suivant
f (X|θ) =ksum
i=1
αi f (X|θi)
Avec θ = (αi θi)1⩽i⩽k foralli αi ⩾ 0 etsumk
i=1 αi = 110 httpsfrwikipediaorgwikiAlgorithme_espC3A9rance-maximisation11 httpsfrwikipediaorgwikiAlgorithme_espC3A9rance-maximisationAlgorithme_SEM12 httpwikiwebpopixorgindexphpThe_SAEM_algorithm_for_estimating_population_parameters
18 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
On deacutefinit pour une classe m la probabiliteacute Psplit(m θ) qursquoelle doive ecirctre diviseacutee et celle qursquoelle doive ecirctre associeacutee agraveune autre Pmerge(m l θ) Celles ci sont deacutefinies comme suit
Psplit(m θ) =J (m θ)
Z (θ)(115)
Pmerge(m l θ) =β
J (m θ)Z (θ)(116)
β est une constante deacutefinie par expeacuteriences J (m θ) est deacutefini pour lrsquoeacutechantillon (x1 xn) par
J (m θ) =
intfm (x θ) log
fm (x θ)
pm (x θm)dx
Ougrave fm (x θ) =
sumni=1 11x=xi P(m|xiθ)sumn
i=1 P(m|xiθ)
La constante Z (θ) est choisie de telle sorte que les probabiliteacutes Psplit(m θ) et Pmerge(m l θ) veacuterifient
ksumm=1
Psplit(m θ) +
ksumm=1
ksuml=m+1
Pmerge(m l θ) = 1
Lrsquoalgorithme EM permet de construire une suite θt maximisant la vraisemblance agrave partir de poids θ0 LrsquoalgorithmeCEM13 est deacuteriveacute de lrsquoalgorithme EM
Algorithme A1 CEMLes notations sont celles utiliseacutees dans les paragraphes preacuteceacutedents On suppose que la variable aleacuteatoire Z = (XY )ougrave X est la variable observeacutee et Y la variable cacheacutee T deacutesigne le nombre maximal drsquoiteacuterationsinitialisationChoix arbitraire de k et θ0Expectation
Q(θ θt
)= E
(log [f (XY |θ)] |X θt
)Maximization
θt+1 = argmaxθ
Q(θ θt
)convergencetlarrminus t+ 1 si θt nrsquoa pas convergeacute vers un maximum local alors on retourne agrave lrsquoeacutetape Expectationdivision ou regroupementDans le cas contraire on estime les probabiliteacutes Psplit(m θ) et Pmerge(m l θ) deacutefinie par les expressionseq_split_merge On choisit aleacuteatoirement une division ou un regroupement (les choix les plus probables ayant le plusde chance drsquoecirctre seacutelectionneacutes) Ceci megravene au paramegravetre θprimet dont la partie modifieacutee par rapport agrave θt est deacutetermineacutee demaniegravere aleacuteatoire Lrsquoalgorithme EM est alors appliqueacute aux paramegravetres θprimet jusqursquoagrave convergence aux paramegravetres θprimeprimet acceptationOn calcule le facteur suivant
Pa = min
exp
[L (θprimeprimet X)minus L (θt X)
γ
] 1
On geacuteneacutere aleacuteatoirement une variable u sim U [0 1] si u ⩽ Pa alors les paramegravetres θprimeprimet sont valideacutes θt larrminus θprimeprimet et retouragrave lrsquoeacutetape drsquoexpectation Dans le cas contraire les paramegravetres θprimeprimet sont refuseacutes et retour agrave lrsquoeacutetape preacuteceacutedente
13 httpsfrwikipediaorgwikiAlgorithme_espC3A9rance-maximisationAlgorithme_CEM
12 Meacutelange de lois normales 19
Machine Learning Statistiques et Programmation Version 035930
terminaisonSi t lt T on retoure agrave lrsquoeacutetape drsquoexpectation Sinon on choisit les paramegravetres θlowast = θtlowast qui maximisent lrsquoexpression
L (θlowast|X) = log f (X|θ)minus Nlowast
2
klowastsumi=1
lognαlowast
i
12minus klowast
2log
n
12minus klowast(Nlowast + 1)
2(117)
Avec n le nombre drsquoexemples et N est le nombre de paramegravetres speacutecifiant chaque composant
Lrsquoarticle [ZhangB2004] prend γ = 10 mais ne preacutecise pas de valeur pour β qui deacutepend du problegraveme Toutefois ilexiste un cas suppleacutementaire ougrave la classe m doit ecirctre supprimeacutee afin drsquoeacuteviter sa convergence vers les extrecircmes du nuagede points agrave modeacuteliser Si nαm lt N le nombre moyen de points inclus dans une classe est infeacuterieur au nombre deparamegravetres attribueacutes agrave cette classe qui est alors supprimeacutee Cette condition comme lrsquoensemble de lrsquoarticle srsquoinspire delrsquoarticle [Figueiredo2002] dont est tireacute le critegravere deacutecrit en (refclassif_cem_cirtere)
123 Bibliographie
13 Carte de Kohonen
bull Principe (page 20)bull Carte de Kohonen et classification (page 21)bull Autres utilisation des cartes de Kohenen (page 23)bull Bibliographie (page 23)
131 Principe
Les cartes de Kohonen ou Self Organizing Map (SOM) est le terme anglais pour les cartes de Kohonen14 (voir[Kohonen1997]) sont assimileacutees agrave des meacutethodes neuronales Ces cartes sont constitueacutees drsquoun ensemble de neurones(micro1 microN ) lesquels sont relieacutes par une forme reacutecurrente de voisinage Les neurones sont initialement reacutepartis selonce systegraveme de voisinage Le reacuteseau eacutevolue ensuite puisque chaque point de lrsquoespace parmi lrsquoensemble (X1 XK)attire le neurone le plus proche vers lui ce neurone attirant agrave son tour ses voisins Cette proceacutedure est reacuteiteacutereacutee jusqursquoagraveconvergence du reacuteseau en faisant deacutecroicirctre lrsquoattirance des neurones vers les points du nuage
Trois types de voisinages couramment utiliseacutes pour les cartes de Kohonen voisinages lineacuteaire rectangulairetriangulaire
Algorithme A1 cartes de Kohonen (SOM)14 httpsfrwikipediaorgwikiCarte_auto_adaptative
20 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
Soient (microt1 micro
tN ) isin (Rn)
N des neurones de lrsquoespace vectoriel Rn On deacutesigne par V (microj) lrsquoensemble des neuronesvoisins de microj pour cette carte de Kohonen Par deacutefinition on a microj isin V (microj) Soit (X1 XK) isin (Rn)
K un nuagede points On utilise une suite de reacuteels positifs (αt) veacuterifiant
sumt⩾0 α
2t ltinfin et
sumt⩾0 αt =infin
initialisationLes neurones
(micro01 micro
0N
)sont reacutepartis dans lrsquoespace Rn de maniegravere reacuteguliegravere selon la forme de leur voisinage
tlarrminus 0neurone le plus procheOn choisi aleacuteatoirement un points du nuage Xi puis on deacutefinit le neurone microt
klowast de telle sorte que ∥microtklowast minusXi∥ =
min1⩽j⩽N
∥∥microtj minusXi
∥∥
mise agrave jour
foreach microtj in V (microt
klowast)
microt+1j larrminus microt
j + αt
(Xi minus microt+1
j
)tlarrminus t+ 1
Tant que lrsquoalgorithme nrsquoa pas convergeacute retour agrave lrsquoeacutetape du neurone le plus proche
Lrsquoeacutetape de mise agrave jour peut ecirctre modifieacutee de maniegravere agrave ameacuteliorer la vitesse de convergence (voir [Lo1991])
microt+1j larrminus microt
j + αt h(microtj micro
tklowast
)microk
(Xi minus microt+1
j
)Ougrave h est une fonction agrave valeur dans lrsquointervalle [0 1] qui vaut 1 lorsque microt
j = microtklowast et qui deacutecroicirct lorsque la distance
entre ces deux neurones augmente Une fonction typique est h (x y) = h0 exp(minus∥xminusy∥2
2σ2t
)
Les cartes de Kohonen sont utiliseacutees en analyse des donneacutees afin de projeter un nuage de points dans un espace agrave deuxdimensions drsquoune maniegravere non lineacuteaire en utilisant un voisinage rectangulaire Elles permettent eacutegalement drsquoeffectuerune classification non superviseacutee en regroupant les neurones lagrave ougrave les points sont concentreacutes Les arecirctes reliant lesneurones ou sommets de la cartes de Kohonen sont soit reacutetreacutecies pour signifier que deux neurones sont voisins soitdistendues pour indiquer une seacuteparation entre classes
132 Carte de Kohonen et classification
Lrsquoarticle [Wu2004] aborde le problegraveme drsquoune classification agrave partir du reacutesultat obtenu depuis une carte de Kohonen(page 20) Plutocirct que de classer les points ce sont les neurones qui seront classeacutes en C classes Apregraves avoir appliqueacuteliquestalgorithme de Kohonen (page 20) la meacutethode proposeacutee dans [Wu2004] consiste agrave classer de maniegravere non superviseacuteeles A neurones obtenus (micro1 microA) Toutefois ceux-ci ne sont pas tous pris en compte afin drsquoeacuteviter les pointsaberrants On suppose que αil = 1 si le neurone l est le plus proche du point Xi 0 dans le cas contraire Puis onconstruit les quantiteacutes suivantes
νk =
Nsumi=1
αik
Tk =1
νk
Nsumi=1
αikXi
θ(Tk) =
radicradicradicradic 1
νk
Nsumi=1
αik ∥Xi minus Tk∥2
13 Carte de Kohonen 21
Machine Learning Statistiques et Programmation Version 035930
De plus
θ =1
A
Asumk=1
θ(Tk)
σ(θ) =
radicradicradicradic 1
A
Asumk=1
(θ(Tk)minus θ
)2Si νk = 0 ou ∥microk minus Tk∥ gt θ + σ(θ) le neurone microk nrsquoest pas prise en compte lors de la classification non superviseacuteeUne fois celle-ci termineacutee chaque eacuteleacutement Xi est classeacute selon la classe du neurone le plus procheLrsquoarticle [Wu2004] propose eacutegalement un critegravere permettant de deacuteterminer le nombre de classes ideacuteale On noteaik = 1 si Xi appartient agrave la classe k dans le cas contraire aik = 0 On deacutefinit nk le nombre drsquoeacuteleacutements de la classek le vecteur moyenne Mk associeacute agrave la classe k
nk =
Nsumi=1
aik
Mk =1
nk
Nsumi=1
aikXi
σ2(Mk) =1
nk
Nsumi=1
aik ∥Xi minusMk∥2
On note au preacutealable σ =radic
1C
sumCk=1 σ2(Mk) Lrsquoarticle deacutefinit ensuite la densiteacute interne pour C classes
Dint(C) =1
C
Csumk=1
Nsumi=1
Nsumj=1
aikajk11∥XiminusXj∥⩽σ
On deacutefinit la distance dlowastkl pour (k l) isin 1 C2 cette distance est eacutegale agrave la distance minimale pour un couple depoints le premier appartenant agrave la classe i le second agrave la classe j
dlowastkl = min ∥Xi minusXj∥ |aikajl = 1 =∥∥Xkl
ilowast minusXkljlowast
∥∥La densiteacute externe est alors deacutefinie en fonction du nombre de classes C par
Dext(C) =
Csumk=1
Csuml=1
dklσ (k)σ (l)
Nsumi=1
11aik+ailgt011∥∥∥∥∥XiminusXkl
ilowast+Xkljlowast
2
∥∥∥∥∥⩽σ(k)+σ(l)2
Lrsquoarticle deacutefinit ensuite la seacuteparabiliteacute en fonction du nombre de classes C
Sep(C) =1
Dext(C)
Csumk=1
Csuml=1
dlowastkl
Enfin le critegravere Composing Density Between and With clusters noteacute CDBw(C) est deacutefini par
CDBw(C) = Dint(C) lowast Sep(C)
Ce critegravere est maximal pour un nombre de classes optimal Outre les reacutesultats de lrsquoarticle [Wu2004] sommairementreacutesumeacutes ici ce dernier revient sur lrsquohistoire des cartes de Kohonen depuis leur creacuteation [Kohonen1982] jusqursquoauxderniers deacuteveloppements reacutecents
22 Chapter 1 Clustering
Machine Learning Statistiques et Programmation Version 035930
133 Autres utilisation des cartes de Kohenen
On peut les utiliser pour deacuteterminer le plus court chemin passant par tous les noeuds drsquoun graphe crsquoest agrave dire appliquerKohonen au problegraveme du voyageur de commerce15
134 Bibliographie
15 httpwwwxavierduprefrappensae_teaching_cshelpsphinxspecialstsp_kohonenhtml
13 Carte de Kohonen 23
Machine Learning Statistiques et Programmation Version 035930
24 Chapter 1 Clustering
CHAPTER 2
Non lineacuteaire
Les paragraphes suivant abordent de faccedilon plutocirct theacuteorique des modegraveles de machine learning
21 Reacuteseaux de neurones
Ce chapitre aborde les reacuteseaux de neurones au travers de deux utilisations courantes la reacutegression (page 28) et laclassification (page 32) et une qui lrsquoest moins liquestanalyse en composantes principales17 ou ACP (page 66) sans oublier lesmeacutethodes drsquoestimation des paramegravetres qui les composent agrave savoir optimisations du premier et second ordre (Meacutethodesdu premier ordre (page 48) et Meacutethodes du second ordre (page 48)) ainsi qursquoune meacutethode permettant de supprimer descoefficients inutiles Seacutelection de connexions (page 63)
211 Deacutefinition des reacuteseaux de neurones multi-couches
Les reacuteseaux de neurones multi-couches (ou perceptrons) deacutefinissent une classe de fonctions dont lrsquointeacuterecirct est de pouvoirapprocher nrsquoimporte quelle fonction continue agrave support compact (voir theacuteoregraveme sur la densiteacute (page 35)) Aucun autretype de reacuteseau de neurones ne sera eacutetudieacute et par la suite tout reacuteseau de neurones sera consideacutereacute comme multi-couches(donc pas les reacuteseau de Kohonen18)
Un neurone
Deacutefinition D1 neuroneUn neurone agrave p entreacutees est une fonction f Rp+1 times Rp minusrarr R deacutefinie par
bull g R minusrarr Rbull W isin Rp+1 W = (w1 wp+1)
bull forallx isin Rp f (Wx) = g (sump
i=1 wixi + wp+1) avec x = (x1 xp)
17 httpsfrwikipediaorgwikiAnalyse_en_composantes_principales18 httpsfrwikipediaorgwikiCarte_auto_adaptative
25
Machine Learning Statistiques et Programmation Version 035930
Cette deacutefinition est inspireacutee du neurone biologique les poids jouant le rocircle de synapses le vecteur x celui des entreacuteeset W celui des coefficients ou poids Le coefficient wp+1 est appeleacute le biais et souvent noteacute b La fonction g est appeleacuteefonction de transfert ou fonction de seuil
Figure F1 neurone graphique x1
xi
xp
yfrarr z
wp
wi
w1
sum
1
b Le vecteur (x1 xp) isin Rp joue le rocircle des entreacutees y estappeleacute parfois le potentiel y =
sumpi=1 wixi+b z est appeleacutee la sortie du neurone f est appeleacutee la fonction de transfert
ou de seuil z = f (y) = f (sump
i=1 wixi + b)
La reacutepreacutesentation graphique (page 26) est plus souvent celle qursquoon retient Ce scheacutema est eacutegalement plus proche de sadeacutefinition biologique et dissocie mieux les rocircles non symeacutetriques des entreacutees et des poids Des exemples de fonctionsde transfert sont donneacutes par la table qui suit Les plus couramment utiliseacutees sont les fonctions lineacuteaire et sigmoiumlde
exemples de fonction de transfert ou de seuil expressionescalier 1[0+infin[
lineacuteaire x
sigmoiumlde entre [0 1]1
1 + eminusx
sigmoiumlde entre [minus1 1] 1minus 2
1 + ex
normale eminusx2
2
exponentielle ex
relu x11x⩾0
La plupart des fonctions utiliseacutees sont deacuterivables et cette proprieacuteteacute srsquoeacutetend agrave tout assemblage de neurones ce qui permetdrsquoutiliser lrsquoalgorithme de reacutetropropagation deacutecouvert par [Rumelhart1986] Ce dernier permet le calcul de la deacuteriveacuteeouvre ainsi les portes des meacutethodes drsquooptimisation baseacutees sur cette proprieacuteteacute La fonction relu19 a progressivementremplaceacute la fonction sigmoiumlde sur les couches cacheacutees car elle est non lineacuteaire et beaucoup plus rapide agrave calculer
Une couche de neurones
Deacutefinition D2 couche de neuronesSoit p et n deux entiers naturels on note W isin Rn(p+1) = (W1 Wn) avec foralli isin 1 middot middot middot n Wi isin Rp+1 Unecouche de n neurones et p entreacutees est une fonction
F Rn(p+1) times Rp minusrarr Rn
veacuterfifiant bull foralli isin 1 middot middot middot n fi est un neuronebull forallW isin Rn(p+1) times Rp F (Wx) = (f1 (W1 x) fn (Wn x))
Une couche de neurones repreacutesente la juxtaposition de plusieurs neurones partageant les mecircmes entreacutees mais ayantchacun leur propre vecteur de coefficients et leur propre sortie
19 httpsenwikipediaorgwikiRectifier_(neural_networks)
26 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Un reacuteseau de neurones le perceptron
Deacutefinition D3 reacuteseau de neurones multi-couches ou perceptronUn reacuteseau de neurones multi-couches agrave n sorties p entreacutees et C couches est une liste de couches (C1 CC)connecteacutees les unes aux autres de telle sorte que
bull foralli isin 1 middot middot middot C chaque couche Ci possegravede ni neurones et pi entreacuteesbull foralli isin 1 middot middot middot C minus 1 ni = pi+1 de plus p1 = p et nC = n
Les coefficients de la coucheCi sont noteacutes(W i
1 Wini
) cette couche deacutefinit une fonctionFi Soit la suite (Zi)0⩽i⩽C
deacutefinie par
Z0 isin Rp
foralli isin 1 middot middot middot C Zi = Fi
(W i
1 Wini Ziminus1
)On pose M = M =
sumCi=1 ni (pi + 1) le reacuteseau de neurones ainsi deacutefini est une fonction F telle que
F RM times Rp minusrarr Rn
(WZ0) minusrarr ZC
Figure F2 Modegravele du perceptron multi-couche (multi-layer perceptron MLP)
bull (x1 xp) entreacuteesbull Ci nombre de neurones sur la couche i C0 = p
bull zci sortie du neurone i de la couche c par extension z0i = xi
bull yci potentiel du neurone i de la couche cbull wcij coefficient associeacute agrave lrsquoentreacutee j du neurone i de la couche cbull bci biais du neurone i de la couche cbull fci fonction de seuil du neurone i de la couche c
On note Wc la matrice des poids associeacutee agrave la couche c De la mecircme maniegravere Bc est le vecteur des biais associeacutee agravela couche c Zc Yc sont les objets vectoriels correspondant On considegravere que les entreacutees forment la couche C0 demaniegravere agrave simplifier les eacutecritures Ainsi chaque couche Ci du perceptron a pour entreacutees les sorties de la couche Ciminus1Cette deacutefinition est plus facile agrave illustrer qursquoagrave eacutenoncer (voir Modegravele du perceptron (page 27)) et rappelle le rocircle nonsymeacutetrique des entreacutees et des poids Le meacutecanisme qui permet de calculer les sorties drsquoun reacuteseau de neurones sachantses poids est appeleacute propagation
21 Reacuteseaux de neurones 27
Machine Learning Statistiques et Programmation Version 035930
Algorithme A1 PropagationCet algorithme srsquoapplique agrave un reacuteseau de neurones veacuterifiant la deacutefinition du perceptron (page 27) Il srsquoagit de calculerles sorties de ce reacuteseau connaissant ses poids (wcij) et ses entreacutees (xj)
Zc larrminus X
Vient ensuite le calcul iteacuteratif de la suite (Zc)1⩽c⩽C
for c in 1C Yc larrminusWcZcminus1 +Bc
Zc larrminus F (Yc)
Le nombre de couches drsquoun reacuteseau de neurones nrsquoest pas limiteacute Les reacuteseaux de deux couches (une couche pour lesentreacutees une couche de sortie) sont rarement utiliseacutes Trois couches sont neacutecessaires (une couche pour les entreacuteesune couche dite cacheacutee une couche de sortie) pour construire des modegraveles avec une proprieacuteteacute inteacuteressante de densiteacute(page 35)
212 La reacutegression
Le bruit blanc est une variable aleacuteatoire couramment utiliseacute pour deacutesigner le hasard ou la part qui ne peut ecirctre modeacuteliseacuteedans une reacutegression ou tout autre problegraveme drsquoapprentissage On suppose parfois que ce bruit suive une loi normale
Deacutefinition D1 bruit blancUne suite de variables aleacuteatoires reacuteelles (ϵi)1⩽i⩽N est un bruit blanc
bull existσ gt 0 foralli isin 1 middot middot middot N ϵi sim N (0 σ)
bull forall (i j) isin 1 middot middot middot N2 i = j =rArr ϵi perpperp ϵj
Une reacutegression consiste agrave reacutesoudre le problegraveme suivant
Problegraveme P1 ReacutegressionSoient deux variables aleacuteatoires X et Y lrsquoobjectif est drsquoapproximer la fonction E (Y |X) = f (X) Les donneacutees duproblegraveme sont un eacutechantillon de points (Xi Yi) |1 ⩽ i ⩽ N et un modegravele parameacutetreacute avec maththeta`
foralli isin 1 middot middot middot N Yi = f (θXi) + ϵi
avec n isin N (ϵi)1⩽i⩽N bruit blanc (page 28) f est une fonction de paramegravetre θ
La fonction f peut ecirctre une fonction lineacuteaire un polynocircme un reacuteseau de neurones Lorsque le bruit blanc est normal latheacuteorie de lrsquoestimateur de vraisemblance (voir [Saporta1990]) permet drsquoaffirmer que le meilleur paramegravetre θ minimisantlrsquoerreur de preacutediction est
θ = argminθisinRp
E (θ) = argminθisinRp
[Nsumi=1
[Yi minus f (θXi)]2
]
28 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Le lien entre les variables X et Y deacutepend des hypothegraveses faites sur f Geacuteneacuteralement cette fonction nrsquoest supposeacuteenon lineacuteaire que lorsqursquoune reacutegression lineacuteaire20 donne de mauvais reacutesultats Cette hypothegravese est toujours testeacutee carla reacutesolution du problegraveme dans ce cas-lagrave est deacuteterministe et aboutit agrave la reacutesolution drsquoun systegraveme lineacuteaire avec autantdrsquoeacutequations que drsquoinconnues Voici ce que ce la donne avec un nuage de points (Xi Yi) deacutefini par Yi =
32X
2i minusXi +
14 + ϵi
Une fonction non lineacuteaire permet de srsquoapprocher un peu plus de la veacuteritable fonction Premier cas f est un reacuteseauavec un neurone sur la couche cacheacutee
20 httpsfrwikipediaorgwikiRC3A9gression_linC3A9aire
21 Reacuteseaux de neurones 29
Machine Learning Statistiques et Programmation Version 035930
Second cas f est un reacuteseau avec deux neurones sur la couche cacheacutee
30 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Troisiegraveme cas f est un reacuteseau avec 100 neurones sur la couche cacheacutee
Lrsquoerreur de preacutediction de ce reacuteseau de neurones est tregraves infeacuterieure agrave celle des modegraveles preacuteceacutedent ce modegravele a apprispar coe ur le nuage de points (Xi Yi) sans vraiment ńăcomprendreă ce qursquoil apprenait Dans le cas drsquoune reacutegressionagrave cent neurones le nombre de coefficients du reacuteseau de neurones (301) est largement supeacuterieur au nombre de points(50) Il en reacutesulte que contrairement aux trois preacuteceacutedents cas la ńărichesseă du modegravele choisi lui permet drsquoapprendrele ńăhasardă Lorsque ce cas de figure se preacutesente on dit que le reacuteseau de neurones a appris coeur son pouvoir de
21 Reacuteseaux de neurones 31
Machine Learning Statistiques et Programmation Version 035930
geacuteneacuteralisation est mauvais ou il fait de liquestoverfitting21 (voir aussi Generalization Error22) Lrsquoerreur minime estimeacutee surce nuage de points (ou base drsquoapprentissage) sera consideacuterablement accrue sur un autre nuage de points ou base de testsuivant la mecircme loi Cet exemple montre que le choix du reacuteseau de neurones le mieux adapteacute au problegraveme nrsquoest paseacutevident Il existe des meacutethodes permettant drsquoapprocher lrsquoarchitecture optimale mais elles sont geacuteneacuteralement coucircteusesen calcul
213 La classification
Comme la reacutegression la classification consiste aussi agrave trouver le lien entre une variable X et une variable aleacuteatoirediscregravete suivant une loi multinomiale23 Y
Problegraveme P1 ClassificationSoit une variable aleacuteatoire X et une variable aleacuteatoire discregravete Y isin N lrsquoobjectif est drsquoapproximer la fonctionE (Y |X) = f (X) Les donneacutees du problegraveme sont un eacutechantillon de points (Xi Yi) |1 ⩽ i ⩽ N avec foralli isin1 N Yi isin 1 C et un modegravele parameacutetreacute avec θ
foralli isin 1 middot middot middot N forallc isin 1 middot middot middot C P (Yi = c|Xi θ) = h (θXi c)
avec n isin N h est une fonction de paramegravetre θ agrave valeur dans [0 1] et veacuterifiant la contrainte sumC
c=1 h(θX c) = 1
Le premier exemple est une classification en deux classes elle consiste agrave deacutecouvrir le lien qui unit une variable aleacuteatoirereacuteelle X et une variable aleacuteatoire discregravete et Y isin 0 1 on dispose pour cela drsquoune liste
(Xi Yi) isin Rtimes 0 1 |1 ⩽ i ⩽ N
21 httpsfrwikipediaorgwikiSurapprentissage22 httpsenwikipediaorgwikiGeneralization_error23 httpsfrwikipediaorgwikiLoi_multinomiale
32 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Il nrsquoest pas facile de deacuteterminer directement une fonction h qui approxime Y |X car h et Y sont toutes deux discregravetesCrsquoest pourquoi plutocirct que de reacutesoudre directement ce problegraveme il est preacutefeacuterable de deacuteterminer la loi marginaleP (Y = c|X) = f (X θ c) f est alors une fonction dont les sorties sont continues et peut ecirctre choisie deacuterivablePar exemple f peut ecirctre un reacuteseau de neurones dont les sorties veacuterifient
f (X 0) + f (X 1) = P (0|X) + P (1|X) = 1
Le reacuteseau de neurones utiliseacute pour cette tacircche est leacutegegraverement diffeacuterent du preacuteceacutedent il sera preacutesenteacute ulteacuterieurementUn plan a eacuteteacute diviseacute en deux demi-plan par une droite deacutelimitant deux classes le reacuteseau de neurones dont la couchecacheacutee contient deux neurones lineacuteaires a retrouveacute cette seacuteparation malgreacute les quelques exemples mal classeacutes
En revanche un reacuteseau de neurones comportant trop de coefficients aura tendance agrave apprendre par coeur la classificationet les quelques erreurs de classification comme le montre la figure suivante La seacuteparation produite par le reacuteseau deneurones est de maniegravere eacutevidente non lineacuteaire puisqursquoaucune droite ne peut seacuteparer les deux classes deacutetermineacutees parcette fonction Cette classe de modegraveles permet donc de reacutesoudre des problegravemes complexes en gardant toutefois agravelrsquoesprit comme dans le cas de la reacutegression qursquoil nrsquoest pas moins de facile de deacutenicher le bon modegravele que dans le caslineacuteaire
214 Deacutemonstration du theacuteoregraveme de la densiteacute des reacuteseaux de neurones
bull Formulation du problegraveme de la reacutegression (page 34)bull Densiteacute des reacuteseaux de neurones (page 34)
21 Reacuteseaux de neurones 33
Machine Learning Statistiques et Programmation Version 035930
Formulation du problegraveme de la reacutegression
Soient deux variables aleacuteatoires continues (XY ) isin RptimesRq sim L quelconque la reacutesolution du problegraveme de reacutegression(page 28) est lrsquoestimation de la fonction E(Y |X) = F (X) Pour cela on dispose drsquoun ensemble de points A =(Xi Yi) sim L|1 ⩽ i ⩽ N
Soit f RM times Rp minusrarr Rq une fonction on deacutefinit foralli isin 1 middot middot middot N Y Wi = f (WXi) On appelle aussi Y W
i lavaleur preacutedite pour Xi On pose alors ϵWi = Yi minus Y W
i = Yi minus f (WXi)Les reacutesidus sont supposeacutes iid (identiquement et indeacutependemment distribueacutes)24 et suivant une loi normale foralli isin1 middot middot middot N ϵWi sim N (microW σW ) La vraisemblance drsquoun eacutechantillon (Zi)1⩽i⩽N ougrave les Zi sont indeacutependantes entreelles et suivent la loi de densiteacute f (z|θ) est la densiteacute du vecteur (Z1 ZN ) qursquoon exprime comme suit
L (θ Z1 ZN ) =prodN
n=1 f (Zi|θ)=rArr lnL (θ Z1 ZN ) =
sumNn=1 ln f (Zi|θ)
La log-vraisemblance de lrsquoeacutechantillon srsquoeacutecrit LW = minus 12σ2
W
sumNi=1
(Yi minus Y W
i minus microW
)2+ N ln
(σW
radic2π) Les
estimateurs du maximum de vraisemblance pour microW et σW sont (voir [Saporta1990])
microW = 1N
sumNi=1 Yi minus Y W
i
σW =
radicsumNi=1
(YiminusY W
i minusmicroW
)2
N
Lrsquoestimateur de Y = f (WX) deacutesireacutee est de preacutefeacuterence sans biais (microW = 0) et de variance minimum par conseacutequent
les paramegravetreslowastW qui maximisent la vraisemblance LW sont
lowastW = argmin
WisinRM
sumNi=1
(Yi minus Y W
i
)2= argmin
WisinRM
sumNi=1 (Yi minus f (WXi))
2(21)
Reacuteciproquement on veacuterifie que si W lowast veacuterifie lrsquoeacutequation (21) alors lrsquoestimateur deacutefini par f est sans biais Il suffitpour srsquoen convaincre de poser g = f + α avec α isin R et de veacuterifier que la valeur optimale pour α est α =minus 1
N
sumNi=1 Yi minus f (WXi) Lrsquoestimateur minimise la vraisemblance LW Cette formule peut ecirctre geacuteneacuteraliseacutee en
faisant une autre hypothegravese que celle de la normaliteacute des reacutesidus (lrsquoindeacutependance eacutetant conserveacutee) lrsquoeacutequation (21)peut geacuteneacuteraliseacutee par (22)
lowastW = argmin
WisinRM
sumNi=1 e
(Yi minus Y W
i
)= argmin
WisinRM
sumNi=1 e (Yi minus f (WXi))
(22)
Ougrave la fonction e Rq isin R est appeleacutee fonction drsquoerreur
Densiteacute des reacuteseaux de neurones
Lrsquoutilisation de reacuteseaux de neurones srsquoest consideacuterablement deacuteveloppeacutee depuis que lrsquoalgorithme de reacutetropropagationa eacuteteacute trouveacute ([LeCun1985] [Rumelhart1986] [Bishop1995]) Ce dernier permet drsquoestimer la deacuteriveacutee drsquoun reacuteseaude neurones en un point donneacute et a ouvert la voie agrave des meacutethodes classiques de reacutesolution pour des problegravemesdrsquooptimisation tels que la reacutegression non lineacuteaireComme lrsquoensemble des fonctions polynocircmiales lrsquoensemble des fonctions engendreacutees par des reacuteseaux de neuronesmulti-couches possegravede des proprieacuteteacutes de densiteacute (page 35) et sont infiniment deacuterivables Les reacuteseaux de neuronescomme les polynocircmes sont utiliseacutes pour modeacuteliser la fonction f de lrsquoeacutequation (22) Ils diffegraverent neacuteanmoins sur certainspoints
24 httpsfrwikipediaorgwikiVariables_indC3A9pendantes_et_identiquement_distribuC3A9es
34 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Si une couche ne contient que des fonctions de transfert borneacutees comme la fonction sigmoiumlde tout reacuteseau de neuronesincluant cette couche sera aussi borneacute Drsquoun point de vue informatique il est preacutefeacuterable drsquoeffectuer des calculs avec desvaleurs du mecircme ordre de grandeur Pour un polynocircme les valeurs des termes de degreacute eacuteleveacute peuvent ecirctre largementsupeacuterieurs agrave leur sommeUn autre attrait est la symeacutetrie dans lrsquoarchitecture drsquoun reacuteseau de neurones les neurones qui le composent jouent desrocircles symeacutetriques (corollaire familles libres (page 39) Pour ameacuteliorer lrsquoapproximation drsquoune fonction dans un casil suffit drsquoajouter un neurone au reacuteseau dans lrsquoautre il faut inclure des polynocircmes de degreacute plus eacuteleveacute que ceux deacutejagraveemployeacutes
Theacuteoregraveme T1 densiteacute des reacuteseaux de neurones (Cybenko1989)[Cybenko1989] Soit Eq
p lrsquoespace des reacuteseaux de neurones agrave p entreacutees et q sorties posseacutedant une couche cacheacutee dont lafonction de seuil est une fonction sigmoiumlde
(xrarr 1minus 2
1+ex
) une couche de sortie dont la fonction de seuil est lineacuteaire
Soit F qp lrsquoensemble des fonctions continues de C sub Rp minusrarr Rq avec C compact muni de la norme ∥f∥ = sup
xisinC∥f (x)∥
Alors Eqp est dense dans F q
p
La deacutemonstration de ce theacuteoregraveme neacutecessite deux lemmes Ceux-ci utilisent la deacutefinition usuelle du produit scalairesur Rp deacutefini par (x y) = (x1 xp y1 yp) isin R2p minusrarr ⟨x y⟩ =
sumpi=1 xiyi et la norme infinie x =
(x1 xp) isin Rp minusrarr ∥x∥ = maxiisin1middotmiddotmiddot p
xi Toutes les normes sont eacutequivalentes25 sur Rp
Corollaire C1 approximation drsquoune fonction creacuteneauSoit C sub Rp C = (y1 yp) isin Rp |foralli isin 1 middot middot middot p 0 ⩽ yi ⩽ 1 alors
forallε gt 0 forallα gt 0 existn isin Nlowast exist (x1 xn) isin (Rp)n exist (γ1 γn) isin Rn tels que forallx isin Rp∣∣∣∣ nsum
i=1
γi1 + e⟨xix⟩+bi
minus 11xisinC
∣∣∣∣ ⩽ 1
et infyisinFr(C)
∥xminus y∥ gt αrArr∣∣∣∣ nsumi=1
γi1 + e⟨xix⟩+bi
minus 11xisinC
∣∣∣∣ ⩽ ε
Deacutemonstration du corollairePartie 1
Soit h la fonction deacutefinie par h (x) =(
1
1 + eminuskx
)p
avec p gt 0 et 0 lt ϵ lt 1 A α ϵ fixeacute 0 lt ϵ lt 1 on cherche k
tel que
ϵ = h (α) =
(1
1 + eminuskα
)p
=rArr ϵminus1p = 1 + eminuskα
=rArr ϵminus1p minus 1 = eminuskα
=rArr ln(ϵminus
1p minus 1
)= minuskα
=rArr k = minusln(ϵminus
1p minus 1
)α
= k0 (ϵ α p)
Partie 2Soit α gt 0 et 1 ⩾ ε gt 0 k gt 0
25 httpsfrwikipediaorgwikiNorme_C3A9quivalente
21 Reacuteseaux de neurones 35
Machine Learning Statistiques et Programmation Version 035930
On pose f (y1 yp) =pprod
i=1
1
1 + eminuskyi
pprodi=1
1
1 + eminusk(1minusyi)drsquoapregraves sa deacutefinition 0 ⩽ f (y1 yp) ⩽ 1
Pour k ⩾ k0 (ϵ α 2p) obtenu dans la partie preacuteceacutedente
infiisin1p
[min |yi| |1minus yi|] gt α =rArr∥∥f (y1 yp)minus 11xisinC
∥∥ ⩽ ε
Partie 3Soit g la fonction deacutefinie par
g (x) =
(1
1 + eminuskx
)(1
1 + eminusk(1minusx)
)=
1
1 + eminuskx + eminusk(1minusx) + eminusk
=1
1 + eminuskx + eminuskekx + eminusk=
ekx
ekx (1 + eminusk) + 1 + eminuske2kx
La fonction x minusrarr ekx(1 + eminusk
)+1+eminuske2kx est un polynocircme en ekx dont le discriminant est positif Par conseacutequent
la fraction rationnelle g (x) admet une deacutecomposition en eacuteleacutements simples du premier ordre et il existe quatre reacuteels η1η2 δ1 δ2 tels que
g (x) =η1
1 + ekx+δ1+
η21 + ekx+δ2
Par conseacutequent
f (y1 yp) =
pprodi=1
g (yi) =
pprodi=1
[ηi1
1 + ekyi+δi1+
ηi21 + ekyi+δi2
]Il existe n isin N tel qursquoil soit possible drsquoeacutecrire f sous la forme
f (y) =
nsumi=1
γi1 + eltxiygt+bi
Corollaire C2 approximation drsquoune fonction indicatriceSoit C sub Rp compact alors
forallε gt 0 forallα gt 0 exist (x1 xn) isin (Rp)n exist (b1 bn) isin Rn tels que forallx isin Rp∣∣∣∣sumn
i=1
γi1 + e⟨xix⟩+bi
minus 11xisinC
∣∣∣∣ ⩽ 1 + 2ε2
et infyisinFr(C)
∥xminus y∥ gt αrArr∣∣∣∣sumn
i=1
γi1 + e⟨xix⟩+bi
minus 11xisinC
∣∣∣∣ ⩽ ε
Deacutemonstration du corollairePartie 1Soit C1 = y = (y1 yp) isin Rp | foralli isin 1 n 0 ⩽ yi ⩽ 1 et Cj
2 =y = (y1 yp) isin Rp | foralli = j 0 ⩽ yi ⩽ 1 et 1 ⩽ yj ⩽ 2
36 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Le premier lemme suggegravere que la fonction chercheacutee pour ce lemme dans le cas particulier C1 cup Cj2 est
f (y1 yp) =prodp
i=1
1
1 + eminuskyi
prodpi=1
1
1 + eminusk(1minusyi)+(prod
i =j
1
1 + eminuskyi
)(prodi =j
1
1 + eminusk(1minusyi)
)1
1 + ek(1minusyj)
1
1 + eminusk(2minusyj)
=
(prodi =j
1
1 + eminuskyi
)(prodi=j
1
1 + eminusk(1minusyi)
)(
1
1 + eminuskyj
1
1 + eminusk(1minusyj)+
1
1 + ek(1minusyj)
1
1 + eminusk(2minusyj)
)=
(prodi =j
1
1 + eminuskyi
)(prodi=j
1
1 + eminusk(1minusyi)
)[
1
1 + eminuskyj
(1
1 + eminusk(1minusyj)+ 1minus 1
)+
(1minus 1
1 + eminusk(1minusyj)
)1
1 + eminusk(2minusyj)
]Pour k ⩾ k0 (ϵ α 2p) on a
f (y1 yp) =
(prodi=j
1
1 + eminuskyi
)(prodi =j
1
1 + eminusk(1minusyi)
) 1
1 + eminuskyj+
1
1 + eminusk(2minusyj)+
1
1 + ek(1minusyj)
1
1 + eminuskyj︸ ︷︷ ︸⩽ε2
minus 1
1 + eminusk(1minusyj)
1
1 + eminusk(2minusyj)︸ ︷︷ ︸⩽ε2
Par conseacutequent il est facile de construire la fonction chercheacutee pour tout compact connexe par arcPartie 2Si un compact C nrsquoest pas connexe par arc on peut le recouvrir par une somme finie de compacts connexes par arcs etdisjoints (Ck)1⩽k⩽K de telle sorte que
forally isinKcup
k=1Ck inf ∥xminus y∥ x isin C ⩽ α
2
Deacutemontration du theacuteoregraveme de densiteacute des reacuteseaux de neurones (page 35)Partie 1On deacutemontre le theacuteoregraveme dans le cas ougrave q = 1 Soit f une fonction continue du compact C sub Rp rarr R et soit ε gt 0On suppose eacutegalement que f est positive dans le cas contraire on pose f = f minus inf f︸ ︷︷ ︸
fonction positive
+ inf f
Si f est nulle alors crsquoest fini sinon on pose M = supxisinC
f (x) M existe car f est continue et C est compact (de mecircme
inf f existe eacutegalement)On pose Ck = fminus1 ([kεM ]) Ck est compact car il est lrsquoimage reacuteciproque drsquoun compact par une fonction continue etCk sub C compact
21 Reacuteseaux de neurones 37
Machine Learning Statistiques et Programmation Version 035930
Par construction Ck+1 sub Ck et C =
Mε⋃
k=0
Ck = C0 on deacutefinit~
forallx isin C gε (x) = ε
Mεsum
k=0
11xisinCk
Drsquoougrave~
f (x)minus gε (x) = f (x)minus ε
Mεsum
k=0
11xisinCk = f (x)minus ε
Mεsum
k=0
11f(x)⩾kε
= f (x)minus ε
[f (x)
ε
](partie entiegravere)
drsquoougrave 0 ⩽ f (x)minus gε (x) ⩽ε
4(23)
Comme f est continue sur un compact elle est uniformeacutement continue sur ce compact
existα gt 0 tel que forall (x y) isin C2 ∥xminus y∥ ⩽ α =rArr |f (x)minus f (y)| ⩽ ε2
drsquoougrave |f (x)minus f (y)| ⩾ ε =rArr ∥xminus y∥ gt α
Par conseacutequent
inf ∥xminus y∥ |x isin Fr (Ck) y isin Fr (Ck+1) gt α
38 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Drsquoapregraves le second lemme on peut construire des fonctions hk (x) =sumn
i=1
1
1 + e⟨xki x⟩+bki
telles que
(∥∥hk (x)minus 11xisinCk∥∥ ⩽ 1
)et(
infyisinFr(C)
∥xminus y∥ gt α
2rArr∥∥hk (x)minus 11xisinCk
∥∥ ⩽ ε2)
On en deacuteduit que ∣∣∣∣∣f (x)minus ε
Mεsumk=0hk (x)
∣∣∣∣∣ ⩽ |f (x)minus gε (x)|+
∣∣∣∣∣gε (x)minus ε
Mεsumk=0hk (x)
∣∣∣∣∣⩽ ε+ ε2
[M
ε
]+ 2ε2
⩽ ε (M + 3)
Comme εMεsumk=1hk (x) est de la forme deacutesireacutee le theacuteoregraveme est deacutemontreacute dans le cas q = 1
Partie 2Dans le cas q gt 1 on utilise la meacutethode preacuteceacutedente pour chacune des projections de f dans un repegravere orthonormeacute deRq Il suffit de sommer sur chacune des dimensionsCe theacuteoregraveme montre qursquoil est judicieux de modeacuteliser la fonction f dans lrsquoeacutequation (22) par un reacuteseau de neuronespuisqursquoil possible de srsquoapprocher drsquoaussi pregraves qursquoon veut de la fonction E (Y |X) il suffit drsquoajouter des neurones sur lacouche cacheacutee du reacuteseau Ce theacuteoregraveme permet de deacuteduire le corollaire suivant
Corollaire C3 famille libre de fonctionsSoit Fp lrsquoensemble des fonctions continues de C sub Rp minusrarr R avec C compact muni de la norme ∥f∥ = sup
xisinC∥f (x)∥
Alors lrsquoensemble Ep des fonctions sigmoiumldes
Ep =
x minusrarr 1minus 2
1 + eltyxgt+b|y isin Rp et b isin R
est une base de Fp
Deacutemonstration du corollaireLe theacuteoregraveme de densiteacute (page 35) montre que la famille Ep est une famille geacuteneacuteratrice Il reste agrave montrer que crsquoestune famille libre Soient (yi)1⩽i⩽N isin (Rp)
N et (bi)1⩽i⩽N isin RN veacuterifiant i = j =rArr yi = yj ou bi = bj Soit(λi)1⩽i⩽N isin RN il faut montrer que
forallx isin Rp
Nsumi=1
λi
(1minus 2
1 + eltyixgt+bi
)= 0 =rArr foralli λi = 0 (24)
Crsquoest eacutevidemment vrai pourN = 1 La deacutemonstration est baseacutee sur un raisonnement par reacutecurrence on suppose qursquoelleest vraie pour N minus 1 deacutemontrons qursquoelle est vraie pour N On suppose donc N ⩾ 2 Srsquoil existe i isin 1 N tel
que yi = 0 la fonction x minusrarr 1 minus 2
1 + eltyixgt+biest une constante par conseacutequent dans ce cas le corollaire est est
vrai pour N Dans le cas contraire foralli isin 1 N yi = 0 On deacutefinit les vecteurs Xi = (xi 1) et Yi = (yj bj)On cherche agrave reacutesoude le systegraveme de N eacutequations agrave N inconnues
sumNj=1 λj
(1minus 2
1 + eltYj X1gt
)= 0
sumNj=1 λj
(1minus 2
1 + eltYj Xigt
)= 0
sumNj=1 λj
(1minus 2
1 + eltYj XNgt
)= 0
(25)
21 Reacuteseaux de neurones 39
Machine Learning Statistiques et Programmation Version 035930
On note le vecteur Λ = (λi)1⩽i⩽N et M la matrice
M = (mij)1⩽ij⩽N =
(1minus 2
1 + eltYj Xigt
)1⩽ij⩽N
Lrsquoeacutequation (214) est eacutequivalente agrave lrsquoeacutequation matricielle MΛ = 0 On effectue une iteacuteration du pivot de Gauss(214) eacutequivaut agrave
lArrrArr
λ1m11 + λ2 m12 + + λN m1N = 0
0 + λ2 (m22m11 minusm12m21) + + λN (m2Nm11 minusm1Nm21) = 0 0 + λ2 (mN2m11 minusm12mN1) + + λN (mNNm11 minusm1NmN1) = 0
On note Λlowast = (λi)2⩽i⩽N et ∆lowast Mlowast les matrices
Mlowast = (mij)2⩽ij⩽N
∆lowast = (m1j mi1)2⩽ij⩽N
Donc (214) est eacutequivalent agrave
lArrrArr
λ1m11 + λ2m12 + + λNm1N = 00 + (m11Mlowast minus∆lowast) Λlowast = 0
(26)
Il est possible de choisir X1 (α) = (αx1 1) de telle sorte qursquoil existe une suite (sl)1⩽l⩽N isin minus1 1N avec s1 = 1 et
veacuterifiant
forallj isin (1 N) limαminusrarr+infin
[1minus 2
1 + eltYj X1(α)gt
]= lim
αminusrarr+infinm1j (α) = sj
On deacutefinit
Ulowast = (m21 mN1)prime
Vlowast = (s2 m21 sN mN1)prime
et la matrice Llowast = (Vlowast)2⩽i⩽N dont les N minus 1 colonnes sont identiques
On veacuterifie que
limαminusrarr+infin
∆(α) = Vlowast
On obtient toujours pour (214)
lArrrArr
λ1m11 (α) + λ2m12 (α) + + λNm1N (α) = 00 + [m11 (α)Mlowast minus (Llowast + (∆lowast (α)minus Llowast))] Λlowast = 0
(27)
lArrrArr
λ1m11 (α) + λ2m12 (α) + + λNm1N (α) = 00 + (m11 (α)Mlowast minus Llowast) Λlowast + (∆lowast (α)minus Llowast) Λlowast = 0
On eacutetudie la limite lorsque α minusrarr +infin
(∆lowast (α)minus Llowast) minusrarrαrarr+infin
0
=rArr (m11 (α)Mlowast minus Llowast) Λlowast minusrarrαrarr+infin
0
=rArr (Mlowast minus Llowast) Λlowast = 0
=rArr MlowastΛlowast minus(sumN
j=2 λj
)Vlowast = 0
40 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Donc
MlowastΛlowast minus
Nsumj=2
λj
Vlowast = 0
Drsquoapregraves lrsquohypothegravese de reacutecurrence (214) implique que foralli isin 2 N λi = 0 Il reste agrave montrer que λ1 estneacutecessairement nul ce qui est le cas losque α minusrarr +infin alors λ1m11 (α) minusrarr λ1 = 0 La reacutecurrence est deacutemontreacuteeA chaque fonction sigmoiumlde du corollaire famille libre (page 39) correspond un neurone de la couche cacheacutee Tous ontdes rocircles symeacutetriques les uns par rapport aux autres ce qui ne serait pas le cas si les fonctions de transfert eacutetaient despolynocircmes Crsquoest une des raisons pour lesquelles les reacuteseaux de neurones ont du succegraves Le theacuteoregraveme densiteacute (page 35)et le corollaire famille libre (page 39) sont aussi vraies pour des fonctions du type exponentielle (y b) isin RptimesR minusrarreminus(ltyxgt+b)2 Maintenant qursquoil est prouveacute que les reacuteseaux de neurones conviennent pour modeacuteliser f dans lrsquoeacutequation(22) il reste agrave eacutetudier les meacutethodes qui permettent de trouver les paramegravetres W lowast optimaux de cette fonction
215 Descente de gradient
bull Algorithme et convergence (page 42)bull Calcul du gradient ou reacutetropropagation (page 44)
Lorsqursquoun problegraveme drsquooptimisation nrsquoest pas soluble de maniegravere deacuteterministe il existe des algorithmes permettant detrouver une solution approcheacutee agrave condition toutefois que la fonction agrave maximiser ou minimiser soit deacuterivable ce qui estle cas des reacuteseaux de neurones Plusieurs variantes seront proposeacutees regroupeacutees sous le terme de descente de gradientQuelques lectures
bull An overview of gradient descent optimization algorithms26
bull Implementing a Neural Network from Scratch in Python ndash An Introduction27
26 httpsebastianrudercomoptimizing-gradient-descent27 httpwwwwildmlcom201509implementing-a-neural-network-from-scratch
21 Reacuteseaux de neurones 41
Machine Learning Statistiques et Programmation Version 035930
Algorithme et convergence
Soit g Rrarr R une fonction deacuterivable dont il faut trouver lowastx = argmin
xisinRg (x) le scheacutema suivant illustre la meacutethode de
descente de gradient dans le cas ougrave g (x) = x2
On note xt lrsquoabscisse agrave lrsquoiteacuteration t On notepartg (xt)
partxle gradient de g (x) = x2 Lrsquoabscisse agrave lrsquoiteacuteration t + 1 sera
xt+1 = xt minus εt
[partg (xt)
partx
] εt est le pas de gradient agrave lrsquoiteacuteration t
On suppose maintenant que g est une fonction deacuterivable g Rq rarr R dont il faut trouver le minimum le theacuteoregravemesuivant deacutemontre la convergence de lrsquoalgorithme de descente de gradient agrave condition que certaines hypothegraveses soientveacuterifieacutees Une geacuteneacuteralisation de ce theacuteoregraveme est preacutesenteacutee dans [Driancourt1996]
Theacuteoregraveme T1 convergence de la meacutethode de Newton[Bottou1991]Soit une fonction continue g W isin RM rarr R de classe C1 On suppose les hypothegraveses suivantes veacuterifieacutees
bull H1 argminWisinRq
g (W ) = W lowast est un singleton
bull H2 forallε gt 0 inf|WminusWlowast|gtε
[(W minusW lowast)
primenablag (W )
]gt 0
bull H3 exist (AB) isin R2 tels que forallW isin Rp ∥nablag (W )∥2 ⩽ A2 +B2 ∥W minusW lowast∥2
bull H4 la suite (εt)t⩾0 veacuterifie forallt gt 0 εt isin Rlowast+ et
sumt⩾0 εt = +infin
sumt⩾0 ε
2t lt +infin
Alors la suite (Wt)t⩾0 construite de la maniegravere suivante W0 isin RM forallt ⩾ 0 Wt+1 = Wt minus εtnablag (Wt) veacuterifielimtrarr+infin Wt = W lowast
Lrsquohypothegravese H1 implique que le minimum de la fonction g est unique et lrsquohypothegravese H2 implique que le demi-espacedeacutefini par lrsquoopposeacute du gradient contienne toujours le minimum de la fonction g Lrsquohypothegravese H3 est veacuterifieacutee pour une
42 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
fonction sigmoiumlde elle lrsquoest donc aussi pour toute somme finie de fonctions sigmoiumldes que sont les reacuteseaux de neuronesagrave une couche cacheacuteeDeacutemonstration du theacuteoregravemePartie 1Soit la suite ut = ln
(1 + ε2tx
2)
avec x isin R commesum
t⩾0 ε2t lt +infin ut sim ε2tx
2 on asum
t⩾0 ut lt +infin
Par conseacutequent si vt = eut alorsprodT
t=1 vtTrarrinfinminusrarr D isin R
Partie 2On pose ht = ∥Wt minusW lowast∥2 Donc
ht+1 minus ht = ∥Wt minus εtnablag (Wt)minusW lowast∥2 minus ∥Wt minusW lowast∥2 (28)
Par conseacutequent
ht+1 minus ht = minus2εt(Wt minusW lowast)prime nablag (Wt)︸ ︷︷ ︸
gt0
+ ε2t ∥nablaC (Wt)∥2 ⩽ ε2t ∥nablag (Wt)∥2 ⩽ ε2t(A2 +B2ht
)Drsquoougrave
ht+1 minus ht
(1 + ε2tB
2)⩽ ε2t A
2
On pose πt =prodt
k=1
(1 + ε2kB
2)minus1 alors en multipliant des deux cocircteacutes par πt+1 on obtient
πt+1ht+1 minus πtht ⩽ ε2t A2πt+1
drsquoougrave πq+1hq+1 minus πphp ⩽sumq
t=p ε2t A
2πt+1 ⩽sumq
t=p ε2t A
2Π ⩽sumq
t=p ε2t A
2Π minusrarrtminusrarrinfin
0
Comme la seacuteriesum
t (πt+1ht+1 minus πtht) veacuterifie le critegravere de Cauchy elle est convergente Par conseacutequent
limqrarrinfin
πq+1hq+1 = 0 = limqrarrinfin
Πhq+1
Drsquoougrave limqrarrinfin
hq = 0
Partie 3La seacuterie
sumt (ht+1 minus ht) est convergente car Πht sim πtht
sumt⩾0 ε
2t ∥nablag (Wt)∥2 lrsquoest aussi (drsquoapregraves H3)
Drsquoapregraves (215) la seacuteriesum
t⩾0 εt (Wt minusW lowast)prime nablag (Wt) est donc convergente Or drsquoapregraves les hypothegraveses H2 H4 elle
ne peut lrsquoecirctre que si
limtrarrinfin
Wt = W lowast (29)
Si ce theacuteoregraveme prouve la convergence de la meacutethode de Newton il ne preacutecise pas agrave quelle vitesse cette convergencesrsquoeffectue et celle-ci peut parfois ecirctre tregraves lente Plusieurs variantes ont eacuteteacute deacuteveloppeacutees regroupeacutees sous le terme demeacutethodes de quasi-Newton dans le but drsquoameacuteliorer la vitesse de convergenceCe theacuteoregraveme peut ecirctre eacutetendu dans le cas ougrave la fonction g nrsquoa plus un seul minimum global mais plusieurs minima locaux([Bottou1991]) dans ce cas la suite (Wt) converge vers un mimimum local Dans le cas des reacuteseaux de neurones lafonction agrave optimiser est
G (W ) =
Nsumi=1
e(Yi Y W
i
)=
Nsumi=1
e (Yi f (WXi))
Degraves que les fonctions de transfert ne sont pas lineacuteaires il existe une multitude de minima locaux ce nombre croissantavec celui des coefficients
21 Reacuteseaux de neurones 43
Machine Learning Statistiques et Programmation Version 035930
Calcul du gradient ou reacutetropropagation
Afin de minimiser la fonctionG deacutecrite en (215) lrsquoalgorithme de descente du gradient neacutecessite de calculer le gradientde cette fonction G qui est la somme des gradients parte
partW pour chaque couple (Xi Yi)
partG
partW(W ) =
Nsumi=1
parte (Yi f (WXi))
partW
=
Nsumi=1
CCsumk=1
parte (Yi f (WXi))
partzCk
partzCk
partW
Les notations utiliseacutees sont celles de la figure du perceptron (page 27) Les reacutesultats qui suivent sont pour Xi = Xdonneacute appartenant agrave la suite (Xi) On remarque tout drsquoabord que
parte
partwcij(WX) = zcminus1j
parte
partyci(WX)
parte
partbci(WX) =
parte
partyci(WX)
La reacutetropropagation du gradient consiste donc agrave calculer les termes parteparty
(WX) puisque le gradient srsquoen deacuteduitfacilement La derniegravere couche du reacuteseau de neurones nous permet drsquoobtenir
parte
partyCi(WX) =
CCsumk=1
parte
partzCk(WX)
partzCk
partyCi(WX)
=parte
partzCi(WX) f prime
ci (yCi)
Pour les autres couches c telles que 1 ⩽ c ⩽ C minus 1 on a
parte
partyci=
Cc+1suml=1
parte
partyc+1l
partyc+1l
partyci
=
Cc+1suml=1
parte
partyc+1l
Ccsuml=1
partyc+1l
partzcl
partzclpartyci︸ ︷︷ ︸
=0 si l =i
=
Cc+1suml=1
parte
partyc+1l
partyc+1l
partzci
partzcipartyci
Par conseacutequent
parte
partyci=
Cc+1suml=1
parte
partyc+1lwc+1li
f primeci (yci)
Cette derniegravere formule permet drsquoobtenir par reacutecurrence les deacuteriveacutees parteparty
de la derniegravere couche C agrave la premiegravere et cequel que soit le nombre de couches Cette reacutecurrence inverse de la propagation est appeleacutee reacutetropropagation Cetalgorithme se deacuteduit des eacutequations (215) (215) (215) et (215)
Theacuteoregraveme T2 reacutetropropagationCet algorithme srsquoapplique agrave un reacuteseau de neurones veacuterifiant la deacutefinition du perceptron (page 27) Il srsquoagit de calculersa deacuteriveacutee par rapport aux poids Il se deacuteduit des formules (215) (215) (215) et (215) et suppose que lrsquoalgorithmede propagation (page 28) a eacuteteacute preacutealablement exeacutecuteacute On note yprimeci =
partepartyci
wprimecij =
partepartwcij
et bprimeci = partepartbci
Initialisation
44 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
for i in 1CC
yprimeCi larrminus partepartzCi
(WX) f primeci (yCi)
Reacutecurrence
for c in 1C minus 1
for i in 1Cc
yprimeci larrminus 0
for j in 1Cc+1
yprimeci larrminus yprimeci + yprimec+1j wc+1ji
yprimeci larrminus yprimeci fprimeci
(yprimeci)
Terminaison
for c in 1C
for i in 1Cc
for j in 1Ccminus1
wprimecij larrminus zcminus1j y
primeci
bprimecij larrminus yprimeci
Ces formules sont assez indigestes pour comprendre comment la reacutetropropagation fonctionne La figure suivanteillustre comme le gradient se propage drsquoun neurone au preacuteceacutedente de faccedilon reacutecursive Je la trouve plus simple agraveexploiter lorsqursquoon deacutevie du perceptron classique pour faire des choses hors des clous Je la laisse comme ccedila sans tropdrsquoexplications
21 Reacuteseaux de neurones 45
Machine Learning Statistiques et Programmation Version 035930
Lrsquoideacutee de la reacutetropropagation en supposant connu le gradient de lrsquoerreur par rapport agrave la sortie comment en deacuteduirle gradient par rapport aux coefficients du reacuteseau puis comment le propager agrave chaque entreacutee de sorte qursquoil puisse ecirctretransmis aux neurones de la couche infeacuterieure
46 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
216 Apprentissage drsquoun reacuteseau de neurones
bull Apprentissage avec gradient global (page 48)ndash Meacutethodes du premier ordre (page 48)ndash Meacutethodes du second ordre (page 48)
bull Apprentissage avec gradient stochastique (page 52)
Le terme apprentissage est encore inspireacute de la biologie et se traduit par la minimisation de la fonction (215) ougrave f estun reacuteseau de neurone deacutefini par un perceptron (page 27) Il existe plusieurs meacutethodes pour effectuer celle-ci Chacunedrsquoelles vise agrave minimiser la fonction drsquoerreur
E (W ) = G (W ) =
Nsumi=1
e(Yi minus Y W
i
)=
Nsumi=1
e (Yi minus f (WXi))
Dans tous les cas les diffeacuterents apprentissages utilisent la suite suivante (ϵt) veacuterifiant (210) et proposent uneconvergence vers un minimum local
forallt gt 0 εt isin Rlowast+ et
sumt⩾0
εt = +infinsumt⩾0
ε2t lt +infin (210)
Il est souhaitable drsquoapprendre plusieurs fois la mecircme fonction en modifiant les conditions initiales de ces meacutethodes demaniegravere agrave ameacuteliorer la robustesse de la solution
21 Reacuteseaux de neurones 47
Machine Learning Statistiques et Programmation Version 035930
Apprentissage avec gradient global
Lrsquoalgorithme de reacutetropropagation (page 44) permet drsquoobtenir la deacuteriveacutee de lrsquoerreur e pour un vecteur drsquoentreacutee X Orlrsquoerreur E (W ) agrave minimiser est la somme des erreurs pour chaque exemple Xi le gradient global partE(W )
partW de cette erreurglobale est la somme des gradients pour chaque exemple (voir eacutequation (215)) Parmi les meacutethodes drsquooptimisationbaseacutees sur le gradient global on distingue deux cateacutegories
bull Les meacutethodes du premier ordre elles sont calqueacutees sur la meacutethode de Newton28 et nrsquoutilisent que le gradientbull Les meacutethodes du second ordre ou meacutethodes utilisant un gradient conjugueacute29 elles sont plus coucircteuses en calcul
mais plus performantes puisque elles utilisent la deacuteriveacutee seconde ou une valeur approcheacutee
Meacutethodes du premier ordre
Les meacutethodes du premier ordre sont rarement utiliseacutees Elles sont toutes baseacutees sur le principe de la descente degradient de Newton preacutesenteacutee dans la section Algorithme et convergence (page 42)
Algorithme A1 optimisation du premier ordreInitialiationLe premier jeu de coefficients W0 du reacuteseau de neurones est choisi aleacuteatoirement
t larrminus 0
E0 larrminussumN
i=1 e (Yi minus f (W0 Xi))
Calcul du gradientgt larrminus partEt
partW (Wt) =sumN
i=1 eprime (Yi minus f (Wt Xi))
Mise agrave jour
Wt+1 larrminus Wt minus ϵtgtEt+1 larrminus
sumNi=1 e (Yi minus f (Wt+1 Xi))
t larrminus t+ 1
TerminaisonSi Et
Etminus1asymp 1 (ou ∥gt∥ asymp 0) alors lrsquoapprentissage a convergeacute sinon retour au calcul du gradient
La condition drsquoarrecirct peut-ecirctre plus ou moins stricte selon les besoins du problegraveme Cet algorithme converge vers unminimum local de la fonction drsquoerreur (drsquoapregraves le theacuteoregraveme de convergence (page 42) mais la vitesse de convergenceest inconnue
Meacutethodes du second ordre
Lrsquoalgorithme apprentissage global (page 48) fournit le canevas des meacutethodes drsquooptimisation du second ordre La miseagrave jour des coefficients est diffeacuterente car elle prend en compte les derniegraveres valeurs des coefficients ainsi que les derniersgradients calculeacutes Ce passeacute va ecirctre utiliseacute pour estimer une direction de recherche pour le minimum diffeacuterente de celledu gradient cette direction est appeleacutee gradient conjugueacute (voir [Moreacute1977])Ces techniques sont baseacutees sur une approximation du second degreacute de la fonction agrave minimiser On note M le nombrede coefficients du reacuteseau de neurones (biais compris) Soit h RM rarr R la fonction drsquoerreur associeacutee au reacuteseau deneurones h (W ) =
sumi e (Yi f (WXi)) Au voisinage de W0 un deacuteveloppement limiteacute donne
h (W ) = h (W0) +parth (W0)
partW(W minusW0) + (W minusW0)
prime part2h (W0)
partW 2(W minusW0) + o ∥W minusW0∥2
28 httpsfrwikipediaorgwikiMC3A9thode_de_Newton29 httpsfrwikipediaorgwikiMC3A9thode_du_gradient_conjuguC3A9
48 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Par conseacutequent sur un voisinage de W0 la fonction h (W ) admet un minimum local si part2h(W0)partW 2 est deacutefinie positive
strictement
Rappel part2h (W0)
partW 2est deacutefinie positive strictementlArrrArr forallZ isin RN Z = 0 =rArr Z prime part
2h (W0)
partW 2Z gt 0
Une matrice symeacutetrique deacutefinie strictement positive est inversible et le minimum est atteint pour la valeur
Wmin = W0 +1
2
[part2h (W0)
partW 2
]minus1 [parth (W0)
partW
]Neacuteanmoins pour un reacuteseau de neurones le calcul de la deacuteriveacutee seconde est coucircteux son inversion eacutegalement Crsquoestpourquoi les derniegraveres valeurs des coefficients et du gradient sont utiliseacutees afin drsquoapprocher cette deacuteriveacutee seconde oudirectement son inverse Deux meacutethodes drsquoapproximation sont preacutesenteacutees
bull Lrsquoalgorithme BFGS (Broyden-Fletcher-Goldfarb-Shano)30 ([Broyden1967] [Fletcher1993]) voir aussi lesversions L-BFGS31
bull Lrsquoalgoritmhe DFP (Davidon-Fletcher-Powell)32 ([Davidon1959] [Fletcher1963])La figure du gradient conjugueacute (page 49) est couramment employeacutee pour illustrer lrsquointeacuterecirct des meacutethodes de gradientconjugueacute Le problegraveme consiste agrave trouver le minimum drsquoune fonction quadratique par exemple G (x y) = 3x2 + y2Tandis que le gradient est orthogonal aux lignes de niveaux de la fonction G le gradient conjugueacute se dirige plussucircrement vers le minimum global
Figure F1 Gradient conjugueacute
30 httpsenwikipediaorgwikiBroydenE28093FletcherE28093GoldfarbE28093Shanno_algorithm31 httpsenwikipediaorgwikiLimited-memory_BFGS32 httpsenwikipediaorgwikiDavidonE28093FletcherE28093Powell_formula
21 Reacuteseaux de neurones 49
Machine Learning Statistiques et Programmation Version 035930
Gradient et gradient conjugueacute sur une ligne de niveau de la fonction G (x y) = 3x2+y2 le gradient est orthogonal auxlignes de niveaux de la fonction G mais cette direction est rarement la bonne agrave moins que le point (x y) se situe surun des axes des ellipses le gradient conjugueacute agregravege les derniers deacuteplacements et propose une direction de rechercheplus plausible pour le minimum de la fonction Voir Conjugate Gradient Method33
Ces meacutethodes proposent une estimation de la deacuteriveacutee seconde (ou de son inverse) utiliseacutee en (216) Dans les meacutethodesdu premier ordre une iteacuteration permet de calculer les poidsWt+1 agrave partir des poidsWt et du gradientGt Si ce gradientest petit on peut supposer que Gt+1 est presque eacutegal au produit de la deacuteriveacutee seconde par Gt Cette relation est mise agraveprofit pour construire une estimation de la deacuteriveacutee seconde Cette matrice noteacutee Bt dans lrsquoalgorithme BFGS (page 50)est drsquoabord supposeacutee eacutegale agrave lrsquoidentiteacute puis actualiseacutee agrave chaque iteacuteration en tenant de lrsquoinformation apporteacutee par chaquedeacuteplacement
Algorithme A2 BFGSLe nombre de paramegravetres de la fonction f est M InitialisationLe premier jeu de coefficients W0 du reacuteseau de neurones est choisi aleacuteatoirement
t larrminus 0
E0 larrminussumN
i=1 e (Yi minus f (W0 Xi))B0 larrminus IMi larrminus 0
Calcul du gradient
gt larrminus partEt
partW (Wt) =sumN
i=1 eprime (Yi minus f (Wt Xi))
ct larrminus Btgt
Mise agrave jour des coefficients
ϵlowast larrminus arg infϵ
sumNi=1 e (Yi minus f (Wt minus ϵct Xi))
Wt+1 larrminus Wt minus ϵlowastctEt+1 larrminus
sumNi=1 e (Yi minus f (Wt+1 Xi))
t larrminus t+ 1
Mise agrave jour de la marice math`B_t`
si tminus i ⩾ M ou gprimetminus1Btminus1gtminus1 ⩽ 0 ou gprimetminus1Btminus1 (gt minus gtminus1) ⩽ 0
Bt larrminus IMilarrminus t
sinonst larrminusWt minusWtminus1
dt larrminus gt minus gtminus1
Bt larrminus Btminus1 +
(1 +
dprimetBtminus1dtdprimetst
)sts
primet
sprimetdtminus std
primetBtminus1 +Btminus1dts
primet
dprimetst
TerminaisonSi Et
Etminus1asymp 1 alors lrsquoapprentissage a convergeacute sinon retour au calcul du gradient
33 httpsenwikipediaorgwikiConjugate_gradient_method
50 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Lorsque la matrice Bt est eacutegale agrave lrsquoidentiteacute le gradient conjugueacute est eacutegal au gradient Au fur et agrave mesure des iteacuterationscette matrice toujours symeacutetrique eacutevolue en ameacuteliorant la convergence de lrsquooptimisation Neacuteanmoins la matrice Bt
doit ecirctre ńănettoyeacuteeă (eacutegale agrave lrsquoidentiteacute) freacutequemment afin drsquoeacuteviter qursquoelle nrsquoagregravege un passeacute trop lointain Elle estaussi nettoyeacutee lorsque le gradient conjugueacute semble trop srsquoeacuteloigner du veacuteritable gradient et devient plus proche drsquounedirection perpendiculaireLa convergence de cet algorithme dans le cas des reacuteseaux de neurones est plus rapide qursquoun algorithme du premierordre une preuve en est donneacutee dans [Driancourt1996]En pratique la recherche de ϵlowast est reacuteduite car le calcul de lrsquoerreur est souvent coucircteux il peut ecirctre effectueacute sur un grandnombre drsquoexemples Crsquoest pourquoi on remplace lrsquoeacutetape de mise agrave jour de lrsquoalgorithme BFGS (page 50) par celle-ci
Algorithme A3 BFGSiquestLe nombre de paramegravetre de la fonction f est M Initialisation calcul du gradientVoir BFGS (page 50)Recherche de math`epsilon^`
ϵlowast larrminus ϵ0while Et+1 ⩾ Et et ϵlowast ≫ 0
ϵlowast larrminus ϵlowast
2
Wt+1 larrminusWt minus ϵlowastct
Et+1 larrminussumN
i=1 e (Yi minus f (Wt+1 Xi))
if ϵlowast asymp 0 et Bt = IMBt larrminus IMilarrminus t
Retour au calcul du gradient
Mise agrave jour des coefficients
Wt+1 larrminus Wt minus ϵlowastctEt+1 larrminus
sumNi=1 e (Yi minus f (Wt+1 Xi))
t larrminus t+ 1
Mise agrave jour de la matrice math`B_t` temrinaisonVoir BFGS (page 50)
Lrsquoalgorithme DFP est aussi un algorithme de gradient conjugueacute qui propose une approximation diffeacuterente de lrsquoinversede la deacuteriveacutee seconde
Algorithme A4 DFPLe nombre de paramegravetre de la fonction f est M InitialisationLe premier jeu de coefficients W0 du reacuteseau de neurones est choisi aleacuteatoirement
t larrminus 0
E0 larrminussumN
i=1 e (Yi minus f (W0 Xi))B0 larrminus IMi larrminus 0
21 Reacuteseaux de neurones 51
Machine Learning Statistiques et Programmation Version 035930
Calcul du gradient
gt larrminus partEt
partW (Wt) =sumN
i=1 eprime (Yi minus f (Wt Xi))
ct larrminus Btgt
Mise agrave jour des coefficients
ϵlowast larrminus arg infϵ
sumNi=1 e (Yi minus f (Wt minus ϵct Xi))
Wt+1 larrminus Wt minus ϵlowastctEt+1 larrminus
sumNi=1 e (Yi minus f (Wt+1 Xi))
t larrminus t+ 1
Mise agrave jour de la matrice math`B_t`
si tminus i ⩾ M ou gprimetminus1Btminus1gtminus1 ⩽ 0 ou gprimetminus1Btminus1 (gt minus gtminus1) ⩽ 0
Bt larrminus IMilarrminus t
sinondt larrminusWt minusWtminus1
st larrminus gt minus gtminus1
Bt larrminus B_t-1 + dfracd_t drsquo_t drsquo_t s_t - dfracB_t-1 s_t srsquo_t B_t-1 srsquo_t B_t-1 s_t `
TerminaisonSi Et
Etminus1asymp 1 alors lrsquoapprentissage a convergeacute sinon retour agrave du calcul du gradient
Seule lrsquoeacutetape de mise agrave jour Bt diffegravere dans les algorithmes BFGS (page 50) et DFP (page 51) Comme lrsquoalgorithmeBFGS (page 50) on peut construire une version DFP (page 51)iquestinspireacutee de lrsquoalgorithme BFGSiquest (page 51)
Apprentissage avec gradient stochastique
Compte tenu des courbes drsquoerreurs tregraves accidenteacutees (page 52) dessineacutees par les reacuteseaux de neurones il existe unemultitude de minima locaux De ce fait lrsquoapprentissage global converge rarement vers le minimum global de la fonctiondrsquoerreur lorsqursquoon applique les algorithmes baseacutes sur le gradient global Lrsquoapprentissage avec gradient stochastiqueest une solution permettant de mieux explorer ces courbes drsquoerreurs De plus les meacutethodes de gradient conjugueacuteneacutecessite le stockage drsquoune matrice trop grande parfois pour des fonctions ayant quelques milliers de paramegravetres Crsquoestpourquoi lrsquoapprentissage avec gradient stochastique est souvent preacutefeacutereacute agrave lrsquoapprentissage global pour de grands reacuteseauxde neurones alors que les meacutethodes du second ordre trop coucircteuses en calcul sont cantonneacutees agrave de petits reacuteseaux Encontrepartie la convergence est plus lente La deacutemonstration de cette convergence neacutecessite lrsquoutilisation de quasi-martingales et est une convergence presque sucircre [Bottou1991]
Figure F2 Exemple de minimal locaux
52 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Algprithme A1 apprentissage stochastiqueInitialisationLe premier jeu de coefficients W0 du reacuteseau de neurones est choisi aleacuteatoirement
t larrminus 0
E0 larrminussumN
i=1 e (Yi minus f (W0 Xi))
Reacutecurrence
Wt0 larrminusW0
for tprime in 0N minus 1
ilarrminus nombre aleacuteatoire dans 1 Ng larrminus partE
partW (Wttprime) = eprime (Yi minus f (Wttprime Xi))
Wttprime+1 larrminusWttprime minus ϵtg
Wt+1 larrminusWtN
Et+1 larrminussumN
i=1 e (Yi minus f (Wt+1 Xi))
tlarrminus t+ 1
TerminaisonSi Et
Etminus1asymp 1 alors lrsquoapprentissage a convergeacute sinon retour au calcul du gradient
En pratique il est utile de converser le meilleur jeu de coefficients W lowast = argminu⩾0
Eu car la suite (Eu)u⩾0 nrsquoest pas
une suite deacutecroissante
21 Reacuteseaux de neurones 53
Machine Learning Statistiques et Programmation Version 035930
217 Classification
bull Vraisemblance drsquoun eacutechantillon de variable suivant une loi multinomiale (page 54)bull Problegraveme de classification pour les reacuteseaux de neurones (page 55)bull Reacuteseau de neurones adeacutequat (page 56)
Vraisemblance drsquoun eacutechantillon de variable suivant une loi multinomiale
Soit (Yi)1⩽i⩽N un eacutechantillon de variables aleacuteatoires iid suivant la loi multinomialeM (p1 pC) On deacutefinitforallk isin 1 middot middot middot C dk = 1
N
sumNi=1 11Yi=k La vraisemblance de lrsquoeacutechantillon est
L (Y1 YN p1 pC) =
nprodi=1
pYi
lnL (Y1 YN p1 pC) =
nsumi=1
ln pYi
lnL (Y1 YN p1 pC) =
Csumk=1
[(ln pk)
Nsumi=1
11Yi=k
]
lnL (Y1 YN p1 pC) = N
Csumk=1
dk ln pk
Cette fonction est aussi appeleacutee distance de Kullback-Leiber34 ([Kullback1951]) elle mesure la distance entre deuxdistributions de variables aleacuteatoires discregravetes Liquestestimateur de maximum de vraisemblance35 (emv) est la solution duproblegraveme suivant
Problegraveme P1 estimateur du maximum de vraisemblanceSoit un vecteur (d1 dN ) tel que sumN
k=1 dk = 1forallk isin 1 N dk ⩾ 0
On cherche le vecteur (plowast1 plowastN ) veacuterifiant
(plowast1 plowastN ) = argmax
(p1pC)isinRC
sumCk=1 dk ln pk
avecforallk isin 1 middot middot middot C pk ⩾ 0
etsumC
k=1 pk = 1
Theacuteoregraveme T1 reacutesolution du problegraveme du maximum de vraisemblanceLa solution du problegraveme du maximum de vraisemblance (page 54) est le vecteur
(plowast1 plowastN ) = (d1 dN )
34 httpsfrwikipediaorgwikiDivergence_de_Kullback-Leibler35 httpsfrwikipediaorgwikiMaximum_de_vraisemblance
54 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
DeacutemonstrationSoit un vecteur (p1 pN ) veacuterifiant les conditions sumN
k=1 pk = 1forallk isin 1 N pk ⩾ 0
La fonction x minusrarr lnx est concave drsquoougrave
∆ =
Csumk=1
dk ln pk minusCsum
k=1
dk ln dk
=
Csumk=1
dk (ln pk minus ln dk) =
Csumk=1
dk lnpkdk
⩽ ln
(Csum
k=1
dkpkdk
)= ln
(Csum
k=1
pk
)= ln 1 = 0
⩽ 0
La distance de KullBack-Leiber compare deux distributions de probabiliteacutes entre elles Crsquoest elle qui va faire le lienentre le problegraveme de classification discret (page 32) et les reacuteseaux de neurones pour lesquels il faut impeacuterativementune fonction drsquoerreur deacuterivable
Problegraveme de classification pour les reacuteseaux de neurones
Le problegraveme de classification (page 32) est un cas particulier de celui qui suit pour lequel il nrsquoest pas neacutecessaire deconnaicirctre la classe drsquoappartenance de chaque exemple mais seulement les probabiliteacutes drsquoappartenance de cet exempleagrave chacune des classesSoient une variable aleacuteatoire continue X isin Rp et une variable aleacuteatoire discregravete multinomiale Y isin 1 middot middot middot C onveut estimer la loi de
Y |X simM (p1 (WX) pC (WX)) avec W isin RM
Le vecteur (p1 (WX) pC (WX)) est une fonction f de (WX) ougrave W est lrsquoensemble des M paramegravetres dumodegravele Cette fonction possegravede p entreacutees et C sorties Comme pour le problegraveme de la reacutegression on cherche les poidsW qui correspondent le mieux agrave lrsquoeacutechantillon
A =
(Xi yi =
(ηki)1⩽k⩽C
)isin Rp times [0 1]
C tel quecsum
k=1
yki = 1
∣∣∣∣∣ 1 ⩽ i ⩽ N
On suppose que les variables (Yi|Xi)1⩽i⩽N suivent les lois respectives (M (yi))1⩽i⩽N et sont indeacutependantes entreelles la vraisemblance du modegravele veacuterifie drsquoapregraves lrsquoeacutequation (217)
LW propNprodi=1
Cprodk=1
[pk (WXi)]P(Yi=k)
lnLW propNsumi=1
Csumk=1
ηki ln [pk (WXi)]
La solution du problegravemelowastW = argmax
WisinRl
LW est celle drsquoun problegraveme drsquooptimisation sous contrainte Afin de contourner
ce problegraveme on deacutefinit la fonction f
f RM times Rp minusrarr RC
forall (Wx) isin RM times Rp f (Wx) = (f1 (Wx)) fC (Wx)
et foralli isin 1 middot middot middot N forallk isin 1 middot middot middot C pk (WXi) =efk(WXi)sumCl=1 e
fl(WXi)
21 Reacuteseaux de neurones 55
Machine Learning Statistiques et Programmation Version 035930
Les contraintes sur(pk (WXi)
)sont bien veacuterifieacutees
foralli isin 1 middot middot middot N forallk isin 1 middot middot middot C pk (WXi) ⩾ 0
foralli isin 1 middot middot middot N sumC
k=1 pk (WXi) = 1
On en deacuteduit que
lnLW propNsumi=1
Csumk=1
ηki
[fk (WXi)minus ln
[Csuml=1
efl(WXi)
]]
lnLW propNsumi=1
Csumk=1
ηki fk (WXi)minusNsumi=1
ln
[Csuml=1
efl(WXi)
]Csum
k=1
ηki︸ ︷︷ ︸=1
Drsquoougrave
lnLW propsumN
i=1
sumCk=1 η
ki fk (WXi)minus
sumNi=1 ln
[sumCl=1 e
fl(WXi)]
Ceci megravene agrave la deacutefinition du problegraveme de classification suivant
Problegraveme P2 classificationSoit A lrsquoeacutechantillon suivant
A =
(Xi yi =
(ηki)1⩽k⩽C
)isin Rp times RC tel que
csumk=1
ηki = 1
∣∣∣∣∣ 1 ⩽ i ⩽ N
yki repreacutesente la probabiliteacute que lrsquoeacuteleacutement Xi appartiennent agrave la classe k ηki = P (Yi = k|Xi)
Le classifieur chercheacute est une fonction f deacutefinie par
f RM times Rp minusrarr RC
(WX) minusrarr (f1 (WX) fp (WX))
Dont le vecteur de poids W lowast est eacutegal agrave
W lowast = argmaxW
Nsumi=1
Csumk=1
ηki fk (WXi)minusNsumi=1
ln
[Csuml=1
efl(WXi)
]
Reacuteseau de neurones adeacutequat
Dans le problegraveme preacuteceacutedent la maximisation delowastW = argmax
WisinRM
LW aboutit au choix drsquoune fonction
X isin Rp minusrarr f(lowastWX) isin RC
Le reacuteseau de neurones suivant (page 56) g (WX) isin RM times Rp minusrarr RC choisi pour modeacuteliser f aura pour sorties
X isin Rp minusrarr g(lowastWX) isin RC
forallk isin 1 middot middot middot C gk (WX) = efk(WX)
Figure F1 Reacuteseau de neurones adeacutequat pour la classification
56 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
On en deacuteduit que la fonction de transert des neurones de la couche de sortie est x minusrarr ex La probabiliteacute pour le
vecteur x isin Rp drsquoappartenir agrave la classe k isin 1 middot middot middot C est pk(lowastWx) = P (Y = k|x) = gk(
lowastWx)sumC
l=1 gl(lowastWx)
La fonction
drsquoerreur agrave minimiser est lrsquoopposeacute de la log-vraisemblance du modegravele
lowastW = argmin
WisinRM
[Nsumi=1
(minus
Csumk=1
ηki ln (gk (WXi)) + ln
[Csuml=1
gl (WXi)
])]
= argminWisinRM
[Nsumi=1
h(WXi η
ki
)]
On note Crn le nombre de couches du reacuteseau de neurones zkCrnest la sortie k avec k isin 1 middot middot middot C gk (Wx) =
zkCrn= ey
kCrn ougrave ykCrn
est le potentiel du neurone k de la couche de sortieOn calcule
parth(WXi y
ki
)partykCrn
= minusηki +ziCrnsumC
m=1 zmCrn
= pk(lowastWx)minus ηki
Cette eacutequation permet drsquoadapter lrsquoalgorithme de la reacutetropropagation (page 44) deacutecrivant reacutetropropagation pour leproblegraveme de la classification et pour un exemple
(X y =
(ηk)1⩽k⩽C
) Seule la couche de sortie change
Algorithme A1 reacutetropropagation
21 Reacuteseaux de neurones 57
Machine Learning Statistiques et Programmation Version 035930
Cet algorithme de reacutetropropagation est lrsquoadaptation de reacutetropropagation (page 44) pour le problegraveme de la classificationIl suppose que lrsquoalgorithme de propagation (page 28) a eacuteteacute preacutealablement exeacutecuteacute On note yprimeci = parte
partyci wprime
cij =parte
partwcijet bprimeci = parte
partbci
Initialiasation
for i in 1CC
yprimeCi larrminuszCisumCl=1 zCl
minus ηi
Reacutecurrence TerminaisonVoir reacutetropropagation (page 44)
On veacuterifie que le gradient srsquoannule lorsque le reacuteseau de neurones retourne pour lrsquoexemple (Xi yi) la distribution deY |Xi sim M (yi) Cet algorithme de reacutetropropagation utilise un vecteur deacutesireacute de probabiliteacutes (η1 ηCC
) veacuterifiantsumCC
i=1 ηi = 1 Lrsquoexpeacuterience montre qursquoil est preacutefeacuterable drsquoutiliser un vecteur veacuterifiant la contrainte
foralli isin 1 CC min ηi 1minus ηi gt α
avec α gt 0
Geacuteneacuteralement α est de lrsquoordre de 0 1 ou 0 01 Cette contrainte facilite le calcul de la vraisemblance et eacutevitelrsquoobtention de gradients quasi-nuls qui freinent lrsquoapprentissage lorsque les fonctions exponnetielles sont satureacutees (voir[Bishop1995])
218 Prolongements
bull Base drsquoapprentissage et base de test (page 58)bull Fonction de transfert agrave base radiale (page 60)bull Poids partageacutes (page 61)bull Deacuteriveacutee par rapport aux entreacutees (page 61)bull Reacutegularisation ou Decay (page 61)bull Problegravemes de gradients (page 62)bull Seacutelection de connexions (page 63)
Base drsquoapprentissage et base de test
Les deux exemples de reacutegression et de classification La reacutegression (page 28) et Problegraveme de classification pour lesreacuteseaux de neurones (page 55) ont montreacute que la structure du reacuteseau de neurones la mieux adapteacutee a une grandeimportance Dans ces deux cas une rapide veacuterification visuelle permet de juger de la qualiteacute du modegravele obtenu apregravesapprentissage mais bien souvent cette ńăvisionă est inaccessible pour des dimensions supeacuterieures agrave deux Le meilleurmoyen de jauger le modegravele appris est de veacuterifier si lrsquoerreur obtenue sur une base ayant servi agrave lrsquoapprentissage (ou basedrsquoapprentissage) est conserveacutee sur une autre base (ou base de test) que le modegravele deacutecouvre pour la premiegravere foisSoit B = (Xi Yi) |1 ⩽ i ⩽ N lrsquoensemble des observations disponibles Cet ensemble est aleacuteatoirement scindeacute endeux sous-ensembles Ba et Bt de telle sorte que
Ba = empty et Bt = emptyBa cupBt = B et Ba capBt = empty
Ba
BacupBt= p isin]0 1[ en regravegle geacuteneacuterale p isin
[12
34
]58 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Ce deacutecoupage est valide si tous les exemples de la base B obeacuteissent agrave la mecircme loi les deux bases Ba et Bt sont diteshomogegravenes Le reacuteseau de neurones sera donc appris sur la base drsquoapprentissage Ba et ńătesteacuteă sur la base de test BtLe test consiste agrave veacuterifier que lrsquoerreur sur Bt est sensiblement eacutegale agrave celle sur Ba auquel cas on dit que le modegravele(ou reacuteseau de neurones) geacuteneacuteralise bien Le modegravele trouveacute nrsquoest pas pour autant le bon modegravele mais il est robuste Lacourbe figure suivante illustre une deacutefinition du modegravele optimal comme eacutetant celui qui minimise lrsquoerreur sur la base detest Lorsque le modegravele choisi nrsquoest pas celui-lagrave deux cas sont possibles
bull Le nombre de coefficients est trop petit le modegravele geacuteneacuteralise bien mais il existe drsquoautres modegraveles meilleurs pourlesquels lrsquoerreur drsquoapprentissage et de test est moindre
bull Le nombre de coefficients est trop grand le modegravele geacuteneacuteralise mal lrsquoerreur drsquoapprentissage est faible et lrsquoerreurde test eacuteleveacutee le reacuteseau a appris la base drsquoapprentissage par coeur
Figure F1 Modegravele optimal pour la base de test
Ce deacutecoupage des donneacutees en deux bases drsquoapprentissage et de test est freacutequemment utiliseacute pour toute estimation demodegraveles reacutesultant drsquoune optimisation reacutealiseacutee au moyen drsquoun algorithme iteacuteratif Crsquoest le cas par exemple des modegravelesde Markov cacheacutes Elle permet de srsquoassurer qursquoun modegravele srsquoadapte bien agrave de nouvelles donneacutees
21 Reacuteseaux de neurones 59
Machine Learning Statistiques et Programmation Version 035930
Fonction de transfert agrave base radiale
La fonction de transfert est dans ce cas agrave base radiale (souvent abreacutegeacutee par RBF pour radial basis function36 Elle nesrsquoapplique pas au produit scalaire entre le vecteur des poids et celui des entreacutees mais agrave la distance euclidienne entre cesvecteurs
Deacutefinition D1 neurone distanceUn neurone distance agrave p entreacutees est une fonction f Rp+1 times Rp minusrarr R deacutefinie par
bull g Rrarr Rbull W isin Rp+1 W = (w1 wp+1) = (W prime wp+1)
bull forallx isin Rp f (Wx) = eminus∥Wprimeminusx∥2+wp+1 avec x = (x1 xp)
Ce neurone est un cas particulier du suivant qui pondegravere chaque dimension par un coefficient Toutefois ce neuronepossegravede 2p+ 1 coefficients ougrave p est le nombre drsquoentreacutee
Deacutefinition D2 neurone distance pondeacutereacuteePour un vecteur donneacute W isin Rp = (w1 wp) on note W j
i = (wi wj) Un neurone distance pondeacutereacutee agrave pentreacutees est une fonction f R2p+1 times Rp minusrarr R deacutefinie par
bull g Rrarr Rbull W isin R2p+1 W = (w1 w2p+1) = (w1 w2p+1)
bull forallx isin Rp f (Wx) = exp[minus[sump
i=1 wp+i (wi minus xi)2]+ wp+1
]avec x = (x1 xp)
La fonction de transfert est x minusrarr ex est le potentiel de ce neurone donc y = minus[sump
i=1 wp+i (wi minus xi)2]+ wp+1
Lrsquoalgorithme de reacutetropropagation (page 44) est modifieacute par lrsquoinsertion drsquoun tel neurone dans un reacuteseau ainsi que lareacutetropropagation Le plus simple tout drsquoabord
1 ⩽ i ⩽ pparty
partwi= minus2wp+i (wi minus xi)
p+ 1 ⩽ i ⩽ 2pparty
partwi= minus (wi minus xi)
2
i = 2p+ 1party
partwi= minus1
Pour le neurone distance simple la ligne (218) est superflue tous les coefficients (wi)p+1⩽i⩽2p sont eacutegaux agrave 1 Larelation (215) reste vraie mais nrsquoaboutit plus agraveeqalgo_retro_5 celle-ci devient en supposant que la couche drsquoindicec+ 1 ne contient que des neurones deacutefinie par la deacutefinition preacuteceacutedente
parte
partyci=
Cc+1suml=1
parte
partyc+1l
partyc+1l
partzci
partzcipartyci
=
Cc+1suml=1
parte
partyc+1l(2wc+1lp+i (wc+1li minus zci))
partzcipartyci
36 httpsenwikipediaorgwikiRadial_basis_function
60 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Poids partageacutes
Les poids partageacutes sont simplement un ensemble de poids qui sont contraints agrave conserver la mecircme valeur Soit G ungroupe de poids partageacutes dont la valeur est wG Soit Xk et Yk un exemple de la base drsquoapprentissage (entreacutees et sortiesdeacutesireacutees) lrsquoerreur commise par le reacuteseau de neurones est e (WXk Yk)
parte (WXk Yk)
partwG=sumwisinG
parte (WXk Yk)
partwG
partwG
partw=sumwisinG
sumparte (WXk Yk)
partwG
Par conseacutequent si un poids w appartient agrave un groupe G de poids partageacutes sa valeur agrave lrsquoiteacuteration suivante sera
wt+1 = wt minus εt
(sumwisinG
parte (WXk Yk)
partw
)
Cette ideacutee est utiliseacutee dans les reacuteseaux neuronaux convolutifs37 (deep learning38 CS231n Convolutional NeuralNetworks for Visual Recognition39)
Deacuteriveacutee par rapport aux entreacutees
On note (Xk Yk) un exemple de la base drsquoapprentissage Le reacuteseau de neurones est composeacute de C couches Ci
est le nombre de neurones sur la iegraveme couche C0 est le nombre drsquoentreacutees Les entreacutees sont appeleacutees (z0i)1⩽i⩽C0
(y1i)1⩽i⩽C1sont les potentiels des neurones de la premiegravere couche on en deacuteduit que dans le cas drsquoun neurone classique
(non distance)
parte (WXk Yk)
partz0i=
C1sumj=1
parte (WXk Yk)
party1j
party1jpartz0i
=
C1sumj=1
parte (WXk Yk)
party1jw1ji
Comme le potentiel drsquoun neurone distance nrsquoest pas lineacuteaire par rapport aux entreacutees(y =
Nsumi=1
(wi minus z0i)2+ b
) la
formule devient dans ce cas
parte (WXk Yk)
partz0i=
C1sumj=1
parte (WXk Yk)
party1j
party1jpartz0i
= minus2C1sumj=1
parte (WXk Yk)
party1j(w1ji minus z0i)
Reacutegularisation ou Decay
Lors de lrsquoapprentissage comme les fonctions de seuil du reacuteseau de neurones sont borneacutees pour une grande variationdes coefficients la sortie varie peu De plus pour ces grandes valeurs la deacuteriveacutee est quasi nulle et lrsquoapprentissage srsquoentrouve ralenti Par conseacutequent il est preacutefeacuterable drsquoeacuteviter ce cas et crsquoest pourquoi un terme de reacutegularisation est ajouteacutelors de la mise agrave jour des coefficients (voir [Bishop1995]) Lrsquoideacutee consiste agrave ajouter agrave lrsquoerreur une peacutenaliteacute fonction descoefficients du reacuteseau de neurones Ereg = E + λ
sumi w2
i
Et lors de la mise agrave jour du poids wti agrave lrsquoiteacuteration t+ 1 wt+1
i = wti minus ϵt
[partEpartwiminus 2λwt
i
]
Le coefficient λ peut deacutecroicirctre avec le nombre drsquoiteacuterations et est en geacuteneacuteral de lrsquoordre de 0 01 pour un apprentissageavec gradient global plus faible pour un apprentissage avec gradient stochastique
37 httpsfrwikipediaorgwikiRC3A9seau_neuronal_convolutif38 httpsfrwikipediaorgwikiApprentissage_profond39 httpcs231ngithubioneural-networks-1layers
21 Reacuteseaux de neurones 61
Machine Learning Statistiques et Programmation Version 035930
Problegravemes de gradients
La descente du gradient repose sur lrsquoalgorithme de reacutetropropagation (page 44) qui propoge lrsquoerreur depuis la derniegraverecouche jusqursquoagrave la premiegravere Pour peu qursquoune fonction de seuil soit satureacutee Hors la zone rouge le gradient est tregravesatteacutenueacute
import matplotlibpyplot as pltimport numpydef softmax(x)
return 10 (1 + numpyexp(-x))def dsoftmax(x)
t = numpyexp(-x)return t (1 + t)2
x = numpyarange(-1010 01)y = softmax(x)dy = dsoftmax(x)fig ax = pltsubplots(11)axplot(xy label=softmax)axplot(xdy label=deacuteriveacutee)axset_ylim([-01 11])axplot([-5 -5] [-01 11] r)axplot([5 5] [-01 11] r)axlegend(loc=2)pltshow()
62 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Apregraves deux couches de fonctions de transferts le gradient est souvent diminueacute On appelle ce pheacutenomegravene le Vanishinggradient problem40 Crsquoest drsquoautant plus probable que le reacuteseau est gros Quelques pistes pour y remeacutedier RecurrentNeural Networks Tutorial Part 3 ndash Backpropagation Through Time and Vanishing Gradients41 Why are deep neuralnetworks hard to train42 Lrsquoarticle Deep Residual Learning for Image Recognition43 preacutesente une structure de reacuteseauqui va dnas le mecircme sens De la mecircme maniegravere la norme du gradient peut exploser plus particuliegraverement dans le casdes reacuteseaux de neurones reacutecurrents44 Understanding the exploding gradient problem45
Seacutelection de connexions
Ce paragraphe preacutesente un algorithme de seacutelection de lrsquoarchitecture drsquoun reacuteseau de neurones proposeacute par Cottrel et Aldans [Cottrel1995] La meacutethode est applicable agrave tout reacuteseau de neurones mais nrsquoa eacuteteacute deacutemontreacutee que pour la classe dereacuteseau de neurones utiliseacutee pour la reacutegression (page 28) Les proprieacuteteacutes qui suivent ne sont vraies que des reacuteseaux agrave unecouche cacheacutee et dont les sorties sont lineacuteaires Soit (Xk Yk) un exemple de la base drsquoapprentissage les reacutesidus de lareacutegression sont supposeacutes normaux et iid Lrsquoerreur est donc (voir Formulation du problegraveme de la reacutegression (page 34)) e (WXk Yk) = (f (WXk)minus Yk)
2On peut estimer la loi asymptotique des coefficients du reacuteseau de neurones Des connexions ayant un rocircle peu importantpeuvent alors ecirctre supprimeacutees sans nuire agrave lrsquoapprentissage en testant la nulliteacute du coefficient associeacute On note W lespoids trouveacutes par apprentissage et
lowastW les poids optimaux On deacutefinit
la suite εk = f(W Xk
)minus Yk σ
2N =
1
N
Nsumk=1
εk2
la matrice ΣN =1
N
[nabla
We (WXk Yk)
] [nabla
We (WXk Yk)
]prime
Theacuteoregraveme T1 loi asymptotique des coefficientsSoit f un reacuteseau de neurone deacutefini par perceptron (page 27) composeacute de
bull une couche drsquoentreacuteesbull une couche cacheacutee dont les fonctions de transfert sont sigmoiumldesbull une couche de sortie dont les fonctions de transfert sont lineacuteaires
Ce reacuteseau sert de modegravele pour la fonction f dans le problegraveme de reacutegression (page 28) avec un eacutechantillon((X1 Y1) (XN YN )) les reacutesidus sont supposeacutes normaux La suite (ϵk) deacutefinie par (218) veacuterifie
1
N
Nsumi=1
ϵk = 0 = E[f(W X
)minus Y
]Et le vecteur aleacuteatoire W minusW lowast veacuterifie
radicN[W minusW lowast
]Trarr+infinminusrarr N
(0 σN
2ΣN
)Ougrave la matrice ΣN est deacutefinie par (218)endxtheorem
40 httpsenwikipediaorgwikiVanishing_gradient_problem41 httpwwwwildmlcom201510recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients42 httpneuralnetworksanddeeplearningcomchap5html43 httparxivorgpdf151203385v1pdf44 httpsenwikipediaorgwikiRecurrent_neural_network45 httparxivorgpdf12115063v1pdf
21 Reacuteseaux de neurones 63
Machine Learning Statistiques et Programmation Version 035930
Figure F2 Reacuteseau de neurones pour lequel la seacutelection de connexions srsquoapplique
La deacutemonstration de ce theacuteoregraveme est donneacutee par lrsquoarticle [Cottrel1995] Ce theacuteoregraveme megravene au corollaire suivant
Corollaire C1 nulliteacute drsquoun coefficientLes notations utiliseacutees sont celles du theacuteoregraveme sur loi asymptotique des coefficients (page 63) Soit wk un poids dureacuteseau de neurones drsquoindice quelconque k Sa valeur estimeacutee est wk sa valeur optimale wlowast
k Drsquoapregraves le theacuteoregraveme
N(wk minus wlowast
k)2
σN2(ΣN
minus1)kk
Trarr+infinminusrarr χ21
Ce reacutesultat permet agrave partir drsquoun reacuteseau de neurones de supprimer les connexions pour lesquelles lrsquohypothegravese denulliteacute nrsquoest pas reacutefuteacutee Afin drsquoaboutir agrave lrsquoarchitecture minimale adapteacutee au problegraveme Cottrel et Al proposent dans[Cottrel1995] lrsquoalgorithme suivant
Theacuteoregraveme T2 seacutelection drsquoarchitectureLes notations utiliseacutees sont celles du theacuteoregraveme loi asymptotique des coefficients (page 63) f est un reacuteseau de neuronesde paramegravetres W On deacutefinit la constante τ en geacuteneacuteral τ = 3 84 puisque P (X lt τ) = 0 95 si X sim χ2
1
64 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
InitialisationUne architecture est choisie pour le reacuteseau de neurones f incluant un nombre M de paramegravetresApprentissage
Le reacuteseau de neurones f est appris On calcule les nombre et matrice σN2 et ΣN La base drsquoapprentissage contient N
exemplesTest
for k in 1M
tk larrminus Nwk
2
σN2(ΣN
minus1)kk
Seacutelection
kprime larrminus argmink
tk
si tkprime lt τ
Le modegravele obtenu est supposeacute ecirctre le modegravele optimal Lrsquoalgorithme srsquoarrecirctesinon
La connexion kprime est supprimeacutee ou le poids wkprime est maintenue agrave zeacuteroM larrminusM minus 1
Retour agrave lrsquoapprentissage
Cet algorithme est sensible au minimum local trouveacute lors de lrsquoapprentissage il est preacutefeacuterable drsquoutiliser des meacutethodesdu second ordre afin drsquoassurer une meilleure convergence du reacuteseau de neuronesLrsquoeacutetape de seacutelection ne supprime qursquoune seule connexion Comme lrsquoapprentissage est coucircteux en calcul il peut ecirctreinteacuteressant de supprimer toutes les connexions k qui veacuterifient tk lt τ Il est toutefois conseilleacute de ne pas enlever trop deconnexions simultaneacutement puisque la suppression drsquoune connexion nulle peut reacutehausser le test drsquoune autre connexionnulle agrave cette mecircme iteacuteration mais non nulle agrave lrsquoiteacuteration suivante Dans lrsquoarticle [Cottrel1995] les auteurs validentleur algorithme dans le cas drsquoune reacutegression gracircce agrave lrsquoalgorithme suivant
Algorithme A1 validation de lrsquoalgorithme de seacutelection des coefficientsChoix aleacuteatoire drsquoun modegraveleUn reacuteseau de neurones est choisi aleacuteatoirement soit f Rp rarr R la fonction qursquoil repreacutesente Une base drsquoapprentissageA (ou eacutechantillon) de N observations est geacuteneacutereacutee aleacuteatoirement agrave partir de ce modegravele
soit (ϵi)1⩽i⩽N un bruit blancA =
(Xi Yi)1⩽i⩽N
∣∣∣ foralli isin 1 middot middot middot N Yi = f (Xi) + ϵi
Choix aleacuteatoire drsquoun modegraveleLrsquoalgorithme de seacutelection (page 64) agrave un reacuteseau de neurones plus riche que le modegravele choisi dans lrsquoeacutetape drsquoinitilisationLe modegravele seacutelectionneacute est noteacute g
ValidationSi ∥f minus g∥ asymp 0
lrsquoalgorithme de seacutelection (page 64) est valideacute
21 Reacuteseaux de neurones 65
Machine Learning Statistiques et Programmation Version 035930
219 Analyse en composantes principales (ACP) et Auto Encoders
bull Problegraveme de lrsquoanalyse en composantes principales (page 67)bull Reacutesolution drsquoune ACP avec un reacuteseau de neurones diabolo (page 67)bull Calcul de valeurs propres et de vecteurs propres (page 70)bull Analyse en Composantes Principales (ACP) (page 71)
Cet algorithme est proposeacute dans [Song1997] Autrefois reacuteseau diabolo le terme auto-encoder46 est plus utiliseacute depuislrsquoaveacutenement du deep learning Il srsquoagit de compresser avec perte un ensemble de points LiquestACP47 est une forme decompression lineacuteaire puisqursquoon cherche agrave preacuteserver lrsquoinformation en projetant un nuage de points de faccedilon agrave maximiserlrsquoinertie du nuage Les auto-encoders fonctionnent sur le mecircme principe avec des modegraveles non lineacuteairessubsectionPrincipeLrsquoalgorithme impleacutementant lrsquoanalyse en composantes principales est baseacute sur un reacuteseau lineacuteaire dit ńădiaboloă cereacuteseau possegravede une couche drsquoentreacutees agrave N entreacutees une couche cacheacutee et une couche de sortie agrave N sorties Lrsquoobjectif estdrsquoapprendre la fonction identiteacute sur lrsquoespace RN Ce ne sont plus les sorties qui nous inteacuteressent mais la couche cacheacuteeintermeacutediaire qui effectue une compression ou projection des vecteurs drsquoentreacutees puisque les entreacutees et les sorties dureacuteseau auront pour but drsquoecirctre identiques
Figure F1 Principe de la compression par un reacuteseau diabolo
vecteurX isin RN
vecteurY isin RM
et M lt N
vecteurZ asymp X
premiegravere couche du reacuteseaudiabolo projection (oucompression)
seconde couche du reacuteseaudiabolo reconstitution(ou deacutecompression)
R R
La figure suivante illustre un exemple de compression de vecteur de R3 dans R2
Figure F2 Reacuteseau diabolo reacuteduction drsquoune dimensionx1
x2
x3
z11
z12
z21
z22
z23
Ce reacuteseau possegravede 3 entreacuteeset 3 sorties Minimiser lrsquoerreur
sumNk=1 E (Xk Xk) revient agrave compresser un vecteur de dimension 3 en un vecteur de
dimension 2 Les coefficients de la premiegravere couche du reacuteseau de neurones permettent de compresser les donneacutees Lescoefficients de la seconde couche permettent de les deacutecompresser
La compression et deacutecompression ne sont pas inverses lrsquoune de lrsquoautre agrave moins que lrsquoerreur (219) soit nulle Ladeacutecompression srsquoeffectue donc avec des pertes drsquoinformation Lrsquoenjeu de lrsquoACP est de trouver un bon compromis entrele nombre de coefficients et la perte drsquoinformation tocircleacutereacutee Dans le cas de lrsquoACP la compression est ńălineacuteaireă crsquoestune projection
46 httpsenwikipediaorgwikiAutoencoder47 httpsfrwikipediaorgwikiAnalyse_en_composantes_principales
66 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Problegraveme de lrsquoanalyse en composantes principales
Lrsquoanalyse en composantes principales ou ACP est deacutefinie de la maniegravere suivante
Problegraveme P1 analyse en composantes principales (ACP)Soit (Xi)1⩽i⩽N avec foralli isin 1 N Xi isin Rp Soit W isinMpd (R) W = (C1 Cd) ougrave les vecteurs (Ci) sontles colonnes de W et d lt p On suppose eacutegalement que les (Ci) forment une base othonormeacutee Par conseacutequent
W primeW = Id
(W primeXi)1⩽i⩽N est lrsquoensemble des vecteurs (Xi) projeteacutes sur le sous-espace vectoriel engendreacute par les vecteurs (Ci)Reacutealiser une analyse en composantes principales crsquoest trouver le meilleur plan de projection pour les vecteurs (Xi)celui qui maximise lrsquoinertie de ce nuage de points crsquoest donc trouver W lowast tel que
W lowast = argmaxWisinMpd(R)W primeW=Id
E (W ) = argmaxWisinMpd(R)W primeW=Id
[Nsumi=1
∥W primeXi∥2
]
Le termeE (W ) est lrsquoinertie du nuage de points (Xi) projeteacute sur le sous-espace vectoriel deacutefini par les vecteurs colonnesde la matrice W
Reacutesolution drsquoune ACP avec un reacuteseau de neurones diabolo
Un theacuteoregraveme est neacutecessaire avant de construire le reacuteseau de neurones menant agrave la reacutesolution du problegraveme de liquestACP(page 67) afin de passer drsquoune optimisation sous contrainte agrave une optimisation sans contrainte
Theacuteoregraveme T1 reacutesolution de lrsquoACPLes notations utiliseacutees sont celles du problegraveme de liquestACP (page 67) Dans ce cas
S = argmaxWisinMpd(R)W primeW=Id
[Nsumi=1
∥W primeXi∥2
]= argmin
WisinMpd(R)
[Nsumi=1
∥WW primeXi minusXi∥2
]
De plus S est lrsquoespace vectoriel engendreacute par les d vecteurs propres de la matrice XX prime =sumN
i=1 XiXprimei associeacutees aux
d valeurs propres de plus grand module
DeacutemonstrationPartie 1Lrsquoobjectif de cette partie est de chercher la valeur de
maxWisinMpd(R)W primeW=Id
E (W )
Soit X = (X1 XN ) isin (Rp)N alors
E (W ) =
Nsumi=1
∥W primeXi∥2= tr (X primeWW primeX) = tr (XX primeWW prime)
La matrice XX prime est symeacutetrique elle est donc diagonalisable et il existe une matrice P isinMp (R) math telle qu
P primeXX primeP = DX avec DX diagonaleP primeP = Ip
(211)
21 Reacuteseaux de neurones 67
Machine Learning Statistiques et Programmation Version 035930
Soit P = (P1 Pp) les vecteurs propres de la matrice XX prime associeacutes aux valeurs propres (λ1 λp) telles que|λ1| ⩾ ⩾ |λp| Pour meacutemoire W = (C1 Cd) et on a
foralli isin 1 p XX primePi = λiPi
foralli isin 1 d Ci = Pi =rArr XX primeWW prime = DXd =
λ1 0 00 00 0 λd
Drsquoougrave
E (W ) = tr (XX primeWW prime) = tr (PDXP primeWW prime) = tr (DXP primeWW primeP )
Donc
maxWisinMpd(R)W primeW=Id
E (W ) = maxWisinMpd(R)W primeW=Id
tr (DXP primeWW primeP ) = maxY isinMpd(R)Y primeY=Id
tr (DXY Y prime) =sumi=1
dλi
Partie 2Soit Y isin max
WisinMpd(R)W primeW=Id
tr (X primeWW primeX) Y = (Y1 Yd) =(yki)1⩽i⩽d1⩽k⩽p
Chaque vecteur Yi est eacutecrit dans la base (P1 Pp) deacutefinie en (211)
foralli isin 1 d Yi =
psumk=1
yki Pp
Comme Y primeY = Id les vecteurs (Y1 Yd) sont orthogonaux deux agrave deux et normeacutes ils veacuterifient donc foralli isin 1 d
sumpk=1
(yki)2
= 1
forall (i j) isin 1 d2 sump
k=1 yki y
kj = 0
De plus
XX primeY Y prime = XX prime
(dsum
i=1
YiYprimei
)=
dsumi=1
XX primeYiYprimei
On en deacuteduit que
foralli isin 1 d XX primeYiYprimei = XX prime
(psum
k=1
yki Pk
)(psum
k=1
yki Pk
)prime
=
(psum
k=1
λkyki Pk
)(psum
k=1
yki Pk
)prime
Drsquoougrave
foralli isin 1 d tr (XX primeYiYprimei ) =
psumk=1
λk
(yki)2
Et
tr (XX primeY Y prime) =
dsumi=1
psumk=1
λk
(yki)2
tr (XX primeY Y prime) =
psumk=1
λk
(dsum
i=1
(yki)2)
=
psumk=1
λk
68 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Ceci permet drsquoaffirmer que
Y isin maxWisinMpd(R)W primeW=Id
tr (X primeWW primeX) =rArr vect (Y1 Yd) = vect (P1 Pd)
Les eacutequations (219) et (219) deacutemontrent la seconde partie du theacuteoregravemePartie 3
nsumi=1
∥WW primeXi minusXi∥2
=
nsumi=1
∥(WW prime minus IN )Xi∥2
= tr(X prime (WW prime minus Ip)
2X)
= tr(XX prime
((WW prime)
2 minus 2WW prime + Ip
))= tr (XX prime (WW primeWW prime minus 2WW prime + Ip))
= tr (XX prime (minusWW prime + Ip))
= minustr (XX primeWW prime) + tr (XX prime)
Drsquoougrave
maxWisinMpd(R)W primeW=Id
(Nsumi=1
∥W primeXi∥2
)= min
WisinMpd(R)W primeW=Id
(Nsumi=1
∥WW primeXi minusXi∥2
)
Partie 4XX prime est une matrice symeacutetrique elle est donc diagonalisable
existP isin GLN (R) telle que P primeXX primeP = Dp ougrave Dp est diagonale
On en deacuteduit que
Nsumi=1
∥WW primeXi minusXi∥2
= tr(XX prime (WW prime minus Ip)
2)
= tr(PP primeXX primePP prime (WW prime minus Ip)
2)
= tr(PDpP
prime (WW prime minus Ip)2)
= tr(Dp (P
primeWW primeP minus Ip)2)
= tr(Dp (Y Y prime minus Ip)
2)
avec Y = P primeW
Drsquoougrave
argminY
tr(Dp (Y Y prime minus Ip)
2)
= Y isinMNd (R) |Y Y prime = Id
Finalement lrsquoeacutequation (219) permet de deacutemontrer la premiegravere partie du theacuteoregraveme agrave savoir (219)
S = argmaxWisinMpd(R)W primeW=Id
[Nsumi=1
∥W primeXi∥2
]= argmin
WisinMpd(R)
[Nsumi=1
∥WW primeXi minusXi∥2
]
21 Reacuteseaux de neurones 69
Machine Learning Statistiques et Programmation Version 035930
Calcul de valeurs propres et de vecteurs propres
Le calcul des valeurs propres et des vecteurs propres drsquoune matrice fait intervenir un reacuteseau diabolo composeacute drsquouneseule couche cacheacutee et drsquoune couche de sortie avec des fonctions de transfert lineacuteaires On note sous forme de matrice(W ) les coefficients de la seconde couche du reacuteseau dont les biais sont nuls On note d le nombre de neurones sur lacouche cacheacutee et p le nombre drsquoentreacutees
foralli isin 1 d y1i =psum
j=1
wjixj
Soit X isin Rp les entreacutees Y = (y11 y1d) isin Rd on obtient que Y = W primeX Les poids de la seconde couche sont deacutefinis comme suit
forall (i j) isin 1 p times 1 d w2ji = w1ij
Par conseacutequent le vecteur des sorties Z isin Rp du reacuteseau ainsi construit est Z = WW primeX On veut minimiser lrsquoerreurpour (Xi)1⩽i⩽N
E =
Nsumi=1
∥WW primeXi minusXi∥2
Il suffit drsquoapprendre le reacuteseau de neurones pour obtenir
W lowastd = argmax
WisinMpd(R)
Nsumi=1
∥WW primeXi minusXi∥2
Drsquoapregraves ce qui preacutecegravede lrsquoespace engendreacute par les vecteurs colonnes de W est lrsquoespace engendreacute par les k premiersvecteurs propres de la matrice XX prime = (X1 XP ) (X1 XP )
prime associeacutes aux k premiegraveres valeurs propres classeacuteespar ordre deacutecroissant de moduleOn en deacuteduit que W lowast
1 est le vecteur propre de la matrice M associeacutee agrave la valeur propre de plus grand module W lowast2
est lrsquoespace engendreacute par les deux premiers vecteurs Gracircce agrave une orthonormalisation de Schmidt48 On en deacuteduit agravepartir de W lowast
1 et W lowast2 les deux premiers vecteurs propres Par reacutecurrence on trouve lrsquoensemble des vecteurs propres de
la matrice XX prime
Deacutefinition D1 orthonormalisation de SchmidtLrsquoorthonormalisation de Shmidt Soit (ei)1⩽i⩽N une base de Rp
On deacutefinit la famille (εi)1⩽i⩽p par
ε1 =e1∥e1∥
foralli isin 1 middot middot middot p εi =
ei minusiminus1sumj=1
lt ei εj gt εj∥∥∥∥∥ei minus iminus1sumj=1
lt ei εj gt εj
∥∥∥∥∥On veacuterifie que le deacutenominateur nrsquoest jamais nul ei minus
iminus1sumj=1
lt ei εj gt εj = 0 car forallk isin 1 N vect (e1 ek) =
vect (ε1 εk)
48 httpsfrwikipediaorgwikiAlgorithme_de_Gram-Schmidt
70 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Proprieacuteteacute P1 base orthonormeacuteeLa famille (εi)1⩽i⩽p est une base orthonormeacutee de Rp
Lrsquoalgorithme qui permet de deacuteterminer les vecteurs propres de la matrice XX prime deacutefinie par le theacuteoregraveme de liquestACP(page 67) est le suivant
Algorithme A1 vecteurs propresLes notations utiliseacutees sont celles du theacuteoregraveme de liquestACP (page 67) On note V lowast
d la matrice des d vecteurs propres dela matrice XX prime associeacutes aux d valeurs propres de plus grands module
for d pUn reacuteseau diabolo est construit avec les poids Wd isinMpd (R) puis apprisLe reacutesultat de cet apprentissage sont les poids W lowast
d if d gt 1
Lrsquoorthonormalisation de Schmit permet de deacuteduire V lowastd de V lowast
dminus1 et W lowastd
elseV lowastd = W lowast
d
Analyse en Composantes Principales (ACP)
Lrsquoanalyse en composantes principales permet drsquoanalyser une liste drsquoindividus deacutecrits par des variables Commeexemple il suffit de prendre les informations extraites du recensement de la population franccedilaise qui permet de deacutecrirechaque habitant par des variables telles que la cateacutegorie socio-professionnelle la salaire ou le niveau drsquoeacutetude Soit(X1 XN ) un ensemble de N individus deacutecrits par p variables
foralli isin 1 N Xi isin Rp
LrsquoACP consiste agrave projeter ce nuage de point sur un plan qui conserve le maximum drsquoinformation Par conseacutequent ilsrsquoagit de reacutesoudre le problegraveme
W lowast = argminWisinMpd(R)W primeW=Id
(Nsumi=1
∥W primeXi∥2
)avec d lt N
Ce problegraveme a eacuteteacute reacutesolu dans les paragraphes Problegraveme de lrsquoanalyse en composantes principales (page 67) et Calculde valeurs propres et de vecteurs propres (page 70) il suffit drsquoappliquer lrsquoalgorithme vecteurs propres (page 71)Soit (Xi)1⩽i⩽N avec foralli isin 1 N Xi isin Rp Soit (P1 Pp) lrsquoensemble des vecteurs propres normeacutes de lamatrice XX prime associeacutes aux valeurs propres (λ1 λp) classeacutees par ordre deacutecroissant de modules On deacutefinit foralld isin1 middot middot middot p Wd = (P1 Pd) isinMpd On deacutefinit alors lrsquoinertie Id du nuage de points projeteacute sur lrsquoespace vectorieldeacutefini par Pd On suppose que le nuage de points est centreacute alors
foralld isin 1 middot middot middot p Id =
Nsumk=1
(P primedXk)
2= tr (X primePdP
primedX) = tr (XX primePdP
primed) = λd
Comme (P1 Pp) est une base orthonormeacutee de Rp on en deacuteduit que
I =
Psumk=1
X primekXk =
Nsumd=1
Id =
psumd=1
λd
21 Reacuteseaux de neurones 71
Machine Learning Statistiques et Programmation Version 035930
De maniegravere empirique on observe freacutequemment que la courbe (d Id)1⩽d⩽p montre un point drsquoinflexion (voir figureci-dessous) Dans cet exemple le point drsquoinflexion correspond agrave d = 4 En analyse des donneacutees on considegravereempiriquement que seuls les quatres premiegraveres dimensions contiennent de lrsquoinformation
Figure F3 Courbe drsquoinertie pour lrsquoACP
Courbe drsquoinertie point drsquoinflexion pour d = 4 lrsquoexpeacuterience montre que geacuteneacuteralement seules les projections sur unou plusieurs des quatre premiers vecteurs propres reflegravetera lrsquoinformation contenue par le nuage de points
2110 Bibliographie
22 Classification agrave lrsquoaide des plus proches voisins
La figure suivante repreacutesente un problegraveme de classification classique On dispose drsquoun nuage de points reacuteparti en deuxclasses Un nouveau point semblable aux preacuteceacutedents se preacutesente sa classe est inconnue Lrsquoobjectif est de lui attribuerune classe en utilisant le fait qursquoon connaicirct la classe drsquoappartenance des autres points
72 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
A partir drsquoun nuage de points pour lesquels la classe drsquoappartenance est connue comment classer un nouveau pointpour lequel cette classe est inconnue Une meacutethode simple consiste agrave attribuer agrave ce nouveau point la mecircme classe que leplus proche des points appartenant au nuage initial Crsquoest la meacutethode des plus proches voisins (ou nearest neighbours49)Elle est facile agrave impleacutementer mais peu utiliseacutee car souvent tregraves gourmande en temps de calcul lorsque le nuage de pointsest conseacutequent Le premier paragraphe deacutecrit cette meacutethode les suivants cherchent agrave acceacuteleacuterer lrsquoalgorithme selon quele nuage de points appartient agrave un espace vectoriel ou non La derniegravere partie preacutesente lrsquoalgorithme LAESA pour le casougrave le nuage de points appartient agrave un espace meacutetrique quelconque
221 Principe
Cette meacutethode est la plus simple puisqursquoelle consiste agrave associer agrave x lrsquoeacuteleacutement agrave classer le label c (xilowast) de lrsquoeacuteleacutement leplus proche xilowast dans lrsquoensemble (x1 xN ) Ceci megravene agrave lrsquoalgorithme de classification suivant
Algorithme A1 1-PPV ou plus proche voisinSoit X = (x1 xN ) sub E un ensemble drsquoeacuteleacutements drsquoun espace meacutetrique quelconque soit (c (x1) c (xN )) lesclasses associeacutees agrave chacun des eacuteleacutements de X On note d la distance deacutefinie sur lrsquoespace meacutetrique E Soit x un eacuteleacutementagrave classer on cherche agrave deacuteterminer la classe c(x) associeacutee agrave x On deacutefinit xilowast comme eacutetant
xilowast = argminiisin1middotmiddotmiddot N
d (xi x)
Alors c(x) = c (xlowasti )
Cet algorithme est souvent appeleacute 1-PPV (ou 1-NN pour Nearest Neighbors) Il existe une version ameacutelioreacutee k-PPVqui consiste agrave attribuer agrave x la classe la plus repreacutesenteacutee parmi ses k plus proches voisins
Algorithme A2 k-PPV ou k-plus proches voisinsSoit X = (x1 xN ) sub E un ensemble drsquoeacuteleacutements drsquoun espace meacutetrique quelconque soit (c (x1) c (xN ))les classes associeacutees agrave chacun des eacuteleacutements de X On note d la distance deacutefinie sur lrsquoespace meacutetrique E ω (x y)est une fonction strictement positive mesurant la ressemblance entre x et y Soit x un eacuteleacutement agrave classer on cherche agravedeacuteterminer la classe c(x) associeacutee agrave x On deacutefinit lrsquoensemble Slowast
k incluant les k-plus proches voisins de x cet ensembleveacuterifie
cardSlowastk = 0 et max
yisinSlowastk
d (y x) ⩽ minyisinXminusSlowast
k
d (y x)
49 httpsenwikipediaorgwikiK-nearest_neighbors_algorithm
22 Classification agrave lrsquoaide des plus proches voisins 73
Machine Learning Statistiques et Programmation Version 035930
On calcule les occurrences f(i) de chaque classe i dans lrsquoensemble Slowastk
f(i) =sumyisinSlowast
k
ω (x y) 11c(y)=i (212)
On assigne alors agrave x la classe math`c(x)$ choisie dans lrsquoensemble
c(x) isin argmaxiisinN
f(i)
Dans sa version la plus simple la fonction ω (x y) utiliseacutee lors du calcul de la contribution f (212) est constante Maisil est possible de lui affecter une valeur tenant compte de la proximiteacute entre x et y La table suivante donne quelquesexemples de contributions possiblesExemple de contribution w (x y) pour lrsquoalgorithme des k-ppv (page 73) Ces fonctions sont toutes deacutecroissantes(strictement ou non) par rapport agrave la distance d Lrsquoinconveacutenient majeur de la meacutethode des plus proches voisins estsa longueur puisqursquoelle implique le calcul des distances entre x et chacun des eacuteleacutements de lrsquoensemble (x1 xN )Crsquoest pourquoi de nombreuses meacutethodes drsquooptimisation ont eacuteteacute deacuteveloppeacutees afin drsquoacceacuteleacuterer ce processus Les deuxpremiers paragraphes traitent le cas ougrave les points xi appartiennent agrave un espace vectoriel et ont donc des coordonneacuteesLes suivant traitent le cas ougrave les points xi nrsquoont pas de coordonneacutees et appartiennent agrave un espace meacutetrique quelconque
222 B+ tree
Ce premier algorithme B+ tree50 srsquoapplique dans le cas reacuteel afin drsquoordonner des nombres dans un arbre de sorte quechaque noeud ait un pegravere et pas plus de n fils
Deacutefinition D1 B+ treeSoit Bn un B+ tree51 soit N un noeud de Bn il contient un vecteur V (N) = (x1 xt) avec 0 ⩽ t ⩽ n etx1 lt lt xt Ce noeud contient aussi exactement t minus 1 noeuds fils noteacutes (N1 Ntminus1) On deacutesigne par D (Nt)
50 httpsenwikipediaorgwikiB2B_tree51 httpsenwikipediaorgwikiB2B_tree
74 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
lrsquoensemble des descendants du noeud Nt et G (Nt) = V (M) |M isin D (Nt) Le noeud N veacuterifie
forallx isin G (Nt) xt ⩽ x lt xt+1
avec par convention x0 = minusinfin et xt+1 = +infin
Cet arbre permet de trier une liste de nombres crsquoest une geacuteneacuteralisation du tri quicksort52 pour lequel n = 2 Commepour le tri quicksort lrsquoarbre est construit agrave partir drsquoune seacuterie drsquoinsertions et de cet ordre deacutepend la rapiditeacute du triLrsquoespeacuterance du coucirct (moyenne sur tous les permutations possibles de k eacuteleacutements) le coucirct de lrsquoalgorithme est enO (k logn k)
223 R-tree ou Rectangular Tree
Lrsquoarbre R-tree53 est lrsquoadaptation du meacutecanisme du B+ tree54 au cas multidimensionnel (voir [Guttman1984]) Laconstruction de cet arbre peut se faire de maniegravere globale - construction de lrsquoarbre sachant lrsquoensemble de points agraveclasser - ou de maniegravere progressive - insertion des points dans lrsquoarbre les uns agrave la suite des autres - Toutefois cesmeacutethodes sont resteintes agrave des espaces vectorielsIl nrsquoexiste pas une seule maniegravere de construire un R-tree55 les noeuds de ces arbres suivent toujours la contrainte desB+ tree56 qui est drsquoavoir un pegravere et au plus n fils Les R-tree57 ont la mecircme structure que les B+ tree58 ocircteacutee de leurscontraintes drsquoordonnancement des fils De plus ces arbres organisent spatialement des rectangles ou boicirctes en plusieursdimensions comme le suggegravere la figure preacuteceacutedente Les boicirctes agrave organiser seront nommeacutes les objets ces objets sontensuite regroupeacutes dans des boicirctes englobantes Un noeud n drsquoun R-tree59 est donc soit une feuille auquel cas la boicircteqursquoil deacutesigne est un objet dans ce cas il nrsquoa aucun fils soit le noeud deacutesigne une boicircte englobante B (n) On deacutesignepar B lrsquoensemble des boicirctes drsquoun espace vectoriel quelconque et v (b) deacutesigne son volume Pour un noeud n non feuilleA (n) deacutesigne lrsquoensemble des descendants de ce noeud B (n) est deacutefini par
B (n) = argmin v (b) |b isin B et forallnprime isin A (nprime) B (nprime) sub B (n)
La recherche dans un R-tree60 consiste agrave trouver tous les objets ayant une intersection avec une autre boicircte ou fenecirctreW soit lrsquoensemble L
L = B (n) |B (n) est un objet et B (n) capW = empty
Cet ensemble est construit gracircce agrave lrsquoalgorithme suivant
Algorithme A3 recherche dans un R-treeLes notations sont celles utiliseacutees dans ce paragraphe On deacutesigne par r le noeud racine drsquoun R-tree61 Soit n un noeudon deacutesigne par F (n) lrsquoensemble des fils de ce noeud
initialisation
Llarrminus 0 | N larrminus r
iteacuteration52 httpsfrwikipediaorgwikiTri_rapide53 httpsenwikipediaorgwikiR-tree54 httpsenwikipediaorgwikiB2B_tree55 httpsenwikipediaorgwikiR-tree56 httpsenwikipediaorgwikiB2B_tree57 httpsenwikipediaorgwikiR-tree58 httpsenwikipediaorgwikiB2B_tree59 httpsenwikipediaorgwikiR-tree60 httpsenwikipediaorgwikiR-tree61 httpsenwikipediaorgwikiR-tree
22 Classification agrave lrsquoaide des plus proches voisins 75
Machine Learning Statistiques et Programmation Version 035930
while N = empty
for n in 1N
if W capB (n) = emptyN larrminus N cup F (n)
if B (n) est un objetLlarrminus B (n)
L est lrsquoensemble chercheacute
Il reste agrave construire le R-tree62 opeacuteration effectueacutee par la reacutepeacutetition successive de lrsquoalgorithme suivant permettantdrsquoinseacuterer un objet dans un R-tree63
Algorithme A4 insertion drsquoun objet dans un R-treeLes notations utiliseacutees sont les mecircmes que celles de lrsquoalgorithme de recherche (page 75) On cherche agrave inseacuterer lrsquoobjectE deacutesigneacute par son noeud feuille e On suppose que lrsquoarbre contient au moins un noeud sa racine r On deacutesigneeacutegalement par p (n) le pegravere du noeud n Chaque noeud ne peut contenir plus de s fils On deacutesigne par vlowast (G) =min P |P isin B et cupgisinG B (g) sub Pseacutelection du noeud drsquoinsertion
nlowast larrminus r
tant que nlowast nrsquoest pas un noeud feuilleOn choisit le fils f de nlowast
qui minimise lrsquoaccroissement vf minus v (B (f))
du volume avec vf deacutefini par vf = min v (P ) |P isin B et B (f) cupB (e) sub Pnlowast larrminus f
ajout du noeudSi p (nlowast) a moins de s fils alors le noeud e devient le fils de p (nlowast) etB (p (nlowast)) est mis agrave jour drsquoapregraves lrsquoeacutetape preacuteceacutedenteLrsquoinsertion est termineacutee Dans le cas contraire on seacutepare deacutecoupe le noeud p (nlowast) en deux gracircce agrave lrsquoeacutetape suivantedeacutecoupage des noeudsLrsquoobjectif est de diviser le groupe G composeacute de s+ 1 noeuds en deux groupes G1 et G1 Tout drsquoabord on cherche lecouple (n1 n2) qui minimise le critegravere d = vlowast (n1 n2) minus v (B (n1)) minus v (B (n2)) alors G1 larrminus n1 G2 larrminus n2
et Glarrminus GminusG1 cupG2
tant que G = emptyOn choisit un noeud n isin G on deacutetermine ilowast
tel que math`vpaaccn cup G_i - vpaG_i$ soit minimalGlarrminus Gminus nGilowast larrminus Gilowast cup n
62 httpsenwikipediaorgwikiR-tree63 httpsenwikipediaorgwikiR-tree
76 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Si la recherche est identique quel que soit lrsquoarbre construit chaque variante de la construction de lrsquoarbre tente deminimiser les intersections des boicirctes et leur couverture Plus preacuteciseacutement lrsquoeacutetape qui permet de deacutecouper lesnoeuds est conccedilue de maniegravere agrave obtenir des boicirctes englobantes de volume minimale etou drsquointersection minimaleavec drsquoautres boicirctes englobantes Lrsquoalgorithme R+~Tree (voir [Sellis1987]) essaye de minimiser les intersectionsentre boicirctes et les objets agrave organiser sont supposeacutes nrsquoavoir aucune intersection commune La variante R tree64 (voir[Beckmann1990]) effectue un compromis entre lrsquointersection et la couverture des boicirctes englobantes LrsquoalgorithmeX-tree65 (voir [Berchtold1996]) conserve lrsquohistorique de la construction de lrsquoarbre ce qui lui permet de mieux eacuteviterles intersections communes entre boicirctes Ces techniques appartiennent agrave une classe plus larges drsquoalgorithmes de typeBranch and Bound66
224 LAESA
Cet algorithme permet de chercher les plus proches voisins dans un ensemble inclus dans un espace meacutetriquequelconque Il srsquoappuie sur lrsquoineacutegaliteacute triangulaire Lrsquoalgorithme LAESA67 ou Linear Approximating EliminatingSearch Algorithm (voir [Rico-Juan2003]) consiste agrave eacuteviter un trop grand nombre de calculs de distances en se servantde distances deacutejagrave calculeacutees entre les eacuteleacutements de E et un sous-ensemble B inclus dans E contenant des pivots Laseacutelection des pivots peut ecirctre aleacuteatoire ou plus eacutelaboreacutee comme celle effectueacutee par lrsquoalgorithme qui suit deacutecrit danslrsquoarticle [Moreno2003]
Algorithme A5 LAESA seacutelection des pivotsSoit E = y1 yN un ensemble de points on cherche agrave deacuteterminer un sous-ensemble de pivots B =p1 pP sub Einitialisation
B larrminus y isin E choisi arbitrairement
calcul de la fonction g
for y in E minusB
g (y)larrminus 0
for p in B
g (y)larrminus g (y) + d (y p)
mise agrave jour de B
Trouver plowast isin argmax g (p) |p isin E minusBB larrminus B cup plowastSi cardB lt P retour agrave lrsquoeacutetape preacuteceacutedente sinon fin
Lrsquoalgorithme LAESA68 utilise les pivots pour diminuer le nombre de calculs en utilisant lrsquoineacutegaliteacute triangulaire Parexemple soit x un eacuteleacutement agrave classer pj un pivot yi un point du nuage On suppose qursquoon connaicirct d (x pj) d (pj yi)et dlowast la distance du point x agrave un autre point du nuage Lrsquoineacutegaliteacute triangulaire permet drsquoaffirmer que si d (x yi) ⩾
64 httpsenwikipediaorgwikiR_tree65 httpsenwikipediaorgwikiX-tree66 httpsenwikipediaorgwikiBranch_and_bound67 httpstavianatorcomaesa68 httpstavianatorcomaesa
22 Classification agrave lrsquoaide des plus proches voisins 77
Machine Learning Statistiques et Programmation Version 035930
|d (x pj)minus d (pj yi)| gt dlowast alors il nrsquoest pas neacutecessaire de calculer la distance d (x yi) pour affirmer que d (x yi) gtdlowast Lrsquoeacuteleacutement yi ne peut ecirctre lrsquoeacuteleacutement le plus proche
Algorithme A6 LAESASoit E = y1 yN un ensemble de points B = p1 pP sub E un ensemble de pivots inclus dans E Oncherche agrave deacuteterminer le voisinage V (x) de x inclus dans E veacuterifiant
forally isin V (x) d (x y) ⩽ ρ
On suppose que la matrice M = (mij)⩽i⩽P1⩽j⩽N
a eacuteteacute calculeacutee preacutealablement comme suit
forall (i j) mij = d (pi yj)
initialisation
for i in 1P
di larrminus d (x pi)
dlowast larrminus min di|1 ⩽ i ⩽ Pdlowast est la distance du point x au pivot le plus proche
recherche du plus proche eacuteleacutement
S larrminus emptyfor i in 1N
dprime larrminus max |dj minusmji|if dprime lt dlowast
dlarrminus d (x yi)
if dprime ⩽ dlowast
dlowast larrminus dprime
S larrminus yi
225 Reacutesultats theacuteoriques
Lrsquoarticle [Farago1993] deacutemontre eacutegalement qursquoil existe une majoration du nombre moyen de calcul de distances pourpeu que la mesure de lrsquoespace contenant lrsquoensemble E et lrsquoeacuteleacutement x soit connue et que lrsquoensemble B = p1 pP des pivots veacuterifie
exist (α β) isin R+lowast tels que
forall (x y) isin E2 foralli α d (x y) ⩾ |d (x pi)minus d (pi y)|forall (x y) isin E2 max
i|d (x pi)minus d (pi y)| ⩾ β d (x y)
Lrsquoalgorithme deacuteveloppeacute dans [Farago1993] permet de trouver le point de plus proche drsquoun eacuteleacutement x dans un ensemblemath`E = ensemblex_1x_N`selon lrsquoalgorithme suivant
Algorithme A7 plus proche voisin drsquoapregraves [Farago1993]_
78 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Soit E = x1 xN et B = p1 pP sub E sub X Soit x isin X un eacuteleacutement quelconque On suppose que lesvaleurs mij = d (xi pj) ont eacuteteacute preacutealablement calculeacuteesinitialisationOn calcule preacutealablement les coefficients γ (xi)
foralli isin 1 N γ (xi)larrminus maxjisin1P
|mij minus d (x pj)|
eacutelaguageOn deacutefinit t0 larrminus min
iγ (xi) Puis on construit lrsquoensemble F (x) = xi isin E|γ (xi) ⩽ α
β t0
plus proche voisinLe plus proche xlowast voisin est deacutefini par xlowast isin argmin d (x y) |y isin F (x)
Et un petit theacuteoregraveme
Theacuteoregraveme T1 [Farago1993]_ 1Les notations sont celles de lrsquoalgorithme preacuteceacutedent Il retourne le plus proche voisin xlowast de x inclus dans E Autrementdit forallx isin X xlowast isin F (x)
Theacuteoregraveme T2 [Farago1993]_ 2Les notations sont celles du mecircme algorithme On deacutefinit une mesure sur lrsquoensemble X B (x r) deacutesigne la boule decentre x et de rayon r Z isin X une variable aleacuteatoire de plus
p (x r) = PX (B (x r)) = P (Z isin B (x r))
On suppose qursquoil existe d gt 0 et une fonction f X minusrarr R tels que
limrrarr0
p (x r)
rd= f (x) gt 0
La convergence doit ecirctre uniforme et presque sucircre On note eacutegalement FN le nombre de calculs de dissimilariteacuteeffectueacutes par lrsquoalgorithme ougrave N est le nombre drsquoeacuteleacutement de E P deacutesigne toujours le nombre de pivots alors
lim supnrarrinfin
EFN ⩽ k +
(α
β
)2d
226 Impleacutementation
La classe NuagePoints impleacutemente les nuages de points sans optimisation Il utilise la mecircme interface quesklearnneighborsNearestNeighbors69 La second classe NuagePointsLeasaltltlt
import numpyfrom mlstatpymlkppv_laesa import NuagePointsLaesa
X = numpyarray([[0 0] [3 3] [1 1]])nuage = NuagePointsLaesa(2)
(suite sur la page suivante)
69 httpsscikit-learnorgstablemodulesgeneratedneighborsNearestNeighborshtml
22 Classification agrave lrsquoaide des plus proches voisins 79
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
nuagefit(X)dist indices = nuagekneighbors(X)print(distance dist)print(indices indices)
gtgtgt
usrlocallibpython39site-packagesscipyspatialdistancepy307rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(usrlocallibpython39site-packagesscipyspatialdistancepy307
rarrDeprecationWarning scipyspatialdistance metrics ignoring length-1 dimensions israrrdeprecated in SciPy 17 and will raise an error in SciPy 19
warningswarn(distance [0 0 0]indices [0 1 2]
80 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
227 Bilbiographie
23 Liens entre factorisation de matrices ACP k-means
La factorisation de matrice non neacutegative70 Cette meacutethode est utiliseacutee dans le cadre de la recommandation de produitsagrave des utilisateurs Lire eacutegalement [Acara2011] [Gupta2010]
bull Factorisation de matrices et rang (page 81)bull Quelques cas simples (page 82)bull Intuition geacuteomeacutetrique (page 83)bull k-means (page 85)bull Quelques reacutesultats (page 85)bull Prolongements (page 85)
ndash Factorisation non-neacutegative (page 85)ndash Preacutediction (page 85)ndash Norme (page 86)ndash Sparsiteacute (page 86)ndash Valeurs manquantes (page 86)ndash Interpreacutetation (page 86)ndash NTF (page 86)
bull Bibliographie (page 87)
231 Factorisation de matrices et rang
La factorisation drsquoune matrice71 est un problegraveme drsquooptimisation qui consiste agrave trouver pour une matrice M isin Mpq agravecoefficients positifs ou nuls
M = WH
Ougrave W et H sont de rang k et de dimension W isin Mpk et H isin Mkq On srsquointeacuteresse ici au cas ougrave les coefficients nesont pas neacutecessairement positifs Si k lt rang(M) le produit WH ne peut ecirctre eacutegal agrave M Dans ce cas on chercherales matrices qui minimise
Problegraveme P1 Factorisation de matrices positifsSoit M isinMpq on cherche les matrices agrave coefficients positifs W isinMpk et H isinMkq qui sont solution du problegravemedrsquooptimisation
minWH
∥M minusWH∥2
= min
WH
sumij
(mij minussumk
wikhkj)2
70 httpsenwikipediaorgwikiNon-negative_matrix_factorization71 httpsenwikipediaorgwikiNon-negative_matrix_factorization
23 Liens entre factorisation de matrices ACP k-means 81
Machine Learning Statistiques et Programmation Version 035930
232 Quelques cas simples
Le notebook Valeurs manquantes et factorisation de matrices (page 346) montre la deacutecroissante de lrsquoerreur en fonctiondu rang et lrsquoimpact de la correacutelation sur cette mecircme erreur Le dernier paragraphe montre qursquoil nrsquoexiste pas de solutionunique agrave un problegraveme donneacute Lrsquoexemple suivant srsquointeacuteresse agrave une matrice 3x3 Les trois points forment un triangledans un plan
import matplotlibpyplot as pltfrom mpl_toolkitsmplot3d import Axes3Dfrom numpy import identity array
M = identity(3)W = array([[05 05 0] [0 0 1]])TH = array([[1 1 0] [00 00 10]])wh = W H
fig = pltfigure()ax = figadd_subplot(111 projection=3d)
axscatter(M[0] M[1] M[2] c=b marker=o s=600 alpha=05)axscatter(wh[0] wh[1] wh[2] c=r marker=^)pltshow()
On peut voir la matrice M comme un ensemble de n = 3 points dans un espace vectoriel La matrice W est un
82 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
ensemble de k lt n points dans le mecircme espace La matrice WH de rang k est une approximation de cet ensembledans le mecircme espace crsquoest aussi n combinaisons lineacuteaires de k points de faccedilon agrave former n points les plus prochesproches de n points de la matrice M
233 Intuition geacuteomeacutetrique
Lrsquoexemple preacuteceacutedente suggegravere une interpreacutetation geacuteomeacutetrique drsquoune factorisation de matrice Sans valeur manquantece problegraveme est eacutequivalent agrave une Analyse en Composantes Principales (ACP)72 (voir aussi [Boutsidis2008](deacutecomposition en valeurs singuliegraveres comme algorithme drsquoinitialisation) Nous allons le montrer gracircce agrave quelqueslemmes et theacuteoregravemes
Lemme L1 Rang kOn note M = (mij) W k = (wk
il) Hk = (hklj) avec 1 ⩽ i ⩽ p 1 ⩽ j ⩽ q et 1 ⩽ l ⩽ k avec k lt min(p q)
On suppose que les matrices sont solution du problegraveme drsquooptimisation minWH ∥M minusWH∥2 On suppose querang(M) ⩾ k Alors les les matrices W k et Hk sont de rang k
On procegravede par reacutecurrence Ce lemme est neacutecessairement vrai pour k = 1 car la matrice M nrsquoest pas nulle Demaniegravere eacutevidente
∥∥M minusW kminus1Hkminus1∥∥2 ⩾
∥∥M minusW kHk∥∥2 Comme rang(M) ⩾ k il existe un vecteur colonne V
de la matrice M qui ne fait pas partie de lrsquoespace vectoriel engendreacute par les k minus 1 vecteurs de la matrice W kminus1 Onconstruit la matrice Y k = [W kminus1 V ] Par construction rang(Y ) = k De mecircme on construit Gk agrave partir de Hkminus1
en remplaccedilant la derniegravere colonne et en ajoutant une ligne
Gk =
[Hkminus1[1pminus 1] 0
0 1
]Par construction le dernier vecteur est de la matrice produit est identique agrave celui de la matrice M ∥∥M minus Y kminus1Gkminus1
∥∥2 =∥∥M minusW kminus1Hkminus1
∥∥2 minussumi
(miq minus wkminus1ik hkminus1
kq )2
Nous avons fabriqueacute une matrice de rang k qui fait deacutecroicirctre lrsquoerreur du problegraveme drsquooptimisation On procegravede parlrsquoabsurde pour dire que si rang(W ) = kminus 1 on peut construire une matrice de rang k qui fait deacutecroicirctre lrsquoerreur ce quiest impossible Le lemme est donc vraiCe lemme fait eacutegalement apparaicirctre la construction de q points dans un espace vectoriel engendreacute par les k vecteurscolonnes de la matrice Wk Il est donc possible de choisir nrsquoimporte quel base W prime
k de cet espace et drsquoexprimer lesq points de WkHk avec cette nouvelle base Cela signifie qursquoon peut eacutecrire la matrice Wk dans une base Bk commeWk = BkCk et WkHk = BkCkC
minus1k Gk
Lemme L2 ProjectionOn note M = (mij) W k = (wk
il) Hk = (hklj) avec 1 ⩽ i ⩽ p 1 ⩽ j ⩽ q et 1 ⩽ l ⩽ k avec k lt min(p q)
On suppose que les matrices sont solution du problegraveme drsquooptimisation minWH ∥M minusWH∥2 On considegravere que lamatrice M est un ensemble de q points dans dans un espace vectoriel de dimension p La matrice WH repreacutesente desprojections de ces points dans lrsquoespace vectoriel engendreacute par les k vecteurs colonnes de la matrice W
La figure suivante illustre ce lemme ∥M minusWH∥2 srsquoeacutecrit comme la somme des distances entre q points
∥M minusWH∥2 =
qsumj=1
∥M [j]minusWkHk[j]∥2
72 httpsfrwikipediaorgwikiAnalyse_en_composantes_principales
23 Liens entre factorisation de matrices ACP k-means 83
Machine Learning Statistiques et Programmation Version 035930
Or on sait que si Wk est fixeacute les q points de la matrice WkHk eacutevolue sur un hyperplan de dimension k Le point de ceplan le plus du vecteur M [j] est sa projection sur ce plan
Theacuteoregraveme T1 La factorisation de matrice est eacutequivalente agrave une analyse en composantes principalesOn note M = (mij) W k = (wk
il) Hk = (hklj) avec 1 ⩽ i ⩽ p 1 ⩽ j ⩽ q et 1 ⩽ l ⩽ k avec k lt min(p q)
On suppose que les matrices sont solution du problegraveme drsquooptimisation minWH ∥M minusWH∥2 On considegravere que lamatrice M est un ensemble de q points dans dans un espace vectoriel de dimension p On suppose p lt q La matriceWk deacutefinit un hyperplan identique agrave celui deacutefini par les k vecteurs propres associeacutes aux k plus grande valeurs propresde la matrice MM prime ougrave M prime est la transposeacutee de M
Une analyse en composante principale consiste agrave trouver lrsquohyperplan qui maximise lrsquoinertie de la projection drsquoun nuagesur ce plan Le theacuteoregraveme reacutesolution de lrsquoACP (page 67) a montreacute que
S = argmaxWisinMpd(R)W primeW=Id
[Nsumi=1
∥W primeXi∥2
]= argmin
WisinMpd(R)
[Nsumi=1
∥WW primeXi minusXi∥2
]
Dans notre cas chaque ligne de la matrice M est un vecteur Xi La matrice Wk est identique agrave celle chercheacutee lorsdu problegraveme de factorisation de matrices Les colonnes de la matrice Hk sont eacutegales agrave W primeXi Il reste agrave montrer quele minimum trouveacute dans les deux problegravemes est le mecircme Le notebook Factorisation et matrice et ACP (page 342)montre que cela fonctionne sur un exemple La deacutemonstration du theacuteoregraveme montre eacutegalement que W primeW = Id et dansce cas preacutecis WW primeXi repreacutesente les coordonneacutees de la projection du point Xi sur le plan deacutefini par les vecteurs W Crsquoest aussi ce que montre second lemmme (page 83) Srsquoil srsquoagit du mecircme plan cela signifie que les deux formulationsACP et factorisation de matrices aboutissent au mecircme minimum Comme lrsquoalgorithme de lrsquoACP deacutetermine le meilleurplan projecteur neacutecessairement il correspond agrave celui trouveacute par la factorisation de matrice
84 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
234 k-means
On peut construire deux matrices W et H agrave partir des reacutesultats drsquoun k-means (page 1) Celui-ci deacutetermine k centresauxquels on effecte les points du nuage de deacutepart Dans ce cas-ci la matrice W est constitueacutee des coordonneacutees de cescentres On note Cl le cluster l la matrice Hk = (hk
lj) est deacutefinie comme suit
hklj = 11XjisinCl
Les coefficients sont soit 0 ou 1 On peut alors essayer de forcer la factorisation de matrice vers une matrice H avecpas de un 1 sur chaque colonne et des zeacuteros partout ailleurs Le reacutesultat sera assez proche drsquoun clustering
235 Quelques reacutesultats
Le notebook Factorisation et matrice et ACP (page 342) illustre le lien entre ACP et factorisation de matrice en deuxdimensions
236 Prolongements
Tous les reacutesultats montreacutes ici ne sont valables que si la norme L2 est utiliseacutee Cela permet de mieux comprendre lesreacutefeacuterences proposeacutees dans la documentation de Non-negative matrix factorization (NMF or NNMF)73 Si lrsquoACP et lafactorisation de matrices sont eacutequivalentes les algorithmes pour trouver le minimum diffegraverent et sont plus ou moinsapproprieacutes dans certaines configurations Lire [Gilles2014]
Factorisation non-neacutegative
Le problegraveme le plus souvent eacutevoqueacute est celui de la factorisation non-neacutegative NMF74 Ce problegraveme est uneoptimisation avec contrainte les coefficients doivent tous ecirctre positifs ou nuls Il nrsquoest bien sucircr plus eacutequivalent agraveune ACP En revanche la factorisation de matrice est un problegraveme eacutequivalent agrave celui reacutesolu par la Deacutecomposition enValeur Singuliegravere (SVD)75 qui cherche agrave deacutecomposer une matriceM = UΣV lowast La matriceΣ est une matrice diagonaleet la matrice initiale M nrsquoest pas neacutecessairement carreacutee contrairement au cas drsquoune ACP mais SVD et ACP sont tregravessimilaires
Preacutediction
Preacutedire revient agrave supposer que la matrice M est composeacutee de vecteurs lignes X1 Xq La matrice H reste inchangeacuteeet la preacutediction revient agrave deacuteterminer les coordonneacutees de la projection drsquoun nouveau point Xq+1 dans le plan deacutefinipar les vecteurs de la matrice H Pour de nouvelles observations M2 = Xq+1 la fonction transform76 de la classesklearndecompositionNMF77 reacuteestime une matrice W2 qui projette les vecteurs lignes de M2 sur les vecteurs de H enconservant des coefficients de projection positifs
Problegraveme P2 PreacutedictionSoit M isinMpq et H isinMkq on cherche les matrices agrave coefficients positifs W isinMpk qui sont solution du problegravemedrsquooptimisation
minW
∥M minusWH∥2
= min
WH
sumij
(mij minussumk
wikhkj)2
73 httpscikit-learnorgstablemodulesdecompositionhtmlnmf74 httpswwwmathuniv-toulousefr~besseWikistatpdfst-m-explo-nmfpdf75 httpsfrwikipediaorgwikiDC3A9composition_en_valeurs_singuliC3A8res76 httpsscikit-learnorgstablemodulesgeneratedsklearndecompositionNMFhtmlsklearndecompositionNMFtransform77 httpsscikit-learnorgstablemodulesgenerateddecompositionNMFhtml
23 Liens entre factorisation de matrices ACP k-means 85
Machine Learning Statistiques et Programmation Version 035930
Les recommandations srsquoobtiennent en multipliant W2 par Xq+1 Ce produit peut ecirctre approcheacutee en relacircchant lacontrainte des poids positifs pour la matrice W Crsquoest la piste proposeacutee par le modegravele ApproximateNMFPredictor78
qui utilise une transformation SVD pour projeter sur lrsquoespace vectoriel formeacute par les vecteurs de H
Norme
LrsquoACP avec une norme L1 revient agrave trouver le plan qui minimise la somme des distances agrave la projection et non lasomme des distances au carreacutes Cela reacuteduit lrsquoimpact des points aberrants mais le problegraveme nrsquoest plus eacutequivalent agrave lafactorisation de matrices avec une norme L1
Sparsiteacute
Une ACP suppose que le calcul de valeurs propres drsquoune matrice et crsquoest fastidieux lorsque la dimension du problegravemeest tregraves grande On lui preacutefegravere alors un algorithme tel que Sparse PCA79 La factorisation de matrice est plus efficaceqursquoune ACP sur les problegravemes sparses et de grande dimension Lire Non-negative Matrix Factorization with SparsenessConstraints80
Valeurs manquantes
Contourner le problegraveme des valeurs manquantes veut souvent dire soit supprimer les enregistrements contenant desvaleurs manquantes soit choisir un modegravele capable de faire avec ou soit trouver un moyen de les remplacer On peutgeacuterer plus facilement le problegraveme des valeurs manquantes avec une factorisation de matrices On peut eacutegalement seserver de la meacutethode pour calculer une ACP avec des valeurs manquantes
bull Imputation de donneacutees manquantes81
bull Principal component analysis with missing values a comparative survey of methods82
Interpreacutetation
La factorisation de matrice peut ecirctre utiliseacutee comme outil de segmentation et drsquointerpreacutetation pour des images desvideacuteos Lire A tutorial on Non-Negative Matrix Factorisation with Applications to Audiovisual Content Analysis83
bull Gesture recognition using a NMF-based representation of motion-traces extracted from depth silhouettes84
NTF
Le problegraveme de Non-Negative Matrix Factorisation (NMF)85 est un cas particulier de Non-Negative TensorFactorisation (NTF)86 Lire aussi PARAFAC Tutorial and applications87
78 httpwwwxavierduprefrappmlinsightshelpsphinxmlinsightsmlmodelanmf_predictorhtml79 httpscikit-learnorgstablemodulesdecompositionhtmlsparsepca80 httpwwwjmlrorgpapersvolume5hoyer04ahoyer04apdf81 httpswwwmathuniv-toulousefr~besseWikistatpdfst-m-app-idmpdf82 httppbiluniv-lyon1frmembersdrayfilesarticlesdray2015apdf83 httppersotelecom-paristechfr~essidteachNMF_tutorial_ICME-2014pdf84 httpshalarchives-ouvertesfrhal-00990252document85 httpsenwikipediaorgwikiNon-negative_matrix_factorization86 httpwwwcshujiacil~shashuapapersNTF-icmlpdf87 httpswwwcscmuedu~pmuthukumlsp_pagelecturesParafacpdf
86 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
237 Bibliographie
24 Un arbre de deacutecision en reacuteseaux de neurones
Lrsquoideacutee est de convertir sous la forme drsquoun reacuteseaux de neurones un arbre de deacutecision puis de continuer lrsquoapprentissagede faccedilon agrave obtenir un assemblage de reacutegression logistique plutocirct que de deacutecision binaire
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull Un exemple sur Iris (page 87)bull Mecircme exemple en reacuteseau de neurones (page 88)bull Intermegravede de simples neurones de reacutegression (page 90)bull Intermegravede de simples neurones de classification (page 94)bull Apprentissage du reacuteseau de neurones (page 98)bull Autre architecture (page 104)
matplotlib inlinefrom jyquickhelper import RenderJsDotimport numpyimport matplotlibpyplot as pltfrom matplotlibcolors import ListedColormapfrom tqdm import tqdm
241 Un exemple sur Iris
La meacutethode ne marche que sur un problegraveme de classification binaire
from sklearndatasets import load_irisdata = load_iris()X y = datadata[ 2] datatargety = y 2
from sklearnmodel_selection import train_test_splitX_train X_test y_train y_test = train_test_split(X y random_state=11)
from sklearntree import DecisionTreeClassifierdec = DecisionTreeClassifier(max_depth=2 random_state=11)decfit(X_train y_train)decscore(X_test y_test)
06052631578947368
from sklearntree import export_graphvizdot = export_graphviz(dec filled=True)dot = dotreplace(shape=box shape=box fontsize=10 )RenderJsDot(dot)print(dot)
24 Un arbre de deacutecision en reacuteseaux de neurones 87
Machine Learning Statistiques et Programmation Version 035930
digraph Tree node [shape=box fontsize=10 style=filled color=black fontname=helvetica] edge [fontname=helvetica] 0 [label=X[1] lt= 295ngini = 0454nsamples = 112nvalue = [73 39] fillcolor=rarrf3c4a3] 1 [label=X[0] lt= 705ngini = 0429nsamples = 45nvalue = [14 31] fillcolor=92c9f1]rarr0 -gt 1 [labeldistance=25 labelangle=45 headlabel=True] 2 [label=gini = 0402nsamples = 43nvalue = [12 31] fillcolor=86c3ef] 1 -gt 2 3 [label=gini = 00nsamples = 2nvalue = [2 0] fillcolor=e58139] 1 -gt 3 4 [label=X[1] lt= 325ngini = 021nsamples = 67nvalue = [59 8] fillcolor=e99254] 0 -gt 4 [labeldistance=25 labelangle=-45 headlabel=False] 5 [label=gini = 0375nsamples = 32nvalue = [24 8] fillcolor=eeab7b] 4 -gt 5 6 [label=gini = 00nsamples = 35nvalue = [35 0] fillcolor=e58139] 4 -gt 6
Lrsquoarbre de deacutecision est petit donc visuellement reacuteduit et il est perfectible aussi
242 Mecircme exemple en reacuteseau de neurones
Chaque noeud de lrsquoarbre de deacutecision est converti en deux neurones un qui le relie agrave lrsquoentreacutee et qui eacutevalue la deacutecisionil produit la valeur o1 un autre qui associe le reacutesultat du premier noeud avec celui le preacutecegravede dans la structure de lrsquoarbrede deacutecision il produit la valeur o2 La deacutecision finale est quelque chose comme sigmoid(o1 + o2 minus 1) Un neuroneagregravege le reacutesultat de toutes les feuilles
from mlstatpymlneural_tree import NeuralTreeNetnet = NeuralTreeNetcreate_from_tree(dec)RenderJsDot(netto_dot())
On considegravere une entreacutee en particulier
n = 60decpredict_proba(X[n n+1])
array([[027906977 072093023]])
Les sorties du reacuteseau de neurones
netpredict(X[n n+1])[ -2]
array([[012536069 087463931]])
Et on trace les valeurs intermeacutediaires
RenderJsDot(netto_dot(X=X[n]))
On poursuit la comparaison
decpredict_proba(X_test)[5]
88 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
array([[075 025 ][075 025 ][027906977 072093023][1 0 ][027906977 072093023]])
netpredict(X_test)[5 -2]
array([[079156817 020843183][073646978 026353022][029946111 070053889][094070094 005929906][024924737 075075263]])
decpredict_proba(X_test)[-5]
array([[1 0 ][075 025][1 0 ][075 025][075 025]])
netpredict(X_test)[-5 -2]
array([[093247891 006752109][086338585 013661415][098219036 001780964][098352807 001647193][073646978 026353022]])
numpyargmax(netpredict(X_test)[-5 -2] axis=1)
array([0 0 0 0 0] dtype=int64)
On compare visuellement les deux frontiegraveres de classification
def plot_grid(X y fct title ax=None)
cmap_light = ListedColormap([orange cyan cornflowerblue])cmap_bold = ListedColormap([darkorange c darkblue])
h = 05x_min x_max = X[ 0]min() - 1 X[ 0]max() + 1y_min y_max = X[ 1]min() - 1 X[ 1]max() + 1xx yy = numpymeshgrid(numpyarange(x_min x_max h)
numpyarange(y_min y_max h))Z = fct(numpyc_[xxravel() yyravel()])
Z = Zreshape(xxshape)if ax is None
_ ax = pltsubplots(1 1)(suite sur la page suivante)
24 Un arbre de deacutecision en reacuteseaux de neurones 89
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
axpcolormesh(xx yy Z cmap=cmap_light)
axscatter(X[ 0] X[ 1] c=y cmap=cmap_boldedgecolor=k s=20)
axset_xlim(xxmin() xxmax())axset_ylim(yymin() yymax())axset_title(title)
fig ax = pltsubplots(1 2 figsize=(12 4))plot_grid(X y decpredict dec__class____name__ ax=ax[0])plot_grid(X y
lambda x numpyargmax(netpredict(x)[ -2] axis=1)net__class____name__ ax=ax[1])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
Le code qui produit les preacutedictions du reacuteseau de neurones est assez long agrave exeacutecuter mais il produit agrave peu pregraves les mecircmesfrontiegraveres excepteacute qursquoelles sont plus arrondies
243 Intermegravede de simples neurones de reacutegression
Avant drsquoapprendre ou plutocirct de continuer lrsquoapprentissage des coefficients du reacuteseaux de neurones voyons comment unneurone se deacutebrouille sur un problegraveme de reacutegression Le neurone nrsquoest pas converti il est appris
regX = numpyempty((150 1) dtype=numpyfloat64)regX[50 0] = numpyrandomrandn(50) - 4regX[50100 0] = numpyrandomrandn(50)regX[100 0] = numpyrandomrandn(50) + 4noise = numpyrandomrandn(regXshape[0]) 10regY = regX[ 0] -05 02 + noise
(suite sur la page suivante)
90 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
regY[regX[ 0] gt 03] = noise[regX[ 0] gt 03]
fig ax = pltsubplots(1 1 figsize=(8 4))axscatter(regX[ 0] regY)axset_title(Nuage de points lineacuteaire par morceaux)
On cale une reacutegression avec scikit-learn
from sklearnlinear_model import LinearRegressionlr = LinearRegression()lrfit(regX regY)
fig ax = pltsubplots(1 1 figsize=(8 4))axscatter(regX[ 0] regY)axscatter(regX[ 0] lrpredict(regX))axset_title(Reacutegression scikit-learn)
24 Un arbre de deacutecision en reacuteseaux de neurones 91
Machine Learning Statistiques et Programmation Version 035930
Et maintenant un neurone avec une fonction drsquoactivation iquestidentityiquest
from mlstatpymlneural_tree import NeuralTreeNodeneu = NeuralTreeNode(1 activation=identity)neu
NeuralTreeNode(weights=array([024515488]) bias=010874563175403863 activation=rarridentity)
neufit(regX regY verbose=True max_iter=20)
020 loss 1508 lr=0002 max(coef) 025 l1=0035 l2=00072120 loss 2872 lr=0000163 max(coef) 019 l1=18025 l2=210039220 loss 2774 lr=0000115 max(coef) 019 l1=03025 l2=00660041320 loss 2621 lr=942e-05 max(coef) 018 l1=016023 l2=00150036420 loss 2658 lr=816e-05 max(coef) 017 l1=19023 l2=250033520 loss 258 lr=73e-05 max(coef) 017 l1=044021 l2=013003620 loss 2611 lr=666e-05 max(coef) 016 l1=01102 l2=000960028720 loss 2542 lr=617e-05 max(coef) 016 l1=017021 l2=00180029820 loss 252 lr=577e-05 max(coef) 016 l1=041021 l2=0120029920 loss 2516 lr=544e-05 max(coef) 016 l1=01021 l2=000600281020 loss 2516 lr=516e-05 max(coef) 016 l1=024021 l2=003900281120 loss 2514 lr=492e-05 max(coef) 016 l1=048021 l2=01600281220 loss 2526 lr=471e-05 max(coef) 016 l1=002702 l2=00004100271320 loss 252 lr=453e-05 max(coef) 016 l1=032021 l2=005800281420 loss 2513 lr=436e-05 max(coef) 016 l1=02602 l2=004500271520 loss 2514 lr=422e-05 max(coef) 016 l1=0045021 l2=0001400281620 loss 2516 lr=408e-05 max(coef) 016 l1=28021 l2=600271720 loss 2513 lr=396e-05 max(coef) 016 l1=02102 l2=002700271820 loss 2516 lr=385e-05 max(coef) 016 l1=01402 l2=001300271920 loss 2517 lr=375e-05 max(coef) 016 l1=0046021 l2=000120028
(suite sur la page suivante)
92 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
2020 loss 253 lr=365e-05 max(coef) 016 l1=01202 l2=00110027
NeuralTreeNode(weights=array([-004747787]) bias=015725388033694113 activation=rarridentity)
fig ax = pltsubplots(1 1 figsize=(8 4))axscatter(regX[ 0] regY)axscatter(regX[ 0] lrpredict(regX) label=sklearn)axscatter(regX[ 0] neupredict(regX) label=NeuralTreeNode)axlegend()axset_title(Reacutegression et neurones)
Ca marche Et avec drsquoautres fonctions drsquoactivation
neus = identity neufor act in tqdm([relu leakyrelu sigmoid])
nact = NeuralTreeNode(1 activation=act)nactfit(regX regY)neus[act] = nact
100|iquest iquest iquest iquest iquest iquest iquest iquest iquest iquest | 33 [0001lt0000 173its]
neus[relu] neus[leakyrelu]
(NeuralTreeNode(weights=array([-056717432]) bias=-20796272519664116 activation=relurarr)NeuralTreeNode(weights=array([-011951102]) bias=-008125009545262747 activation=
rarrleakyrelu))
24 Un arbre de deacutecision en reacuteseaux de neurones 93
Machine Learning Statistiques et Programmation Version 035930
fig ax = pltsubplots(1 1 figsize=(8 4))axscatter(regX[ 0] regY)axscatter(regX[ 0] lrpredict(regX) label=sklearn)for k v in neusitems()
axscatter(regX[ 0] vpredict(regX) label=k)axlegend()axset_title(Reacutegression neuronenactivation)
Rien de surprenant La fonction sigmoiumlde prend ses valeurs entre 0 et 1 La fonction relu est parfois nulle sur unedemi-droite degraves que la fonction est nulle sur lrsquoensemble du nuage de points le gradient est nul partout (voir Rectifier(neural networks)91) La fonction leaky relu est deacutefinie comme suit
f(x) =
x si x gt 0x
100 sinon
Le gradient nrsquoest pas nul sur la partie la plus plate
244 Intermegravede de simples neurones de classification
Avant drsquoapprendre ou plutocirct de continuer lrsquoapprentissage des coefficients du reacuteseaux de neurones voyons comment unneurone se deacutebrouille sur un problegraveme de classification Le neurone nrsquoest pas converti mais appris
from sklearnlinear_model import LogisticRegression
clsX = numpyempty((100 2) dtype=numpyfloat64)clsX[50] = numpyrandomrandn(50 2)clsX[50] = numpyrandomrandn(50 2) + 2clsy = numpyzeros(100 dtype=numpyint64)
(suite sur la page suivante)
91 httpsenwikipediaorgwikiRectifier_(neural_networks)
94 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
clsy[50] = 1
logr = LogisticRegression()logrfit(clsX clsy)pred1 = logrpredict(clsX)
def line_cls(x0 x1 coef bias)y0 = -(coef[00] x0 + bias) coef[01]y1 = -(coef[00] x1 + bias) coef[01]return x0 y0 x1 y1
x0 y0 x1 y1 = line_cls(-5 5 logrcoef_ logrintercept_)
h = 01fig ax = pltsubplots(1 1 figsize=(8 4))axscatter(clsX[clsy == 0 0] clsX[clsy == 0 1] label=cl0)axscatter(clsX[clsy == 1 0] clsX[clsy == 1 1] label=cl1)axscatter(clsX[pred1 == 0 0] + h clsX[pred1 == 0 1] + h label=LR0)axscatter(clsX[pred1 == 1 0] + h clsX[pred1 == 1 1] + h label=LR1)axplot([x0 x1] [y0 y1] y-- lw=4 label=frontiegravere LR)axset_ylim([-3 3])axlegend()axset_title(Classification et neurones)
Un neurone de classification binaire produit deux sorties une pour chaque classe et sont normaliseacutees agrave 1 La fonctiondrsquoactivation est la fonction softmax92
clsY = numpyempty((clsyshape[0] 2) dtype=numpyfloat64)(suite sur la page suivante)
92 httpsenwikipediaorgwikiSoftmax_function
24 Un arbre de deacutecision en reacuteseaux de neurones 95
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
clsY[ 1] = clsyclsY[ 0] = 1 - clsy
softneu = NeuralTreeNode(2 activation=softmax)softneu
NeuralTreeNode(weights=array([[-208861923 018763489][ 035500659 -039231456]]) bias=array([-003589328 0383808 ]) activation=
rarrsoftmax)
softneufit(clsX clsY verbose=True max_iter=20 lr=0001)
020 loss 5106 lr=0001 max(coef) 21 l1=034 l2=048120 loss 2978 lr=995e-05 max(coef) 45 l1=3718 l2=25e+0267220 loss 2914 lr=705e-05 max(coef) 52 l1=9721 l2=2089320 loss 2807 lr=576e-05 max(coef) 54 l1=3023 l2=18e+0298420 loss 2734 lr=499e-05 max(coef) 57 l1=1523 l2=9911e+02520 loss 2654 lr=447e-05 max(coef) 59 l1=1924 l2=1e+0211e+02620 loss 2608 lr=408e-05 max(coef) 61 l1=2625 l2=16e+0212e+02720 loss 2578 lr=378e-05 max(coef) 63 l1=2826 l2=16e+0213e+02820 loss 2515 lr=353e-05 max(coef) 65 l1=3526 l2=23e+0213e+02920 loss 2478 lr=333e-05 max(coef) 66 l1=3327 l2=23e+0214e+021020 loss 2446 lr=316e-05 max(coef) 68 l1=3627 l2=26e+0214e+021120 loss 2412 lr=301e-05 max(coef) 69 l1=4328 l2=34e+0215e+021220 loss 2369 lr=289e-05 max(coef) 7 l1=3128 l2=2e+0215e+021320 loss 2332 lr=277e-05 max(coef) 72 l1=1829 l2=12e+0216e+021420 loss 2321 lr=267e-05 max(coef) 73 l1=3629 l2=27e+0216e+021520 loss 2297 lr=258e-05 max(coef) 74 l1=3430 l2=35e+0217e+021620 loss 2285 lr=25e-05 max(coef) 75 l1=2130 l2=12e+0217e+021720 loss 2245 lr=242e-05 max(coef) 76 l1=1631 l2=1e+0218e+021820 loss 2206 lr=236e-05 max(coef) 77 l1=8931 l2=1618e+021920 loss 2202 lr=229e-05 max(coef) 78 l1=3431 l2=21e+0218e+022020 loss 2176 lr=224e-05 max(coef) 79 l1=2632 l2=13e+0219e+02
NeuralTreeNode(weights=array([[239484139 403623835][541545461 701868202]]) bias=array([794607355 495768881]) activation=
rarrsoftmax)
pred = softneupredict(clsX)pred[5]
array([[989410479e-01 105895211e-02][996986932e-02 900301307e-01][997104404e-01 289559597e-03][999839780e-01 160220367e-04][962522709e-01 374772912e-02]])
pred2 = (pred[ 1] gt 05)astype(numpyint64)
96 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
x00 y00 x01 y01 = line_cls(-4 4 softneucoef[1 1] softneubias[0])x10 y10 x11 y11 = line_cls(-4 4 softneucoef[1 1] softneubias[1])xa ya xb yb = line_cls(
-5 5 softneucoef[1 1] - softneucoef[1 1]softneubias[1] - softneubias[0])
fig ax = pltsubplots(1 2 figsize=(14 6))for i in [0 1]
ax[i]scatter(clsX[clsy == 0 0] clsX[clsy == 0 1] label=cl0)ax[i]scatter(clsX[clsy == 1 0] clsX[clsy == 1 1] label=cl1)ax[i]scatter(clsX[pred1 == 0 0] + h clsX[pred1 == 0 1] + h label=LR0)ax[i]scatter(clsX[pred1 == 1 0] + h clsX[pred1 == 1 1] + h label=LR1)ax[i]scatter(clsX[pred2 == 0 0] + h clsX[pred2 == 0 1] - h label=NN0)ax[i]scatter(clsX[pred2 == 1 0] + h clsX[pred2 == 1 1] - h label=NN1)
ax[0]plot([x0 x1] [y0 y1] y-- lw=4 label=frontiegravere LR)ax[1]plot([x00 x01] [y00 y01] r-- lw=4 label=droite neurone 0)ax[1]plot([x10 x11] [y10 y11] b-- lw=4 label=droite neurone 1)ax[0]plot([xa xb] [ya yb] c-- lw=4 label=frontiegravere neurone)ax[0]set_ylim([max(-6 min([-3 y10 y11 y11 y01]))
min(6 max([3 y10 y11 y11 y01]))])ax[1]set_ylim([max(-6 min([-3 y10 y11 y11 y01]))
min(6 max([3 y10 y11 y11 y01]))])ax[0]legend()ax[1]legend()ax[0]set_title(Frontiegravere de classification)ax[1]set_title(Neurones)
Ca marche On veacuterifie en calculant le score Le neurone a deux sorties La frontiegravere est deacutefinie par lrsquoensemble despoints pour lesquels les deux sorties sont eacutegales Par conseacutequent la distance entre les deux droites deacutefinies par lescoefficients du neurone doivent ecirctre eacutegales Il existe une infiniteacute de solutions menant agrave la mecircme frontiegravere On pourraitpeacutenaliser les coefficients pour converger toujours vers la mecircme solution
from sklearnmetrics import roc_auc_scoreroc_auc_score(clsy logrpredict_proba(clsX)[ 1])
24 Un arbre de deacutecision en reacuteseaux de neurones 97
Machine Learning Statistiques et Programmation Version 035930
09924
roc_auc_score(clsy softneupredict(clsX)[ 1])
0986
La performance est quasiment identique Que ce soit la reacutegression ou la classification lrsquoapprentissage drsquoun neuronefonctionne En sera-t-il de mecircme pour un assemblage de neurones
245 Apprentissage du reacuteseau de neurones
Maintenant qursquoon a vu les diffeacuterentes fonctions drsquoactivations et leur application sur des problegravemes simples onrevient aux arbres convertis sous la forme drsquoun reacuteseau de neurones La prochaine eacutetape est de pouvoir ameacuteliorer lesperformances du modegravele issu de la conversion drsquoun arbre de classification avec un algorithme du gradient On construitpour cela un nuage de points un peu traficoteacute
clsX = numpyempty((150 2) dtype=numpyfloat64)clsX[100] = numpyrandomrandn(100 2)clsX[20 0] -= 1clsX[2040 0] -= 08clsX[100 1] = 2clsX[100 1] += clsX[100 0] 2clsX[100] = numpyrandomrandn(50 2)clsX[100 0] = 2clsX[100 1] += 25clsy = numpyzeros(Xshape[0] dtype=numpyint64)clsy[100] = 1
logr = LogisticRegression()logrfit(clsX clsy)pred1 = logrpredict(clsX)logrscore(clsX clsy)
068
x0 y0 x1 y1 = line_cls(-3 3 logrcoef_ logrintercept_)
fig ax = pltsubplots(1 1 figsize=(4 4))plot_grid(clsX clsy logrpredict logr__class____name__ ax=ax)axplot([x0 x1] [y0 y1] y-- lw=4 label=frontiegravere LR)
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
98 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Mecircme chose avec un arbre de deacutecision et le reacuteseau de neurones converti
dec = DecisionTreeClassifier(max_depth=2)decfit(clsX clsy)pred2 = decpredict(clsX)decscore(clsX clsy)
09066666666666666
On convertit de reacuteseau de neurones Le second argument deacutefinit la pente dans la fonction drsquoactivation
net = NeuralTreeNetcreate_from_tree(dec 05)net15 = NeuralTreeNetcreate_from_tree(dec 15)
from sklearnmetrics import accuracy_score
(roc_auc_score(clsy decpredict_proba(clsX)[ 1])accuracy_score(clsy decpredict(clsX)))
(09354999999999999 09066666666666666)
(roc_auc_score(clsy netpredict(clsX)[ -1])accuracy_score(clsy numpyargmax(netpredict(clsX)[ -2] axis=1)))
(09456 08333333333333334)
(roc_auc_score(clsy net15predict(clsX)[ -1])accuracy_score(clsy numpyargmax(net15predict(clsX)[ -2] axis=1)))
24 Un arbre de deacutecision en reacuteseaux de neurones 99
Machine Learning Statistiques et Programmation Version 035930
(09071 09)
Le reacuteseau de neurones est plus ou moins performant selon la pente dans la fonction drsquoactivation
fig ax = pltsubplots(1 3 figsize=(15 4))plot_grid(clsX clsy decpredict dec__class____name__ ax=ax[0])plot_grid(clsX clsy
lambda x numpyargmax(netpredict(x)[ -2] axis=1)net__class____name__ ax=ax[1])
plot_grid(clsX clsylambda x numpyargmax(net15predict(x)[ -2] axis=1)net15__class____name__ + 15 ax=ax[2])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
Et on apprend le reacuteseau de neurones en partant de lrsquoarbre de deacutepart On choisit celui qui a la pente drsquoactivation la plusfaible
from mlstatpymlneural_tree import label_class_to_softmax_outputclsY = label_class_to_softmax_output(clsy)clsY[3]
array([[1 0][1 0][1 0]])
net2 = netcopy()net2fit(clsX clsY verbose=True max_iter=25 lr=3e-6)
025 loss 7283 lr=3e-06 max(coef) 1 l1=014 l2=095125 loss 7064 lr=244e-07 max(coef) 1 l1=24e+0214 l2=33e+0393225 loss 7048 lr=173e-07 max(coef) 1 l1=24e+0214 l2=33e+0393325 loss 7046 lr=141e-07 max(coef) 1 l1=29e+0214 l2=4e+0393425 loss 7038 lr=122e-07 max(coef) 1 l1=44e+0214 l2=14e+0493525 loss 7035 lr=109e-07 max(coef) 11 l1=25e+0214 l2=35e+0393
(suite sur la page suivante)
100 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
625 loss 7032 lr=999e-08 max(coef) 11 l1=18e+0214 l2=32e+0393725 loss 703 lr=925e-08 max(coef) 11 l1=2e+0214 l2=27e+0393825 loss 7029 lr=866e-08 max(coef) 11 l1=3e+0214 l2=41e+0393925 loss 7029 lr=816e-08 max(coef) 11 l1=19e+0214 l2=29e+03931025 loss 7028 lr=774e-08 max(coef) 11 l1=3e+0214 l2=4e+03931125 loss 7027 lr=738e-08 max(coef) 11 l1=27e+0214 l2=41e+03931225 loss 7027 lr=707e-08 max(coef) 11 l1=25e+0214 l2=35e+03931325 loss 7025 lr=679e-08 max(coef) 11 l1=19e+0214 l2=32e+03931425 loss 7025 lr=654e-08 max(coef) 11 l1=33e+0214 l2=51e+03931525 loss 7024 lr=632e-08 max(coef) 11 l1=28e+0214 l2=42e+03931625 loss 7024 lr=612e-08 max(coef) 11 l1=2e+0214 l2=28e+03931725 loss 7024 lr=594e-08 max(coef) 11 l1=19e+0214 l2=35e+03931825 loss 7024 lr=577e-08 max(coef) 11 l1=22e+0214 l2=31e+03931925 loss 7025 lr=562e-08 max(coef) 11 l1=28e+0214 l2=57e+03932025 loss 7025 lr=548e-08 max(coef) 11 l1=34e+0214 l2=54e+03932125 loss 7025 lr=534e-08 max(coef) 11 l1=27e+0214 l2=43e+03932225 loss 7025 lr=522e-08 max(coef) 11 l1=37e+0214 l2=66e+03932325 loss 7025 lr=511e-08 max(coef) 11 l1=33e+0214 l2=51e+03932425 loss 7026 lr=5e-08 max(coef) 11 l1=29e+0214 l2=44e+03932525 loss 7026 lr=49e-08 max(coef) 11 l1=3e+0214 l2=54e+0393
NeuralTreeNet(2)
fig ax = pltsubplots(1 2 figsize=(12 4))plot_grid(clsX clsy
lambda x numpyargmax(netpredict(x)[ -2] axis=1)Avant apprentissage ax=ax[0])
plot_grid(clsX clsylambda x numpyargmax(net2predict(x)[ -2] axis=1)Apregraves apprentissage ax=ax[1])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
24 Un arbre de deacutecision en reacuteseaux de neurones 101
Machine Learning Statistiques et Programmation Version 035930
Ca ne marche pas ou pas tregraves bien Il faudrait veacuterifier que la configuration actuelle ne se trouve pas dans un minimumlocal auquel cas lrsquoapprentissage par gradient ne donnera quasiment rien
(roc_auc_score(clsy net2predict(clsX)[ -1])accuracy_score(clsy numpyargmax(net2predict(clsX)[ -2] axis=1)))
(09394 06666666666666666)
net2predict(clsX)[-5 -2]
array([[059760975 040239025][069897705 030102295][0616117 0383883 ][066792189 033207811][078813475 021186525]])
netpredict(clsX)[-5 -2]
array([[048111758 051888242][058040964 041959036][050511128 049488872][054010078 045989922][069670643 030329357]])
On peut essayer de repartir agrave zeacutero Des fois ccedila peut marcher mais il faudrait beaucoup plus drsquoessai
net3 = netcopy()dim = net3training_weightsshapenet3update_training_weights(numpyrandomrandn(dim[0]))net3fit(clsX clsY verbose=True max_iter=25 lr=3e-6)
025 loss 7964 lr=3e-06 max(coef) 26 l1=029 l2=043125 loss 7964 lr=244e-07 max(coef) 25 l1=56e+0229 l2=15e+0442225 loss 7964 lr=173e-07 max(coef) 26 l1=5e+0229 l2=14e+0442325 loss 7965 lr=141e-07 max(coef) 26 l1=58e+0229 l2=16e+0442425 loss 7965 lr=122e-07 max(coef) 26 l1=76e+0229 l2=25e+0442525 loss 7965 lr=109e-07 max(coef) 26 l1=51e+0229 l2=14e+0442
(suite sur la page suivante)
102 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
625 loss 7966 lr=999e-08 max(coef) 26 l1=62e+0229 l2=19e+0442725 loss 7966 lr=925e-08 max(coef) 26 l1=62e+0229 l2=19e+0442825 loss 7966 lr=866e-08 max(coef) 26 l1=6e+0229 l2=17e+0442925 loss 7966 lr=816e-08 max(coef) 26 l1=59e+0229 l2=16e+04421025 loss 7966 lr=774e-08 max(coef) 26 l1=56e+0229 l2=15e+04421125 loss 7966 lr=738e-08 max(coef) 26 l1=73e+0229 l2=23e+04421225 loss 7966 lr=707e-08 max(coef) 26 l1=74e+0230 l2=24e+04421325 loss 7966 lr=679e-08 max(coef) 26 l1=68e+0230 l2=21e+04421425 loss 7966 lr=654e-08 max(coef) 26 l1=61e+0230 l2=18e+04421525 loss 7967 lr=632e-08 max(coef) 26 l1=6e+0230 l2=16e+04421625 loss 7967 lr=612e-08 max(coef) 26 l1=59e+0230 l2=16e+04421725 loss 7967 lr=594e-08 max(coef) 26 l1=48e+0230 l2=13e+04421825 loss 7967 lr=577e-08 max(coef) 26 l1=56e+0230 l2=16e+04421925 loss 7967 lr=562e-08 max(coef) 26 l1=58e+0230 l2=16e+04422025 loss 7967 lr=548e-08 max(coef) 26 l1=59e+0230 l2=16e+04422125 loss 7967 lr=534e-08 max(coef) 26 l1=66e+0230 l2=19e+04422225 loss 7967 lr=522e-08 max(coef) 26 l1=59e+0230 l2=18e+04422325 loss 7967 lr=511e-08 max(coef) 26 l1=62e+0230 l2=19e+04422425 loss 7967 lr=5e-08 max(coef) 26 l1=66e+0230 l2=19e+04422525 loss 7967 lr=49e-08 max(coef) 26 l1=48e+0230 l2=12e+0442
NeuralTreeNet(2)
(roc_auc_score(clsy net3predict(clsX)[ -1])accuracy_score(clsy numpyargmax(net3predict(clsX)[ -2] axis=1)))
(06426000000000001 06666666666666666)
fig ax = pltsubplots(1 2 figsize=(12 4))plot_grid(clsX clsy
lambda x numpyargmax(netpredict(x)[ -2] axis=1)Avant apprentissage ax=ax[0])
plot_grid(clsX clsylambda x numpyargmax(net3predict(x)[ -2] axis=1)Apregraves apprentissage ax=ax[1])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
24 Un arbre de deacutecision en reacuteseaux de neurones 103
Machine Learning Statistiques et Programmation Version 035930
246 Autre architecture
Cette fois-ci on reacuteduit le nombre de neurones Au lieu drsquoavoir deux neurones par noeud du graphe on assemble tousles neurones en deux un pour les entreacutees un autre pour le calcul des sorties
netc = NeuralTreeNetcreate_from_tree(dec 1 arch=compact)RenderJsDot(netcto_dot())
(roc_auc_score(clsy netcpredict(clsX)[ -1])accuracy_score(clsy numpyargmax(netcpredict(clsX)[ -2] axis=1)))
(09468 062)
fig ax = pltsubplots(1 2 figsize=(12 4))plot_grid(clsX clsy
lambda x numpyargmax(decpredict_proba(x) axis=1)Avant conversion ax=ax[0])
plot_grid(clsX clsylambda x numpyargmax(netcpredict(x)[ -2] axis=1)Apregraves comversion ax=ax[1])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
104 Chapter 2 Non lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
On reacuteapprend
netc4 = netccopy()netc4fit(clsX clsY verbose=True max_iter=25 lr=1e-6)
025 loss 7911 lr=1e-06 max(coef) 11 l1=025 l2=025125 loss 4829 lr=814e-08 max(coef) 11 l1=31e+0225 l2=49e+0325225 loss 459 lr=576e-08 max(coef) 11 l1=27e+0225 l2=43e+0325325 loss 4529 lr=471e-08 max(coef) 11 l1=9e+0225 l2=58e+0425425 loss 4476 lr=408e-08 max(coef) 11 l1=54e+0225 l2=17e+0425525 loss 4429 lr=365e-08 max(coef) 11 l1=82e+0225 l2=45e+0425625 loss 4396 lr=333e-08 max(coef) 11 l1=39e+0225 l2=61e+0325725 loss 4364 lr=308e-08 max(coef) 11 l1=38e+0225 l2=62e+0325825 loss 4332 lr=289e-08 max(coef) 11 l1=86e+0225 l2=53e+0425925 loss 4295 lr=272e-08 max(coef) 11 l1=32e+0225 l2=55e+03251025 loss 4269 lr=258e-08 max(coef) 11 l1=76e+0225 l2=35e+04251125 loss 4242 lr=246e-08 max(coef) 11 l1=37e+0225 l2=64e+03251225 loss 4219 lr=236e-08 max(coef) 11 l1=8e+0225 l2=42e+04251325 loss 4205 lr=226e-08 max(coef) 11 l1=43e+0225 l2=86e+03251425 loss 4182 lr=218e-08 max(coef) 12 l1=34e+0225 l2=63e+03251525 loss 4166 lr=211e-08 max(coef) 12 l1=12e+0325 l2=11e+05251625 loss 415 lr=204e-08 max(coef) 12 l1=12e+0325 l2=18e+05251725 loss 4136 lr=198e-08 max(coef) 12 l1=44e+0225 l2=11e+04251825 loss 412 lr=192e-08 max(coef) 12 l1=3e+0225 l2=85e+03251925 loss 4104 lr=187e-08 max(coef) 12 l1=25e+0225 l2=53e+03252025 loss 4085 lr=183e-08 max(coef) 12 l1=42e+0225 l2=88e+03252125 loss 4073 lr=178e-08 max(coef) 12 l1=39e+0225 l2=82e+03252225 loss 4059 lr=174e-08 max(coef) 12 l1=74e+0225 l2=31e+04252325 loss 4041 lr=17e-08 max(coef) 12 l1=32e+0225 l2=53e+03252425 loss 4027 lr=167e-08 max(coef) 12 l1=41e+0225 l2=12e+04252525 loss 4017 lr=163e-08 max(coef) 12 l1=57e+0225 l2=2e+0425
NeuralTreeNet(2)
(roc_auc_score(clsy netc4predict(clsX)[ -1])accuracy_score(clsy numpyargmax(netc4predict(clsX)[ -2] axis=1)))
24 Un arbre de deacutecision en reacuteseaux de neurones 105
Machine Learning Statistiques et Programmation Version 035930
(09338000000000001 08866666666666667)
fig ax = pltsubplots(1 2 figsize=(12 4))plot_grid(clsX clsy
lambda x numpyargmax(netcpredict(x)[ -2] axis=1)Avant apprentissage ax=ax[0])
plot_grid(clsX clsylambda x numpyargmax(netc4predict(x)[ -2] axis=1)Apregraves apprentissage ax=ax[1])
ltipython-input-23-56151b64b872gt16 MatplotlibDeprecationWarning shading=flat when Xrarrand Y have the same dimensions as C is deprecated since 33 Either specify therarrcorners of the quadrilaterals with X and Y or pass shading=auto nearest orrarrgouraud or set rcParams[pcolorshading] This will become an error two minorrarrreleases lateraxpcolormesh(xx yy Z cmap=cmap_light)
Crsquoest mieux
106 Chapter 2 Non lineacuteaire
CHAPTER 3
Reacutegression lineacuteaire
La reacutegression lineacuteaire93 est le modegravele preacutedictif le plus simple et celui qursquoon preacutefegravere quand il marche car il est facilementinterpreacutetable agrave lrsquoinverse des modegraveles non lineacuteaires qui gardent leurs secrets si on srsquoen tient seulement agrave leurs coefficientsConcregravetement on dispose drsquoun nuage de point (Xi yi) ougrave Xi isin Rd est un vecteur de dimension d et yi isin R un reacuteelLa reacutegression lineacuteaire consiste agrave construire une fonction preacutedictive yi = f(Xi) =lt Xi β gt= Xiβ ougrave β est un vecteurde dimension d Dans le cas le plus courant on modeacutelise les donneacutees de telle sorte que yi = Xiβ + ϵi ougrave ϵi suit uneloi normale de moyenne nulle et de variance σ Sous cette hypothegravese il iquestagit de trouver le vecteur β qui minimise lavraisemblance du modegravele ce qui revient agrave reacutesoudre le problegraveme drsquooptimisation
minβ
sumi
(yi minusXiβ)2
En deacuterivant on sait exprimer explicitement la solution On note X = (X1 Xi ) la matrice ougrave chaque ligne estune observation Xi et y = (y1 yi ) X prime est la transposeacutee de X Alors
βlowast = (X primeX)minus1X primey
Les chapitres suivants explorent drsquoautres aspects de ce problegravemes comme la reacutegression quantile la reacutegression lineacuteairepar morceaux ou encore lrsquoexpression de β sans calculer de matrice inverse ni de valeurs propres
31 Reacutegression lineacuteaire
Ce notebook srsquointeacuteresse agrave la faccedilon drsquointerpreacuteter les reacutesultats drsquoune reacutegression lineacuteaire lorsque les variables sont correacuteleacuteespuis il explore une faccedilon drsquoassocier arbre de deacutecision et reacutegression lineacuteaire pour construire une reacutegression lineacuteaire parmorceaux
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull Un cas simple (page 108)
93 httpsfrwikipediaorgwikiRC3A9gression_linC3A9aire
107
Machine Learning Statistiques et Programmation Version 035930
bull Evolution de R2 (page 109)bull Deux variables correacuteleacutees (page 110)bull Indicatrices (page 113)bull Reacutegression lineacuteaire par morceaux (page 115)
matplotlib inline
311 Un cas simple
Une faccedilon drsquointerpreacuteter des reacutesultats statistiques est de les calculer dans un cas ougrave la reacuteponse chercheacutee est connue Onsimule un modegravele simple Y = αX1 + 0X2 + ϵ et on cale une reacutegression lineacuteaire On suppose que X1 X2 ϵ sont desvariables aleacuteatoires gaussiennes de mecircme variance et moyenne
import numpyrandom as npreps = nprnormal(1000)X = nprnormal(size=(1000 3))alpha = 2Y = alpha X[0] + X[ 2]Xshape Yshape
((1000 3) (1000))
from numpy import corrcoefcorrcoef(XT)
array([[ 1 -00312982 005188551][-00312982 1 -000356494][ 005188551 -000356494 1 ]])
from statsmodelsregressionlinear_model import OLS
model = OLS(YX[ 2])results = modelfit()su = resultssummary()su
resultsrsquared resultsrsquared_adj
(08153831029946165 08150131292531227)
On veacuterifie que le coefficient devant X1 est non nul (P-value nulle 0 nrsquoest pas lrsquointervalle de confiance) Le coefficientdevant X2 nrsquoest pas nul mais presque la P-value est eacuteleveacutee le coefficient R2 est eacuteleveacute Dessinons
import matplotlibpyplot as pltimport seabornfig ax = pltsubplots(1 2 figsize=(104))ax[0]plot(X[ 0] Y )seabornkdeplot(X[ 0] Y cmap=Reds shade=True shade_lowest=False ax=ax[1])
(suite sur la page suivante)
108 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
ax[0]set_title(nuage de points)ax[1]set_title(estimation de la densiteacute)
cpython370_x64libsite-packagesscipystatsstatspy1713 FutureWarning Using a non-tuplerarrsequence for multidimensional indexing is deprecated use arr[tuple(seq)] instead ofrarrarr[seq] In the future this will be interpreted as an array index arr[nparray(seq)]rarr which will result either in an error or a different resultreturn npaddreduce(sorted[indexer] weights axis=axis) sumval
312 Evolution de R2
Dans la reacutegression preacuteceacutedente le coefficient R2 transcrit en quelque sorte la part du bruit ϵ par rapport au terme αX1Faisons varier α
alphas = []r2s = []for a in [01 i for i in range(0 50)]
Y = aX[0] + X[ 2]model = OLS(YX[ 2])results = modelfit()alphasappend(a)r2sappend(resultsrsquared)
fig ax = pltsubplots(1 1)axplot(alphas r2s label=observed)axplot(alphas [a2(1+a2) for a in alphas] label=theoretical)axset_xlabel(alpha)axset_ylabel(r2)axlegend()
31 Reacutegression lineacuteaire 109
Machine Learning Statistiques et Programmation Version 035930
Dans ce cas de reacutegression simple la valeur agrave preacutedire est yi la valeur preacutedite est yi = αX1i et la moyenne y = αX1+ϵ =0
R2 = 1minussumn
i=1(yi minus y)2sumni=1(yi minus y)2
= 1minus Vϵα2VX1 + Vϵ
= 1minus 1
1 + α2=
α2
1 + α2
313 Deux variables correacuteleacutees
On ne change pas le modegravele mais on fait en sorte que X2 = X1 Les deux variables sont correacuteleacutees
X[ 1] = X[ 0]Y = 2X[0] + X[ 2]model = OLS(YX[ 2])results = modelfit()resultssummary()
modelrank
1
Les variables correacuteleacutees nrsquoont pas lrsquoair de deacuteranger lrsquoalgorithme de reacutesolution car il utilise la meacutethode SVD94 pourreacutesoudre le mecircme problegraveme dans un espace de moindre dimension Le problegraveme survient que les deux variables nesont pas compleacutetement correacuteleacutees On eacutetudie le modegravele Y sim X1 +X prime
2 avec X prime2 = αX1 + (1 minus α)X2 et on reacuteduit la
variance du bruit pour en diminuer les effets
X_ = nprnormal(size=(1000 3))
94 httpsenwikipediaorgwikiSingular-value_decomposition
110 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
alphas = [09 + i 001 for i in range(011)]res = []for a in alphas
X = X_copy()X[ 1] = a X[ 0] + (1-a) X[ 1]Y = X[ 0] + X[ 1] + 01 X[ 2]model = OLS(YX[ 2])results = modelfit()resappend(dict(alpha=a r2=resultsrsquared rank=modelrank c1=resultsparams[0]
rarrc2=resultsparams[1]))
import pandasdf = pandasDataFrame(res)df = dfset_index(alpha)df
fig ax = pltsubplots(12 figsize=(104))df[[r2]]plot(ax=ax[0])df[[c1 c2]]plot(ax=ax[1])ax[0]set_title(R2)ax[1]set_title(coefficients)
Le r2 augmente quand la correacutelation augmente mais les coefficients sont moins fiables Les reacutesultats devraient ecirctresensiblement identiques en theacuteorie mais en pratique plus le deacuteterminant devient proche de zeacutero plus lrsquoordinateur estlimiteacute par sa preacutecision numeacuterique Pour en savoir plus vous pouvez lire un examen eacutecrit que jrsquoai reacutedigeacute en pythonbien sucircr Examen Programmation ENSAE premiegravere anneacutee 200695 Cette preacutecision est aux alentours de 10minus15 ce quicorrespond agrave la preacutecision numeacuterique des double96
alphas = [1 - 10(-i) for i in range(1018)]res = []for a in alphas
X = X_copy()X[ 1] = a X[ 0] + (1-a) X[ 1]
(suite sur la page suivante)
95 httpwwwxavierduprefrsite2013enseignementstdnoteecrit_2006pdf96 httpsenwikipediaorgwikiDouble-precision_floating-point_format
31 Reacutegression lineacuteaire 111
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
Y = X[ 0] + X[ 1] + X[ 2]model = OLS(YX[ 2])results = modelfit()resappend(dict(alpha_1=a-1 r2=resultsrsquared rank=modelrank c1=results
rarrparams[0] c2=resultsparams[1]))
import pandasdf = pandasDataFrame(res)df = dfset_index(alpha_1)df
On fait un dernier test avec scikit-learn97 pour veacuterifier que lrsquoalgorithme de reacutesolution donne des reacutesultats similairespour un cas ougrave le deacuteterminant est quasi-nul
from sklearnlinear_model import LinearRegressionfrom sklearnmetrics import r2_score
alphas = [09 + i 001 for i in range(011)]res = []for a in alphas
X = X_copy()X[ 1] = a X[ 0] + (1-a) X[ 1]Y = X[ 0] + X[ 1] + X[ 2]model = LinearRegression()modelfit(X[ 2] Y)r2 = r2_score(Y modelpredict(X[ 2]))resappend(dict(alpha=a c1=modelcoef_[0] c2=modelcoef_[1] r2=r2))
import pandasdf = pandasDataFrame(res)df = dfset_index(alpha)df
fig ax = pltsubplots(13 figsize=(124))df[[c1 c2]]plot(ax=ax[1])df[[c1 c2]]plot(ax=ax[2])df[[r2]]plot(ax=ax[0])ax[0]set_title(R2)ax[1]set_title(coefficients)ax[2]set_ylim([-5 5])ax[2]set_title(coefficients eacutechelle tronqueacutee)
97 httpscikit-learnorgstable
112 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Le second graphe est trompeur mais il ne faut pas oublier de regarder lrsquoeacutechelle de lrsquoaxe des ordonneacutees
314 Indicatrices
X1 est une variable aleacuteatoire gaussienne On teste maintenant un modegravele Y = X prime1 +X prime
2 + ϵ avec X prime1 = X111X1lt0 et
X prime2 = X111X1⩾0
X = nprnormal(size=(1000 3))X[ 1] = X[ 0]X[X[ 0] gt= 0 0] = 0X[X[ 1] lt 0 1] = 0Y = X[ 0] + X[ 1] + X[ 2]corrcoef(XT)
array([[ 1 047358312 -003083914][ 047358312 1 -001293737][-003083914 -001293737 1 ]])
from pandas import DataFramenames = [Xd i for i in range(Xshape[1]-1)]ax = DataFrame(X[502] columns=names)sort_values(names)reset_index(drop=True)plot()axset_title(Repreacutesentation des features tronqueacutees)
31 Reacutegression lineacuteaire 113
Machine Learning Statistiques et Programmation Version 035930
model = OLS(YX[ 3])results = modelfit()resultssummary()
On deacutecoupe en trois
import numpyX = nprnormal(size=(1000 4))for i in range(0 3)
X[ i] = X_[ 0]X[ 3] = X_[ 2]X[X_[ 0] gt -1 0] = 0X[(X_[ 0] lt -1) | (X_[ 0] gt 1) 1] = 0X[X_[ 0] lt 1 2] = 0Y = X[ 0] + X[ 1] + X[ 2] + X[ 3]corrcoef(XT)
array([[ 1 -000347584 016846101 006722762][-000347584 1 000326437 -004707208][ 016846101 000326437 1 008754832][ 006722762 -004707208 008754832 1 ]])
from pandas import DataFramenames = [Xd i for i in range(Xshape[1]-1)]ax = DataFrame(X[503] columns=names)sort_values(names)reset_index(drop=True)plot()axset_title(Repreacutesentation des features tronqueacutees)
114 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
model = OLS(YX[ 4])results = modelfit()resultssummary()
315 Reacutegression lineacuteaire par morceaux
On se place dans un cas particulier ougrave le problegraveme est lineacuteaire par morceaux
Y = minus2X111X1+ϵ1lt0 + 4X111X+ϵ1gt0 + ϵ2
La reacutegression donne de tregraves mauvais reacutesultat sur ce type de problegravemes mais on cherche une faccedilon systeacutematique dedeacutecouper le problegraveme en segments lineacuteaires
X = nprnormal(size=(10004))alpha = [4 -2]t = (X[ 0] + X[ 3] 05) gt 0switch = numpyzeros(Xshape[0])switch[t] = 1Y = alpha[0] X[ 0] t + alpha[1] X[ 0] (1-t) + X[ 2]
fig ax = pltsubplots(1 1)axplot(X[ 0] Y )axset_title(Nuage de points lineacuteaire par morceaux)
31 Reacutegression lineacuteaire 115
Machine Learning Statistiques et Programmation Version 035930
model = OLS(YX[ 1])results = modelfit()resultssummary()
yp = resultspredict(X[ 1])
fig ax = pltsubplots(1 1)axplot(X[ 0] Y label=expected)axplot(X[ 0] yp label=predicted)axlegend()axset_title(Reacutegression lineacuteaire sur un nuage lineacuteaire par morceaux)
116 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Passons agrave un arbre de deacutecision qui nrsquoest pas le meilleur modegravele mais on va deacutetourner ses reacutesultats pour revenir agrave unproblegraveme de reacutegression par morceaux
from sklearntree import DecisionTreeRegressormodel = DecisionTreeRegressor(min_samples_leaf=10 max_depth=3)modelfit(X[ 1] Y)yp = modelpredict(X[ 1])
fig ax = pltsubplots(1 1)axplot(X[ 0] Y label=expected)axplot(X[ 0] yp label=predicted)axlegend()r2 = r2_score(Y modelpredict(X[ 1]))axset_title(Arbre de deacutecision sur un nuage lineacuteaire par morceauxnR2=f r2)
31 Reacutegression lineacuteaire 117
Machine Learning Statistiques et Programmation Version 035930
from sklearntree import export_graphvizexport_graphviz(model out_file=arbredot)from pyensaegraphhelper import run_dotrun_dot(arbredot arbrepng)from IPythondisplay import ImageImage(arbrepng)
On extrait tous les seuils de lrsquoarbre et on ajoute les milieux de segments
th = list(sorted(set(modeltree_threshold)))th += [(th[i] + th[i-1])2 for i in range(1len(th))]th = list(sorted(th))th
118 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
[-20-18018612563610077-16037225127220154-1323736995458603-10437514781951904-031099767237901690421756133437156706781253740191460934494614601135310011553764343262106781613826751712776717841625214148752743005752561714784592390060419420417547225952]
On fait une reacutegression sur les variables Wigt0 = X111X1gtti W0 = X1 ougrave les (ti) sont les seuils
W = numpyzeros((Xshape[0] len(th)+1))x = X[ 0]W[ 0] = xfor i in range(len(th))
W[x gt th[i] i+1] = x[x gt th[i]]
model = OLS(YW)results = modelfit()resultssummary()
Dessinons les reacutesultats de la preacutedictions
yp = resultspredict(W)fig ax = pltsubplots(1 1)axplot(X[ 0] Y label=expected)axplot(X[ 0] yp label=predicted)axlegend()axset_title(Reacutegression lineacuteaire par morceauxnsur un nuage lineacuteaire par morceauxnR2=frarr resultsrsquared)
31 Reacutegression lineacuteaire 119
Machine Learning Statistiques et Programmation Version 035930
Le modegravele nous suggegravere de ne garder que quelques seuils En srsquoappuyant sur les p-values
keep = numpyarange(len(resultspvalues))[resultspvalues lt 005]keep
array([ 0 5 6 7 13])
W2 = W[ keep]
model = OLS(YW2)results = modelfit()resultssummary()
yp = resultspredict(W2)fig ax = pltsubplots(1 1)axplot(X[ 0] Y label=expected)axplot(X[ 0] yp label=predicted)axlegend()axset_title(Reacutegression lineacuteaire par morceauxnsur un nuage lineacuteaire par morceauxn +
reacuteduction du nombre de segmentsnR2=f resultsrsquared)
120 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Le coefficient R2 est quasiment identique pour un nombre de segments moindre Je me suis amuseacute agrave rendre ce codeplus geacuteneacuterique pour comparer la premiegravere eacutetape le deacutecoupage en morceaux via deux modegraveles un arbre de deacutecisionet le nouvel objet KBinsDiscretizer98 qui segmente une variable sans tenir compte de la cible La reacutegression nrsquoestplus neacutecessaire lineacuteaire Piecewise linear regression99 Je me suis eacutegalement amuseacute agrave faire de mecircme pour uneclassification par morceaux PiecewiseClassifier100 Celle-ci pose quelques soucis pratiques car toutes les classes nesont pas forceacutement repreacutesenteacutees dans chaque compartiment
32 Reacutegression quantile
La reacutegression quantile est moins sensible aux points aberrants Elle peut ecirctre deacutefinie comme une reacutegression avec unenorme L1 (une valeur absolue)
bull Meacutediane et valeur absolue (page 122)bull Reacutegression quantile (page 122)bull Reacutesolution drsquoune reacutegression quantile (page 123)bull Quantile et optimisation (page 123)bull Reacutegression quantile pour un quantile p quelconque (page 124)bull Reacutesolution drsquoune reacutegression quantile pour un quantile p quelconque (page 124)bull Notebook (page 125)
98 httpsscikit-learnorgstablemodulesgeneratedsklearnpreprocessingKBinsDiscretizerhtml99 httpwwwxavierduprefrappmlinsightshelpsphinxnotebookspiecewise_linear_regressionhtml
100 httpwwwxavierduprefrappmlinsightshelpsphinxmlinsightsmlmodelpiecewise_estimatorhtmlmlinsightsmlmodelpiecewise_estimatorPiecewiseClassifier
32 Reacutegression quantile 121
Machine Learning Statistiques et Programmation Version 035930
bull Bilbiographie (page 128)
321 Meacutediane et valeur absolue
On considegravere un ensemble de nombre reacuteels X1 Xn La meacutediane est le nombre M qui veacuterifie sumi
11XiltM =sumi
11XigtM
Plus simplement la meacutediane est obtenue en triant les eacuteleacutements X1 Xn par ordre croissant La meacutediane est alorsle nombre au milieu X[n2 ]
proprieacuteteacute P1 Meacutediane et valeur absolueLa meacutediane M de lrsquoensemble X1 Xn minimise la quantiteacute E =
sumi |Xi minusM |
Avant de deacutemontrer la proprieacuteteacute voyons ce qursquoil se passe entre deux reacuteels La meacutediane de AB peut ecirctre nrsquoimporteougrave sur le segment
De maniegravere eacutevidente les distances des deux cocircteacutes du point M sont eacutegales a+ b = c+ d Mais si M nrsquoest pas sur lesegment on voit de maniegravere eacutevidente que la somme des distances sera plus grande
Nrsquoimporte quel point sur le segment M minimise |AminusM |+ |B minusM | On revient aux n reacuteels trieacutes par ordre croissantX1 Xn et on considegravere les paires (X1 Xn) (X2 Xnminus1)
(X[n2 ]
X[n2 +1]
) Lrsquointersection de tous ces
intervalles est(X[n2 ]
X[n2 +1]
)et on sait drsquoapregraves la petit exemple avec deux points que nrsquoimporte quel point dans
cet intervalle minimise |X1 minusM |+ |Xn minusM |+ |X2 minusM |+ |Xnminus1 minusM |+ = E La proprieacuteteacute est deacutemontreacutee
322 Reacutegression quantile
Maintenant que la meacutediane est deacutefinie par un problegraveme de minimisation il est possible de lrsquoappliquer agrave un problegravemede reacutegression
Deacutefinition D1 Reacutegression quantileOn dispose drsquoun ensemble de n couples (Xi Yi) avec Xi isin Rd et Yi isin R La reacutegression quantile consiste agrave trouverα β tels que la somme
sumi |α+ βXi minus Yi| est minimale
122 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
323 Reacutesolution drsquoune reacutegression quantile
La premiegravere option consiste agrave utiliser une meacutethode de descente de gradient puisque la fonction E =sum
i |Xi minusM |est presque partout deacuterivable Une autre option consiste agrave utiliser lrsquoalgorithme Iteratively reweighted least squares101Lrsquoimpleacutementation est faite par la classe QuantileLinearRegression102 Lrsquoalgorithme est tireacute de [Chen2014]
Algorithme A1 Iteratively reweighted least squaresOn souhaite trouver les paramegravetres Ω qui minimise
E =sumi
|Yi minus f(XiΩ)|
Etape 1On pose foralli wt
i = 1Etape 2On calcule Ωt = argminE(Ω) avec Et(Ω) =
sumi w
ti (Yi minus f(XiΩ))
2Etape 3On met agrave jour les poids wt+1
i = 1maxδ|Yiminusf(XiΩt)| Puis on retourne agrave lrsquoeacutetape 2
Le paramegravetre δ gegravere le cas ougrave la preacutediction est identique agrave la valeur attendue pour un point Xi donneacute Il y a plusieurschoses agrave deacutemontrer On suppose que lrsquoalgorithme converge ce qursquoon nrsquoa pas encore deacutemontreacute Dans ce cas Ωt = Ωt+1
et les coefficients Ωt optimise la quantiteacute
sumi
wti (Yi minus f(XiΩ))
2=sumi
(Yi minus f(XiΩ))2
max δ |Yi minus f(XiΩt)|minusrarrδrarr0
sumi
|Yi minus f(XiΩ)|
On remarque eacutegalement que Et(Ωt) est lrsquoerreur L1 pour les paramegravetres Ω Donc si lrsquoalgorithme converge celui-cioptimise bien lrsquoerreur de la reacutegression quantile Dans le cas drsquoune reacutegression lineacuteaire on sait exprimer la solution
Ωt+1 = (X primeWtX)minus1X primeWty = g(Ωt)avec Wt = diag( 1
maxδ|yiminusΩtXi| )
Drsquoapregraves le theacuteoregraveme du point fixe103 on sait que la suite converge si la fonction g est contractante104
forallx y |f(x)minus f(y)| ⩽ k ∥xminus y∥ avec k lt 1
324 Quantile et optimisation
De la mecircme maniegravere que nous avons deacutefini la meacutediane comme la solution drsquoun problegraveme drsquooptimisation nous pouvonsdeacutefinir nrsquoimporte quel quantile comme tel
proprieacuteteacute P2 Quantile et optimisationLe quantile Qp de lrsquoensemble X1 Xn est le nombre qui veacuterifie
nsumi=1
11XiltQp = np
101 httpsenwikipediaorgwikiIteratively_reweighted_least_squares102 httpwwwxavierduprefrappmlinsightshelpsphinxmlinsightsmlmodelquantile_regressionhtmlmlinsightsmlmodelquantile_
regressionQuantileLinearRegression103 httpsfrwikipediaorgwikiPoint_fixe104 httpsfrwikipediaorgwikiApplication_contractante
32 Reacutegression quantile 123
Machine Learning Statistiques et Programmation Version 035930
Ce nombre minimise la quantiteacute
E =sumi
p |Xi minusQp|+ + (1minus p) |Xi minusQp|minus
Ougrave |a|+ = max a 0 et |a|minus = max minusa 0
On veacuterifie qursquoon retrouve bien ce qui eacutetait eacutenonceacute pour la meacutediane avec p = 12 Il faut deacutemontrer que la solution de ce
programme drsquooptimisation atterrit dans lrsquointervalle souhaiteacuteOn choisit un reacuteel P agrave lrsquointeacuterieur drsquoun intervale et on calcule E(P ) =
sumi p |Xi minus P |++(1minusp) |Xi minus P |minus On note
a(P ) =sumn
i=1 11XiltP et b(P ) =sumn
i=1 11XigtP Comme le point P est agrave lrsquointeacuterieur drsquoun intervalle a + b = nSoit dx un reacuteel tel que P + dx soit toujours dans lrsquointervalle
E(P + dx) =sum
i p |Xi minus P minus dx|+ + (1minus p) |Xi minus P minus dx|minus= minusb(P )pdx+ a(P )(1minus p)dx = (a(P )minus a(P )pminus b(P )p)dx = (a(P )minus pn)dx
On voit que si P est choisi de telle sorte que a(P ) = np la fonction E(P ) est constante sur cette intervalle et crsquoestpreacuteciseacutement le cas lorsque P = Qp Comme la fonction E est une somme positive de fonctions convexes elle lrsquoestaussi Si on a trouveacute un intervalle ougrave la fonction est constante alors celui-ci contient la solution Sinon il suffit justede trouver les intervalles (Ximinus1 Xi) et (Xi Xi+1) pour lesquelles la fonction E est respectivement deacutecroissante etcroissante On cherche donc le point P tel que a(P ) lt pn si P lt Xi et a(P ) gt pn si P gt Xi et ce point correspondau quantile Qp Ceci conclut la deacutemonstration
325 Reacutegression quantile pour un quantile p quelconque
Comme pour la meacutediane il est possible de deacutefinir la reacutegression quantile pour un quantile autre que la meacutediane
Deacutefinition D2 Reacutegression quantileOn dispose drsquoun ensemble de n couples (Xi Yi) avec Xi isin Rd et Yi isin R La reacutegression quantile consiste agrave trouverα β tels que la somme
sumi p |α+ βXi minus Yi|+ + (1minus p) |α+ βXi minus Yi|minus est minimale
326 Reacutesolution drsquoune reacutegression quantile pour un quantile p quelconque
La premiegravere option consiste encore agrave utiliser une meacutethode de descente de gradient puisque la fonction agrave minimiserest presque partout deacuterivable On peut aussi adapter lrsquoalgorithme Iteratively reweighted least squares (page 123)Lrsquoimpleacutementation est faite par la classe QuantileLinearRegression105 (voir [Koenker2017])
Algorithme A2 Iteratively reweighted least squaresOn souhaite trouver les paramegravetres Ω qui minimise
E =sumi
p |Yi minus f(XiΩ)|+ + (1minus p) |Yi minus f(XiΩ)|minus
Etape 1On pose foralli wt
i = 1Etape 2On calcule Ωt = argminE(Ω) avec Et(Ω) =
sumi w
ti (Yi minus f(XiΩ))
2105 httpwwwxavierduprefrappmlinsightshelpsphinxmlinsightsmlmodelquantile_regressionhtmlmlinsightsmlmodelquantile_
regressionQuantileLinearRegression
124 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Etape 3On met agrave jour les poids wt+1
i = 1
maxδ 1p |α+βXiminusYi|++ 11minusp |α+βXiminusYi|minus Puis on retourne agrave lrsquoeacutetape 2
On suppose que lrsquoalgorithme converge ce qursquoon nrsquoa pas encore deacutemontreacute Dans ce cas Ωt = Ωt+1 et les coefficientsΩt optimise la quantiteacute sum
i wti (Yi minus f(XiΩ))
2=
sumi
(Yiminusf(XiΩ))2
maxδ 1p |α+βXiminusYi|++ 11minusp |α+βXiminusYi|minus
minusrarrδrarr0
p |Yi minus f(XiΩ)|+ + (1minus p) |Yi minus f(XiΩ)|minus
327 Notebook
Reacutegression quantile illustreacutee
La reacutegression quantile est moins sensible aux points aberrants Elle peut ecirctre deacutefinie comme une reacutegression avec unenorme L1 (une valeur absolue) Ce notebook explore des reacutegressions avec des quantiles diffeacuterents
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull Un jeu de donneacutees non symeacutetrique (page 125)bull Reacutegression lineacuteaire et reacutegression quantile (page 126)bull Diffeacuterents quantiles (page 127)
matplotlib inline
Un jeu de donneacutees non symeacutetrique
import numpyrandom as nprimport numpyn = 1000eps = nprnormal(n)X = nprrand(n 1) 5X1 = nprnormal(size=(n 1)) 1X2 = nprnormal(size=(n2 1)) 10X2 = numpyvstack([X2 numpyzeros((n2 1))])eps = - numpyabs(X1) + numpyabs(X2)Y = (05 X + eps)ravel()Xshape Yshape
((1000 1) (1000))
import matplotlibpyplot as pltfig ax = pltsubplots(1 1 figsize=(55))axplot(X Y c)
32 Reacutegression quantile 125
Machine Learning Statistiques et Programmation Version 035930
Reacutegression lineacuteaire et reacutegression quantile
from sklearnlinear_model import LinearRegressionclr = LinearRegression()clrfit(X Y)
LinearRegression(copy_X=True fit_intercept=True n_jobs=1 normalize=False)
from mlinsightsmlmodel import QuantileLinearRegressionclq = QuantileLinearRegression()clqfit(X Y)
QuantileLinearRegression(copy_X=True delta=00001 fit_intercept=Truemax_iter=10 n_jobs=1 normalize=False quantile=05verbose=False)
fig ax = pltsubplots(1 1 figsize=(55))axplot(X Y c)lin = clrpredict(X)axplot(X lin ro label=L2)qu = clqpredict(X)axplot(X qu bo label=L1)axlegend()axset_title(Reacutegression lineacuteaire et quantile)
126 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Diffeacuterents quantiles
clqs = for qu in [01 025 05 075 09]
clq = QuantileLinearRegression(quantile=qu)clqfit(X Y)clqs[q=12f qu] = clq
fig ax = pltsubplots(1 1 figsize=(55))axplot(X Y c)for k v in sorted(clqsitems())
p = vpredict(X)axplot(X p o label=k)
axlegend()axset_title(Reacutegressions quantiles)
32 Reacutegression quantile 127
Machine Learning Statistiques et Programmation Version 035930
328 Bilbiographie
Des reacutefeacuterences sont disponibles sur la page de statsmodels106 QuantReg107 ou lagrave Reacutegression quantile108
33 Reacutegression lineacuteaire par morceaux
Le paragraphe Reacutegression lineacuteaire (page 107) eacutetudie le lien entre le coefficient R2 et la correacutelation pour finalementillustrer une faccedilon de reacutealiser une reacutegression lineacuteaire par morceaux Lrsquoalgorithme srsquoappuie sur un arbre de reacutegressionpour deacutecouper en morceaux ce qui nrsquoest pas le plus satisfaisant car lrsquoarbre cherche agrave deacutecouper en segment enapproximant la variable agrave reacutegresser Y par une constante sur chaque morceaux et non une droite On peut se poserla question de comment faire pour construire un algorithme qui deacutecoupe en approximant Y par une droite et non uneconstante Le plus dur nrsquoest pas de le faire mais de le faire efficacement Et pour comprendre lagrave ougrave je veux vousemmener il faudra un peu de matheacutematiques
bull Exploration (page 129)ndash Problegraveme et regreacutession lineacuteaire dans un espace agrave une dimension (page 129)ndash Impleacutementation naiumlve drsquoune reacutegression lineacuteaire par morceaux (page 137)ndash Aparteacute sur la continuiteacute de la reacutegression lineacuteaire par morceaux (page 137)
106 httpwwwstatsmodelsorgstableindexhtml107 httpwwwstatsmodelsorgstablegeneratedstatsmodelsregressionquantile_regressionQuantReghtml108 httpswwwxavierduprefrappensae_teaching_cshelpsphinxml2atd2a_mlplus_regression_quantilehtml
128 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
ndash Reacutegression lineacuteaire et correacutelation (page 138)ndash Ideacutee de lrsquoalgorithme (page 138)ndash Un peu plus en deacutetail dans lrsquoalgorithme (page 139)
bull Synthegravese matheacutematique (page 141)bull Streaming (page 143)
ndash Streaming Gram-Schmidt (page 143)ndash Streaming Linear Regression (page 144)ndash Streaming Linear Regression version Gram-Schmidt (page 145)
bull Digressions (page 147)bull Notebooks (page 147)bull Impleacutementations (page 151)bull Bilbiographie (page 151)
Une impleacutementation de ce type de meacutethode est proposeacutee dans la pull request Model trees (M5P and co)111 qui reacutepondagrave au problegraveme poseacutee dans Model trees (M5P)112 et originellement impleacutementeacutee dans Building Model Trees113 Cettederniegravere impleacutementation reacuteestime les modegraveles comme lrsquoimpleacutementation deacutecrite au paragraphe Impleacutementation naiumlvedrsquoune reacutegression lineacuteaire par morceaux (page 137) mais eacutetendue agrave tout type de modegravele
331 Exploration
Problegraveme et regreacutession lineacuteaire dans un espace agrave une dimension
Tout drsquoabord une petite illustration du problegraveme avec la classe PiecewiseRegression114 impleacutementeacutee selon lrsquoAPI descikit-learn115
Reacutegression lineacuteaire par morceaux
La reacutegression lineacuteaire par morceaux a lrsquoavantage de produire un modegravele localement interpreacutetable Mais ce nrsquoest paseacutevident drsquoestimer un tel modegravele quand on ne connaicirct pas les morceaux par avance
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull Des donneacutees artificielles (page 130)bull Quelques exemples avec un arbre de deacutecision (page 131)bull Quelques exemples avec un KBinsDiscretizer (page 132)bull Arbre de deacutecision optimiseacute pour la reacutegression lineacuteaire (page 133)
matplotlib inline
111 httpsgithubcomscikit-learnscikit-learnissues13106112 httpsgithubcomscikit-learnscikit-learnpull13732113 httpsgithubcomankonzoidLearningXtreemasteradvanced_MLmodel_tree114 httpwwwxavierduprefrappmlinsightshelpsphinxnotebookspiecewise_linear_regressionhtml115 httpsscikit-learnorg
33 Reacutegression lineacuteaire par morceaux 129
Machine Learning Statistiques et Programmation Version 035930
Des donneacutees artificielles
from numpyrandom import normalimport numpyimport matplotlibpyplot as plt
def nuage(n alpha noise=02)eps = normal(0 2 (n 2))X = eps[ 0] + 2X1 = eps[ 0]copy()X2 = eps[ 0]copy()th = 1X1[X1 lt= th] = 0X2[X2 gt th] = 0sel = numpyzeros((n))sel[X1 gt th] = 1Y = X1 alpha - X2 alpha + eps[ 1] noise - sel alpha th 2return X Y
fig ax = pltsubplots(1 2 figsize=(12 4))alpha noise = 05 02X Y = nuage(200 alpha)ax[0]plot(X Y )ax[0]set_title(alpha=12f noise=12f (alpha noise))alpha noise = 2 04X Y = nuage(200 alpha noise=04)ax[1]plot(X Y )ax[1]set_title(alpha=12f noise=12f (alpha noise))
130 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Quelques exemples avec un arbre de deacutecision
La segmentation est reacutealiseacutee drsquoabord avec un arbre de deacutecision dont on fixe la profondeur Chaque segment est choiside telle sorte agrave minimiser lrsquoapproximation de la fonction par une constante sur chaque segment
from mlinsightsmlmodel import PiecewiseRegressorfrom sklearntree import DecisionTreeRegressor
def nuage_piecewise(n alpha noise=02 max_depth=1)X Y = nuage(n alpha noise=noise)clr = PiecewiseRegressor(binner=DecisionTreeRegressor(max_depth=max_depth))Xm = Xreshape((len(X) 1))clrfit(Xm Y)mi ma = Xmin() Xmax()Xm = numpyarange(0 200) (ma - mi) 200 + miXm = Xmreshape((len(Xm) 1))return X Y Xm clrpredict(Xm)
def plot(i j alpha noise max_depth ax)X Y XX Z = nuage_piecewise(200 alpha max_depth=max_depth)ax[i j]plot(X Y )ax[i j]plot(XX Z )ax[i j]set_title(alpha=12f noise=12f max_depth=d (
alpha noise max_depth))
fig ax = pltsubplots(2 2 figsize=(12 6))
alpha noise max_depth = 05 02 1plot(0 0 alpha noise max_depth ax)
alpha noise max_depth = 2 04 1plot(0 1 alpha noise max_depth ax)
alpha noise max_depth = 05 02 2plot(1 0 alpha noise max_depth ax)
alpha noise max_depth = 2 04 2plot(1 1 alpha noise max_depth ax)
pltsuptitle(Reacutegression lineacuteaire avec DecisionTreeRegressor)
33 Reacutegression lineacuteaire par morceaux 131
Machine Learning Statistiques et Programmation Version 035930
Quelques exemples avec un KBinsDiscretizer
from mlinsightsmlmodel import PiecewiseRegressorfrom sklearnpreprocessing import KBinsDiscretizer
def nuage_piecewise2(n alpha noise=02 n_bins=2)X Y = nuage(n alpha noise=noise)clr = PiecewiseRegressor(binner=KBinsDiscretizer(n_bins=n_bins))Xm = Xreshape((len(X) 1))clrfit(Xm Y)mi ma = Xmin() Xmax()Xm = numpyarange(0 200) (ma - mi) 200 + miXm = Xmreshape((len(Xm) 1))return X Y Xm clrpredict(Xm)
def plot2(i j alpha noise n_bins ax)X Y XX Z = nuage_piecewise2(200 alpha n_bins=n_bins)ax[i j]plot(X Y )ax[i j]plot(XX Z )ax[i j]set_title(alpha=12f noise=12f n_bins=d (
alpha noise n_bins))
fig ax = pltsubplots(2 2 figsize=(12 6))
alpha noise n_bins = 05 02 2plot2(0 0 alpha noise n_bins ax)
alpha noise n_bins = 2 04 2(suite sur la page suivante)
132 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
plot2(0 1 alpha noise n_bins ax)
alpha noise n_bins = 05 02 4plot2(1 0 alpha noise n_bins ax)
alpha noise n_bins = 2 04 4plot2(1 1 alpha noise n_bins ax)
pltsuptitle(Reacutegression lineacuteaire avec KBinsDiscretizer)
Crsquoest mieux mais ce nrsquoest pas parfait La classe KBinsDiscretizer116 fonctionne simplement en segmentant les donneacuteesmais elle ne tient pas compte de la cible
Arbre de deacutecision optimiseacute pour la reacutegression lineacuteaire
Lrsquoarbre suivant reprend lrsquoalgorithme de lrsquoarbre de deacutecision agrave ceci pregraves qursquoil optimise un critegravere MSE117 en approximantle nuage de points (Xi yi) par une fonction lineacuteaire yi = Xiβ + ϵi Il faut neacuteanmoins augmenter le nombre de pointspar feuille pour eacuteviter quelques artefacts
from mlinsightsmlmodelpiecewise_tree_regression import PiecewiseTreeRegressorfrom sklearnpreprocessing import KBinsDiscretizer
def nuage_piecewise2(n alpha noise=02 min_samples_leaf=30)X Y = nuage(n alpha noise=noise)clr = PiecewiseTreeRegressor(criterion=mselin
min_samples_leaf=min_samples_leaf)(suite sur la page suivante)
116 httpsscikit-learnorgstablemodulesgeneratedsklearnpreprocessingKBinsDiscretizerhtml117 httpsscikit-learnorgstablemodulesgeneratedsklearnmetricsmean_squared_errorhtml
33 Reacutegression lineacuteaire par morceaux 133
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
Xm = Xreshape((len(X) 1))clrfit(Xm Y)mi ma = Xmin() Xmax()Xm = numpyarange(0 200) (ma - mi) 200 + miXm = Xmreshape((len(Xm) 1))return X Y Xm clrpredict(Xm)
def plot2(i j alpha noise min_samples_leaf ax)X Y XX Z = nuage_piecewise2(200 alpha
min_samples_leaf=min_samples_leaf)ax[i j]plot(X Y )ax[i j]plot(XX Z )ax[i j]set_title(alpha=12f noise=12f min_samples_leaf=d (
alpha noise min_samples_leaf))
fig ax = pltsubplots(2 2 figsize=(12 6))
alpha noise min_samples_leaf = 05 02 40plot2(0 0 alpha noise min_samples_leaf ax)
alpha noise min_samples_leaf = 2 04 40plot2(0 1 alpha noise min_samples_leaf ax)
alpha noise min_samples_leaf = 05 02 30plot2(1 0 alpha noise min_samples_leaf ax)
alpha noise min_samples_leaf = 2 04 30plot2(1 1 alpha noise min_samples_leaf ax)
pltsuptitle(Arbre de deacutecision optimiseacutenpour la reacutegression lineacuteaire par morceaux)
Cxavierdupre__home_github_forkscikit-learnsklearntree_classespy335 FutureWarningrarrThe parameter X_idx_sorted is deprecated and has no effect It will be removed in 1rarr1 (renaming of 026) You can suppress this warning by not passing any value to the X_rarridx_sorted parameterwarningswarn(
Cxavierdupre__home_github_forkscikit-learnsklearntree_classespy335 FutureWarningrarrThe parameter X_idx_sorted is deprecated and has no effect It will be removed in 1rarr1 (renaming of 026) You can suppress this warning by not passing any value to the X_rarridx_sorted parameterwarningswarn(
Cxavierdupre__home_github_forkscikit-learnsklearntree_classespy335 FutureWarningrarrThe parameter X_idx_sorted is deprecated and has no effect It will be removed in 1rarr1 (renaming of 026) You can suppress this warning by not passing any value to the X_rarridx_sorted parameterwarningswarn(
Cxavierdupre__home_github_forkscikit-learnsklearntree_classespy335 FutureWarningrarrThe parameter X_idx_sorted is deprecated and has no effect It will be removed in 1rarr1 (renaming of 026) You can suppress this warning by not passing any value to the X_rarridx_sorted parameterwarningswarn(
134 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Il faudrait ajouter des contraintes de continuiteacute
Cette reacutegression par morceaux est obtenue gracircce agrave un arbre de deacutecision Celui-ci trie le nuage de points (Xi Yi) parordre croissant selon les X soit Xi ⩽ Xi+1 Lrsquoarbre coupe en deux lorsque la diffeacuterence des erreurs quadratiques estmaximale erreur quadratique obtenue en approximant Y par sa moyenne sur lrsquointervalle consideacutereacute On note lrsquoerreurquadratique
C(i j) = 1jminusi+1
sumi⩽k⩽j Yi
D(i j) = 1jminusi+1
sumi⩽k⩽j Y
2i
E(i j) = 1jminusi+1
sumi⩽k⩽j(Yi minus C(i j))2 = 1
jminusi+1
sumi⩽k⩽j Y
2i minus C(i j)2 = D(i j)minus C(i j)2
La derniegravere ligne applique la formule VX = EX2 minus EX2 qui est facile agrave redeacutemontrer Lrsquoalgorithme de lrsquoarbre dedeacutecision coupe un intervalle en deux et deacutetermine lrsquoindice k qui minimise la diffeacuterence
∆k = E(1 n)minus (E(1 k) + E(k + 1 n))
Lrsquoarbre de deacutecision optimise la construction drsquoune fonction en escalier qui repreacutesente au mieux le nuage de points lestraits verts sur le graphe suivant alors qursquoil faudrait choisir une erreur quadratique qui corresponde aux traits oranges
33 Reacutegression lineacuteaire par morceaux 135
Machine Learning Statistiques et Programmation Version 035930
Il suffirait donc de remplacer lrsquoerreur E par celle obtenue par une reacutegression lineacuteaire Mais si crsquoeacutetait aussi simplelrsquoimpleacutementation de sklearntreeDecisionTreeRegressor118 la proposerait Alors pourquoi La raison principale estque cela coucircte trop cher en temps de calcul Pour trouver lrsquoindice k il faut calculer toutes les erreursE(1 k)E(k+1 n)ce qui coucircte tregraves cher lorsque cette erreur est celle drsquoune reacutegression lineacuteaire parce qursquoil est difficile de simplifier ladiffeacuterence
∆k minus∆kminus1 = minus(E(1 k) + E(k + 1 n)) + (E(1 k minus 1) + E(k n))= E(1 k minus 1)minus E(1 k) + E(k n)minus E(k + 1 n)
Arbre de reacutegression constanteOn srsquointeacuteresse au terme E(1 kminus1)minusE(1 k) dans le cas le nuage de points est repreacutesenteacute par une constante sur chaquesegment Crsquoest lrsquohypothegravese faite par lrsquoalgorithme classique de construction drsquoun arbre de reacutegression (segments vertssur le premier dessin)
C(1 k minus 1)minus C(1 k) = 1kminus1
sum1⩽i⩽kminus1 Yi minus 1
k
sum1⩽i⩽k Yi
= ( 1kminus1 minus
1k )sum
1⩽i⩽kminus1 Yi minus Yk
k
= 1k(kminus1)
sum1⩽i⩽kminus1 Yi minus Yk
k
= 1kC(1 k minus 1)minus Yk
k
On en deacuteduit que
E(1 k minus 1)minus E(1 k) = 1kD(1 k minus 1)minus Y 2
k
k + (C(1 k minus 1)minus C(1 k))(C(1 k minus 1) + C(1 k))
= 1kD(1 k minus 1)minus Y 2
k
k +(1kC(1 k minus 1)minus Yk
k
) (Yk
k minus1kC(1 k minus 1) + 2C(1 k minus 1)
)On voit que cette formule ne fait intervenir que C(1 kminus1) D(1 kminus1) Yk elle est donc tregraves rapide agrave calculer et crsquoestpour cela qursquoapprendre un arbre de deacutecision peut srsquoapprendre en un temps raisonnable Cela repose sur la possibiliteacute decalculer le critegravere optimiseacute par reacutecurrence On voit eacutegalement que ces formules ne font pas intervenir X elles sont doncgeacuteneacuteralisables au cas multidimensionnel Il suffira de trier les couples (Xi Yi) selon chaque dimension et deacuteterminerle meilleur seuil de coupure drsquoabord sur chacune des dimensions puis de prendre le meilleur de ces seuils sur toutes lesdimensions Le problegraveme est reacutesoluLe notebook Custom Criterion for DecisionTreeRegressor119 impleacutemente une version pas efficace du critegravere MSE120
et compare la vitesse drsquoexeacutecution avec lrsquoimpleacutementation de scikit-learn121 Il impleacutemente ensuite le calcul rapidede scikit-learn pour montrer qursquoon obtient un temps comparable Le reacutesultat est sans eacutequivoque La version rapidenrsquoimpleacutemente pas ∆k minus∆kminus1 mais plutocirct les sommes
sumk1 wiYi
sumk1 wiY
2i dans un sens et dans lrsquoautre En gros le
code stocke les seacuteries des numeacuterateurs et des deacutenominateurs pour les diviser au dernier momentArbre de reacutegression lineacuteaireLe cas drsquoune reacutegression est plus complexe Prenons drsquoabord le cas ougrave il nrsquoy a qursquoun seule dimension il faut drsquoabordoptimiser le problegraveme
E(1 n) = minab
=
nsumk=1
(aXk + bminus Yk)2
118 httpsscikit-learnorgstablemodulesgeneratedtreeDecisionTreeRegressorhtml119 httpwwwxavierduprefrappmlinsightshelpsphinxnotebookspiecewise_linear_regression_criterionhtml120 httpsscikit-learnorgstablemodulesgeneratedsklearnmetricsmean_squared_errorhtml121 httpsscikit-learnorg
136 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
On deacuterive pour aboutir au systegraveme drsquoeacutequations suivant
partE(1n)parta = 0 =
sumnk=1 Xk(aXk + bminus Yk)
partE(1n)partb = 0 =
sumnk=1 aXk + bminus Yk
Ce qui aboutit agrave
a(1 n) =sumn
k=1 XkYkminus(sumn
k=1 Xk)(sumn
k=1 Yk)sumnk=1 X2
kminus(sumn
k=1 Xk)2
b(1 n) =sumn
k=1 Yk minus a (sumn
k=1 Xk)
Pour construire un algorithme rapide pour apprendre un arbre de deacutecision avec cette fonction de coucirct il fautpouvoir calculer a(1 k) en fonction de a(1 k minus 1) b(1 k minus 1) Xk Yk ou drsquoautres quantiteacutes intermeacutediaires quine font pas intervenir les valeurs Xiltk lt Yiltk Drsquoapregraves ce qui preacutecegravede cela paraicirct tout-agrave-fait possible Maisdans le cas multidimensionnel122 il faut deacuteterminer le vecteur A qui minimise
sumnk=1 ∥Y minusXA∥2 ce qui donne
A = (X primeX)minus1X primeY Si on note M1k la matrice M tronqueacutee pour ne garder que ses k premiegraveres lignes il faudraitpouvoir calculer rapidement
Akminus1 minusAk = (X prime1kminus1X1kminus1)
minus1X prime1kminus1Y1kminus1 minus (X prime
1kX1k)minus1X prime
1kY1k
La documentation de sklearntreeDecisionTreeRegressor123 ne mentionne que deux critegraveres pour apprendreun arbre de deacutecision de reacutegression MSE pour sklearnmetricsmean_squared_error124 et MAE poursklearnmetricsmean_absolute_error125 Les autres critegraveres nrsquoont probablement pas eacuteteacute envisageacutes Lrsquoarticle[Acharya2016] eacutetudie la possibiliteacute de ne pas calculer la matrice Ak pour tous les k Le paragraphe Streaming LinearRegression (page 144) utilise le fait que la matrice A est la solution drsquoun problegraveme drsquooptimisation quadratique etpropose un algorithme de mise agrave jour de la matrice A (cas unidimensionnel) Cet exposeacute va un peu plus loin pourproposer une version qui ne calcule pas de matrices inverses
Impleacutementation naiumlve drsquoune reacutegression lineacuteaire par morceaux
On part du cas geacuteneacuteral qui eacutecrit la solution drsquoune reacutegression lineacuteaire comme eacutetant la matrice A = (X primeX)minus1X primeY et onadapte lrsquoimpleacutementation de scikit-learn126 pour optimiser lrsquoerreur quadratique obtenue Ce nrsquoest pas simple mais pasimpossible Il faut entrer dans du code cython127 et pour eacuteviter de reacuteeacutecrire une fonction qui multiplie et inverse unematrice on peut utiliser la librairie LAPACK128 Je ne vais pas plus loin ici car cela serait un peu hors sujet mais cenrsquoeacutetait pas une partie de plaisir Cela donne piecewise_tree_regression_criterion_linearpyx129 Crsquoest illustreacute toujourspar le notebook DecisionTreeRegressor optimized for Linear Regression130
Aparteacute sur la continuiteacute de la reacutegression lineacuteaire par morceaux
Approcher la fonction y = f(x) + ϵ quand x et y sont reacuteels est un problegraveme facile trop facile A voir le dessinpreacuteceacutedent il est naturel de vouloir recoller les morceaux lorsqursquoon passe drsquoun segment agrave lrsquoautre Il srsquoagit drsquouneoptimisation sous contrainte Il est possible eacutegalement drsquoajouter une contrainte de reacutegularisation qui tient comptede cela On exprime cela comme suit avec une reacutegression lineacuteaire agrave deux morceaux
E =sumXi⩽t
(a1Xi + b1 minus y)2 +sumXi⩾t
(a2Xi + b2 minus y)2 + λ(a1t+ b1 minus a2tminus b)2
122 httpsfrwikipediaorgwikiRC3A9gression_linC3A9aireEstimateur_des_moindres_carrC3A9s123 httpsscikit-learnorgstablemodulesgeneratedtreeDecisionTreeRegressorhtml124 httpsscikit-learnorgstablemodulesgeneratedmetricsmean_squared_errorhtml125 httpsscikit-learnorgstablemodulesgeneratedmetricsmean_absolute_errorhtml126 httpsscikit-learnorg127 httpscythonorg128 httpwwwnetliborglapack129 httpsgithubcomsdpythonmlinsightsblobmastermlinsightsmlmodelpiecewise_tree_regression_criterion_linearpyx130 httpwwwxavierduprefrappmlinsightshelpsphinxnotebookspiecewise_linear_regression_criterionhtml
33 Reacutegression lineacuteaire par morceaux 137
Machine Learning Statistiques et Programmation Version 035930
Le cas multidimensionnel est loin drsquoecirctre aussi simple Avec une dimension chaque zone a deux voisines En deuxdimensions chaque zone peut en avoir plus de deux La figure suivante montre une division de lrsquoespace dans laquellela zone centrale a cinq voisins
Peut-on facilement approcher une fonction z = f(x y) + ϵ par un plan en trois dimensions A moins que tous lessommets soient deacutejagrave dans le mecircme plan crsquoest impossible La zone en question nrsquoest peut-ecirctre mecircme pas convexe Unereacutegression lineacuteaire par morceaux et continue en plusieurs dimensions nrsquoest pas un problegraveme facile Cela nrsquoempecircchepas pour autant drsquoinfluencer la deacutetermination de chaque morceaux avec une contrainte du type de celle eacutevoqueacutee plushaut mais pour eacutecrire la contrainte lorsque les zones sont construites agrave partir des feuilles drsquoun arbre de deacutecision il fautdeacuteterminer quelles sont les feuilles voisines Et ccedila crsquoest un problegraveme inteacuteressant
Reacutegression lineacuteaire et correacutelation
On reprend le calcul multidimensionnel mais on srsquointeacuteresse au cas ougrave la matrice X primeX est diagonale quicorrespond au cas ougrave les variables X1 XC ne sont pas correacuteleacutees Si X primeX = diag(λ1 λC) =diag(
sumnk=1 X
2k1
sumnk=1 X
2kC) la matrice A srsquoexprime plus simplement A = Dminus1X primeY On en deacuteduit que
ac =
sumnk=1 XkcYksumnk=1 X
2kc
=
sumnk=1 XkcYk
λc
Cette expression donne un indice sur la reacutesolution drsquoune reacutegression lineacuteaire pour laquelle les variables sont correacuteleacutees Ilsuffit drsquoappliquer drsquoabord une ACP131 (Analyse en Composantes Principales) et de calculer les coefficients ac associeacutesagrave des valeurs propres non nulles On eacutecrit alors X primeX = P primeDP ougrave la matrice P veacuterifie P primeP = I
Ideacutee de lrsquoalgorithme
On srsquointeacuteresser drsquoabord agrave la recherche drsquoun meilleur point de coupure Pour ce faire les eacuteleacutements (Xi yi) sont trieacutesle plus souvent selon lrsquoordre deacutefini par une dimension On note E lrsquoerreur de preacutediction sur cette eacutechantillon E =minβ
sumk(Xkβ minus yk)
2 On deacutefinit ensuite E(i j) = minβsumj
k=i(Xkβ minus yk)2 Drsquoapregraves cette notation E = E(1 n)
La construction de lrsquoarbre de deacutecision passe par la deacutetermination de klowast qui veacuterifie
E(1 klowast) + E(klowast + 1 n) = mink E(1 k) + E(k + 1 n)
= mink
(minβ1
sumkl=1(Xlβ1 minus yl)
2 +minβ2
sumnl=k+1(Xlβ2 minus yl)
2)
Autrement dit on cherche le point de coupure qui maximise la diffeacuterence entre la preacutediction obtenue avec deuxreacutegressions lineacuteaires plutocirct qursquoune On sait qursquoil existe une matrice P qui veacuterifie
PP prime = 1 et (XP )prime(XP ) = P primeX primeXP = D = Z primeZ
131 httpsfrwikipediaorgwikiAnalyse_en_composantes_principales
138 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Ougrave D = diag(d1 dC) est une matrice diagonale On a poseacute Z = XP donc da =lt Za Za gt On peut reacuteeacutecrire leproblegraveme de reacutegression comme ceci
βlowast = argminβ
sumi
∥yi minusXiβ∥ = argminβ∥Y minusXβ∥
Comme X = ZP prime
∥Y minusXβ∥ = ∥Y minusXβ∥ = ∥Y minus ZP primeβ∥ = ∥Y minus Zγ∥
Avec γ = P primeβ Crsquoest la mecircme reacutegression apregraves un changement de repegravere et on la reacutesoud de la mecircme maniegravere
γlowast = (Z primeZ)minus1Z primeY = Dminus1Z primeY
La notation Mi deacutesigne la ligne i et M[k] deacutesigne la colonne On en deacuteduit que le coefficient de la reacutegression γk esteacutegal agrave
γk =lt Z[k] Y gt
lt Z[k] Z[k] gt=
lt (XP prime)[k] Y gt
lt (XP prime)[k] (XP prime)[k] gt
On en deacuteduit que
∥Y minusXβ∥ =
∥∥∥∥∥Y minusCsum
k=1
Z[k]
lt Z[k] Y gt
lt Z[k] Z[k] gt
∥∥∥∥∥ =
∥∥∥∥∥Y minusCsum
k=1
(XP prime)[k]lt (XP prime)[k] Y gt
lt (XP prime)[k] (XP prime)[k] gt
∥∥∥∥∥Algorithme A1 Arbre de deacutecision optimiseacute pour les reacutegressions lineacuteairesOn dipose qursquoun nuage de points (Xi yi) avec Xi isin Rd et yi isin R Les points sont trieacutes selon une dimension On noteX la matrice composeacutee des lignes X1 Xn et le vecteur colonne y = (y1 yn) Il existe une matrice P telle queP primeP = I et X primeX = P primeDP avec D une matrice diagonale On note Xab la matrice constitueacutee des lignes a agrave b Oncalcule
MSE(X y a b) =
∥∥∥∥∥Y minusCsum
k=1
(XabPprime)[k]
lt (XabPprime)[k] Y gt
lt (XabP prime)[k] (XabP prime)[k] gt
∥∥∥∥∥2
Un noeud de lrsquoarbre est construit en choisissant le point de coupure qui minimise
MSE(X y 1 t) +MSE(X y t+ 1 n)
Par la suite on verra que le fait que la matrice soit diagonale est lrsquoeacuteleacutement principal mais la matrice P ne doit pasneacutecessairement veacuterifier P primeP = I
Un peu plus en deacutetail dans lrsquoalgorithme
Jrsquoai penseacute agrave plein de choses pour aller plus loin car lrsquoideacutee est de quantifier agrave peu pregraves combien on pert en preacutecisionen utilisant des vecteurs propres estimeacutes avec lrsquoensemble des donneacutees sur une partie seulement Je me suis demandeacutesi les vecteurs propres drsquoune matrice pouvait ecirctre construit agrave partir drsquoune fonction continue de la matrice symeacutetriquede deacutepart A peu pregraves vrai mais je ne voyais pas une faccedilon de majorer cette continuiteacute Ensuite je me suis dit que lesvecteurs propres deX primeX ne devaient pas ecirctre loin de ceux deX prime
σXσ ougrave σ est un sous-eacutechantillon aleacuteatoire de lrsquoensemblede deacutepart Donc comme il faut juste avoir une base de vecteurs orthogonaux je suis passeacute agrave liquestorthonormalisation deGram-Schmidt132 Il nrsquoa pas non plus ce deacutefaut de permuter les dimensions ce qui rend lrsquoobservation de la continuiteacute a
132 httpsfrwikipediaorgwikiAlgorithme_de_Gram-Schmidt
33 Reacutegression lineacuteaire par morceaux 139
Machine Learning Statistiques et Programmation Version 035930
little bit more complicated comme le max dans liquestalgorithme de Jacobi133 Lrsquoideacutee est se servir cette orthonormalisationpour construire la matrice P de lrsquoalgortihmeLa matrice P isin MCC est constitueacutee de C vecteurs ortonormaux (P[1] P[C]) Avec les notations que jrsquoai utiliseacuteesjusqursquoagrave preacutesent X[k] = (X1k Xnk) On note la matrice identiteacute IC = I
T[1] =X[1]
∥X[1]∥P[1] =
I[1]
∥X[1]∥T[2] =
X[2]minusltX[2]T[1]gtT[1]
∥X[2]minusltX[2]T[1]gtT[1]∥P[2] =
I[2]minusltX[2]T[1]gtT[1]
∥X[2]minusltX[2]T[1]gtT[1]∥
T[k] =X[k]minus
sumkminus1i=1 ltX[k]T[i]gtT[i]
∥X[2]minussumkminus1
i=1 ltX[k]T[i]gtT[i]∥P[k] =
I[k]minussumkminus1
i=1 ltX[k]T[i]gtT[i]
∥X[2]minussumkminus1
i=1 ltX[k]T[i]gtT[i]∥
La matrice T veacuterifie T primeT = I puisque les vecteurs sont construits de faccedilon agrave ecirctre orthonormeacutes Et on veacuterifie queXP = T et donc PXX primeP prime = I Crsquoest impleacutementeacute par la fonction gram_schmidtltltlt
import numpyfrom mlstatpymlmatrices import gram_schmidt
X = numpyarray([[1 05 0] [0 04 2]] dtype=float)TU P = gram_schmidt(XT change=True)U P = UT PTm = X PD = mT mprint(D)
gtgtgt
[[1000e+00 2776e-17][2776e-17 1000e+00]]
Cela deacutebouche sur une autre formulation du calcul drsquoune reacutegression lineacuteaire agrave partir drsquoune orthornormalisation deGram-Schmidt qui est impleacutementeacutee dans la fonction linear_regressionltltlt
import numpyfrom mlstatpymlmatrices import linear_regression
X = numpyarray([[1 05 0] [0 04 2]] dtype=float)Ty = numpyarray([1 13 39])beta = linear_regression(X y algo=gram)print(beta)
gtgtgt
[1008 1952]
Lrsquoavantage est que cette formulation srsquoexprime uniquement agrave partir de produits scalaires Voir le notebook Reacutegressionsans inversion (page 147)
133 httpsenwikipediaorgwikiJacobi_eigenvalue_algorithm
140 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
332 Synthegravese matheacutematique
Algorithme A2 Orthonormalisation de Gram-SchmidtSoit une matrice X isin Mnd avec n ⩾ d Il existe deux matrices telles que XP = T ou P primeX prime = T prime P isin Mdd etT isin Mnd La matrice T est triangulaire supeacuterieure et veacuterifie T primeT = Id (Id est la matrice identiteacute) Lrsquoalgorithme sedeacutecrit comme suit
foralli isin range(1 d)xi = X[i] minus
sumjlti lt T[j] X[i] gt T[j]
pi = P[i] minussum
jlti lt T[j] X[i] gt P[j]
T[i] =xi
∥xi∥P[i] =
pi
∥pi∥
Theacuteoregraveme T1 Reacutegression lineacuteaire apregraves Gram-SchmidtSoit une matrice X isin Mnd avec n ⩾ d Et un vecteur y isin Rn Drsquoapregraves liquestalgorithme de Gram-Schmidt (page 141)il existe deux matrices telles que XP = T ou P primeX prime = T prime P isin Mdd et T isin Mnd La matrice T est triangulairesupeacuterieure et veacuterifie T primeT = Id (Id est la matrice identiteacute) Alors β = T primeyP prime = P primeX primeyP prime = (X primeX)minus1X primey β est lasolution du problegraveme drsquooptimisation minβ ∥y minusXβ∥2
La deacutemonstration est geacuteomeacutetrique et reprend lrsquoideacutee du paragraphe preacuteceacutedent La solution de la reacutegression peut ecirctrevu comme la projection du vecteur y sur lrsquoespace vectoriel engendreacute par les vecteurs X[1] X[d] Par constructioncet espace est le mecircme que celui engendreacute par T[1] T[d] Dans cette base la projection de y a pour coordooneacuteeslt y T[1] gt lt y T[d] gt= T primey On en deacuteduit que la projection de y srsquoexprimer comme
y =
dsumk=1
lt y T[k] gt T[k]
Il ne reste plus qursquoagrave expremier cette projection dans la base initial X On sait que T[k] = XP[k] On en deacuteduit que
y =sumd
k=1 lt y T[k] gt XP[k]
=sumd
k=1 lt y T[k] gtsumd
l=1 X[l]Plk
=sumd
l=1 X[l]
sumdk=1 lt y T[k] gt Plk
=sumd
l=1 X[l](TprimeyPl)
=sumd
l=1 X[l]βl
Drsquoougrave β = T primeyP prime Lrsquoimpleacutementation suit ltltlt
import numpyX = numpyarray([[1 2 3 4]
[5 6 6 6][5 6 7 8]])T
Xt = XTTt = numpyempty(Xtshape)Pt = numpyidentity(Xshape[1])for i in range(0 Xtshape[0])
Tt[i ] = Xt[i ]for j in range(0 i)
d = numpydot(Tt[j ] Xt[i ])(suite sur la page suivante)
33 Reacutegression lineacuteaire par morceaux 141
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
Tt[i ] -= Tt[j ] dPt[i ] -= Pt[j ] d
d = numpydot(Tt[i ] Tt[i ])if d gt 0
d = 05Tt[i ] = dPt[i ] = d
print(X)print(X)print(T)print(TtT)print(X P)print(X PtT)print(T T)print(Tt TtT)
y = numpyarray([01 02 019 029])beta1 = numpylinalginv(Xt X) Xt ybeta2 = Tt y Ptprint(beta1)print(beta1)print(beta2)print(beta2)
gtgtgt
X[[1 5 5][2 6 6][3 6 7][4 6 8]]
T[[ 0183 0736 0651][ 0365 0502 -067 ][ 0548 0024 -0181][ 073 -0453 0308]]
X P[[ 0183 0736 0651][ 0365 0502 -067 ][ 0548 0024 -0181][ 073 -0453 0308]]
T T[[ 1000e+00 3886e-16 9021e-16][ 3886e-16 1000e+00 -1110e-14][ 9021e-16 -1110e-14 1000e+00]]
beta1[ 0077 0037 -0032]beta2[ 0077 0037 -0032]
La librairie impleacutemente ces deux algorithmes de maniegravere un peu plus efficace dans les fonctions gram_schmidt etlinear_regression
142 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
333 Streaming
Streaming Gram-Schmidt
Je ne sais pas vraiment comment le dire en franccedilais peut-ecirctre reacutegression lineacuteaire mouvante Mecircme Google ou Binggarde le mot streaming dans leur traduction Crsquoest neacuteanmoins lrsquoideacutee qursquoil faut reacuteussir agrave mettre en place drsquoune faccedilonou drsquoune autre car pour choisir le bon point de coupure pour un arbre de deacutecision On note X1k la matrice composeacuteedes lignes X1 Xk et le vecteur colonne y1k = (y1 yk) Lrsquoapprentissage de lrsquoarbre de deacutecision faut calculer desreacutegressions pour les problegravemes (X1k y1k) (X1k+1 y1k+1) Lrsquoideacutee que je propose nrsquoest pas parfaite mais ellefonctionne pour lrsquoideacutee de lrsquoalgorithme avec Gram-Schmidt (page 139)Tout drsquoabord il faut imaginer un algorithme de Gram-Schmidt version streaming Pour la matriceX prime
1k celui-ci produitdeux matrices T1k et P1k telles que X prime
1kP1k = T1k On note d la dimension des observations Comment fairepour ajouter une observation (Xk+1 yk+1) Lrsquoideacutee drsquoun algorithme au format streaming est que le coucirct de la mise agravejour pour lrsquoiteacuteration k+1 ne deacutepend pas de kOn suppose donc que (Tk Pk) sont les deux matrices retourneacutees par lrsquoalgorithme de algo_gram_schmidt On construitla matrice Vk+1 = [Tk Xk+1Pk] on ajoute une ligne agrave la matrice Tk On applique une iteacuteration de algorithmede algo_gram_schmidt pour obtenir (Tk+1 P ) On en deacuteduit que (Tk+1 Pk+1) = (Tk+1 PkP ) Lrsquoexpression de lareacutegression ne change pas mais il reste agrave lrsquoexpression de telle sorte que les expressions ne deacutependent pas de k CommeTk = X[1k]Pk la seule matrice qui nous inteacuteresse veacuteritablement est PkMaintenant on considegravere la matrice T[1k] qui veacuterifie T prime
kTk = Id et on ajoute une ligne Xk+1Pk pour former[[Tk][Xk+1Pk]] = [[X[1k]Pk][Xk+1Pk]] La fonction streaming_gram_schmidt_update impleacutemente la mise agravejour Le coucirct de la fonction est en O(d2)ltltlt
import numpyfrom mlstatpymlmatrices import streaming_gram_schmidt_update gram_schmidt
X = numpyarray([[1 05 10 5 -2][0 04 20 4 2][0 07 20 4 2]] dtype=float)T
Xt = XT
Tk Pk = gram_schmidt(X[3]T change=True)print(k=format(3))print(Pk)Tk = X[3] PkTprint(TkT Tk)
k = 3while k lt Xshape[0]
streaming_gram_schmidt_update(Xt[ k] Pk)k += 1print(k=format(k))print(Pk)Tk = X[k] PkTprint(TkT Tk)
gtgtgt
k=3[[ 0099 0 0 ][-0953 0482 0 ]
(suite sur la page suivante)
33 Reacutegression lineacuteaire par morceaux 143
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
[-0287 -3338 3481]][[ 1000e+00 -1749e-15 -2234e-15][-1749e-15 1000e+00 1387e-14][-2234e-15 1387e-14 1000e+00]]
k=4[[ 0089 0 0 ][-0308 0177 0 ][-003 -3334 3348]]
[[ 1000e+00 -4441e-16 -1793e-15][-4441e-16 1000e+00 2377e-15][-1793e-15 2377e-15 1000e+00]]
k=5[[ 0088 0 0 ][-0212 0128 0 ][-0016 -3335 3342]]
[[ 1000e+00 -9714e-17 -6210e-15][-9714e-17 1000e+00 1978e-16][-6210e-15 1978e-16 1000e+00]]
Streaming Linear Regression
Je reprends lrsquoideacutee introduite dans lrsquoarticle Efficient online linear regression134 On cherche agrave minimiser L(β) =
∥y minusXβ∥2 et le vecteur solution annuler le gradient nabla(β) = minus2X prime(y minus Xβ) = 0 On note le vecteur βk quiveacuterifie nabla(βk) = minus2X prime
1k(y1k minusX1kβk) = 0 Qursquoen est-il de βk+1 On note βk+1 = βk + dβ
nabla(βk+1) = minus2X prime1k+1(y1k+1 minusX1k+1(βk + dβ))
= minus2[X prime1kX
primek+1]([y1kyk+1]minus [X1kXk+1]
prime(βk + dβ))= minus2X prime
1k(y1k minusX1k(βk + dβ))minus 2X primek+1(yk+1 minusXk+1(βk + dβ))
= 2X prime1kX1kdβ minus 2X prime
k+1(yk+1 minusXk+1(βk + dβ))= 2(X prime
1kX1k +X primek+1Xk+1)dβ minus 2X prime
k+1(yk+1 minusXk+1βk)
On en deacuteduit la valeur dβ qui annule le gradient On peut deacutecliner cette formule en version streaming Crsquoestce qursquoimpleacutemente la fonction streaming_linear_regression_update Le coucirct de lrsquoalgorithme est en O(d3)Lrsquoinconveacutenient de cet algorithme est qursquoil requiert des matrices inversibles Crsquoest souvent le cas et la probabiliteacute quecela ne le soit pas deacutecroicirct avec k Crsquoest un petit inconveacutenient compte tenu de la simpliciteacute de lrsquoimpleacutementation Onveacuterifie que tout fonction bien sur un exempleltltlt
import numpy
def linear_regression(X y)inv = numpylinalginv(XT X)return inv (XT y)
def streaming_linear_regression_update(Xk yk XkXk bk)Xk = Xkreshape((1 XkXkshape[0]))xxk = XkT XkXkXk += xxk
(suite sur la page suivante)
134 httpsstatsstackexchangecomquestions6920efficient-online-linear-regression
144 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
err = XkT (yk - Xk bk)bk[] += (numpylinalginv(XkXk) err)flatten()
def streaming_linear_regression(mat y start=None)if start is None
start = matshape[1]
Xk = mat[start]XkXk = XkT Xkbk = numpylinalginv(XkXk) (XkT y[start])yield bk
k = startwhile k lt matshape[0]
streaming_linear_regression_update(mat[k] y[kk + 1] XkXk bk)yield bkk += 1
X = numpyarray([[1 05 10 5 -2][0 04 20 4 2][0 07 20 4 3]] dtype=float)T
y = numpyarray([1 03 10 51 -3])
for i bk in enumerate(streaming_linear_regression(X y))bk0 = linear_regression(X[i + 3] y[i + 3])print(iteration i bk bk0)
gtgtgt
iteration 0 [ 1 0667 -0667] [ 1 0667 -0667]iteration 1 [ 103 0682 -0697] [ 103 0682 -0697]iteration 2 [ 1036 0857 -0875] [ 1036 0857 -0875]
Streaming Linear Regression version Gram-Schmidt
Lrsquoalgorithme reprend le theacuteoregraveme Reacutegression lineacuteaire apregraves Gram-Schmidt (page 141) et lrsquoalgorithme Streaming Gram-Schmidt (page 143) Tout tient dans cette formule βk = P prime
kXprime1ky1kP
primek qursquoon eacutecrit diffeacuteremment en consideacuterent
lrsquoassociativiteacute de la multiplication des matrices βk = P primek(X
prime1ky1k)P
primek La matrice centrale a pour dimension
d Lrsquoexemple suivant impleacutemente cette ideacutee Il srsquoappuie sur les fonctions streaming_gram_schmidt_update etgram_schmidtltltlt
import numpyfrom mlstatpymlmatrices import gram_schmidt streaming_gram_schmidt_update
def linear_regression(X y)inv = numpylinalginv(XT X)return inv (XT y)
(suite sur la page suivante)
33 Reacutegression lineacuteaire par morceaux 145
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
def streaming_linear_regression_gram_schmidt_update(Xk yk Xkyk Pk bk)Xk = XkTstreaming_gram_schmidt_update(Xk Pk)Xkyk += (Xk yk)reshape(Xkykshape)bk[] = Pk Xkyk Pk
def streaming_linear_regression_gram_schmidt(mat y start=None)if start is None
start = matshape[1]
Xk = mat[start]xyk = XkT y[start]_ Pk = gram_schmidt(XkT change=True)bk = Pk xyk Pkyield bk
k = startwhile k lt matshape[0]
streaming_linear_regression_gram_schmidt_update(mat[k] y[k] xyk Pk bk)
yield bkk += 1
X = numpyarray([[1 05 10 5 -2][0 04 20 4 2][0 07 20 4 3]] dtype=float)T
y = numpyarray([1 03 10 51 -3])
for i bk in enumerate(streaming_linear_regression_gram_schmidt(X y))bk0 = linear_regression(X[i + 3] y[i + 3])print(iteration i bk bk0)
gtgtgt
iteration 0 [ 1 0667 -0667] [ 1 0667 -0667]iteration 1 [ 103 0682 -0697] [ 103 0682 -0697]iteration 2 [ 1036 0857 -0875] [ 1036 0857 -0875]
Ces deux fonctions sont impleacutementeacutees dans le module par streaming_linear_regression_gram_schmidt_updateet streaming_linear_regression_gram_schmidt Le coucirct de lrsquoalgorithme est en O(d3) mais nrsquoinclut pasdrsquoinversion de matrices
146 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
334 Digressions
Lrsquoarticle An Efficient Two Step Algorithm for High DimensionalChange Point Regression Models Without GridSearch135 propose un cadre theacuteorique pour deacuteterminer une frontiegravere dans un nuage de donneacutees qui deacutelimite unchangement de modegravele lineacuteaire Le suivant eacutetudie des changements de paramegravetres Change Surfaces for ExpressiveMultidimensionalChangepoints and Counterfactual Prediction136 drsquoune faccedilon plus geacuteneacuterique
335 Notebooks
Reacutegression sans inversion
Ce notebook mesure le temps de calcul dans deux algorithmes pour reacutesoudre une reacutegression lineacuteaire le premierinverse un matrice le second le fait sans inverser une matrice le troisiegraveme reprend lrsquoideacutee du second mais utilise unedeacutecomposition QR137 puis inverse la matrice R
matplotlib inline
import numpyrandom as rndX = rndrandn(1000 7)eps = rndrandn(1000 1) 3y = Xsum(axis=1)reshape((Xshape[0] 1)) + epsy = yravel()Xshape yshape epsshape
((1000 7) (1000) (1000 1))
from mlstatpymlmatrices import linear_regression gram_schmidtbeta1 = linear_regression(X y algo=None)beta2 = linear_regression(X y algo=gram)beta1 beta2
(array([097915374 100078055 100537618 101021414 10003261 09944518 098742625])
array([097915374 100078055 100537618 101021414 10003261 09944518 098742625]))
timeit linear_regression(X y algo=None)
384 ţs plusmn 207 ţs per loop (mean plusmn std dev of 7 runs 10000 loops each)
timeit linear_regression(X y algo=gram)
310 ţs plusmn 136 ţs per loop (mean plusmn std dev of 7 runs 1000 loops each)
timeit linear_regression(X y algo=qr)
135 httpjmlrorgpapersvolume2018-46018-460pdf136 httpjmlrorgpapersvolume2017-35217-352pdf137 httpsfrwikipediaorgwikiDC3A9composition_QR
33 Reacutegression lineacuteaire par morceaux 147
Machine Learning Statistiques et Programmation Version 035930
139 ţs plusmn 829 ţs per loop (mean plusmn std dev of 7 runs 10000 loops each)
Xt = XTtimeit gram_schmidt(Xt)
210 ţs plusmn 591 ţs per loop (mean plusmn std dev of 7 runs 1000 loops each)
Un exemple avec scikit-learn138
from sklearnlinear_model import LinearRegressionclr = LinearRegression()timeit clrfit(X y)
443 ţs plusmn 483 ţs per loop (mean plusmn std dev of 7 runs 1000 loops each)
Qui utilise la fonction lstsq139
from numpylinalg import lstsqtimeit lstsq(X y rcond=None)
755 ţs plusmn 257 ţs per loop (mean plusmn std dev of 7 runs 10000 loops each)
Il serait sans doute possible drsquooptimiser les calculs en reacuteduisant le nombre de copie et de transposeacutees La versionutilisant une deacutecomposition QR140 est assez rapide Le code est lagrave matricespy141 Pour deacutepasser numpy142 il fautpasser au C++ scikit-learn ajoute des eacutetapes intermeacutediaires pour veacuterifier les donneacutees ce qui explique la longueur Onreacutesume le tout par un graphique
from cpyquickhelpernumbers import measure_time
stmts = [dict(name=lr_matrix fct=linear_regression(X y algo=None))dict(name=lr_gram fct=linear_regression(X y algo=gram))dict(name=lr_qr fct=linear_regression(X y algo=qr))dict(name=gram fct=gram_schmidt(Xt))dict(name=sklearn fct=clrfit(X y))dict(name=lstsq fct=lstsq(X y))]
memo = []for size dim in [(100 10) (1000 10) (10000 10)
(100 20) (1000 20) (10000 20)(100 50) (1000 50)]
print(size dim)X = rndrandn(size dim)eps = rndrandn(size 1) 3y = Xsum(axis=1)reshape((Xshape[0] 1)) + epsy = yravel()context = dict(linear_regression=linear_regression Xt=XT
X=X y=y gram_schmidt=gram_schmidt clr=clr(suite sur la page suivante)
138 httpsscikit-learnorgstablemodulesgeneratedsklearnlinear_modelLinearRegressionhtml139 httpsdocsscipyorgdocnumpyreferencegeneratednumpylinalglstsqhtmlhighlight=lstsq140 httpsfrwikipediaorgwikiDC3A9composition_QR141 httpsgithubcomsdpythonmlstatpyblobmastersrcmlstatpymlmatricespy142 httpswwwnumpyorg
148 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
lstsq=lambda X y lstsq(X y rcond=None))
for stmt in stmtsres = measure_time(stmt[fct] number=20 repeat=20 div_by_number=True
rarrcontext=context)resupdate(stmt)res[size] = sizeres[dim] = dimmemoappend(res)
import pandasdf = pandasDataFrame(memo)dfhead()
100 101000 1010000 10100 201000 2010000 20100 501000 50
piv = pandaspivot_table(df index=[size dim] columns=name values=average)piv
import matplotlibpyplot as pltfig ax = pltsubplots(1 2 figsize=(144))piv[6]plot(kind=bar ax=ax[0])piv[6]plot(kind=bar ax=ax[1])ax[0]set_title(Reacutegression Lineacuteaire size lt 10000)ax[1]set_title(Reacutegression Lineacuteaire size gt= 10000)
33 Reacutegression lineacuteaire par morceaux 149
Machine Learning Statistiques et Programmation Version 035930
Streaming versions
Lrsquoideacutee est diffeacuterente ici puisqursquoil srsquoagit de calculer toutes les reacutegressions lineacuteaires intermeacutediaires Les algorithmes sontdeacutecrits par lrsquoexposeacute Reacutegression lineacuteaire par morceaux143
from mlstatpymlmatrices import streaming_linear_regression streaming_linear_rarrregression_gram_schmidt
def all_linear_regression(X y)for i in range(Xshape[1] Xshape[0])
yield linear_regression(X[i] y[i])
stmts = [dict(name=lr_matrix fct=list(all_linear_regression(X y)))dict(name=lr_st_mat fct=list(streaming_linear_regression(X y)))dict(name=lr_st_gram fct=list(streaming_linear_regression_gram_schmidt(X
rarry)))]
memo = []for dim in (10 )
for size in range(100 3500 500)print(size dim)X = rndrandn(size dim)eps = rndrandn(size 1) 3y = Xsum(axis=1)reshape((Xshape[0] 1)) + epsy = yravel()context = dict(X=X y=y
all_linear_regression=all_linear_regressionstreaming_linear_regression=streaming_linear_regressionstreaming_linear_regression_gram_schmidt=streaming_linear_
rarrregression_gram_schmidt)
for stmt in stmtsif gram in stmt[name]
nn = 1if size gt= 1000
continueelse
nn = 5res = measure_time(stmt[fct] number=nn repeat=nn div_by_number=True
rarrcontext=context)resupdate(stmt)res[size] = sizeres[dim] = dimmemoappend(res)
import pandasdf = pandasDataFrame(memo)dfhead()
100 10600 10
(suite sur la page suivante)
143 httpwwwxavierduprefrappmlstatpyhelpsphinxc_mlpiecewisehtmlstreaming-linear-regression
150 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
1100 101600 102100 102600 103100 10
piv = pandaspivot_table(df index=[size] columns=name values=average)piv
fig ax = pltsubplots(1 2 figsize=(144))piv[[lr_matrix lr_st_mat]]plot(ax=ax[0])pivplot(ax=ax[1])ax[0]set_title(Reacutegression Lineacuteaire streaming (all)n10 features)ax[1]set_title(Reacutegression Lineacuteaire no Gram-Schmidtn10 features)
La version streaming devient plus inteacuteressante agrave partir de 1000 observations le coucirct en lineacuteaire en N contrairementagrave la version classique qui est en N2 La version Gram-Schmidt devrait ecirctre reacuteeacutecrite en C++ pour proposer des tempscomparables
336 Impleacutementations
bull PiecewiseTreeRegressor144
337 Bilbiographie
Voir aussi The NIPALS algorithm150144 httpwwwxavierduprefrappmlinsightshelpsphinxmlinsightsmlmodelpiecewise_tree_regressionhtmlmlinsightsmlmodelpiecewise_
tree_regressionPiecewiseTreeRegressor150 httpscranr-projectorgwebpackagesnipalsvignettesnipals_algorithmhtml
33 Reacutegression lineacuteaire par morceaux 151
Machine Learning Statistiques et Programmation Version 035930
34 Normalisation des coefficients
La reacutegression lineacuteaire est le modegravele le plus simple pour construire une fonction de preacutediction lorsque la variable agravepreacutedire est continue
f(X) =
dsumk=1
akxk
Les coefficients srsquoobtiennent en minimisant lrsquoerreur E(X a1 ad) =sum
i(sumd
k=1 akxik minus yi)2 = ∥XAminus y∥2 La
solution est explicite (a1 ad) = (X primeX)minus1X primey Lorsque le nombre de dimensions augmentent et deacutepasse lenombre drsquoobservations il existe plus drsquoune solution et la matrice (X primeX) nrsquoest plus = inversible Une des astucesconsiste agrave reacuteduire le nombre de dimension avant avec une ACP151 ou une SVD152 (Singular Value Decomposition)qui reviennent agrave trouver un espace de projection de dimension moindre et sans perte drsquoinformation La reacutegressionest effectueacutee dans cet espace puis transposeacutee dans lrsquoespace initial Une autre astuce consiste agrave imposer une contraintesuppleacutementaire sur le poids des coefficients de la reacutegression le plus souvent en les peacutenalisant
bull Reacuteduction de dimension (page 152)bull Peacutenalisation L1 et L2 (page 152)bull Bibliographie (page 153)
341 Reacuteduction de dimension
Lrsquoideacutee est abordeacutee dans le paragraphe Synthegravese matheacutematique (page 141) Une fois le problegraveme transporteacute dans une basede variables indeacutependantes chaque dimension peut ecirctre traiteacutee seacutepareacutement La reacutegression est restreinte aux vecteurspropres associeacutes agrave une valeur propre non nulle On en deacuteduit ensuite les coefficients dans la base initiale
342 Peacutenalisation L1 et L2
La peacutenalisation revient agrave minimiser une erreur de la forme
E(X a1 ad) =sumi
(dsum
k=1
akxik minus yi
)2
+ λ
dsumk=1
|ak|p = ∥XAminus y∥2 + λ
dsumk=1
|ak|p
Le paramegravetre p permet drsquoajuster le poids donneacute aux petits coefficients et celui donneacutee aux grands Lorsque p=2 crsquoestune peacutenalisation L2 lorsque p=1 crsquoest une peacutenalisation L1 Ces deux ont une incidence diffeacuterente sur la nulliteacute descoefficients La peacutenalisation L1 a tendance agrave annuler les coefficients la peacutenalisation L2 preacutefegravere des petits coefficientssur toutes les dimensions Le notebook ` ltgt`_ illustre ce fait sur un jeu de donneacutees artificiel et montre que le nombrede coefficients non nuls reste plus ou moins constant malgreacute un nombre de variables d en hausse Pour srsquoen convaincreimaginons un problegraveme agrave d variables pour lequel on connaicirct la solution (alowast1 a
lowastd) qui minimise le problegraveme
E(X alowast1 alowastd) = min
sumi
(dsum
k=1
alowastkxik minus yi
)2
+ λ
dsumk=1
|alowastk|p
Lorsqursquoon ajoute une variable cette erreur devient
E(X alowast1 alowastd ad+1) =
sumi
(dsum
k=1
akxik + ad+1xid+1 minus yi
)2
+ λ
dsumk=1
|ak|p + λ|ad+1|p
151 httpsfrwikipediaorgwikiAnalyse_en_composantes_principales152 httpsfrwikipediaorgwikiDC3A9composition_en_valeurs_singuliC3A8res
152 Chapter 3 Reacutegression lineacuteaire
Machine Learning Statistiques et Programmation Version 035930
Et sa deacuteriveacutee
dE(X alowast1 alowastd ad+1)
dad+1= 2
sumi
xid+1(
dsumk=1
alowastkxik + ad+1xid+1 minus yi) + λp|ad+1|pminus1sign(ad+1)
On srsquointeacuteresse au cas particulier ougrave les variables ne sont pas correacuteleacutees et centreacutees Cela implique quesum
i xid+1xik = 0si k = d+ 1 Et lorsque pgt1 le gradient est nul si on peut reacutesoudre lrsquoeacutequation
dE(X alowast1 alowastd ad+1)
dad+1= 2
sumi
ad+1x2id+1 minus yixid+1 + λsign(ad+1) = 0
La solution est simple
alowastd+1 =
sumi yixid+1 minus λsign(ad+1)
2sum
i x2id+1
Et en fait pour un λ assez grand on peut facilement montrer que la solution est impossible puisqursquoelle impliqueque le coefficient alowastd+1 soit de signe opposeacute agrave λsign(ad+1) Cela signifie que nrsquoimporte quelle valeur pour ad+1
augmente lrsquoerreur Sa valeur est donc nulle Ceci nrsquoest pas une deacutemonstration mais donne une intuition de pourquoiune peacutenalisation L1 annule la plupart des coefficients et est utiliseacutee comme moyen de seacutelectionner les variables Crsquoestune deacutemonstration dans le cas ougrave les variables sont indeacutependantes puisque les coefficients de la reacutegression peuvent ecirctrecalculeacutes seacutepareacutement dans ce cas (voir Reacutegression lineacuteaire et correacutelation (page 138)) La peacutenalisation L2 ne megravene pasagrave une eacutequation impossible Plus on ajoute de variables plus lrsquoerreur diminue Pour aller plus loin voir [Char] et voirson application agrave la seacuteelection drsquoarbres dans une forecirct aleacuteatoire Reacuteduction drsquoune forecirct aleacuteatoire153
343 Bibliographie
153 httpwwwxavierduprefrappensae_teaching_cshelpsphinxnotebookstd2a_tree_selection_correctionhtml
34 Normalisation des coefficients 153
Machine Learning Statistiques et Programmation Version 035930
154 Chapter 3 Reacutegression lineacuteaire
CHAPTER 4
Reacutegression logistique
La reacutegression logistique155 est le modegravele preacutedictif le plus simple et celui qursquoon preacutefegravere quand il marche car il estfacilement interpreacutetable agrave lrsquoinverse des modegraveles non lineacuteaires qui gardent leurs secrets si on srsquoen tient seulement agraveleurs coefficients Concregravetement on dispose drsquoun nuage de point (Xi yi) ougrave Xi isin Rd est un vecteur de dimensiond et yi isin 0 1 un entier binaire Le problegraveme de la reacutegression lineacuteaire consiste agrave construire une fonction preacutedictiveyi = f(Xi) =lt Xi β gt= Xiβ ougrave β est un vecteur de dimension d (voir classification156) Le signe de la fonctionf(Xi) indique la classe de lrsquoobservation Xi et la valeur 1
1+ef(X) la probabiliteacute drsquoecirctre dans la classe 1
41 Reacutegression logistique diagramme de Voronoiuml k-Means
Ce qui suit explore les liens entre une reacutegression logistique les diagrammes de Voronoiuml pour construire un classifieurqui allie la reacutegression logistique et les clustering type k-means (page 1) Le point de deacutepart est une conjecture lesreacutegions creacuteeacutees par une reacutegression logistique sont convexes
bull Diagramme de Voronoiuml (page 156)bull Reacutegression logistique (page 156)bull Diagramme de Voronoiuml et partition convexe (page 158)bull Reacutegression logistique et partition convexe (page 159)bull Voronoiuml et reacutegression logistique (page 160)bull Notebooks (page 161)
155 httpsfrwikipediaorgwikiRC3A9gression_logistique156 httpwwwxavierduprefrapppapierstathelpsphinxlecturesregclasshtmlclassification
155
Machine Learning Statistiques et Programmation Version 035930
411 Diagramme de Voronoiuml
Un diagramme de Voronoiuml157 est le diagramme issu des intersections des meacutediatrices entre n points
On deacutefinit un ensemble de points (X1 Xn) La zone drsquoinfluence de chaque point est deacutefini par V (Xi) =x|d(xXi) ⩽ d(xXj)forallj Si d est la distance euclidienne la frontiegravere entre deux points Xi Xj est un segmentsur la droite drsquoeacutequation d(xXi) = d(xXj)
∥xminusXi∥2 minus ∥xminusXj∥2 = 0
=rArr ∥x∥2 minus 2 ⟨xXi⟩+ ∥Xi∥2 minus (∥x∥2 minus 2 ⟨xXj⟩+ ∥Xj∥2) = 0
=rArr 2 ⟨xXj minusXi⟩+ ∥Xi∥2 minus ∥Xj∥2 = 0=rArr 2 ⟨xXj minusXi⟩+ 1
2 ⟨Xi +Xj Xi minusXj⟩ = 0
=rArrlangxminus Xi+Xj
2 Xi minusXj
rang= 0
Ce systegraveme constitue n(nminus1)2 droites ou hyperplans si lrsquoespace vectoriel est en dimension plus que deux Le diagramme
de Voronoiuml est formeacute par des segments de chacune de ces droites On peut retourner le problegraveme On suppose qursquoilexiste n(nminus1)
2 hyperplans existe-t-il n points de telle sorte que les hyperplans initiaux sont les frontiegraveres du diagrammede Voronoiuml formeacute par ces n points Les paragraphes qui suivent expliquent explorent cette hypothegravese
412 Reacutegression logistique
scikit-learn158 a rendu populaire le jeu de donneacutees Iris159 qui consiste agrave classer des fleurs en trois classes en fonctiondes dimensions de leurs peacutetales
ltltlt157 httpsfrwikipediaorgwikiDiagramme_de_VoronoC3AF158 httpsscikit-learnorg159 httpscikit-learnorgstableauto_exampleslinear_modelplot_iris_logistichtmlsphx-glr-auto-examples-linear-model-plot-iris-logistic-py
156 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
from sklearndatasets import load_irisdata = load_iris()X y = datadata[ 2] datatarget
from sklearnlinear_model import LogisticRegressionclr = LogisticRegression()clrfit(X y)
print(coef_ clrcoef_)print(intercept_ clrintercept_)
gtgtgt
coef_ [[-2709 2324][ 0613 -1571][ 2096 -0753]]
intercept_ [ 7913 1845 -9758]
La fonction de preacutediction est assez simple f(x) = Ax + B La classe drsquoappartenance du point x est deacutetermineacute parmaxi f(x)i La frontiegravere entre deux classes i j est deacutefinie par les deux conditions maxk f(x)k = f(x)i = f(x)j On retrouve bien n(nminus1)
2 hyperplans On deacutefinit la matrice A comme une matrice ligne (L1 Ln) ougrave n est le nombrede classes Lrsquoeacutequation de lrsquohyperplan entre deux classes devient
LiX +Bi = LjX +Bj
lArrrArr ⟨Li minus Lj X⟩+Bi minusBj = 0lArrrArr ⟨Li minus Lj X⟩+Bi minusBj = 0
lArrrArrlangLi minus Lj X minus Li+Lj
2
rang+langLi minus Lj
Li+Lj
2
rang+Bi minusBj = 0
lArrrArrlangLi minus Lj X minus Li+Lj
2
rang+ 1
2 ∥Li∥2 minus 12 ∥Lj∥2 +Bi minusBj = 0
lArrrArrlangLi minus Lj X minus Li+Lj
2
rang+ 1
2 ∥Li∥2 +Bi minus ( 12 ∥Lj∥2 +Bj) = 0
Il y a peu de chance que cela fonctionne comme cela Avant de continuer assurons-nous que les reacutegions associeacutees auxclasses sont convexes Crsquoest une condition neacutecessaire mais pas suffisante pour avoir un diagramme de VoronoiumlSoit X1 et X2 appartenant agrave la classe i On sait que forallk LiX1 +Bi ⩾ LkX1 +Bk et forallk LiX2 +Bi ⩾ LkX2 +BkOn considegravere un point X sur le segment [X1 X2] donc il existe α β ⩾ 0 tel que X = αX1 + βX2 et α+ β = 1 Onveacuterifie que
LiX +Bi = Li(αX1 + βX2) +Bi = α(LiX1 +Bi) + β(LiX2 +Bi)⩾ α(LkX1 +Bk) + β(LkX2 +Bk) = Lk(αX1 + βX2) +Bkforallk
Donc le point X appartient bien agrave classe i et celle-ci est convexe La reacutegression logistique forme une partition convexede lrsquoespace des features
Theacuteoregraveme T1 convexiteacute des classes formeacutees par une reacutegression logistiqueOn deacutefinit lrsquoapplication Rd rarr N qui associe la plus grande coordonneacutee f(X) = argmaxk(AX + B)k A est unematrice Mdc B est un vecteur de Rd c est le nombre de parties Lrsquoapplication f deacutefinit une partition convexe delrsquoespace vectoriel Rd
Revenons au cas de Voronoiuml La classe preacutedite deacutepend de maxk(Ax+B)k On veut trouver n points (P1 Pn) telsque chaque couple (Pi Pj) soit eacutequidistant de la frontiegravere qui seacutepare leurs classes Il faut eacutegalement les projections des
41 Reacutegression logistique diagramme de Voronoiuml k-Means 157
Machine Learning Statistiques et Programmation Version 035930
deux points sur la frontiegravere se confondent et donc que les vecteurs Pi minus Pj et Li minus Lj sont colineacuteaires⟨Li minus Lj Pi⟩+Bi minusBj = minus (⟨Li minus Lj Pj⟩+Bi minusBj)
Pi minus Pj minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
rangLiminusLj
∥LiminusLj∥ = 0
lArrrArr
⟨Li minus Lj Pi + Pj⟩+ 2(Bi minusBj) = 0
Pi minus Pj minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
rangLiminusLj
∥LiminusLj∥ = 0
La seconde eacutequation en cache en fait plusieurs puisqursquoelle est valable sur plusieurs dimensions mais elles sontredondantes Il suffit de choisir un vecteur uij non perpendiculaire agraveLiminusLj de sorte que qursquoil nrsquoest pas perpendiculaireau vecteur Li minus Lj et de consideacuterer la projection de cette eacutequation sur ce vecteur Crsquoest pourquoi on reacuteduit le systegravemeau suivant qui est eacutequivalent au preacuteceacutedent si le vecteur uij est bien choisi
=rArr
⟨Li minus Lj Pi + Pj⟩+ 2(Bi minusBj) = 0
⟨Pi minus Pj uij⟩ minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
ranglangLiminusLj
∥LiminusLj∥ uij
rang= 0
413 Diagramme de Voronoiuml et partition convexe
Faisons un peu de geacuteomeacutetrie avant de reacutesoudre ce problegraveme car celui-ci a dans la plupart des cas plus drsquoeacutequations quedrsquoinconnues Chaque frontiegravere entre deux classes est la meacutediatrice drsquoun segment [Pi Pj ] Le dessin suivant trace undiagramme de Voronoiuml agrave trois points Lrsquointersection est le centre des meacutediatrices du triangle formeacute par les points deVoronoiuml Pour les trouver on trace un cercle nrsquoimporte lequel puis une droite perpendiculaire agrave lrsquoune des meacutediatriceOn obtient deux points Le troisiegraveme est obtenu en traccedilant une seconde perpendiculaire et par construsction la troisiegravemedroite est perpendiculaire agrave la troisiegraveme meacutediatrice Et on nomme les angles
158 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Les triangles formeacutes par les cocircteacutes jaunes sont isocegraveles On en deacuteduit que a+ b+ c = 2π = 2(x+ y+ z) On en deacuteduitaussi que
x+ y = ay + z = cx+ z = b
On en conclut que a+ b+ c = 2π = 2(x+ y+ z) = 2(x+ c) et x = πminus c Il existe une infiniteacute de triplets de 3 pointsqui aboutissent agrave ce diagramme de Voronoiuml Il suffit de changer la taille du cercle On montre aussi qursquoen dimension2 et 3 classes il existe toujours une solution au problegraveme poseacute Maintenant si on considegravere la configuration suivanteavec des points disposeacutes de telle sorte que le diagramme de Voronoiuml est un maillage hexagonal a = b = c = 2π
3 etx = y = z = π
3 Il nrsquoexiste qursquoun ensemble de points qui peut produire ce maillage comme diagramme de VoronoiumlMais si on ajoute une petite zone (dans le cercle vert ci-dessous) il est impossible que ce diagramme soit un diagrammede Voronoiuml bien que cela soit une partition convexe
On revient agrave la deacutetermination du diagramme de Voronoiuml associeacute agrave une reacutegression logistique On a montreacute qursquoil nrsquoexistepas tout le temps pour nrsquoimporte quelle partition convexe Mais cela ne veut pas dire que tel est le cas pour unereacutegression logistique
414 Reacutegression logistique et partition convexe
On a montreacute que la reacutegression logistique reacutealise une partition convexe de lrsquoespace vectoriel des variables On note L(n)lrsquoensemble des partitions agrave n classes Le diagramme de Voronoiuml correspondent eacutegalement agrave un sous-ensemble V(n)L(n) = V (n) that is the questionOn peut se poser la question de savoir si L(n) un sous-ensemble ou tout lrsquoensemble auquel cas la reacuteponse agrave la questionpreacuteceacutedente est triviale Consideacuterons drsquoabord deux parties voisines drsquoune partition convexe formeacutee par une fonctiontelle que celle deacutecrite par le theacuteoregraveme sur la convexiteacute des classes formeacutees par une reacutegression logistique (page 157)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 159
Machine Learning Statistiques et Programmation Version 035930
Lrsquoimage qui preacutecegravede montre une partition qui nrsquoest pas convexe La partie A lrsquoest mais pas la partie B En fait il estfacile de montrer que la seule frontiegravere admissible entre deux parties convexe est un hyperplan Si la partition contientn partie il y a au pire n(nminus1)
2 frontiegraveres ce qui correspond eacutegalement au nombre drsquohyperplans deacutefinis par la fonctionde preacutediction associeacutee agrave la reacutegression logistique
Lrsquoimage qui preacutecegravede preacutesente une classification en trois zones (droites noires) On a choisi une droite bleue au hasardEn prenant son symeacutetrique par rapport agrave une des droites noires (D) on a deux droites D1 D2 Lrsquoensemble des pointsx|d(xD1) = d(xD2) correspond agrave la droite noire Il doit ecirctre de mecircme pour les trois droites bleues autrementdit lrsquointersection des droites est le centre du cercle inscrit dans le triangle bleu ce qui nrsquoest visiblement pas le cas surlrsquoimage Il paraicirct vraisemblable de dire que les reacutegressions logisitiques ne permettent pas de former toutes les partitionsconvexes On pourrait le montrer mais cela ne permettrait pas de reacutepondre agrave la question initiale L(n) = V (n)
415 Voronoiuml et reacutegression logistique
On sait que L(2) = V (2) quelque soit la dimension que L(3) = V (3) en dimension 2 La matrice L deacutefinit unereacutegression logistique Le diagramme de Voronoiuml qui lui correspond est solution du systegraveme drsquoeacutequations qui suit
=rArr
lang
LiminusLj
∥LiminusLj∥ Pi + Pj
rang+ 2
BiminusBj
∥LiminusLj∥ = 0
⟨Pi minus Pj uij⟩ minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
ranglangLiminusLj
∥LiminusLj∥ uij
rang= 0
(41)
Avec uij choisi de telle sorte que les vecteur Li minus Lj et uij ne soit pas colieacutenaires Ce systegraveme inclut des eacutequationsentre classes ou reacutegions qui ne sont pas voisines Il y a potentiellement n(nminus1)
2 eacutequations pour n inconnues Il nrsquoestpas eacutevident de dire si ce systegraveme agrave une solution Voyons plutocirct lrsquoensemble des droites formeacutees par un diagramme deVoronoiuml Un point appartient agrave un segment srsquoil est agrave eacutegale distance de deux points
foralli lt j d(XPi) = d(XPj)
lArrrArr foralli lt j ∥X minus Pi∥2 = ∥X minus Pj∥2lArrrArr foralli lt j ⟨(X minus Pi) + (X minus Pj) (X minus Pi)minus (X minus Pj)⟩lArrrArr foralli lt j
langX minus Pi+Pj
2 Pj minus Pi
rang= 0
lArrrArr foralli lt j ⟨XPj minus Pi⟩+ ∥Pi∥2
2 minus ∥Pj∥2
2 = 0
Pour une partition convexe formeacutee agrave partir de droite comme crsquoest le cas drsquoune reacutegression lineacuteaire un point appartientagrave un segment srsquoil est agrave eacutegale distance de deux droites Lrsquoensemble de ces points correspond agrave deux droites les deuxbissectrices
160 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Seule lrsquoune de ces droites est la bonne Lrsquoeacutequation drsquoune droite est donneacutee par ⟨XLi⟩+Bi = 0langX
Li
∥Li∥
rang+
Bi
∥Li∥=
langX
Lj
∥Lj∥
rang+
Bj
∥Lj∥oulangX
Li
∥Li∥
rang+
Bi
∥Li∥= minus
langX
Lj
∥Lj∥
rangminus Bj
∥Lj∥
On choisit lrsquoune de ces droites
foralli lt j
langX
Lj
∥Lj∥minus Li
∥Li∥
rang+
Bj
∥Lj∥minus Bi
∥Li∥= 0
On peut voir que si tous les points sont situeacutes sur la boule uniteacute agrave savoir ∥Pi∥ = 1 la reacutegression logistique srsquoeacutecritsimplement avec Li = Pi et Bi = minus 1
2 On revient au systegraveme drsquoeacutequations lineacuteaires (41) et on en cherche unesolution approcheacutee un peu agrave la faccedilon RANSAC160 avec une reacutegression lineacuteaire et la norme L1 Il nrsquoexiste pastoujours de diagramme de Voronoiuml eacutequivalent agrave la partition convexe reacutealiseacutee par une regreacutession logistique Il estfacile de trouver un contre-exemple en essayant de reacutesoudre le systegraveme preacuteceacutedent Crsquoest ce que fait la fonctionvoronoi_estimation_from_lr La fonction essaye avec quelques approximations et heuristiques de deacuteterminerles points du diagramme de Voronoiuml Si elle reacuteussit du premier coup crsquoest qursquoil y avait eacutequivalence ce qui arrivepeu souvent Il faudrait refaire les calculs agrave la main et non de faccedilon approcheacutee pour valider un contre exemple Uneprochaine fois peut-ecirctre Ce qursquoil faut retenir est que la reacutegression logistique reacutealise une partition convexe de lrsquoespacedes variables
416 Notebooks
Le notebook qui suit reprend les diffeacuterents eacuteleacutements theacuteoriques preacutesenteacutes ci-dessus Il continue lrsquoeacutetude drsquoune reacutegressionlogistique et donne une intuition de ce qui marche ou pas avec un tel modegravele Notamment le modegravele est plus performantsi les classes sont reacuteparties sur la boule uniteacute de lrsquoespace des features
Voronoiuml et reacutegression logistique
Le notebook eacutetudie la pertinence drsquoun modegravele de reacutegression logistique dans certaines configurations Il regarde aussi lediagramme de Voronoiuml associeacute agrave une reacutegression logistique agrave trois classes Il donne quelques intuitions sur les modegravelesque la reacutegression logistique peut reacutesoudre
from jyquickhelper import add_notebook_menuadd_notebook_menu()
matplotlib inline
160 httpscikit-learnorgstablemodulesgeneratedsklearnlinear_modelRANSACRegressorhtml
41 Reacutegression logistique diagramme de Voronoiuml k-Means 161
Machine Learning Statistiques et Programmation Version 035930
Reacutegression logistique
from sklearndatasets import load_irisdata = load_iris()X y = datadata[ 2] datatarget
from sklearnlinear_model import LogisticRegressionclr = LogisticRegression()clrfit(X y)
LogisticRegression(C=10 class_weight=None dual=False fit_intercept=Trueintercept_scaling=1 max_iter=100 multi_class=ovr n_jobs=1penalty=l2 random_state=None solver=liblinear tol=00001verbose=0 warm_start=False)
clrcoef_
array([[-249579289 401011301][ 049709451 -163380222][ 115921404 -177736568]])
clrintercept_
array([ 081713932 122543562 -222516119])
import numpyx = numpyarray([[1 2]])clrdecision_function(x)
array([[ 634157245 -154507432 -46206785 ]])
A = clrcoef_B = clrintercept_
On veacuterifie que la fonction de deacutecision correspond agrave la formule suivant
(AxT)Travel() + B
array([ 634157245 -154507432 -46206785 ])
import matplotlibpyplot as plt
def draw_border(clr X y fct=None incx=1 incy=1 figsize=None border=True ax=None)
voir httpssashatme20170111list-of-20-simple-distinct-colors httpsmatplotliborgexamplescolorcolormaps_referencehtml_unused_ = [Red Green Yellow Blue Orange Purple Cyan
Magenta Lime Pink Teal Lavender Brown BeigeMaroon Mint Olive Coral Navy Grey White Black]
(suite sur la page suivante)
162 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
h = 02 step size in the mesh Plot the decision boundary For that we will assign a color to each point in the mesh [x_min x_max]x[y_min y_max]x_min x_max = X[ 0]min() - incx X[ 0]max() + incxy_min y_max = X[ 1]min() - incy X[ 1]max() + incyxx yy = numpymeshgrid(numpyarange(x_min x_max h) numpyarange(y_min y_max h))if fct is None
Z = clrpredict(numpyc_[xxravel() yyravel()])else
Z = fct(clr numpyc_[xxravel() yyravel()])
Put the result into a color plotcmap = pltcmtab20Z = Zreshape(xxshape)if ax is None
fig ax = pltsubplots(1 1 figsize=figsize or (4 3))axpcolormesh(xx yy Z cmap=cmap)
Plot also the training pointsaxscatter(X[ 0] X[ 1] c=y edgecolors=k cmap=cmap)axset_xlabel(Sepal length)axset_ylabel(Sepal width)
axset_xlim(xxmin() xxmax())axset_ylim(yymin() yymax())
Draw linesx1 x2 = xxmin() xxmax()cl = 0if border
for i in range(0 clrcoef_shape[0])for j in range(i+1 clrcoef_shape[0])
delta = clrcoef_[i] - clrcoef_[j]db = clrintercept_[i] - clrintercept_[j]y1 = (-db - delta[0] x1) delta[1]y2 = (-db - delta[0] x2) delta[1]axplot([x1 x2] [y1 y2] -- color=white)cl += 1
elsefor i in range(0 clrcoef_shape[0])
delta = clrcoef_[i]db = clrintercept_[i]y1 = (-db - delta[0] x1) delta[1]y2 = (-db - delta[0] x2) delta[1]axplot([x1 x2] [y1 y2] -- color=yellow)cl += 1
return ax
fig ax = pltsubplots(1 2 figsize=(104))draw_border(clr X y ax=ax[0])draw_border(clr X y border=False ax=ax[1])
(suite sur la page suivante)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 163
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
ax[0]set_title(Frontiegravere entre 2 classes)ax[1]set_title(Frontiegravere entre 1 classe et les autres)
Quelques diagramme de Voronoiuml
points = numpyarray([[1 2] [3 4] [4 1]])
from scipyspatial import Voronoi voronoi_plot_2dvor = Voronoi(points)
fig ax = pltsubplots(figsize=(44))axishold = lambda True bug between scipy and matplotlib 30voronoi_plot_2d(vor ax=ax)axset_xlim([0 5])axset_ylim([0 5])axaxis(off)
164 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
vorpoint_region
array([3 1 2] dtype=int64)
vorvertices
array([[275 225]])
from matplotlibpatches import Circlefrom matplotlibcollections import PatchCollectionpoints = numpyarray([[1 1] [2 4] [4 1] [63]])vor = Voronoi(points)fig ax = pltsubplots(figsize=(44))cs = []for i in range(vorverticesshape[0])
v = vorvertices[i ]d = (v - points[2 ])r = (ddot(d) 05)circle = Circle((v[0] v[1]) r fill=False ls=-- edgecolor=g visible=True)axadd_artist(circle)
for i in range(pointsshape[0])for j in range(i+1 pointsshape[0])
if i == 0 and j == 3continue
axplot(points[[i j] 0] points[[i j] 1] g-)axishold = lambda True bug between scipy and matplotlib 30voronoi_plot_2d(vor ax=ax)axset_xlim([0 7])axset_ylim([0 7])axaxis(off)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 165
Machine Learning Statistiques et Programmation Version 035930
import mathn = 5a = mathpi 2 3points = []for i in range(n)
for j in range(n)pointsappend([i + j mathcos(a) j mathsin(a)])
points = numpyarray(points)
vor = Voronoi(points)
fig ax = pltsubplots(figsize=(44))axishold = lambda True bug between scipy and matplotlib 30voronoi_plot_2d(vor ax=ax)axset_xlim([-15 4])axset_ylim([-15 4])axaxis(off)
166 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Un diagramme de Voronoiuml proche
On applique la formule deacutefinie par Reacutegression logistique diagramme de Voronoiuml k-Means161 et on reacutesoud le systegravemelineacuteaire deacutefini par
⟨Li minus Lj Pi⟩+Bi minusBj = minus⟨Li minus Lj Pj⟩+Bi minusBjPi minus Pj minus
langPi minus Pj
LiminusLj
∥LiminusLj∥
rangLiminusLj
∥LiminusLj∥ = 0
lArrrArr
⟨Li minus Lj Pi + Pj⟩+ 2(Bi minusBj) = 0
Pi minus Pj minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
rangLiminusLj
∥LiminusLj∥ = 0
=rArr
⟨Li minus Lj Pi + Pj⟩+ 2(Bi minusBj) = 0
⟨Pi minus Pj u⟩ minuslangPi minus Pj
LiminusLj
∥LiminusLj∥
ranglangLiminusLj
∥LiminusLj∥ urang= 0
Ougrave u est un vecteur uniteacute quelconque On cherche agrave reacutesoudre sous la forme drsquoun systegraveme lineacuteaire LP = B ougrave levecteur P est lrsquoensemble des coordonneacutees de tous les points chercheacutes Drsquoapregraves la page citeacute ci-dessus dans le cas drsquoundiagramme agrave trois classes ce systegraveme a une infiniteacute de solutions
import numpymatL = []matB = []L = clrcoef_B = clrintercept_for i in range(0 Lshape[0])
for j in range(i + 1 Lshape[0])li = L[i ]lj = L[j ]c = (li - lj)nc = (cT c) 05
(suite sur la page suivante)
161 httpwwwxavierduprefrappmlstatpyhelpsphinxc_mllr_voronoihtml
41 Reacutegression logistique diagramme de Voronoiuml k-Means 167
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
condition 1mat = numpyzeros((Lshape))mat[i] = cmat[j] = cd = -2(B[i] - B[j])matBappend(d)matLappend(matravel())
condition 2 - cache plusieurs eacutequations on ne prend que la premiegravere coordonneacuteec = ncc2 = c c[0]mat = numpyzeros((Lshape))mat[i] = -c2mat[j] = c2
mat[i0] += 1mat[j0] -= 1matBappend(0)matLappend(matravel())
matL = numpyarray(matL)matB = numpyarray(matB)matLshape matBshape numpylinalgdet(matL)
((6 6) (6) 20281820935727704e-16)
import pandaspandasDataFrame(matL)
Le deacuteterminant est tregraves faible suggeacuterant que la matrice est non inversible et on sait qursquoelle lrsquoest dans ce cas On remplacela derniegravere eacutequation en forccedilant la coordonneacutee drsquoun point
matL[-1] = 0matL[-10] = 1matB[-1] = 3numpylinalgdet(matL)
4207770646874508
On veacuterifie que le systegraveme lineacuteaire est celui attendu
import pandasdf = pandasDataFrame(matL)df[B] = matBdf
from numpylinalg import invpoints = (inv(matL) matB)reshape((32))points
168 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
array([[3 412377262][503684606 02827372 ][548745959 018503334]])
x = points[0 ]c1 = (LxT)Travel() + Bx = points[1 ]c2 = (LxT)Travel() + Bx = points[2 ]c3 = (LxT)Travel() + Bnumpyvstack([c1c2c3])
array([[ 986655487 -402070972 -607697098][-1061997713 326728747 31110941 ][-1213641872 365091377 380710713]])
ax = draw_border(clr X y incx=2 incy=2)axplot(points[ 0] points[ 1] ro)
Reacutegression logistique dans un quadrillage
On srsquointeacuteresse un problegraveme de reacutegression logistique ougrave le problegraveme est tregraves facile mais pas forceacutement eacutevident du pointde vue drsquoune reacutegression logistique
Xs = []Ys = []n = 20for i in range(0 4)
for j in range(0 3)x1 = numpyrandomrand(n) + i11x2 = numpyrandomrand(n) + j11Xsappend(numpyvstack([x1x2])T)Ysextend([i3+j] n)
(suite sur la page suivante)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 169
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
X = numpyvstack(Xs)Y = numpyarray(Ys)Xshape Yshape
((240 2) (240))
set(Y)
0 1 2 3 4 5 6 7 8 9 10 11
On veacuterifie que le nuage de points est tel qursquoindiqueacute
fig ax = pltsubplots(1 1 figsize=(64))for i in range(0 12)
axplot(X[Y==i0] X[Y==i1] o label=cldi color=pltcmtab20colors[i])axlegend()axset_title(Classification agrave neuf classesndans un quadrillage)
from sklearnlinear_model import LogisticRegressionclr = LogisticRegression()clrfit(X Y)
LogisticRegression(C=10 class_weight=None dual=False fit_intercept=Trueintercept_scaling=1 max_iter=100 multi_class=ovr n_jobs=1penalty=l2 random_state=None solver=liblinear tol=00001verbose=0 warm_start=False)
170 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
ax = draw_border(clr X Y incx=1 incy=1 figsize=(128) border=False)axset_title(Reacutegression logistique dans un quadrillage)
clrscore(X Y)
06958333333333333
On copie les features en les mettant au carreacute Le problegraveme est toujours aussi simple mais la reacutegression logistique a plusde variables non correacuteleacutees sur lesquelles srsquoappuyer
def create_feat(X)X2 = Xcopy()X2[ 0] = X2[ 0] X2[ 0]X2[ 1] = X2[ 1] X2[ 1]XX2 = numpyhstack([X X2])return XX2
clr2 = LogisticRegression()clr2fit(create_feat(X) Y)
LogisticRegression(C=10 class_weight=None dual=False fit_intercept=Trueintercept_scaling=1 max_iter=100 multi_class=ovr n_jobs=1penalty=l2 random_state=None solver=liblinear tol=00001verbose=0 warm_start=False)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 171
Machine Learning Statistiques et Programmation Version 035930
def fct_predict(clr X)return clrpredict(create_feat(X))
ax = draw_border(clr2 X Y fct=fct_predict incx=1 incy=1 figsize=(128)rarrborder=False)axset_title(Reacutegression logistique dans un quadrillage avec X2)
clr2score(create_feat(X) Y)
09583333333333334
Du fait que ce problegraveme de classification est eacutequivalent agrave un diagramme de Voronoiuml il a eacuteteacute construit comme tel lefait que la reacutegression logistique semble ecirctre provenir drsquoun problegraveme de convergence numeacuterique plutocirct que du modegraveletheacuteorique Pour veacuterfier on joue avec les paramegravetres drsquoapprentissage Tout drsquoabord lrsquoalgorithme de descente de gradient
clr_t = LogisticRegression(solver=lbfgs)clr_tfit(X Y)clr_tscore(X Y)
09
ax = draw_border(clr_t X Y incx=1 incy=1 figsize=(64) border=False)axset_title(Reacutegression logistique dans un quadrillage avec L-BFGS)
172 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Ensuite on change la faccedilon de reacutesoudre le problegraveme Plutocirct que de reacutesoudre n problegravemes de classifications binaireson reacutesoud un seul problegraveme avec une erreur de classification eacutegale agrave la Multinomial logistic regression162
clr_t = LogisticRegression(solver=lbfgs multi_class=multinomial)clr_tfit(X Y)clr_tscore(X Y)
09875
fig ax = pltsubplots(1 2 figsize=(12 4))draw_border(clr_t X Y incx=1 incy=1 figsize=(64) border=False ax=ax[0])draw_border(clr_t X Y incx=1 incy=1 figsize=(64) border=True ax=ax[1])ax[0]set_title(Reacutegression logistique dans un quadrillagenavec L-BFGS + multinomial)ax[1]set_title(Reacutegression logistique dans un quadrillagenavec L-BFGS + multinomial)
162 httpsenwikipediaorgwikiMultinomial_logistic_regression
41 Reacutegression logistique diagramme de Voronoiuml k-Means 173
Machine Learning Statistiques et Programmation Version 035930
Les frontiegraveres entre une classes et les autres nrsquoont plus lrsquoair drsquoavoir de signification geacuteomeacutetrique Lrsquoapproche une classecontre toutes les autres marchent bien si celles-ci ont des frontiegraveres convexes sans angles aigus et si elles ne sont pasborneacutees En gros cette approche rapide fonctionne bien si toutes les classes sont disposeacutees autour de la boule uniteacute oudrsquoune boule uniteacute composeacutee sur un sous-ensemble des dimensions
Reacutegression logistique autour drsquoun cercle
from math import cos sin piXs = []Ys = []n = 20for i in range(0 12)
x1 = numpyrandomrand(n) + 23cos(i 12 2 pi)x2 = numpyrandomrand(n) + 23sin(i 12 2 pi)Xsappend(numpyvstack([x1x2])T)Ysextend([i] n)
X = numpyvstack(Xs)Y = numpyarray(Ys)Xshape Yshape
((240 2) (240))
fig ax = pltsubplots(1 1 figsize=(64))for i in range(0 12)
axplot(X[Y==i0] X[Y==i1] o label=cldi color=pltcmtab20colors[i])axlegend()axset_title(Classification agrave neuf classesndans un quadrillage)
174 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
clr_c = LogisticRegression()clr_cfit(X Y)clr_cscore(X Y)
09833333333333333
ax = draw_border(clr_c X Y incx=1 incy=1 figsize=(64) border=False)axset_title(Reacutegression logistique autour dun cercle)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 175
Machine Learning Statistiques et Programmation Version 035930
Rien nrsquoest prouveacute ce ne sont que des observations On peut se poser la question si le problegraveme preacuteceacutedent nrsquoeacutetait pasjustement choisi pour montrer que dans un cas lrsquoapproche une classe contre les autres dans le cas drsquoun quadrillage estparticuliegraverement malvenue On accroicirct lrsquoespace entre les classes
Xs = []Ys = []n = 20for i in range(0 4)
for j in range(0 3)x1 = numpyrandomrand(n) + i3x2 = numpyrandomrand(n) + j3Xsappend(numpyvstack([x1x2])T)Ysextend([i3+j] n)
X = numpyvstack(Xs)Y = numpyarray(Ys)Xshape Yshape
((240 2) (240))
clr_q = LogisticRegression()clr_qfit(X Y)clr_qscore(X Y)
07875
ax = draw_border(clr_q X Y incx=1 incy=1 figsize=(64) border=False)axset_title(Reacutegression logistique autour dun cercle)
176 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
A priori non mais on preacutefegravere lrsquoapproche une classe contre les autres car elle est beaucoup plus rapide Lrsquoapprochemultinomiale requiert de changer drsquoalgorithme de descente de gradient
clr_q = LogisticRegression()timeit clr_qfit(X Y)
425 ms plusmn 148 ţs per loop (mean plusmn std dev of 7 runs 100 loops each)
clr_qmn = LogisticRegression(multi_class=multinomial solver=lbfgs)timeit clr_qmnfit(X Y)
554 ms plusmn 118 ms per loop (mean plusmn std dev of 7 runs 10 loops each)
Pousser les classes sur la boule uniteacute
Puisque le modegravele est plus facile agrave apprendre lorsque les classes sont reacuteparties sur la boule uniteacute lrsquoideacuteal serait drsquoavoirune transformation qui le fait comme drsquoajouter des dimensions La reacutegression logistique ne peut modeacuteliser que desclasses convexes Cela veut dire que le barycentre sous cette hypothegraveses appartient agrave la zone que le modegravele attribute agraveune classe donneacutee On calcule ce barycentre pour toutes les classes et on ajoute comme variables la distance agrave chacunde ces centres On reprend le problegraveme du quadrillage
Xs = []Ys = []n = 20for i in range(0 4)
for j in range(0 3)x1 = numpyrandomrand(n) + i11x2 = numpyrandomrand(n) + j11
(suite sur la page suivante)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 177
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
Xsappend(numpyvstack([x1x2])T)Ysextend([i3+j] n)
X = numpyvstack(Xs)Y = numpyarray(Ys)Xshape Yshape
((240 2) (240))
bary = []for i in range(12)
b = X[Y==i]mean(axis=0)baryappend(b)
barys = numpyvstack(bary)barysshape
(12 2)
from sklearnmetricspairwise import euclidean_distancesdist = euclidean_distances(X barys)distshape
(240 12)
Xext = numpyhstack([X dist])
clr_ext = LogisticRegression()clr_extfit(Xext Y)clr_extscore(Xext Y)
09916666666666667
def fct_predict(clr X)dist = euclidean_distances(X barys)Xext = numpyhstack([X dist])return clrpredict(Xext)
ax = draw_border(clr_ext X Y fct=fct_predict incx=1 incy=1 figsize=(64)rarrborder=False)axset_title(Reacutegression logistique dans un quadrillagenavec des distances auxrarrbarycentres)
178 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Cela reacutepond eacutegalement agrave une question Que faire lorsque les classes ne sont pas convexes Une ideacutee consiste agraveeffectuer un k-means163 par classe jusqursquoagrave ce que chaque classe soit agrave peu pregraves converte par un ensemble de clusterappris sur cette classe
Cas presque hexagonal
Pour tester quelques ideacutees et parce crsquoest joli Lrsquoideacuteal serait de se rapprocher drsquoun pavage de Penrose164
import mathn = 4a = mathpi 2 3points = []Ys = []for i in range(n)
for j in range(n)dil = ((i+1)2 + (j+1)2) 06for k in range(020)
x = i + j mathcos(a)y = j mathsin(a)pointsappend([x dil y dil])Ysappend(in+j)mi = 05for r in [01 03 mi]
nb = 6 if r == mi else 12for k in range(0 nb)
(suite sur la page suivante)
163 httpscikit-learnorgstablemodulesgeneratedsklearnclusterKMeanshtml164 httpsfrwikipediaorgwikiRoger_Penrose
41 Reacutegression logistique diagramme de Voronoiuml k-Means 179
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
x = i + j mathcos(a) + r mathcos(mathpi2nb k + mathpi6)y = j mathsin(a) + r mathsin(mathpi2nb k + mathpi6)pointsappend([x dil y dil])Ysappend(in+j)
X = numpyarray(points)Y = numpyarray(Ys)set(Y)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
fig ax = pltsubplots(1 1 figsize=(64))for i in range(0 max(Y)+1)
axplot(X[Y==i0] X[Y==i1] o label=cldi color=pltcmtab20colors[i20])axset_title(Classification agrave 16 classesndans un quadrillage hexagonal)
clr_hex = LogisticRegression(multi_class=multinomial solver=lbfgs max_iter=200)clr_hexfit(X Y)clr_hexscore(X Y)
09919354838709677
ax = draw_border(clr_hex X Y incx=1 incy=1 figsize=(64) border=False)axset_title(Reacutegression logistique dansnun quadrillage hexagonal)
180 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Diagramme de Voronoiuml approcheacute
On pousse lrsquoideacutee impleacutementeacutee dans le cas de trois classes pour un nombre de classes quelconque Il nrsquoexiste pas defaccedilon geacuteneacuterique de diagramme de Voronoiuml eacutequivalent On reacutesoud le systegraveme lineacuteaire avec une reacutegression quantile etdrsquoautres astuces de calculs agrave deacutecouvrir dans le code de la fonction voronoi_estimation_from_lr165
Xs = []Ys = []n = 20for i in range(0 4)
for j in range(0 3)x1 = numpyrandomrand(n) + i11x2 = numpyrandomrand(n) + j11Xsappend(numpyvstack([x1x2])T)Ysextend([i3+j] n)
X = numpyvstack(Xs)Y = numpyarray(Ys)Xshape Yshape
((240 2) (240))
fig ax = pltsubplots(1 1 figsize=(64))for i in range(0 12)
axplot(X[Y==i0] X[Y==i1] o label=cldi color=pltcmtab20colors[i])(suite sur la page suivante)
165 httpwwwxavierduprefrappmlstatpyhelpsphinxmlstatpymlvoronoihtml
41 Reacutegression logistique diagramme de Voronoiuml k-Means 181
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
axlegend()axset_title(Classification agrave neuf classesndans un quadrillage)
from sklearnlinear_model import LogisticRegressionclr = LogisticRegression()clrfit(X Y)
LogisticRegression(C=10 class_weight=None dual=False fit_intercept=Trueintercept_scaling=1 max_iter=100 multi_class=ovr n_jobs=1penalty=l2 random_state=None solver=liblinear tol=00001verbose=0 warm_start=False)
from mlstatpyml import voronoi_estimation_from_lrpoints = voronoi_estimation_from_lr(clrcoef_ clrintercept_ max_iter=20 verbose=True)points
[voronoi_estimation_from_lr] iter=120 score=00953 tol=348e-10 del P29 d=319[voronoi_estimation_from_lr] iter=220 score=00939 tol=348e-10 del P19 d=272[voronoi_estimation_from_lr] iter=320 score=0089 tol=348e-10 del P26 d=25[voronoi_estimation_from_lr] iter=420 score=00892 tol=348e-10 del P011 d=246[voronoi_estimation_from_lr] iter=520 score=00894 tol=348e-10 del P210 d=242[voronoi_estimation_from_lr] iter=620 score=00882 tol=348e-10 del P110 d=244[voronoi_estimation_from_lr] iter=720 score=00889 tol=348e-10 del P010 d=23[voronoi_estimation_from_lr] iter=820 score=00877 tol=348e-10 del P59 d=229[voronoi_estimation_from_lr] iter=920 score=00869 tol=348e-10 del P111 d=218[voronoi_estimation_from_lr] iter=1020 score=0088 tol=348e-10 del P23 d=22[voronoi_estimation_from_lr] iter=1120 score=0089 tol=348e-10 del P08 d=214
(suite sur la page suivante)
182 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
[voronoi_estimation_from_lr] iter=1220 score=00884 tol=348e-10 del P16 d=22[voronoi_estimation_from_lr] iter=1320 score=00871 tol=348e-10 del P211 d=207[voronoi_estimation_from_lr] iter=1420 score=00874 tol=348e-10 del P05 d=21[voronoi_estimation_from_lr] iter=1520 score=00868 tol=348e-10 del P02 d=21[voronoi_estimation_from_lr] iter=1620 score=0087 tol=348e-10 del P09 d=206[voronoi_estimation_from_lr] iter=1720 score=00876 tol=348e-10 del P89 d=199[voronoi_estimation_from_lr] iter=1820 score=00878 tol=348e-10 del P27 d=193[voronoi_estimation_from_lr] iter=1920 score=00889 tol=348e-10 del P911 d=193[voronoi_estimation_from_lr] iter=2020 score=00875 tol=348e-10 del P17 d=197
array([[059042773 041675379][019276405 161586254][038750542 234848342][170510075 05341869 ][169940467 150388896][166571087 215827251][223834543 06114512 ][214600591 13636044 ][208762755 204091816][25732091 0170076 ][281087731 140217985][249984364 202978587]])
ax = draw_border(clr X Y incx=1 incy=1 figsize=(85) border=False)axplot(points[ 0] points[ 1] ro ms=10)axset_title(Diagramme de Voronoi approcheacute)
41 Reacutegression logistique diagramme de Voronoiuml k-Means 183
Machine Learning Statistiques et Programmation Version 035930
42 Reacutegression logistique par morceaux arbres de deacutecision
Ce qui suit explore une faccedilon fantaisiste de construire des reacutegressions logistiques agrave mi-chemin entre les arbres dedeacutecisions et les reacuteseaux de neurones Dans un premier temps on srsquointeacuteresse uniquement agrave une classification binaire
bull Parallegravele entre un neurone et une reacutegression logistique (page 185)bull Principe drsquoun arbre de deacutecision (page 185)bull Construction drsquoun pseudo arbre (page 187)bull Aparteacute matheacutematique (page 188)bull Approche EM et reacutegression logistique (page 189)bull Lien vers les reacuteseaux de neurones (page 189)bull Plan orthogonal (page 192)bull Interpreacutetabiliteacute (page 192)bull Bibliographie (page 192)
184 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
421 Parallegravele entre un neurone et une reacutegression logistique
Les paragraphes Classification (page 54) et La classification (page 32) preacutesente le problegraveme de la classification quiconsiste agrave trouver une fonction f qui maximise la vraisemblance du nuage de points (Xi yi)i ougraveXi isin Rd et yi isin 0 1
lnL(Θ X y) =
nsumi=1
yi ln f(Θ Xi) + (1minus yi) ln(1minus f(Θ Xi))
Dans le cas de la reacutegression logistique la fonction f est deacutefinie comme suit
f(Θ Xi) =1
1 + eminussumd
k=1 θkxik
Cela ressemble beaucoup agrave la deacutefinition drsquoun neurone (page 25) ougrave la fonction drsquoactivation f(x) = 11+eminusx est une
fonction sigmoiumlde
422 Principe drsquoun arbre de deacutecision
Un arbre de deacutecision se construit peu agrave peu en reacutepeacutetant toujours la mecircme optimisation sur des sous-ensemble de plusen plus petit Il faut drsquoabord un critegravere qui permette drsquoeacutevaluer la pertinence de la division effectueacutee par un noeud delrsquoarbre Pour un ensemble (Xi yi)1⩽i⩽n on peut estimer la probabiliteacute p(y1 yn) = p(Y ) = 1
n
sumi = 1nyi Le
critegravere de Gini G qui eacutevalue la pertinence drsquoune classification est deacutefini par G(Y ) = p(Y )(1minus p(Y )) Un autre critegravereest le gain drsquoinformation ou entropie H H(Y ) = minusp(Y ) ln p(Y )minus (1minus p(Y )) ln(1minus p(Y ))On note YS lrsquoensemble des yi|i isin S ougrave S est un sous-ensemble SC est noteacute le compleacutementairePour le premier noeud de lrsquoarbre de deacutecision on calcule pour toutes les variables et toutes les observations la diminutiondu critegravere choisi
Sik = m|xmk ⩽ xik∆ik = H(Y )minus (H(YSik
) +H(YSCik)
On choisit alors la variable k et le seuil xik qui maximise le gain Dans le cas drsquoune reacutegression logistique lavraisemblance correspond agrave
lnL(Θ X y) =
nsumi=1
yi ln f(Θ Xi) + (1minus yi) ln(1minus f(Θ Xi))
Si on suppose que la fonction f retourne une constante c cette expression devient
lnL(Θ X y) =
nsumi=1
yi ln c+ (1minus yi) ln(1minus c) = p(Y ) ln c+ (1minus p(Y )) ln(1minus c)
Or cette expression admet un maximum pour c = p(Y ) puisque la deacuteriveacutee srsquoannule de faccedilon eacutevidente pour cette valeur
part lnL(Θ X y)
partc=
p(Y )
cminus 1minus p(Y )
1minus c
On remarque que lrsquooptimisation drsquoun noeud drsquoun arbre de deacutecision correspond agrave lrsquooptimisation de la vraisemblance parune fonction constante Une reacutegression logistique calculeacutee sur une seule variable est en quelque sorte une geacuteneacuteralisationde ce modegravele On apprend un arbre de deacutecision qursquoon exporte au format dot166ltltlt
166 httpsfrwikipediaorgwikiDOT_(langage)
42 Reacutegression logistique par morceaux arbres de deacutecision 185
Machine Learning Statistiques et Programmation Version 035930
from sklearndatasets import load_irisfrom sklearntree import DecisionTreeClassifier export_graphvizds = load_iris()X y = dsdata dstargety = y 2dt = DecisionTreeClassifier(max_depth=3 criterion=entropy)dtfit(X y)print(dt) export_graphviz(dt)
gtgtgt
DecisionTreeClassifier(criterion=entropy max_depth=3)
Ce qui donne
X[3] lt= 08entropy = 0918samples = 150
value = [100 50]
entropy = 00samples = 50
value = [50 0]
True
X[3] lt= 175entropy = 10samples = 100
value = [50 50]
False
X[2] lt= 495entropy = 0445
samples = 54value = [5 49]
X[2] lt= 485entropy = 0151
samples = 46value = [45 1]
entropy = 0146samples = 48
value = [1 47]
entropy = 0918samples = 6
value = [4 2]
entropy = 0918samples = 3
value = [2 1]
entropy = 00samples = 43
value = [43 0]
186 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
423 Construction drsquoun pseudo arbre
Et si on remplaccedilait chaque noeud par une reacutegression logistique appris sur les exemples passant par ce noeud Plutocirctque de prendre une deacutecision baseacutee sur une variable donneacutee et de retourner une probabiliteacute constante on estime unereacutegression logistique et on retourne la probabiliteacute retourneacutee par la reacutegressionSrsquoil nrsquoy a theacuteoriquement aucun obstacle en pratique certains cas posent quelques problegravemes comme le montrelrsquoexemple Arbre drsquoindeacutecision (page 323) et repris ci-dessous La fonction criteria calcule les diffeacuterents gains selonles points de coupure
import matplotlibpyplot as pltfrom mlstatpymllogreg import criteria random_set_1d plot_ds
X1 y1 = random_set_1d(1000 2)X2 y2 = random_set_1d(1000 3)X3 y3 = random_set_1d(1000 4)df1 = criteria(X1 y1)df2 = criteria(X2 y2)df3 = criteria(X3 y3)
fig ax = pltsubplots(1 3 figsize=(14 5) sharey=True)plot_ds(X1 y1 ax=ax[0] title=easy)plot_ds(X2 y2 ax=ax[1] title=difficult)plot_ds(X3 y3 ax=ax[2] title=more difficult)df1plot(x=X y=[Gini Gain p1 p2] ax=ax[0] lw=5)df2plot(x=X y=[Gini Gain p1 p2] ax=ax[1] lw=5)df3plot(x=X y=[Gini Gain p1 p2] ax=ax[2] lw=5)pltshow()
Le seuil de coupure est eacutevident dans le premier cas et quasiment impossible agrave trouver de faccedilon numeacuterique dans lesecond avec les algorithmes tels qursquoils sont impleacutementeacutes Les arbres de deacutecision contournent ce problegraveme en imposantque le seuil de coupure laisse au moins quelques exemples de chaque cocircteacute ce que la reacutegression logistique ne fait pasOn peut reacuteflechir agrave drsquoautres critegraveres Le suivant explore la log-vraisemblance
import matplotlibpyplot as pltfrom mlstatpymllogreg import criteria2 random_set_1d plot_ds
X1 y1 = random_set_1d(1000 2)X2 y2 = random_set_1d(1000 3)
(suite sur la page suivante)
42 Reacutegression logistique par morceaux arbres de deacutecision 187
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
X3 y3 = random_set_1d(1000 4)df1 = criteria2(X1 y1)df2 = criteria2(X2 y2)df3 = criteria2(X3 y3)print(df3)
fig ax = pltsubplots(1 3 figsize=(14 5) sharey=True)plot_ds(X1 y1 ax=ax[0] title=easy)plot_ds(X2 y2 ax=ax[1] title=difficult)plot_ds(X3 y3 ax=ax[2] title=more difficult)df1plot(x=X y=[LL LL-10 LL-100] ax=ax[0] lw=5)df2plot(x=X y=[LL LL-10 LL-100] ax=ax[1] lw=5)df3plot(x=X y=[LL LL-10 LL-100] ax=ax[2] lw=5)pltshow()
La log-vraisemblance dans ce problegraveme agrave une dimension est assez simple agrave eacutecrire Pour avoir une expression qui nechange pas en invertissant les classes on considegravere le maxiimum des vraisemblance en consideacuterant deux classifieursopposeacutes Le graphe preacuteceacutedent fait varier x0 avec diffeacuterents θ
LL(x0 θ) = max
1
1+exp ( xminusx0θ )
1
1+exp (minus xminusx0θ )
424 Aparteacute matheacutematique
La log-vraisemblance drsquoune reacutegression logistique pour un jeu de donneacutees (Xi yi) srsquoexprime comme suit pour unereacutegression logistique de paramegravetre β
L(βX y) =sumn
i=1 yi ln f(βXi) + (1minus yi) ln(1minus f(βXi))avec f(βXi) = 1
1+exp(minus(β0+sumd
k=1 xikβk))
On remarque que
f(x) = 11+eminusx
rArr f(minusx) = 11+ex = eminusx
1+eminusx
rArr f(x) + f(minusx) = 11+eminusx + eminusx
1+eminusx = 1
188 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Cela explique pour on utilise souvent cette fonction pour transformer une distance en probabiliteacute pour unclassifieur binaire Lrsquoapprentissage drsquoun arbre de deacutecision sklearntreeDecisionTreeClassifier167 propose le paramegravetremin_samples_leaf On se propose dans le cadre de la reacutegression logistique de chercher le paramegravetre β0 qui permet deveacuterifier la contrainte fixeacutee par min_samples_leaf Cela revient agrave trounver un classifieur lineacuteaire parallegravele au premierqui veacuterifie les contraintes
425 Approche EM et reacutegression logistique
Lrsquoarticle [Scott2013] explicite un algorithme drsquoapprentissage EM pour une reacutegression logistique
Il faudrait adapter cet agorithme pour apprendre deux reacutegressions logistiques dont la combinaison sur deux partiesdisjointes serait meilleure qursquoune seule reacutegression logistique sur la reacuteunion des deux parties Cet algorithme devraittrouver agrave la fois les modegraveles et la seacuteparation entre les deux parties
A faire(ideacutee) Arbre de reacutegressions logistiques et EMChaque noeud du graphe serait modeacuteliseacute comme eacutetant la reacuteunion de trois reacutegressions logistiques une pour diviserlrsquoespace en deux deux autres apprenant agrave classifier sur chacune des partiesissue168
426 Lien vers les reacuteseaux de neurones
En remplaccedilant chaque noeud par une reacutegression logistique lrsquoarbre de deacutecision deviendrait un reacuteseau de neurones avecune structure particuliegravere certes mais un reacuteseau de neurones tout de mecircme Chaque noeud du graphe serait transformeacuteen un neurone avec une reacutegression logistique impliquant toutes les variables Il ne resterait plus qursquoagrave continuerlrsquoapprentissage avec des algorithmes agrave base de gradient stochastique Cela reviendrait agrave changer lrsquoinitialisation dureacuteseau de neurones On considegravere le petit arbre deacutecision suivant trois features trois noeuds deux classes
167 httpsscikit-learnorgstablemodulesgeneratedtreeDecisionTreeClassifierhtml168 httpsgithubcomsdpythonmlstatpyissues28
42 Reacutegression logistique par morceaux arbres de deacutecision 189
Machine Learning Statistiques et Programmation Version 035930
X1 lt 5
X2 lt 3 X3 lt 2
0 1 0 1
On souhaite le transformer en reacuteseau de neurones avec une structure qui serait celle qui suit On note tout drsquoabordla fonction sigmoiumlde f(x s h) = 1
1+eminush(xminuss) Elle vaut 12 lorsque x vaut s vaut 1 lorsque x est tregraves grand et 0lorsque x est tregraves petit Crsquoest eacutequivalent agrave la fonction f(x s h) = g(XS v0 h)
11+eh(ltXV gt+v0) ougrave X = (x1 x2 x3)
V = (minus1 0 0) et v0 = s
y1=g(X (-1 0 0) 5 h)
y4=g((y1 y2) (-1 -1) 1 h) y5=g((y1 y3) (-1 -1) 1 h)
y2=g(X (0 -1 0) 3 h) y3=g(X (0 0 -1) 2 h)
y6=g((y4 y5) (-1 -1) 1 h)
ltc0gt 0|ltc1gt 1
Le problegraveme avec la structure proposeacutee est que chaque noeud final retourne toujours une classe alors que dans un arbrede deacutecision seule une feuille reacutepond Un noeud final fait la somme de toutes les feuilles deux dans cet exemple
190 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
Lrsquoimpleacutementation de scikit-learn169 nrsquoest pas la plus facile agrave manipuler dans le sens ougrave chaque couche ne peut prendrecomme entreacutee que les sorties de la preacuteceacutedente et la fonction drsquoactivation est la mecircme pour tous les neurones On nepeut pas non plus geler certains coefficients lors de lrsquoapprentissage Crsquoest agrave ce moment-lagrave qursquoon se demande si ccedila vautle coup de se lancer dans une impleacutementation agrave la rigueur jolie mais sans doute pas porteuse drsquoune innovation majeureEt ce nrsquoest pas la premiegravere fois que quelqursquoun se lance dans la conversion drsquoun arbre en reacuteseaux de neuronesJrsquoai quand mecircme essayeacute avec le notebook Un arbre de deacutecision en reacuteseaux de neurones (page 87) et les classesNeuralTreeNode NeuralTreeNet Si lrsquoideacutee de deacutepart est seacuteduisante elle requiert une contrainte suppleacutementaire quiest de creacuteer un reacuteseau de neurones qui ne soit pas un minimum local de la fonction drsquoerreur auquel cas un apprentissageavec un algorithme agrave base de gradient ne pourra pas ameacuteliorer les performances du reacuteseau de neurones
La structure proposeacutee nrsquoest cependant pas la meilleure et elle pourrait ecirctre simplifieacutee Drsquoautres projets srsquoappuie deslibrairies existantes
bull Soft-Decision-Tree170
bull Neural-Decision-Forests171
bull hummingbird172
Ce dernier package convertit un reacuteseau de neurones en autant de couches que la profondeur de lrsquoarbre Lrsquoimage qui suitest tireacute de lrsquoarticle [Nakandalam2020] et qui reacutesume leur ideacutee
169 httpsscikit-learnorg170 httpsgithubcomkimhc6028soft-decision-tree171 httpsgithubcomjingxilNeural-Decision-Forests172 httpsgithubcommicrosofthummingbird
42 Reacutegression logistique par morceaux arbres de deacutecision 191
Machine Learning Statistiques et Programmation Version 035930
427 Plan orthogonal
Dans un espace agrave plusieurs dimensions la reacutegression logistique divise lrsquoespace agrave lrsquoaide drsquoun hyperplan La fonction dedeacutecision reste similaire puisque la probabiliteacute de classification deacutepend de la distance agrave cet hyperplan On suppose qursquoilexiste une reacutegression logistique binaire apprise sur un nuage de points (Xi yi) La probabiliteacute de bonne classificationest deacutefinie par
f(Θ Xi) =1
1 + eminusθ0+sumd
k=1 θkxik
Le vecteur Θ deacutefinit un hyperplan On choisit un vecteur Θprime de telle sorte que lt ΘΘprime gt= 0 Les deux vecteurs sontorthogonaux On deacutefinit maintenant deux autres vecteurs Θ1Θ2 pour deux autres reacutegressions logistiques Pour classerun point X on procegravede comme suit
bull si lt Θprime X gtlt 0 on classe le point en appliquant la reacutegression logistique deacutefinie par Theta1bull si lt Θprime X gt⩽ 0 on classe le point en appliquant la reacutegression logistique deacutefinie par Theta2
De maniegravere eacutevidente les performances en classification sont les mecircmes que la premiegravere reacutegression logistique On peutensuite reacuteestimer les vecteurs Θ1Θ2 pour maximiser la vraisemblance sur chacune des parties Il ne reste plus qursquoagravemontrer que la vraisemblance globale sera supeacuterieur agrave celle obtenue par la premiegravere reacutegression logistique
A faire(ideacutee) Arbre de reacutegressions logistiques en cascade orthogonaleImpleacutementer la lrsquoalgorithme suivant
bull Apprendre une reacutegression logistiquebull Choisir un hyperplan perpendiculaire en optimisation un critegravere Construction drsquoun pseudo arbre (page 187)bull Apprendre une reacutegression logistique sur chacune des partiesbull Continuer jusqursquoagrave ce lrsquoameacutelioration soit neacutegligeable
issue173
428 Interpreacutetabiliteacute
429 Bibliographie
[Scott2013] Expectation-maximization for logistic regression174 James G Scott Liang Sun[Nakandalam2020] A Tensor-based Approach for One-size-fits-all ML Prediction Serving Supun Nakandalam
Karla Saur Gyeong-In Yu Konstantinos Karanasos Carlo Curino Markus Weimer Matteo Interlandi To appearat OSDI 2020175
43 Reacuteseaux de neurones
Reacuteseaux de neurones avec scikit-learn
matplotlib inline
173 httpsgithubcomsdpythonmlstatpyissues29174 httpsarxivorgpdf13060040pdf175 httpswwwusenixorgconferenceosdi20
192 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
from sklearnlinear_model import PerceptronX = [[0 0] [1 1]]y = [0 1]clf = Perceptron()clffit(X y)
Perceptron(alpha=00001 class_weight=None eta0=10 fit_intercept=Truen_iter=5 n_jobs=1 penalty=None random_state=0 shuffle=Trueverbose=0 warm_start=False)
import matplotlibpyplot as pltimport numpydef softmax(x)
return 10 (1 + numpyexp(-x))def dsoftmax(x)
t = numpyexp(-x)return t (1 + t)2
x = numpyarange(-1010 01)y = softmax(x)dy = dsoftmax(x)fig ax = pltsubplots(11)axplot(xy label=softmax)axplot(xdy label=deacuteriveacutee)axset_ylim([-01 11])axplot([-5 -5] [-01 11] r)axplot([5 5] [-01 11] r)axlegend(loc=2)
ltmatplotliblegendLegend at 0x1b651aeacf8gt
43 Reacuteseaux de neurones 193
Machine Learning Statistiques et Programmation Version 035930
x
array([ -100000000e+01 -990000000e+00 -980000000e+00-970000000e+00 -960000000e+00 -950000000e+00-940000000e+00 -930000000e+00 -920000000e+00-910000000e+00 -900000000e+00 -890000000e+00-880000000e+00 -870000000e+00 -860000000e+00-850000000e+00 -840000000e+00 -830000000e+00-820000000e+00 -810000000e+00 -800000000e+00-790000000e+00 -780000000e+00 -770000000e+00-760000000e+00 -750000000e+00 -740000000e+00-730000000e+00 -720000000e+00 -710000000e+00-700000000e+00 -690000000e+00 -680000000e+00-670000000e+00 -660000000e+00 -650000000e+00-640000000e+00 -630000000e+00 -620000000e+00-610000000e+00 -600000000e+00 -590000000e+00-580000000e+00 -570000000e+00 -560000000e+00-550000000e+00 -540000000e+00 -530000000e+00-520000000e+00 -510000000e+00 -500000000e+00-490000000e+00 -480000000e+00 -470000000e+00-460000000e+00 -450000000e+00 -440000000e+00-430000000e+00 -420000000e+00 -410000000e+00-400000000e+00 -390000000e+00 -380000000e+00-370000000e+00 -360000000e+00 -350000000e+00-340000000e+00 -330000000e+00 -320000000e+00-310000000e+00 -300000000e+00 -290000000e+00-280000000e+00 -270000000e+00 -260000000e+00-250000000e+00 -240000000e+00 -230000000e+00-220000000e+00 -210000000e+00 -200000000e+00-190000000e+00 -180000000e+00 -170000000e+00-160000000e+00 -150000000e+00 -140000000e+00-130000000e+00 -120000000e+00 -110000000e+00-100000000e+00 -900000000e-01 -800000000e-01-700000000e-01 -600000000e-01 -500000000e-01-400000000e-01 -300000000e-01 -200000000e-01-100000000e-01 -355271368e-14 100000000e-01200000000e-01 300000000e-01 400000000e-01500000000e-01 600000000e-01 700000000e-01800000000e-01 900000000e-01 100000000e+00110000000e+00 120000000e+00 130000000e+00140000000e+00 150000000e+00 160000000e+00170000000e+00 180000000e+00 190000000e+00200000000e+00 210000000e+00 220000000e+00230000000e+00 240000000e+00 250000000e+00260000000e+00 270000000e+00 280000000e+00290000000e+00 300000000e+00 310000000e+00320000000e+00 330000000e+00 340000000e+00350000000e+00 360000000e+00 370000000e+00380000000e+00 390000000e+00 400000000e+00410000000e+00 420000000e+00 430000000e+00440000000e+00 450000000e+00 460000000e+00470000000e+00 480000000e+00 490000000e+00
(suite sur la page suivante)
194 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
500000000e+00 510000000e+00 520000000e+00530000000e+00 540000000e+00 550000000e+00560000000e+00 570000000e+00 580000000e+00590000000e+00 600000000e+00 610000000e+00620000000e+00 630000000e+00 640000000e+00650000000e+00 660000000e+00 670000000e+00680000000e+00 690000000e+00 700000000e+00710000000e+00 720000000e+00 730000000e+00740000000e+00 750000000e+00 760000000e+00770000000e+00 780000000e+00 790000000e+00800000000e+00 810000000e+00 820000000e+00830000000e+00 840000000e+00 850000000e+00860000000e+00 870000000e+00 880000000e+00890000000e+00 900000000e+00 910000000e+00920000000e+00 930000000e+00 940000000e+00950000000e+00 960000000e+00 970000000e+00980000000e+00 990000000e+00])
44 Analyse de survie
Liquestanalyse de survie176 est un sujet qursquoon commence agrave voir poindre en assurance et plus geacuteneacuteralement en assuranceCrsquoest domaine deacuteveloppeacute pour mesurer les effets drsquoune substance drsquoun meacutedicament sur un corps vivant une personne
bull Lien avec le machine learning (page 195)bull Courbe de Kaplan-Meier (page 196)bull Reacutegression de Cox (page 196)bull Notebooks (page 197)bull Liens articles (page 200)bull Modules (page 200)
441 Lien avec le machine learning
En assurance on cherche souvent agrave preacutedire si une personne aura un accident ou pas Pour cela il faut avoir des donneacuteesune base de donneacutees dans laquelle sont enregistreacutes des accidents Lrsquoaccident en question peut avoir lieu au deacutebut ducontrat quelques anneacutees plus tard ou jamais Lorsqursquoaucun accident nrsquoest associeacute agrave une personne il se peut qursquoil nese produise aucun accident ou que celui-ci ne srsquoest pas encore produit Modeacuteliser ce problegraveme de preacutediction permetdrsquointroduire le temps et prendre en compte le fait que les donneacutees sont tronqueacutees on ne sait pour une personne que siun accident srsquoest produit ou pas entre le deacutebut du contrat et aujourdrsquohui
176 httpsfrwikipediaorgwikiAnalyse_de_survie
44 Analyse de survie 195
Machine Learning Statistiques et Programmation Version 035930
442 Courbe de Kaplan-Meier
On reprend la mecircme terminologie A une date t0 on administre un traitement agrave une personne un animal une planteCet ecirctre vivant meurt agrave un temps t + d Le traitement a-t-il ameacutelioreacute sa survie On considegravere deux temps t1 et t2la probabiliteacute de deacutecegraves entre ces deux temps peut ecirctre estimeacute par nt2minusnt1
nt1ougrave nti est la population vivante au temps ti
(depuis le deacutebut du traitement)On en deacuteduit la probabiliteacute de rester vivant jusqursquoau temps ti qui est lrsquoestimateur de Kaplan-Meier177 S(ti)
S(ti) =prodi
i=1
(1minus ntiminus1
minusnti
ntiminus1
)=
prodii=1
nti
ntiminus1=prodi
i=1ni
niminus1
Par simplification on note ni = nti On suppose les ti des dates agrave intervalles plutocirct reacuteguliers et croissants La suite(ni) est deacutecroissantes (on ne rescuscite pas) Ces calculs rappellent les calculs lieacutes agrave lrsquoespeacuterance de vie (voir Evoluationdrsquoune population - eacutenonceacute178 Evoluation drsquoune population (correction)179) Lrsquoespeacuterance de vie est deacutefinie par
E(D) =
infinsumi=1
tiP (mort au temps ti) =infinsumi=1
tini minus ni+1
ni
iprodj=0
nj
njminus1=
infinsumi=1
tini minus ni+1
ni
ni
n0=
infinsumi=1
tini minus ni+1
n0
La courbe S(t) est aussi appeleacutee la fonction de survie Si T est la dureacutee de vie drsquoune personne S(t) = P (T gt t) Onappelle λ(t) le taux de deacutefaillance crsquoest la probabiliteacute que le deacutecegraves survienne au temps t
λ(t)dt = P (t ⩽ T lt t+ dt|T ⩾ T ) = minusSprime(t)
S(t)dt
443 Reacutegression de Cox
Le modegravele de Cox180 modeacutelise le risque de deacutecegraves instantaneacute au temps t selon le modegravele qui suit Une personne estdeacutecrite par les variables X1 Xk
λ(tX1 Xk) = λ0(t) exp
(ksum
i=1
βiXi
)= λ0(t) exp(βX)
La partie λ0(t) correspond agrave ce qursquoon observe sans autre informations que les deacutecegraves On lrsquoappelle aussi le risque debase Crsquoest la probabiliteacute moyenne de deacutecegraves instantaneacutee La seconde partie permet de faire varier cette quantiteacute selonce qursquoon sait de chaque personneOn dit que crsquoest un modegravele agrave risque proportionnel car si deux personnes sont quasiment identiques excepteacute sur unevariable Xi (comme la quantiteacute drsquoun poison ingeacutereacutee) alors le ratio de probabiliteacute est
λ(tX1 Xai Xk)
λ(tX1 Xbi Xk)
=exp(βiX
ai )
exp(βiXbi )
= exp(βi(X
ai minusXb
i ))
Lrsquohypothegravese des risques proportionnel est en quelque sorte intuitive Plus on ingegravere un poison plus on a de chancesdrsquoen subir les conseacutequences Mais ce nrsquoest pas toujours le cas le documentaire La fabrique de lrsquoignorance181 revientsur les effets du bispheacutenol A182 qui serait deacutejagrave pertubateur agrave tregraves petite dose Il ne prend pas en compte les effets croiseacutesnon plus (voir Les perturbateurs endocriniens Comprendre ougrave en est la recherche183)
177 httpsfrwikipediaorgwikiEstimateur_de_Kaplan-Meier178 httpwwwxavierduprefrappactuariat_pythonhelpsphinxnotebooksseance4_projection_population_enoncehtml179 httpwwwxavierduprefrappactuariat_pythonhelpsphinxnotebooksseance4_projection_population_correctionhtml180 httpsfrwikipediaorgwikiRC3A9gression_de_Cox181 httpswwwartetvfrvideos091148-000-Ala-fabrique-de-l-ignorance182 httpsfrwikipediaorgwikiBisphC3A9nol_A183 httpshal-ansesarchives-ouvertesfranses-02289024document
196 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
La fonction λ0(t) est en quelque sorte le taux de deacutefaillance moyen On peut le calculer agrave partir des formules introduitesau paragraphe preacuteceacutedent en lissant la courbe de Kaplan-Meier avec des splines On peut aussi le calculer aveclrsquoestimateur de Breslow (voir Analyse de survie Meacutethodes non parameacutetriques184 Introduction agrave lrsquoanalyse des dureacuteesde survie185) qui repose aussi la courbe de Kaplan-Meier
On sait que si g(t) = logSprime(t) alors gprime(t) = Sprime(t)S(t) On en deacuteduit que
λ0(t) = minusd(log(S(t)))
dt
Pour la suite on pose h(Xi β) = exp(βXi) et lrsquoindividu meurt au temps ti de lrsquoexpeacuterience Une expeacuterience estdeacutefinie par la liste des couples (Xi ti) On souhaite trouver les paramegravetres β qui repreacutesentent au mieux les donneacutees delrsquoexpeacuterience On deacutefinit donc
bull Rt lrsquoensemble des personnes en vie au temps tbull Dt lrsquoensemble qui deacutecegravedent au t
Par deacutefinition i isin Rti et i isin Dti On calcule le ratio
Pr(β tXi) =h(Xi β)λ0(t)sum
jisinRth(Xj β)λ0(t)
=h(Xi β)sum
jisinRth(Xj β)
Pour une personne qui deacutecegravede au temps t ce ratio devrait ecirctre proche de 1 car on souhaite que h(Xi β) soit grand ettous les autres nuls On deacutefinit la vraisemblance partielle du modegravele par
L(β) =prodi
Pr(β ti Xi) =prodi
h(Xi β)sumjisinRti
h(Xj β)
Une fois qursquoon a calculeacute les coefficients β optimaux on peut affiner la partie λ0(t) Lrsquoestimateur de Breslow est
B(t) =sumi|ti⩽t
1sumjisinRti
h(βXj)
Crsquoest un estimateur de la fonction de survie
S(t) = exp(minusB(t))
444 Notebooks
Analyse de survie
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull Quelques donneacutees (page 198)bull Reacutegression de Cox (page 199)
184 httpheliosmiparisdescartesfr~obouazizKMSurvpdf185 httpwwwlstaupmcfrpspCours_Survie_1pdf
44 Analyse de survie 197
Machine Learning Statistiques et Programmation Version 035930
Quelques donneacutees
On reacutecupegravere les donneacutees disponibles sur opendatagouvfr Donneacutees hospitaliegraveres relatives agrave lrsquoeacutepideacutemie de COVID-19186 Ces donneacutees ne permettent pas de construire la courbe de Kaplan-Meier187 On sait combien de personnesrentrent et sortent chaque jour mais on ne sait pas quand une personne qui sort un 1er avril est entreacutee
import numpyrandom as rnd
import pandasdf = pandasread_csv(httpswwwdatagouvfrendatasetsr63352e38-d353-4b54-bfd1-rarrf1b3ee1cabd7 sep=)gr = df[[jour rad dc]]groupby([jour])sum()diff = grdiff()reset_index(drop=False)diffhead()
def donnees_artificielles(hosp mu=14 nu=21)dt = pandasto_datetime(hosp[jour])res = []for i in range(hospshape[0])
date = dt[i]dayofyearh = hospiloc[i 1]delay = rndexponential(mu int(h))for j in range(delayshape[0])
resappend([date - int(delay[j]) date 1])h = hospiloc[i 2]delay = rndexponential(nu int(h))for j in range(delayshape[0])
resappend([date - int(delay[j]) date 0])return pandasDataFrame(res columns=[entree sortie issue])
data = donnees_artificielles(diff[1]reset_index(drop=True))sort_values(entree)datahead()
Chaque ligne est une personne entree est le jour drsquoentreacutee agrave lrsquohocircpital sortie celui de la sortie issue 0 pour deacutecegraves1 pour en vie
datadescribe()
Il y a environ 80 de survie dans ces donneacutees
import numpyduree = datasortie - dataentreedeces = (dataissue == 0)astype(numpyint32)
import numpyimport matplotlibpyplot as pltfrom lifelines import KaplanMeierFitterfig ax = pltsubplots(1 1 figsize=(10 4))kmf = KaplanMeierFitter()kmffit(duree deces)
(suite sur la page suivante)
186 httpswwwdatagouvfrfrdatasetsdonnees-hospitalieres-relatives-a-lepidemie-de-covid-19187 httpsfrwikipediaorgwikiEstimateur_de_Kaplan-Meier
198 Chapter 4 Reacutegression logistique
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
kmfplot(ax=ax)axlegend()
Reacutegression de Cox
On reprend les donneacutees artificiellement geacuteneacutereacutees et on ajoute une variable identique agrave la dureacutee plus un bruit mais quasinul
import pandasdata_simple = pandasDataFrame(duree duree deces deces
X1 duree 057 deces + numpyrandomrandn(dureerarrshape[0])
X2 duree (-057) deces + numpyrandomrandn(dureerarrshape[0]))data_simplehead()
from sklearnmodel_selection import train_test_splitdata_train data_test = train_test_split(data_simple test_size=08)
from lifelinesfitterscoxph_fitter import CoxPHFittercox = CoxPHFitter()coxfit(data_train[[duree deces X1]] duration_col=duree event_col=deces
show_progress=True)
Iteration 1 norm_delta = 013943 step_size = 09000 log_lik = -25065836250 newton_rarrdecrement = 88993933 seconds_since_start = 00Iteration 2 norm_delta = 000660 step_size = 09000 log_lik = -24986237270 newton_rarrdecrement = 281312 seconds_since_start = 00Iteration 3 norm_delta = 000073 step_size = 09000 log_lik = -24985957376 newton_rarrdecrement = 003357 seconds_since_start = 01Iteration 4 norm_delta = 000000 step_size = 10000 log_lik = -24985954017 newton_rarrdecrement = 000000 seconds_since_start = 01Convergence success after 4 iterations
44 Analyse de survie 199
Machine Learning Statistiques et Programmation Version 035930
ltlifelinesCoxPHFitter fitted with 124826 total observations 100754 right-censoredrarrobservationsgt
coxprint_summary()
cox2 = CoxPHFitter()cox2fit(data_train[[duree deces X2]] duration_col=duree event_col=deces
show_progress=True)cox2print_summary()
Iteration 1 norm_delta = 013946 step_size = 09000 log_lik = -25065836250 newton_rarrdecrement = 88892089 seconds_since_start = 00Iteration 2 norm_delta = 000667 step_size = 09000 log_lik = -24986361089 newton_rarrdecrement = 286434 seconds_since_start = 00Iteration 3 norm_delta = 000074 step_size = 09000 log_lik = -24986076079 newton_rarrdecrement = 003426 seconds_since_start = 01Iteration 4 norm_delta = 000000 step_size = 10000 log_lik = -24986072650 newton_rarrdecrement = 000000 seconds_since_start = 01Convergence success after 4 iterations
coxpredict_cumulative_hazard(data_test[5])
coxpredict_survival_function(data_test[5])
445 Liens articles
bull Notes de lectures188
bull On the Breslow estimator189
446 Modules
bull lifelines190
bull scikit-survival191
188 httpwwwstatsoxacuk~mlunnlecturenotes2pdf189 httpsdlinwebunceduwp-contentuploadssites1568201304Lin07pdf190 httpslifelinesreadthedocsioenlatest191 httpsscikit-survivalreadthedocsioenlatest
200 Chapter 4 Reacutegression logistique
CHAPTER 5
NLP
NLP ou Natural Language Processing u traitement du langage naturel192
51 Compleacutetion
La compleacutetion193 est un meacutechanisme qui permet agrave un utilisateur de saisir les mots de sa recherche avec moins decaractegraveres qursquoelle nrsquoen contient Lrsquoutilisateur saisit plus rapidement
Si ces outils sont appreacuteciables du point de vue utilisateurs ils le sont tout autant cocircteacute site web en reacuteduisant la variabiliteacutedans le texte saisie en particulier les fautes drsquoorthographes Lrsquoutilisateur a besoin de moins de requecirctes pour trouverson produits et cela diminue drsquoautant la charge du serveur qui lui fournit ses reacutesultats
192 httpsfrwikipediaorgwikiTraitement_automatique_du_langage_naturel193 httpsfrwikipediaorgwikiComplC3A8tement
201
Machine Learning Statistiques et Programmation Version 035930
Ce chapitre aborde diffeacuterentes probleacutematiques lieacutees agrave ce genre de systegravemes qui sont preacutesents partout sur Internetmoteurs de recherches sites de ventes en ligne journaux Il existe de nombreuses librairies qui les impleacutementent Laplus connue en Python est whoosh194Quelques eacuteleacutements de codes sont disponibles dans le module completion et le notebook Compleacutetion (page 370)Vous pouvez eacutegalement lire How to Write a Spelling Corrector195 de Peter Norvig196 et deacutecouvrir le sujet avec On UserInteractions with Query Auto-Completion197 de Bhaskar Mitra Milad Shokouhi Filip Radlinski Katja Hofmann
511 Formalisation
bull Problegraveme drsquooptimisation (page 202)bull Ensemble des compleacutetions (page 203)bull Gain (page 203)
Problegraveme drsquooptimisation
Je me reacutefegravere pour cela agrave lrsquoarticle [Sevenster2013] (voir aussi [Bampoulidis2017]) qui introduit diffeacuterentes faccedilons deconstruire un systegraveme drsquoautocompeacutetion et qui les compare agrave lrsquousage Et srsquoil existe plusieurs faccedilons de faire il fautdrsquoabord mettre au point une faccedilon de les comparer Je me place dans le cadre drsquoun moteur de recherche car crsquoestlrsquousage principal que celui-ci soit un moteur de recherche ou une recherche incluse sur un site de vente A la fin de lajourneacutee on sait quelles sont les requecirctes saisies par les utilisateurs et le nombre de fois qursquoelles ont eacuteteacute saisies (qi wi)pour i isin [[1 N ]]
Sans systegraveme de compleacutetion les utilisateurs saisissent doncK =sumN
i=1 l(qi)wi ougrave l(qi) est la longueur de la compleacutetionqi Avec le systegraveme de compleacutetion les utilisateurs saisissent moins de caractegraveres crsquoest ce chiffre lagrave qursquoon cherche agraveminimiser Lrsquouniteacute est le charactegravere saisi ou keystroke en anglaisMecircme avec le mecircme systegraveme de compleacutetion il nrsquoest pas dit que tous les utilisateurs saisissent la mecircme requecircte de lamecircme faccedilon Pour simplifier on va supposer que si malgreacute tout et ne consideacuterer que la faccedilon minimale de saisir unerequecircte
Lrsquoexemple preacuteceacutedent illustrent deux faccedilons de saisir le terme autocompleacutetion (sur Wikipeacutedia) autocom + 4 touchesvers le bas ou autocomp + 1 touche vers le bas soit 7+4=11 touches dans le premier cas ou 8+1=9 touches dans lesecond cas
194 httpswhooshreadthedocsioenlatest195 httpnorvigcomspell-correcthtml196 httpnorvigcom197 httpswwwsemanticscholarorgpaperOn-user-interactions-with-query-auto-completion-Mitra-Shokouhi71e953caa2542a61b52e684649b3569c00251021
202 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
Deacutefinition D1 Minimum KeystrokeOn deacutefinit la faccedilon optimale de saisir une requecircte sachant un systegraveme de compleacutetion S comme eacutetant le minimum obtenu
M(q S) = min0⩽k⩽l(q)
k +K(q k S) (51)
La quantiteacute K(q k S) repreacutesente le nombre de touche vers le bas qursquoil faut taper pour obtenir la chaicircne q avec lesystegraveme de compleacutetion S et les k premiegraveres lettres de q
De faccedilon eacutevidente K(q l(q) S) = 0 et M(q S) ⩽ l(q) et K(q k S) gt 0 si k lt l(q) On prend eacutegalement commeconvention forallq isin S K(q k S) = infin et forallq isin S M(q S) = l(q) Certains systegravemes proposent des requecirctes avantde saisir quoique ce soit crsquoest pourquoi on inclut la valeur M(q 0) qui repreacutesente ce cas Construire un systegraveme decompleacutetion revient agrave minimiser la quantiteacute
M(S) =
Nsumi=1
M(qi S)wi
Ensemble des compleacutetions
Il nrsquoy a pas de restriction sur la fonction K(q k S) mais on se limitera dans un premier temps agrave une fonction simpleOn suppose que le systegraveme drsquoautocompleacutetion dispose drsquoun ensemble de requecirctes ordonneacutees S = (si) et la fonction
K(q k S) = position(q S(q[1k]))
Ougrave S(q[1k]) est le sous-ensemble ordonneacute de S des compleacutetions qui commencent par les k premiegraveres lettres de q etde longueur supeacuterieure strictement agrave k position(q S(q[1k])) est la position de q dans cet ensemble ordonneacute ouinfin sielle nrsquoy est pas Cette position est strictement positive K(q k S) ⩾ 1 sauf si k = l(q) auquel cas elle est nulle Celasignifie que lrsquoutilisateur doit descendre drsquoau moins un cran pour seacutelectionner une compleacutetion On note σ(q) la positionde la compleacutetion q dans lrsquoensemble S Par construction s = s2 =rArr σ(s1) = σ(s2)
K(q k S) = i|si ≻ q[1k] si isin S σ(si) lt σ(q) (52)
deacutesigne le cardinal de lrsquoensemble Trouver le meilleur systegraveme de compleacutetion S revient agrave trouver la meilleurefonction K(q k S) et dans le cas restreint lrsquoordre sur S qui minimise cette fonction Le plus souvent on se contentede trier les compleacutetions par ordre deacutecroissant de populariteacute On consideacuterera par la suite qursquoon est dans ce cas
Gain
On deacutefinit le gain en keystroke comme eacutetant le nombre de caractegraveres saisis en moins
G(q S) = l(s)minusM(q S)
Minimier M(S) ou maximiser G(S) =sumN
i=1 G(qi S)wi revient au mecircme
G(S) =
Nsumi=1
wi(l(s)minusM(q S)) =
Nsumi=1
wil(s)minusNsumi=1
wiM(q S)) = K minusM(S)
Ougrave K =sumN
i=1 l(qi)wi lrsquoensemble des caractegraveres tapeacutes par les utilisateurs G(S)K est en quelque sorte le ratio de
caractegraveres eacuteconomiseacutes par le systegraveme de compleacutetion
51 Compleacutetion 203
Machine Learning Statistiques et Programmation Version 035930
512 Fausses ideacutees reccedilues
bull Il faut trier les compleacutetions par freacutequence deacutecroissante (page 204)bull Il faut placer les compleacutetions courtes avant (page 205)bull Il faut montrer toutes les compleacutetions (page 205)bull Et si le poids de chaque compleacutetion est uniforme (page 205)
Il faut trier les compleacutetions par freacutequence deacutecroissante
En pratique cela marche plutocirct bien En theacuteorie cette assertion est fausse Prenons les quatre compleacutetions suivantes
q freacutequence ordrea 4 1ab 3 2abc 2 3abcd 1 4
Dans cet exemple si lrsquoutilisateur tape ab il verra les compleacutetions
abcabcd
Dans tous les cas K(q k S) = l(q) minus k Cela veut dire que lrsquoutilisateur ne gagnera rien En revanche avec lrsquoordresuivant
q ordrea 4ab 2abc 3abcd 1
Si lrsquoutilisateur tape ab il verra les compleacutetions
abcdabc
Le nombre de caractegraveres eacuteconomiseacutes sera
q freacutequence ordre M(q S)a 4 4 1ab 3 2 2abc 2 3 3abcd 1 1 1 = K(q 0 S)
Drsquoougrave un gain total de G(S) = 3
204 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
Il faut placer les compleacutetions courtes avant
Le cas preacuteceacutedent est deacutejagrave un contre exemple Mais drsquoun point de vue utilisateur il nrsquoest pas facile de lire des compleacutetionsde longueurs diffeacuterentes Cela veut peut-ecirctre dire aussi que la meacutetrique consideacutereacutee pour choisir le meilleur systegraveme decompleacutetion est faux Cela sera discuteacute agrave la prochaine section
Il faut montrer toutes les compleacutetions
Le premier exemple offre aussi un contre exemple Dans cet exemple lrsquoensemble Q = (qi) des requecirctes utilisateurs etlrsquoensemble S = (si) des compleacutetions ou requecirctes complegravetes est le mecircme Il suffit de la modifier un peu On enlegravevela requecircte ab de S
q freacutequence ordre M(q S)a 4 1 1ab 3 infin 2abc 2 2 2abcd 1 3 3
Drsquoougrave un gain total de G(S) = 2 En conclusion si jrsquoenlegraveve une petite compleacutetion pour laquelle le gain est nul il estpossible que le gain pour les suivantes soit positif On en retient qursquoil ne faut pas montrer trop de compleacutetions qui sedistinguent drsquoun caractegravere Plus geacuteneacuteralement il ne sert agrave rien de montrer des compleacutetions plus longue que le preacutefixedrsquoun caractegravere Par extension si une compleacutetion est plus longue que le preacutefixe de d caractegraveres il faut la montrer agrave uneposition infeacuterieure agrave d
Et si le poids de chaque compleacutetion est uniforme
On suppose que les compleacutetions ont toutes le mecircme poids wi = 1 Dans quel ordre faut-il ranger les compleacutetionspour eacuteconomiser le plus de caractegraveres On aurait tendance agrave dire la plus longue drsquoabord ce qursquoon peut veacuterifier dans lenotebook Compleacutetion (page 370)
q freacutequence ordre M(q S)a 1 4 1ab 1 3 2abc 1 2 2abcd 1 1 1
Ajouter deux autres compleacutetions disjointes edf edfh Le gain maximum est 6 et il y a plusieurs ordres
edf edfh abc abcd a ababcd abc edfh edf ab a
On a presque lrsquoimpression qursquoon peut traiter chaque bloc seacutepareacutement a ab abc abcd drsquoun cocircteacute et edf edfh de lrsquoautreA lrsquointeacuterieur des blocs les regravegles seront les mecircmes
51 Compleacutetion 205
Machine Learning Statistiques et Programmation Version 035930
En reacutesumeacute si on connaicirct le meilleur ordre pour toutes les mots sur les noeuds terminaux dans les bulles rouges dansla bulle verte le meilleur ordre sera une fusion des deux listes ordonneacuteesQuelques essais sur le notebook ont tendance agrave montrer que lrsquoordre a peu drsquoimpact sur le reacutesultat final lorsque lescompleacutetions ont le mecircme poids Avec quatre mots la somme des gains est identique quelque soit lrsquoordre
p=poids g=gain
200 - actuellement p=10 g=110 | acte p=10 g=20 | actes p=10 g=20 | actualiteacute p=1rarr0 g=50200 - acte p=10 g=30 | actuellement p=10 g=100 | actualiteacute p=10 g=60 | actes p=1rarr0 g=10200 - acte p=10 g=30 | actes p=10 g=30 | actualiteacute p=10 g=60 | actuellement p=10rarrg=80
Mais si on change le poids de lrsquoune drsquoelles elle se retrouve en premiegravere position
192 - actes p=20 g=40 | actuellement p=10 g=100 | acte p=10 g=10 | actualiteacute p=1rarr0 g=50192 - actes p=20 g=40 | actuellement p=10 g=100 | actualiteacute p=10 g=60 | acte p=1rarr0 g=00
206 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
513 Nouvelle meacutetrique
bull Intuitions (page 207)bull Formalisation (page 208)bull Quelques reacutesultats (page 208)bull Deacutefinition avanceacutee (page 208)bull Questions (page 209)
Intuitions
1 La meacutetrique actuelle nrsquoest pas la meilleure2 Si les mots nrsquoont pas de long preacutefixes en commun il vaut mieux placer le mot le plus freacutequent en premiegravere
position Pour les mots de freacutequence identique lrsquoordre a peu drsquoimportance3 Srsquoil existe une seacutequence de mots emboicircteacutes les gains sont minimes agrave moins drsquoenlever des mots ou de poser les
grandes compleacutetions drsquoabordLes intuitions 2 et 3 seront sans doute remise en question en consideacuterant une nouvelle meacutetrique On considegraverelrsquoensemble des compleacutetions S composeacute de deux mots actuellement actualiteacute Le gain moyen par mots est de 9caractegraveres eacuteconomiseacutes Si on ajoute le grand preacutefixe commun agrave la liste actu ce gain moyen tombe agrave 633 (voirCompleacutetion (page 370)) quelque soit lrsquoordre choisi pour les compleacutetions Toutefois si on ne prend pas en comptele gain sur le mot actu car ce nrsquoest pas un mot correct mais plus un mot qui aide la lecture de la liste ce gain moyentombe agrave 8 seulement En conclusion si lrsquoutilisateur tape la lettre a et qursquoon lui montre ceci
actuactualiteacuteactuellement
Au lieu de
actualiteacuteactuellement
Il doit taper en moyenne un caractegravere de plus pour obtenir le mot qursquoil cherche Et la meacutetrique ne montre pas reacuteellementde preacutefeacuterence pour lrsquoordre drsquoaffichage des compleacutetions Pourtant lrsquoutilisateur pourrait tregraves bien utiliser la seacutequence detouches suivantes
touche mot composeacutea abas actu (compleacutetion)e actuebas actuellement
Dans cet exemple aussi petit on ne gagnerait pas grand-chose mais cela vaut le coup drsquoeacutetudier cette piste pour desvocabulaires plus grand se servir des preacutefixes commun comme tremplin pour les mots plus grand Lrsquoeffect positionperdrait un peu de son influence
51 Compleacutetion 207
Machine Learning Statistiques et Programmation Version 035930
Formalisation
On reprend la premiegravere meacutetrique (51)
M(q S) = min0⩽k⩽l(q)
k +K(q k S)
La fonction K(q k S) est deacutefinie par (52)
Deacutefinition D1 Dynamic Minimum KeystrokeOn deacutefinit la faccedilon optimale de saisir une requecircte sachant un systegraveme de compleacutetion S comme eacutetant le minimum obtenu
M prime(q S) = min0⩽kltl(q)
M prime(q[1k] S) + min(K(q k S) l(q)minus k)
On prend comme convention M prime(empty S) = 0 Le calcul de la meacutetrique se construit comme une suite qui part des chaicircnesles plus courtes aux plus longues La meacutetrique est donc bien deacutefinie Contrairement agrave la premiegravere meacutetrique le calculdeacutepend du reacutesultat pour tous les preacutefixes drsquoune compleacutetion
proprieacuteteacute P1 meacutetriquesforallq M prime(q S) ⩽ M(q S)
Si q isin S crsquoest eacutevident puisque M prime(q S) ⩽ M prime(empty S) + l(q) Si q isin S cela deacutecoule de la constation preacuteceacutedentepuisque M prime(q S) ⩽ M prime(q[[1k]] S) +K(q k S) ⩽ k +K(q k S)
Quelques reacutesultats
On considegravere la liste des mots actuellement actualiteacute actuel On compare les ordres qui maximisent la premiegravereet la seconde meacutetriques ainsi que le gain obtenu Premiegravere meacutetrique
70 - actuellement p=10 g=110 | actuel p=10 g=40 | actualiteacute p=10 g=6070 - actuellement p=10 g=110 | actualiteacute p=10 g=70 | actuel p=10 g=3070 - actuel p=10 g=50 | actuellement p=10 g=100 | actualiteacute p=10 g=60
Seconde meacutetrique
7333 - actuel p=10 g=50 | actualiteacute p=10 g=70 | actuellement p=10 g=10070 - actuellement p=10 g=110 | actuel p=10 g=40 | actualiteacute p=10 g=60
On note que la seconde meacutetrique propose un meilleur gain ce qui est attendu mais aussi que le mot actuel sera placeacutedevant le mot actuellement plus long sans que cela souffre drsquoambiguiumlteacute
Deacutefinition avanceacutee
Dans les faits le Dynamic Minimum Keystroke sous-estime le nombre de caractegraveres neacutecessaires Lorsqursquoon utilise unmot comme tremplin on peut aiseacutement le compleacuteter mais il faut presser une touche ou attendre un peu pour voir lesnouvelles compleacutetions associeacutees agrave la premiegravere compleacutetion choisie et maintenant consideacutereacute comme preacutefixe Crsquoest ceque prend en compte la deacutefinition suivante
Deacutefinition D2 Dynamic Minimum Keystroke modifieacute
208 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
On deacutefinit la faccedilon optimale de saisir une requecircte sachant un systegraveme de compleacutetion S comme eacutetant le minimum obtenu
Mrdquo(q S) = min
min1⩽k⩽l(q) Mrdquo(q[1k minus 1] S) + 1 +min(K(q k S) l(q)minus k)min0⩽k⩽l(q) Mrdquo(q[1k] S) + δ +min(K(q k S) l(q)minus k)
Si on prend comme exemple la requecircte machine learning le premier cas correspond agrave la seacutequence bull seacutelection de la compleacutetion machinebull pression de la touche espacebull seacutelection de la compleacutetion machine learning
Et le second cas agrave la seacutequence bull seacutelection de la compleacutetion machinebull pression de la touche droite pour afficher les nouvelles compleacutetionsbull seacutelection de la compleacutetion machine learning
Le coucirct de la pression de la touche droite est noteacute δ ⩽ 1 qursquoon prendra infeacuterieur agrave 1 On remarque eacutegalement qursquoaveccette nouvelle meacutetrique il est possible de diminuer le nombre minimum de touches agrave presser pour des requecirctes en dehorsde lrsquoensemble S agrave partir du moment ougrave elles prolongent une compleacutetion existante Crsquoest lagrave un point tregraves inteacuteressant decette meacutetrique De maniegravere eacutevidente forallq M prime(q S) ⩽ Mrdquo(q S)
Questions
Gracircce agrave cette meacutetrique on peut envisager de trouver des reacuteponses agrave certaines questions 1 Les diffeacuterences entre les trois meacutetriques sont-elles neacutegligeables ou non 2 Ajouter des compleacutetions non preacutesentes dans le corpus ameacuteliore-t-elle la meacutetrique Mecircme question pour la
suppression 3 Existe-t-il un moyen de construire de faccedilon iteacuterative lrsquoensemble des compleacutetions ou plutocirct lrsquoordre qui minimise
la meacutetrice M prime(q S) 4 Comment calculer rapidement les meacutetriques pour les requecirctes dans lrsquoensemble S et en dehors
Pour la premiegravere question une expeacuterience devrait donner une piste agrave deacutefaut drsquoy reacutepondre Pour la seconde il nrsquoestpas neacutecessaire drsquoenvisager la suppression de compleacutetions car celles-ci devraient naturellement se positionner en fin deliste Lrsquoajout correspond agrave la situation ougrave beaucoup de compleacutetions partagent le mecircme preacutefixe sans pour autant que cepreacutefixe fasse partie de la liste des compleacutetions
maceacuterermalinemachineriemachinerie infernalemachinerie infernalissimemachine artistiquemachine automatiquemachine chaplinmachine intelligentemachine learning
Lrsquoideacutee consiste agrave ajouter la compleacutetion machine qui sert de preacutefixe commun agrave beaucoup de compleacutetions et cela ameacuteliorele gain moyen dans le cas preacutesent (sans compter le gain sur la requecircte machine) Enfin la troisiegraveme et la quatriegravemequestion la reacuteponse requiert la deacutemonstration de quelques proprieacuteteacutes matheacutematiques Mais avant jrsquoajouterai que lapremiegravere meacutetrique M correspond agrave la ligne de commande Windows et la meacutetrique M prime correspond agrave la ligne decommande Linux
51 Compleacutetion 209
Machine Learning Statistiques et Programmation Version 035930
514 Proprieacuteteacutes matheacutematiques
On srsquointeacuteresse principalement agrave la meacutetrique M prime deacutefinie par Dynamic Minimum Keystroke mais les reacutesultats seronteacutetendues aux autres quand cela est possible
bull Calcul pour une compleacutetion (page 210)bull Calcul pour une requecircte en dehors (page 211)bull Compleacutetions emboicircteacutees (page 211)bull Listes tronqueacutees de compleacutetions (page 212)
Calcul pour une compleacutetion
On a besoin drsquoune proprieacuteteacute pour calculer eacuteleacutegamment les meacutetriques pour lrsquoensemble des compleacutetions
Lemme L1 Dynamic Minimum KeystrokeOn note d(q S) la longueur du plus long preacutefixe de q inclus dans S
d(q S) = max l(p)|p ≺ q p isin S p = q
M prime(q S) = mind(qS)⩽kltl(q)
M prime(q[1k] S) + min(K(q k S) l(q)minus k)
Il nrsquoest pas neacutecessaire de regarder tous les preacutefixes mais seulement ceux entre le plus long preacutefixe qui est aussi unecompleacutetion et la requecircte q La deacutemonstration est identique agrave la deacutemonstration du lemme qui suit Lrsquoideacutee de cetteproprieacuteteacute est de pouvoir reacuteduire le coucirct de lrsquoalgorithme de calcul des meacutetriques Ce nrsquoest pas la seule eacutecriture qursquoonpuisse en faitLe calcul de la meacutetrique M prime suggegravere qursquoon doit faire ce calcul dans le sens des preacutefixes croissants mais il serait plussimple de le faire dans le sens des compleacutetions de poids croissant (les compleacutetions de moindre poids sont toujoursafficheacutees avant)
Si lrsquoalgorithme est plus simple (sens de la fleacuteche dans le figure preacuteceacutedente) il faut parfois plusieurs iteacuterations pourobtenir la valeur finale
210 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
Calcul pour une requecircte en dehors
Mais il est faux de dire que pour deux requecirctes en dehors de lrsquoensemble des compleacutetions q1 ⪯ q2 =rArr M prime(q1 S) ⩽M prime(q2 S) Le lemme suivant preacutecise pourquoi
Lemme L2 calcul de Miquest(q S)On suppose que p(q S) est la compleacutetion la plus longue de lrsquoensemble S qui commence q
klowast = max k|q[[1k]] ≺ q et q isin Sp(q S) = q[[1klowast]]
La meacutetrique M prime(q S) veacuterifie la proprieacuteteacute suivante
M prime(q S) = M prime(p(q S) S) + l(q)minus l(p(q S))
La meacutetrique M prime(q S) est eacutegale agrave celle du plus long preacutefixe inclus dans lrsquoensemble les compleacutetions agrave laquelle on ajoutela diffeacuterence des longueurs Cela correspond aux caractegraveres que lrsquoutilisateur doit saisir La deacutemonstration est assezsimple On suppose que cela nrsquoest pas vrai et qursquoil existe un existe k lt klowast tel que
M prime(q[[1k]] S) + l(q)minus l(q[[1k]]) lt M prime(q[[1klowast]] S) + l(q)minus l(q[[1klowast]])
=rArr M prime(q[[1k]] S)minus k lt M prime(q[[1klowast]] S)minus klowast
=rArr M prime(q[[1k]] S) + (klowast minus k) lt M prime(q[[1klowast]] S)
Cela signifie qursquoon a reacuteussi une faccedilon plus efficace drsquoeacutecrire le preacutefixe q[[1klowast]] Or par deacutefinition M prime(q[[1klowast]] S) estcenseacutee ecirctre le nombre de caractegraveres minimal pour obtenir q[[1klowast]] Ce nrsquoest donc pas possible Cette proprieacuteteacute estimportante puisque pour calculer M prime(q[[1klowast]] S) il suffit de regarder le plus long preacutefixe appartenant agrave lrsquoensembledes compleacutetions et seulement celui-ci Cet algorithme et impleacutementeacute par la meacutethode enumerate_test_metric Ence qui concerne la meacutetrique M par deacutefinition forallq isin S M(q S) = 0 La meacutetrique Mrdquo mrsquoeacutevoque la cocircte anglaise198Lrsquoiteacuterationn fonctionne de la mecircme maniegravere agrave partir du moment ougrave la requecircte consideacutereacutee ne fait pas partie de lrsquoensembledes compleacutetions mais il y a lrsquoeacutetage drsquoen dessous qui pose un doute Il y a un brin de poeacutesie dans ce +1 Lrsquoapplicationde lrsquoimpleacutementation du calcul de la meacutetrique montre que M prime et Mrdquo sont tregraves souvent eacutegales Je vais laisser ce δ sousforme de poeacutesie pour le moment
A faire terminer la deacutemonstration pour MLa cocircte anglaise
Compleacutetions emboicircteacutees
On considegravere les compleacutetions suivantes
actuactualiteacuteactualiteacutesactuelactuellement
Pour le preacutefixe actue on suggegravere actuel at actuellement Pour le preacutefixe actua on suggegravere actualiteacute at actualiteacutes Pourle preacutefixe actu on suggegravere la concateacutenation de ces deux listes Par conseacutequent pour construire les listes de compleacutetionsassocieacutees agrave chaque preacutefixe il paraicirct de partir des feuilles de lrsquoarbre puis de fusionner les listes de compleacutetions jusqursquoau
198 httpswwwyoutubecomwatchv=YV54e3R-rLg
51 Compleacutetion 211
Machine Learning Statistiques et Programmation Version 035930
noeud racine Plus concregravetement si deux compleacutetions veacuterifie q1 ⪯ q2 alors lrsquoensemble des compleacutetions veacuterifieC(q1) supC(q2) On peut mecircme dire que C(q) = cupC(s)|s ≻ q isin S Cela signifie qursquoune fois qursquoon a construit un trierepreacutesentant lrsquoensemble des compleacutetions il suffit de partir des feuilles de lrsquoarbre jusqursquoagrave la racine pour construire laliste des compleacutetions agrave chaque eacutetape et que pour un noeud preacutecis la liste des compleacutetions est lrsquounion des listes decompleacutetions des noeuds fils
Listes tronqueacutees de compleacutetions
On reprend la premiegravere meacutetrique (51) qui utilise la fonction K(q k S) deacutefinie en (52)
M(q S) = min0⩽k⩽l(q)
k +K(q k S)
Etant donneacute que le nombre minimum de caractegraveres pour obtenir une compleacutetion dans le trie ne peut pas ecirctre supeacuterieuragrave la longueur si K(q k S) gt l(q)minus k on sait deacutejagrave que que le preacutefixe q[1k] ne sera pas le minimum Cette remarqueest applicable aux meacutetriques M prime et Mrdquo
515 Problegraveme drsquooptimisation
bull Enonceacute 1 (page 212)bull Enonceacute 2 (page 213)bull Une ideacutee (page 213)
Enonceacute 1
Problegraveme P1 Optimiser un systegraveme de compleacutetionOn suppose que lrsquoensemble des compleacutetions C = cj est connu On souhaite ordonner cet ensemble pour obtenirlrsquoensemble ordonneacute des compleacutetions S = (si) qursquoon considegravere comme une permutation σ de lrsquoensemble de deacutepart S(σ) = (si) = (cσ(j)) Ce systegraveme de compleacutetion est destineacute agrave un des utilisateurs qui forment des recherches ourequecirctesQ = (qi wi)1⩽i⩽NQ
qi est la requecircte wi est la freacutequence associeacutee agrave cette requecircte On deacutefinit lrsquoeffort demandeacuteaux utilisateurs par ce systegraveme de compleacutetion
E(CQ σ) =
NQsumi=1
wiMprime(qi S(σ))
Deacuteterminer le meilleur systegraveme de compleacutetion revient agrave trouver la permutation σ qui minimise E(CQ σ)
La meacutetrique M prime peut ecirctre remplaceacutee par Mrdquo La diffeacuterence peut paraicirctre insignifiante mais elle ne lrsquoest pas tant queccedila Le systegraveme de compleacutetion peut se concevoir comme une compression le systegraveme de compleacutetion permet de coderlrsquoensemble des recherches drsquoun utilisateur Q avec moins de caractegraveres que celui-ci en a besoin pour les taper Onajoute les caractegraveres rightarrow et darr aux lettres de lrsquoalphabet et cela permet de coder plus rapidement une requecirctesLa quantiteacute suivante peut ecirctre consideacutereacutee comme le taux de compression
t(CQ σ) =E(CQ σ)sumNQ
i=1 wil(qi)
Lrsquoideacutee derriegravere cette meacutetaphore est le fait drsquoavoir une ideacutee de la borne infeacuterieure pour ce taux de compression Onsrsquoinspirer de la complexiteacute de Lempel-Ziv199 (calculating Lempel-Ziv (LZ) complexity (aka sequence complexity) of
199 httpsfrwikipediaorgwikiComplexitC3A9_de_Lempel-Ziv
212 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
a binary string200) ou du codage de Huffman201 M prime permet une compression avec perte et Mrdquo sans perte Le calculde M prime autorise deux jumps de suite
abb(darrdarrdarrdarrdarr)
Mais les deux derniegraveres touches darr peuvent srsquoappliquer au premier preacutefixe ou aux suggestions montreacutees par la compleacutetionobtenue apregraves trois darr
abb(darrdarrdarr)(darrdarr)
La meacutetrique Mrdquo interdit ce cas
Enonceacute 2
Problegraveme P2 Optimiser un systegraveme de compleacutetion filtreacuteOn suppose que lrsquoensemble des compleacutetions C = cj est connu On souhaite ordonner cet ensemble pour obtenirlrsquoensemble ordonneacute des compleacutetions S = (si) qursquoon considegravere comme une permutation σ de lrsquoensemble de deacutepart S(σ) = (si) = (cσ(j)) On utilise aussi une fonction f qui filtre les suggestions montreacutees agrave lrsquoutilisateur elle ne changepas lrsquoordre mais peut cacher certaines suggestions si elles ne sont pas pertinentes Ce systegraveme de compleacutetion est destineacuteagrave un des utilisateurs qui forment des recherches ou requecirctes Q = (qi wi)1⩽i⩽NQ
qi est la requecircte wi est la freacutequenceassocieacutee agrave cette requecircte On deacutefinit lrsquoeffort demandeacute aux utilisateurs par ce systegraveme de compleacutetion
E(CQ σ f) =
NQsumi=1
wiMprime(qi S(σ) f)
Deacuteterminer le meilleur systegraveme de compleacutetion revient agrave trouver la permutation σ qui minimise E(CQ σ f)
Comme suggeacutereacute au paragraphe Il faut montrer toutes les compleacutetions (page 205) le filtre f peut rejetter une suggestionsi elle est montreacutee agrave une position qui ne permet aucun gain agrave lrsquoutilisateur crsquoest-agrave-dire que la diffeacuterence des longueurscompleacutetion - preacutefixe est plus petite que la position ougrave elle est montreacutee
Une ideacutee
On aimerait bien pouvoir trouver lrsquoordre optimal par morceau supposer que lrsquoordre optimal pour lrsquoensemble descompleacutetions correspond agrave lrsquoordre des compleacutetions sur un sous-ensemble partageant le mecircme preacutefixe
Lemme L1 Miquestet sous-ensembleOn suppose que la compleacutetion q est preacutefixe pour la requecircte qprime et σ(q) lt σ(qprime) ce qui signifie que la compleacutetionq est toujours afficheacutee avant la compleacutetion qprime si elles apparaissent ensemble Alors M prime(q S) lt M prime(qprime S) Plusspeacutecifiquement si on considegravere lrsquoensemble Sprime(q) = sminus q isin S|q ≺ s (sminus q est la compleacutetion s sans son preacutefixe q)
M prime(qprime S) = M prime(qprime minus q Sprime) +M prime(q S)
On sait deacutejagrave par construction que M prime(qprime S) ⩽ M prime(qprimeminusq Sprime)+M prime(q S) Par lrsquoabsurde on suppose que M prime(qprime S) ltM prime(qprimeminusq Sprime)+M prime(q S) comme la requecircte qminusqprime est toujours afficheacutee avant la requecircte qprime cela voudrait dire qursquoon auraittrouveacute une faccedilon plus optimale drsquoeacutecrire la requecircte qminus qprime avec le systegraveme S ce qui impossible drsquoapregraves la deacutefinition de lameacutetrique M prime Cette proprieacuteteacute nrsquoaide pas forcmeacutement agrave trouver un algorithme pour optimiser lrsquoordre des compleacutetionsdans la mesure ougrave la proprieacuteteacute suppose qursquoune compleacutetion soit afficheacute avant toutes celles dont elle est le preacutefixe La
200 httpstackoverflowcomquestions4946695calculating-lempel-ziv-lz-complexity-aka-sequence-complexity-of-a-binary-str201 httpsfrwikipediaorgwikiCodage_de_Huffman
51 Compleacutetion 213
Machine Learning Statistiques et Programmation Version 035930
proprieacuteteacute suivante est eacutevidemment vraie pour le cas particulier qursquoon vient de mentionner Si elle est vraie cela devraitpermettre de proceacuteder par sous-ensemble pour trouver lrsquoordre optimal
Theacuteoregraveme T1 Miquest ordre et sous-ensembleSoit q une requecircte de lrsquoensemble de compleacutetion S ordonneacutees selon sigma Si cet ordre veacuterifie
forallk σ(q[1k]) ⩽ σ(q[1k + 1]) (53)
On note lrsquoensemble Sprime(q[1k]) = q[k + 1len(q)] isin S alors
forallk M prime(q[1k] S) = M prime(q[k + 1l(q)] Sprime(q[1k]) +M prime(q[1k] S)
Ceci deacutecoule de lrsquoapplication du lemme preacuteceacutedent Ce theacuteoregraveme permet presque de deacuteterminer le meilleur ordre sigmaparmi ceux qui veacuterifie la contrainte (53) agrave savoir une requecircte courte est toujours afficheacutee avant celles qui la complegravetentOn procegravede par reacutecurrence on suppose connu les ordres σ(q) pour lrsquoensemble des compleacutetions qui commencent par lepreacutefixe p = q[1k] Sprime(q[1k]) = q|q[1k] = p q isin S Pour i = kminus 1 le meilleur ordre σ revient agrave fusionner leslistes ordonneacutees obtenues pour chaque preacutefixe de longueur k Il faut deacutemontrer la possibiliteacute de traiter les compleacutetionspar ordre croissant
516 Impleacutementation
bull Notion de trie (page 214)bull Algorithme eacuteleacutegant (page 215)
Jrsquoallais vous raconter en deacutetail ce qursquoest un trie202 et le paragraphe suivant vous en dira sans doute un peu plus agrave cesujet Le trie203 est le moyen le plus efficace de trouver un mot aleacuteatoire ou un preacutefixe aleacuteatoire dans une liste Mais il ya mieux et plus simple dans notre cas ougrave il faut trouver une longue liste de mots connue agrave lrsquoavance - donc pas aleacuteatoire- Et puis crsquoeacutetait sous mes yeux Il y a plus simple et aussi efficace quand les listes des mots et des compleacutetions sontconnues agrave lrsquoavance
Notion de trie
Une impleacutementation des tries est deacutecrites dans deux notebooks Arbre et Trie204 Les reacutesultats de ce chapitre onteacuteteacute produits avec le module completion et le notebook Compleacutetion (page 370) Le notebook Completion profiling(page 363) montre les reacutesultats du profiling Lrsquoimpleacutementation Python est tregraves gourmande en meacutemoire et elle seraitplus efficace en C++utilisation ou rechercheCrsquoest diffeacuterent de construire toutes les compleacutetions pour un preacutefixe plutocirct que toutes les compleacutetions pour tous lespreacutefixes Le premier cas correspond agrave un utilisateur qui cherche quelque chose Il faut ecirctre rapide quitte agrave retourner unreacutesultat tronqueacuteLe second cas correspond agrave objectif de recherche des drsquooptimisation Les enjeux sont plus de reacuteussir agrave calculer toutesles compleacutetions en un temps raisonnable et avec une utilisation meacutemoire raisonnable eacutegalementmeacutemoireDrsquoapregraves la remarque preacuteceacutedente il nrsquoest pas utile de conserver pour un preacutefixe donneacute lrsquointeacutegraliteacute des compleacutetions quicommencent par ce preacutefixe Dans le pire des cas cette liste a besoin de contenir autant de compleacutetions que le nombrede caractegraveres de la plus longue compleacutetioms
202 httpsfrwikipediaorgwikiTrie_(informatique)203 httpsfrwikipediaorgwikiTrie_(informatique)204 httpwwwxavierduprefrappensae_teaching_cshelpsphinxnotebooks_gs1a_A_arbre_triehtml
214 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
Algorithme eacuteleacutegant
Il faut relire le premier problegraveme diquestoptimisation (page 212) pour commencer agrave se poser la question comment calculerla quantiteacute E(CC σ) lorsque σ correspond agrave lrsquoordre alphabeacutetique La reacuteponse est simple il suffit de parcourir lescompleacutetions une et une seule fois Supposons qursquoau cours de ce parcours on est agrave la compleacutetion drsquoindice i On conserveun compteur p(k i) = K(c(i) k C) qui repreacutesente la position de la compleacutetion c(i) dans la liste des compleacutetionsafficheacutees par le systegraveme de compleacutetion pour le preacutefixe c(i)[[1k]] Le coucirct de lrsquoalgorithme est en O(N lnN +LN) ougraveN est le nombre de compleacutetions et L la longueur maximale drsquoune compleacutetionDans le cas ougrave σ est quelconque et C = Q on procegravede en deux eacutetapes Dans un premier temps on utilise une variantede lrsquoalgorithme preacuteceacutedent pour calculer M prime(q C) pour les requecirctes q dans lrsquoensemble des compleacutetionsDans un second temps on effectue une sorte de fusion entre les deux listes trieacutees alphabeacutetiquement Le coucirct delrsquoalgorithme est en O(ILN + 2N lnN +M lnM +max(NM)) ougrave M est le nombre de requecirctes dans lrsquoensembleQ Cette partie repose sur le lemme (page 211) lieacute au calcul des meacutetriques pour les reacutequecirctes hors de lrsquoensembledes compleacutetions I est un nombre drsquoiteacuteration neacutecessaires pour que les meacutetriques M prime convergent pour lrsquoensemble descompleacutetions En pratique crsquoest tregraves petitLrsquoalgorithme est impleacutementeacute dans le module completion_simple et plus particuliegraverement la fonctionCompletionSystemcompute_metrics
517 Digressions
bull Synonymes Contexte (page 215)bull Source (page 216)bull Fonction de gain (page 216)bull Minuscules majuscules (page 216)bull Suppression de caractegraveres (page 216)bull Coucirct drsquoun caractegravere (page 216)bull Compleacutetion partielle (page 216)bull Utilisateurs (page 217)bull Revenir en arriegravere (page 217)
Synonymes Contexte
On utilise dabord les preacutefixes pour chercher les mots dans un trie mails il est tout agrave fait possible de consideacuterer dessynonymes Avec les preacutefixes un noeud a au plus 27 (26 lettres + espaces) caractegraveres suivant possibles Si le preacutefixea des synonymes rien nrsquoempecircche de relier ce noeud avec les successeurs de ses synonymes A ce sujet voir Context-Sensitive Query Auto-Completion205 de Ziv Bar-Yossef et Naama Kraus
205 httptechnionacil~nkrauspapersfr332-bar-yossefpdf
51 Compleacutetion 215
Machine Learning Statistiques et Programmation Version 035930
Source
Dans le cas drsquoun moteur de recherche le trie ou lrsquoensemble S des requecirctes complegravetes est construit agrave partir des requecirctesdes utilisateurs Lorsque le systegraveme de compleacutetion est mise en place la distribution des requecirctes changent Les requecirctesles plus utiliseacutees vont ecirctre encore plus utiliseacutees car les utilisateurs vont moins srsquoeacutegarer en chemin comme srsquoeacutegarer versune faute drsquoorthographe Comment corriger la distribution des requecirctes malgreacute lrsquointervention du systegraveme de compleacutetion Cela pourrait faire lrsquoobjet drsquoun sujet de recherche
Fonction de gain
Jusqursquoagrave preacutesent on a consideacutereacute uniquement le nombre de caractegraveres eacuteconomiseacutes pour deacuteterminer le meilleur ordreRien nrsquoempecircche drsquoajouter une coucirct suppleacutemenaires lieacute agrave lrsquoordre des compleacutetions Une requecircte est peacutenaliseacutee si lescompleacutetions associeacutees sont loin de lrsquoordre alphabeacutetique On peut peacutenaliser un ordre eacuteloigneacute agrave chaque caractegravere ajouteacute
Minuscules majuscules
Crsquoest bien connu on fait peu de ces des accents sur internet De fait mecircme si lrsquoaccent apparaicirct agrave lrsquoeacutecran le systegravemede compleacutetion verra peut de diffeacuterences entre le e et eacute Sur Wikpeacutedia les homonymes sont distingueacutes par un sous-titreentre parenthegravese lrsquoanneacutee pour un eacuteveacutenement sportif reacutegulier On peut imaginer que plusieurs seacutequences de caractegraveresaboutissent agrave la mecircme entreacutee
Suppression de caractegraveres
Nous pourrions consideacuterer le fait de pouvoir supprimer des caractegraveres afin de trouver le chemmin le plus court pourobtenir une requecircte
Coucirct drsquoun caractegravere
Jusqursquoagrave preacutesent la pression drsquoune touche a le mecircme coucirct quelque soit la source un caractegravere une touche vers le basPourtant plus il y a de lettres dans lrsquoalphabet plus le systegraveme de compleacutetion sera performant agrave supposer que les motssoient plus ou moins eacutequireacutepartis selon les caractegraveres (la probabiliteacute du prochain caractegravere est uniforme) On peutconcevoir que chercher une touche lorsque lrsquoalphabet est grand peut prendre un certain temps Le cas du chinois estinteacuteressant car la saisie des caractegraveres206 peut prendre plusieurs touches Faut-il consideacuterer un caractegravere chinois commeuniteacute de deacutecomposition drsquoun mot ougrave la seacutequence des touches qui le construisent Dans le premier cas il faudrait sansdoute peacutenaliser la saisie drsquoun caractegravere en fonction du nombre de touches neacutecessaires pour le former par rapport agrave laseacutelection drsquoune compleacutetion
Compleacutetion partielle
On rappelle la meacutetrique (513) (voir aussi (52))
M prime(q S) = min0⩽k⩽l(q)
M prime(q[1k] S) +K(q k S)
Si on note L(p S) lrsquoensemble des compleacutetions pour le preacutefixe p Que dire de la deacutefinition suivante
M primep(q S) = min
0⩽k⩽l(q)
11L(q[1k]S)=empty
[M prime
p(q[1k] S) +K(q k S)]+
11L(q[1k]S)=empty[minj M
primep(q[1j] S) +M prime
p(q[j + 1] S)]
Cela revient agrave consideacuterer que si le systegraveme de compleacutetion ne propose aucune compleacutetion avec le preacutefixe en cours onpropose des compleacutetions avec un preacutefixe qui ne tient compte que des derniegraveres lettres
206 httpsfrwikipediaorgwikiSaisie_du_chinois_sur_ordinateur
216 Chapter 5 NLP
Machine Learning Statistiques et Programmation Version 035930
Utilisateurs
La modeacutelisation matheacutematique aboutit agrave lrsquooptimisation drsquoune meacutetrique qui ne coiumlncide pas forceacutement agrave la logique delrsquoutilisateur Le fait de montrer une suggestion dans la liste donne en quelques sortes un signal qui indique que cetterequecircte a une bonne drsquoaboutir Crsquoest en particulier vrai si elle est identique agrave celle que lrsquoutilisateur est en train de saisirquand mecircme mecircme elle nrsquoaurait aucun sens La preacutesence drsquoune suggestion conforte lrsquoutilisateur dans le chemin qursquoilchoisitUn autre aspect est le fait qursquoune suggestion la premiegravere par exemple doit rester agrave lrsquoeacutecran si celle-ci inclut le preacutefixesaisit par lrsquoutilisateur Supposons que ce dernier saisisse fac le moteur de suggestions lui montrera en premier facebookIl faudra que facebook demeure en premiegravere position jusqursquoagrave ce lrsquoutilisateur ait soit cliqueacute dessus soit saisi quelquechose de plus long Enlever la suggestion facebook alors que le preacutefixe en cours est faceboo perturbe
Revenir en arriegravere
On pourrait eacutegalement imaginer une meacutetrique qui calcule le meilleur chemin en donnant la possibiliteacute de revenir enarriegravere Par exemple pour saisir eacuteleacutephant un utilisateur pourrait utiliser la suggestion eacuteleacutephants puis enlever le derniers On note la meacutetrique M prime
b
Deacutefinition D1 Dynamic Minimum Keystroke arriegravereOn deacutefinit la faccedilon optimale de saisir une requecircte sachant un systegraveme de compleacutetion S comme eacutetant le minimum obtenu
M primeb(q S) = min
min0⩽kltl(q) M prime
b(q[1k] S) + min(K(q k S) l(q)minus k)mins≻q M prime
b(s S) + l(s)minus l(q)
Le second terme de la meacutetrique neacutecessite de consideacuterer toutes les suggestions dans S qui commencent par le preacutefixe qLe calcul de la meacutetrique peut ecirctre fait en adaptant lrsquoalgorithme reprend les ideacutees du paragraphe Formalisation (page 208)mais il faudra parcourir les suggestions dans lrsquoordre alphabeacutetique puis mettre agrave jour la meacutetrique en les parcourant danslrsquoautre sens On recommence jusqursquoagrave convergenceNotebooks associeacutes
bull Compleacutetion (page 370)bull Completion profiling (page 363)bull Completion Trie and metrics (page 355)bull Compleacutetion Simple (page 376)
51 Compleacutetion 217
Machine Learning Statistiques et Programmation Version 035930
218 Chapter 5 NLP
CHAPTER 6
Meacutetriques
61 Courbe ROC
bull Deacutefinitions (page 220)bull Aire sous la courbe (page 222)
ndash Expression (page 222)ndash Intervalles de confiance (page 223)
bull Intervalles de confiance sur la courbe (page 224)ndash Construction de la courbe ROC (page 224)ndash Meacutethode boostrap (page 225)ndash Aire sous la courbe (page 226)
bull Distribution des scores mauvais et bons (page 226)bull Variantes (page 227)
ndash Taux de lecture ou de reconnaissance (page 227)bull Classification multi-classe (page 228)bull Exemple (page 229)
Ce document introduit la courbe ROC207 (Receiving Operator Characteristic) qui est communeacutement utiliseacutee pourmesurer la performance drsquoun classifieur Il introduit aussi des termes comme preacutecision rappel AUC208 qui sontpreacutesents dans la plupart des articles qui traitent de machine learning Le module roc impleacutemente les calculs ci-dessousqursquoon peut tester avec le notebook ROC (page 332)
207 httpsenwikipediaorgwikiReceiver_operating_characteristic208 httpsenwikipediaorgwikiReceiver_operating_characteristicArea_under_the_curve
219
Machine Learning Statistiques et Programmation Version 035930
611 Deacutefinitions
Supposons que nous avons un classifieur qui classe des observations en un ensemble de classes De plus il donne cettereacuteponse accompagneacutee drsquoun score de pertinence Deux cas sont possibles soit la reacuteponse est bonne (1) soit la reacuteponseest fausse (0) Pour chaque observation on associe un couple (r x) ougrave r est eacutegal agrave 0 ou 1 x est le score de pertinenceOn cherche agrave deacuteterminer agrave partir de quel seuil de pertinence la reacuteponse du classifieuur est fiable En faisant varier xon obtient une courbe (source wikipedia209)
Cette courbe sert eacutegalement agrave comparer diffeacuterents classifieurs Plus une courbe a des valeurs eacuteleveacutees plus lrsquoaire sousla courbe est grande moins le classifieur fait drsquoerreurDrsquoune maniegravere simplifieacutee le classifieur retourne une reacuteponse qui est soit mauvaise (-) soit bonne (+) On peut lrsquoeacutevaluercar pour construire un classifier on dispose toujours drsquoune base contenant les reacuteponses attendues En fonction du scorex et drsquoun seuil s on deacutefinit quatre cas
cas reacuteponse preacutedite est bonne (+) reacuteponse preacutedite est mauvaise (-)x ⩾ s TP vrai (true) positif FP faux positifx lt s TN vrai (true) neacutegatif FN faux neacutegatif
Ces reacutesultats sont souvent preacutesenteacutes selon une matrice confusion
reacuteponse attendue 0 10 TN FP1 FN TP
A partir de ces deacutefinitions on deacutefinit bull la preacutecision210 TP
TP+FP
bull le rappel ou recall211 TPTP+TN
En choisissant un seuil relatif au score de pertinence x au-dessus on valide la reacuteponse du classifieur en-dessous onne la valide pas On peut toujours calculer la preacutecision et le rappel pour toutes les reacuteponses dont le score est au-dessusdrsquoun seuil s La courbe ROC srsquoobtient en faisant varier s
209 httpenwikipediaorgwikiFileRoccurvespng210 httpsenwikipediaorgwikiInformation_retrievalPrecision211 httpsenwikipediaorgwikiInformation_retrievalRecall
220 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
Deacutefinition D1 Courbe ROCOn suppose que Y est la variable aleacuteatoire des scores des expeacuteriences qui ont reacuteussi X est celle des scores desexpeacuteriences qui ont eacutechoueacute On suppose eacutegalement que tous les scores sont indeacutependants On note FY et FX lesfonctions de reacutepartition de ces variables FY (s) = P (Y ⩽ s) et FX(s) = P (X ⩽ s) On deacutefinit en fonction drsquounseuil s isin R
bull R(s) = 1minus FY (s) = P (Y gt s)
bull E(s) = 1minus FX(s) = P (X gt s)
La courbe ROC est le graphe (E(s) R(s)) lorsque s varie dans R
TP (s) deacutesigne les true positifs au-dessus du seuil s avec les notations TP FP FN TN cela revient agrave
E(s) = 1minus TP (s)
TP (s) + TN(s)
R(s) = 1minus FN(s)
FP (s) + FN(s)
On remarque que foralls TP (s) + TN(s) est constant De mecircme pour FP (s) + FN(s)
On remarque que les fonctions s minusrarr E(s) et s minusrarr R(s) sont deacutecroissantes toutes deux Elles sont donc inversiblesDans le cas ougrave la variable aleacuteatoire θ est indeacutependante de la variable X la courbe ROC est une droite reliant les points(0 0) et (1minus p p) ougrave p = P (θ = 1) Ceci signifie que la connaissance du score X nrsquoapporte pas drsquoinformation quantagrave la reacuteussite de lrsquoexpeacuterienceIl peut paraicirctre complexe de distinguer la reacuteponse et le score du classifieur Crsquoest pourtant neacutecessaire dans le cas ougravele classifieur retourne un entier qui deacutesigne une classe parmi n Un cas positif est lorsque la classe preacutedite est eacutegale agravela classe attendue il est neacutegatif dans le cas contraire La courbe peut ecirctre adapteacutee pour drsquoautres problegravemes tels que leranking (voir [Agarwal2005])
61 Courbe ROC 221
Machine Learning Statistiques et Programmation Version 035930
Une autre faccedilon de lrsquoexprimer car je ne retiens jamais la deacutefinition des FP TP FN TN Pour quelqursquoun qui doitreacutefleacutechir trois secondes agrave chaque fois qursquoon me demande ougrave est la gauche ce nrsquoest jamais eacutevident
N+ =sumn
i=1 11yi==1TPR(s) = 1
N+
sumni=1 11score(Xi)⩾s11yi==1
FPR(s) = 11minusN+
sumni=1 11score(Xi)⩾s11yi =1
x = FPR(s) y = TPR(s) (FPR = False Positive Rate TPR = True Positive Rate)
612 Aire sous la courbe
Expression
Lrsquoaire sous la courbe (AUC) correspond agrave lrsquointeacutegrale de la fonction ROC Elle se calcule agrave partir du theacuteoregraveme suivant
Theacuteoregraveme T1 Aire sous la courbe (AUC)On utilise les notations de la deacutefinition de la Courbe ROC (page 221) Lrsquoaire sous la courbe ROC est eacutegale agrave P (Y gt X)
RappelSoit X une variable aleacuteatoire de densiteacute f et de fonction de reacutepartition F Si U = F (X) alors
P (U ⩽ t) = P (F (X) ⩽ t) = P(X ⩽ Fminus1(t)
)= F
(Fminus1(t)
)= t
La variable U est de loi uniforme sur [0 1] De plus soit g une fonction inteacutegrable quelconque on pose u = F (x) et intRg(x) f(x) dx =
int[01]
g(Fminus1(u)) du
DeacutemonstrationOn note fX la densiteacute de la variable X et fY celle de la variable Y On peut alors deacutefinir la probabiliteacute P (Y gt X) parune inteacutegrale
P (Y gt X) =
intx
inty
fX(x) fY (y) 11ygtxdxdy
On note FX la fonction de reacutepartition de X soit FX(x) =int x
minusinfin fX(u)du On pose comme changement de variable u = FX(x) On en deacuteduit que du = fX(x)dx La variable aleacuteatoire U = FX(X) est uniforme et comprise dans [0 1]
P (Y gt X) =
intx
fX(x)dx
inty
fY (y) 11ygtxdy
=
intu
du
inty
fY (y) 11ygtFminus1X (u)dy
=
intu
du P(Y gt Fminus1
X (u))
222 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
Or si u = FX(s) = E(s) alors Fminus1X (u) = s et P
(Y gt Fminus1
X (u))= Rprime(s) Par conseacutequent
P (Y gt X) =
intu
du P(Y gt Fminus1
X (u))=
intu
du Rprime(Fminus1X (u))
Cette derniegravere expression est lrsquoaire rechercheacutee Ce theacuteoregraveme nous permet de deacutefinir un estimateur pour lrsquoaire sous lacourbe ROC agrave lrsquoaide des U-statistiques212 de Mann-Whitney213 (voir [Saporta1990])
Corollaire C1 Estimateur de lrsquoaire sous la courbe ROCOn dispose des scores (Y1 Yn) des expeacuteriences qui ont reacuteussi et (X1 Xm) les scores des expeacuteriences qui onteacutechoueacute On suppose eacutegalement que tous les scores sont indeacutependants Les scores (Yi) sont identiquement distribueacutesil en est de mecircme pour les scores (Xi) Un estimateur de lrsquoaire A sous la courbe ROCiquestest
A =1
nm
msumi=1
nsumj=1
(11YjgtXi +
1
211Yj=Xi
)(61)
DeacutemonstrationLa deacutemonstration est eacutevidente
E(A)=
1
nm
msumi=1
nsumj=1
(P (Yj gt Xi) +
1
2P (Xi = Yj)
)= P (Y gt X) +
1
2P (Y = X)
Dans le cas ougrave X ou Y sont continues P (X = Y ) = 0
Intervalles de confiance
Il est possible de deacuteterminer un intervalle de confiance pour cet estimateur Le theacuteoregraveme central limite nous permet dedire que cet estimateur tend vers une loi normale lorsque n et m tendent vers lrsquoinfini
Corollaire C2 Variance de lrsquoestimateur AUCOn note PX = P (X lt min Yi Yj) et PY = P (max Xi Xj lt Y ) Xi et Xj sont de mecircme loi que X Yi Yj
sont de mecircme loi que Y La variance de lrsquoestimateur A deacutefinie par (61) est
VA =A(1minus A)
nm
[1 + (nminus 1)
PY minus A2
A(1minus A)+ (mminus 1)
PX minus A2
A(1minus A)
]
DeacutemonstrationCette deacutemonstration nrsquoest vraie que dans le cas continu Par conseacutequent P (X = Y ) = 0 On calcule tout drsquoabordEA2 et on utilise le fait que VA = E
(A2)minus A2
A2 =1
n2m2
msumi=1
nsumj=1
11XiltYj
2
=1
n2m2
msumi=1
nsumj=1
msumk=1
nsuml=1
11XiltYj11XkltYl
A2 = 1n2m2
summi=1
sumnj=1 11XiltYj
+ 1n2m2
summi=1
sumnj=1
sumk =i 11XiltYj11XkltYj
+ 1n2m2
summi=1
sumnj=1
suml =j 11XiltYj11XiltYl
+ 1n2m2
summi=1
sumnj=1
sumk =i
suml =j 11XiltYj11XkltYl
212 httpsenwikipediaorgwikiU-statistic213 httpsfrwikipediaorgwikiTest_de_Wilcoxon-Mann-Whitney
61 Courbe ROC 223
Machine Learning Statistiques et Programmation Version 035930
On en deacuteduit que
EA2 =A
nm+
nminus 1
nmP (max Xi Xk lt Yj) +
mminus 1
nmP (Xi lt min Yj Yl) +
nmminus nminusmminus 1
nmA2
VA2 =1
nm
[A+ (nminus 1)PY + (mminus 1)PX minus (n+m+ 1)A2
]=
1
nm
[A+ (nminus 1)
(PY minus A2
)+ (mminus 1)
(PX minus A2
)+ A2
]On retrouve lrsquoexpression chercheacutee
613 Intervalles de confiance sur la courbe
Les systegravemes de reconnaissance sont souvent ajusteacutes de telle maniegravere que le taux drsquoerreur soit constant par exemple1 Crsquoest la proportion de documents reconnus qui deacutetermine la performance de ce systegraveme Lrsquoobjectif ce paragrapheest de deacuteterminer un intervalle de confiance du taux de reconnaissance pour un taux drsquoerreur fixeacute
Construction de la courbe ROC
Ce premier paragraphe deacutetaille la maniegravere dont est construite une courbe ROC (voir Courbe ROC (page 221))
Algorithme A1 Courbe ROCOn suppose qursquoon dispose drsquoun ensemble de points (Xi θi) isin Rtimes0 1 pour i isin 1 n X_i est le score obtenupour lrsquoexpeacuterience i theta_i vaut 1 si elle a reacuteussi et 0 si elle a eacutechoueacute On suppose eacutegalement que cette liste est trieacuteepar ordre croissant forall i X_i infegal X_i+1 On souhaite eacutegalement tracer k points sur la courbe on deacuteterminepour cela k seuils ensembles_1s_k deacutefinis par forallj sk = X j k
n
On construit ensuite les points (Rj Ej) deacutefinis par
Rj =1
n
nsumi=1
θi11Xi⩾sj et Ej =1
n
nsumi=1
(1minus θi) 11Xi⩾sj
La courbe ROC est composeacutee de lrsquoensemble ROC = (Ej Rj) |1 ⩽ j ⩽ k
Les deux suites (Rj)j et (Ej)j sont toutes les deux deacutecroissantes drsquoapregraves leur deacutefinition La courbe peut ecirctre renduecontinue par interpolation
Deacutefinition D2 taux de classification agrave erreur fixeOn cherche un taux de reconnaissance pour un taux drsquoerreur donneacute On dispose pour cela drsquoune courbe ROC obtenuepar lrsquoalgorithme de la courbe ROC (page 224) et deacutefinie par les points ROC = (ej rj) |1 ⩽ j ⩽ k On suppose icique (e1 r1) = (1 1) et (ek rk) = (0 ) Si ce nrsquoest pas le cas on ajoute ces valeurs agrave lrsquoensemble ROC Pour un taux drsquoerreur donneacute elowast on cherche jlowast tel que
ejlowast+1 ⩽ elowast ⩽ ejlowast
Le taux de reconnaissance ρ chercheacute est donneacute par
ρ =elowast minus xjlowast
xjlowast+1 minus xjlowast[rjlowast+1 minus rjlowast ] + rjlowast
Il ne reste plus qursquoagrave deacutetailler la meacutethode bootstrap
224 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
Meacutethode boostrap
Une seule courbe ROC ne permet drsquoobtenir qursquoun seul taux On cherche ici agrave construire plusieurs courbes ROC agravepartir de la mecircme expeacuterience de faccedilon agrave obtenir plusieurs taux de reconnaissance pour le mecircme taux drsquoerreur De cettemaniegravere il sera possible de deacuteterminer un intervalle de confiance On srsquoinspire pour cela des meacutethodes de bootstrap214
Algorithme A2 Courbe ROC meacutethode boostrapOn dispose toujours du nuage de points E = (Xi θi) isin Rtimes 0 1 avec i isin 1 n On choisit C isin N le nombrede courbes ROC qursquoon deacutesire tracer Pour chaque courbe c isin 1 C
bull On construit un nouvel ensemble (X primei θ
primei)1⩽i⩽n construit par un tirage aleacuteatoire dans lrsquoensemble E avec remise
bull Lrsquoalgorithme de la courbe ROC (page 224) permet de constuire la courbe RkOC
bull Lrsquoalgorithme de taux de classification agrave erreur fixe (page 224) permet ensuite de deacuteterminer un taux dereconnaissance ρk pour le taux drsquoerreur elowast
La liste (ρ1 ρC) est trieacutee par ordre croissant Les quantiles sont ensuite utiliseacutes pour deacuteterminer lrsquointervalle deconfiance [ρ1 ρ2] du taux de reconnaissance pour le taux drsquoerreur elowast de telle sorte que
P (ρ isin [ρ1 ρ2]) = 1minus α
On prend geacuteneacuteralement α = 005
Cet algorithme aboutit aux reacutesultats suivants
La premiegravere image est celle drsquoune courbe ROC (lrsquoaxe des abscisses est inverseacute) la seconde repreacutesente toutes cellesobtenues par la meacutethode bootstrap pour trois courbes La troisiegraveme image superpose cent courbes Moins il y a depoints pour estimer une partie de la courbe plus les courbes sont espaceacutees Ces courbes ont eacuteteacute construites avec 12000points Le taux de lecture pour 1 drsquoerreur est eacutegal agrave 6809 Lrsquointervalle de confiance agrave 95 est [6610 7016](construit avec 500 courbes) Moyenne (6825) et meacutediane (6812) sont sensiblement eacutegales au taux calculeacute sur lapremiegravere courbe construite sans tirage aleacuteatoire Lrsquoeacutecart-type est 1 10 cela donne un intervalle de confiance eacutequivalentau preacuteceacutedent si on considegravere que la moyenne des taux suit asymptotiquement une loi normale Cette expeacuterience a eacuteteacutereproduite plusieurs fois et ces bornes sont assez stables contrairement (pm 005 ) aux extremas (pm 1)
214 httpsfrwikipediaorgwikiBootstrap_(statistiques)
61 Courbe ROC 225
Machine Learning Statistiques et Programmation Version 035930
Aire sous la courbe
La meacutethode bootstrap peut elle aussi ecirctre appliqueacutee pour calculer un intervalle de confiance pour lrsquoaire sous la courbe(AUC)
Courbe ROC (lrsquoaxe des abscisse est inverseacute) obtenue pour 100 tirages aleacuteatoires Lrsquoaire sous la courbe est eacutegale agrave080 et lrsquointervalle de confiance agrave 95 mesureacutee par la meacutethode bootsrap est [079 080] Les extremas sont presqueidentiques agrave ces chiffres
614 Distribution des scores mauvais et bons
On appelle un mauvais score un score associeacute agrave un mauvais reacutesultat de mecircme un bon score est le score drsquoun bonreacutesultat Si le score est une probabiliteacute on srsquoattend agrave trouver les bons scores regroupeacutes autour de la valeur 1 Si le scoreest un mauvais score il devrait ecirctre plus proche de zeacutero La figure qui suit montre des distributions obtenues pour deuxproblegravemes diffeacuterents Dans les deux cas le but rechercheacute est la deacutetermination drsquoun seuil seacuteparant le score drsquoun bonreacutesultat de celui drsquoun mauvais reacutesultat Lorsque ceci nrsquoest pas possible le score ne peut correspondre agrave un quelconquecritegravere confiance
La premiegravere courbe montre deux distributions qui se chevauchent mecircme si les bons scores semblent plus concentreacutes
226 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
autour des grandes valeurs Le seconde courbe montre un problegraveme mieux seacuteparable Lrsquoexistence drsquoun seuil entre unbon et un mauvais score est plus plausible
615 Variantes
Taux de lecture ou de reconnaissance
Il nrsquoexiste pas une grande diffeacuterence lorsque le taux drsquoerreur est faible Le taux de lecture est simplement la proportionde documents pour lesquels le score est aussi drsquoun seuil s que la reacuteponse du classifieur soit bonne ou mauvaise Parexemple pour un taux de substitution de 1 si on a 70 en taux de lecture cela signifie que sur 100 documents lesystegraveme va en accepter 70 et parmi ces 70 1 seront mal traiteacutes Le taux de substitution est un taux drsquoerreur rapporteacuteagrave un taux de lecture donneacute Lrsquoinconveacutenient du taux de lecture rapporteacute au taux de substitution est que la meacutethodedeacuteveloppeacutee au paragraphe Intervalles de confiance sur la courbe (page 224) ne srsquoapplique plus aussi bien car pour untaux de substitution donneacute il peut exister plusieurs taux de lecture
La premiegravere image montre 5 courbes taux de lecture taux de substitutions Les courbes ne sont pas monotones etmontre qursquoil existe parfois plusieurs taux de lecture pour un mecircme taux de substitution Comme le calcul des intervallesde confiance fait intervenir une interpolation lineacuteaire lorsque les courbes sont trop cahotiques le calcul retourne desvaleurs faussesOn peut deacutemontrer que la courbe taux de lecture taux de substitution nrsquoest pas une courbe ni monotone ni inversiblePour cela on dispose drsquoune suite de couple (Xi θi) croissante selon les Xi θi vaut 1 si lrsquoexpeacuterience a reacuteussi 0 sinonPour un seuil donneacute s on note Eprime(s) le taux de substitution et Rprime(s) le taux de lecture on obtient
Rprime(s) =1
n
nsumi=1
11Xi⩾s
Eprime(s) =1
nRprime(s)
nsumi=1
(1minus θi) 11Xi⩾s
61 Courbe ROC 227
Machine Learning Statistiques et Programmation Version 035930
On eacutecrit diffeacuteremment ces expressions en supposant que Xi(s1)minus1 lt s1 ⩽ Xi(s1) math
Rprime(s1) =nminus i(s1)
n
Eprime(s1) =1
nminus i(s1)
nsumi=i(s1)
(1minus θi)
On suppose maintenant que Xi(s2)minus1 lt s2 ⩽ Xi(s2) math et i(s1) + 1 = i(s2)
Rprime(s2) =nminus i(s2)
nlt Rprime(s1)
Eprime(s2) =1
nminus i(s2)
nsumi=i(s2)
(1minus θi) =1
nminus i(s2)
nminus i(s1)
nminus i(s1)
minus (1minus θi(s1))+
nsumi=i(s1)
(1minus θi)
= minus
(1minus θi(s1)
)nminus i(s2)
+
sumni=i(s1)
(1minus θi)
nminus i(s1)
nminus i(s1)
nminus i(s2)= minus
(1minus θi(s1)
)nminus i(s2)
+ Eprime(s1)nminus i(s1)
nminus i(s2)
Si on suppose que θi(s1) = 1 autrement dit lrsquoexpeacuterience s1 a reacuteussi on en deacuteduit que
Eprime(s2) = Eprime(s1)nminus i(s1)
nminus i(s2)= Eprime(s1)
nminus i(s2) + 1
nminus i(s2)gt Eprime(s1)
En revanche si θi = 0
Eprime(s2) = Eprime(s1)
(1 +
1
nminus i(s2)
)minus 1
nminus i(s2)= Eprime(s1) +
E(s1)minus 1
nminus i(s2)lt Eprime(s1)
Il nrsquoexiste donc pas toujours une fonction f reliant Rprime(s) agrave Eprime(s) agrave moins de construire cette courbe de telle sorteqursquoelle soit monotone en ne choisissant qursquoune sous-suite (Eprime(Xi) R
prime(Xi))i qui veacuterifie cette hypothegravese
616 Classification multi-classe
Une courbe ROC se construit avec deux informations une reacuteponse binaire et un score Que signifie cette reacuteponsebinaire Elle peut ecirctre
1 Le fait que le preacutedicteur ait bien preacutedit une classe en particulier Le score associeacute est celui que le preacutedicteurdonne pour cette classe
2 Le fait que le preacutedicteur ait bien preacutedit crsquoest-agrave-dire que la reacuteponse binaire signifie que la classe preacutedite est laclasse attendue le score associeacute est celui de la classe preacutedite crsquoest-agrave-dire le score maximum obtenu pour lrsquounedes classes
Plus formellement le preacutedicteur retourne un vecteur Si qui contient les probabiliteacutes drsquoappartenance agrave toutes les classesaussi appeleacutees plus geacuteneacuteralement score de confiance ou juste score Si(c) est la probabiliteacute de preacutedire la classe c Laclasse attendue est noteacutee yi crsquoest celle que le preacutedicteur doit preacutedire Dans le premier cas on construit le couple (bi si)de telle sorte que
bi = 1 si yi = c sinon 0si = Si(c)
Dans le second cas bi = 1 si maxSi = Si(yi) sinon 0si = maxSi
Le premier cas correspond par exemple agrave des problegravemes de deacutetection de fraude215 Le second cas correspond agrave tauxde classification global La courbe ROC pour ce cas est en regravegle geacuteneacuteral moins bonne que la plupart des courbes ROCobtenues pour chacune des classes prise seacutepareacutement (voir Reacutegression logistique216)
215 httpsenwikipediaorgwikiPredictive_analyticsFraud_detection216 httpwwwxavierduprefrapppapierstathelpsphinxnotebookswines_colorhtml
228 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
617 Exemple
Voir ROC217
62 Confidence Interval and p-Value
bull Introduction (page 229)bull p-value (page 230)bull Significant difference between samples mean (page 230)bull Application on binomial variables (page 231)bull Estimate a p-value by using the distribution function (page 231)bull Correlated variables (page 232)bull Multiple comparisons problem (page 234)bull Algorithm Expectation-Maximization (page 235)bull Notebooks (page 235)bull Bibliographie (page 246)
This document explains the relationship between p-value and confidence intervals It goes on with the specific caseof a binamial law Assuming we want to determine whether or not two binomial laws are significantly different howmany observations we need to get the p-value under a given threshold
621 Introduction
The term p-value218 is very popular in the world of search engines I usually prefer confidence interval 95 I think itis easier to understand Plus because p-Value are real values we could be tempted to compare them and it is usuallywrong On the other hand it is more difficult to compare confidence intervals especially if they are related to completedifferent variables Their nature prevents you from doing that Howerver p-Values and confidence interval are similarthey tell you whether or not a metric difference is significantUsually it starts from a set of identically distributed random variables (Xi)1⩽i⩽N We then estimate the averageθN = 1
N
sumNi=1 Xi and we ask the question is θN null In others terms we want to know if the average is significantly
different from zero If the random variable X follows a random law which has a standard deviation we can use thecentral limit theorem219 which tells us
radicNθN minusrarr
NrarrinfinN (0 σ)
Not all of them have a standard deviation For example if X follows a Cauchy law220 EX2 simint
x2
1+x2 dx which doesnot exist This remark also concerns every distribution known as heavy tail distributionIf Y sim N (0 σ) then we have P (|Y | ⩽ 196) = 095 That is why we can say
θN is not null with 95 confidence ifradicN|θN |σ
gt 196
217 httpwwwxavierduprefrappensae_teaching_cshelpsphinxantisechesml_basicplot_regressionhtmlsphx-glr-antiseches-ml-basic-plot-roc-py218 httpsfrwikipediaorgwikiValeur_p219 httpsenwikipediaorgwikiCentral_limit_theorem220 httpsenwikipediaorgwikiCauchy_distribution
62 Confidence Interval and p-Value 229
Machine Learning Statistiques et Programmation Version 035930
And the confidence intervalle at 95 would be[minus196σradic
N196σradic
N
]When EθN = θ0 = 0 it becomes
radicN[θN minus θ0
]minusrarrNrarrinfin
N (0 σ)
We usually want to check if the mean is equal to a specific value using a statistical test
H0 θN = θ0
H1 θN = θ0
We validate H0 if
θN isin[θ0 minus
196σradicN
θ0 +196σradic
N
]
622 p-value
With confidence intervals you first choose a confidence level and then you get an interval You then check if your valueis inside or outside your interval Inside the gain is not significant outside it is
With a p-value we consider the problem the other way given θN what is the probability that the difference∣∣∣θN minus θ0
∣∣∣is significant Letrsquos consider Y following a normal law N (0 1) We are looking for
P
(|Y | gt
radicN|θN |σ
)= α
α is the p-value
α = 1minusint βN
minusβN
1radic2π
eminusx2
2 dx = 2
int infin
βN
1radic2π
eminusx2
2 dx
where βN =radicN|θN |σ
At this point we should not forget that we use a theorem which tells us thatradicN |θN |
σ sim N (0 1) when N rarrinfin whichmeans everything we said is true when N is great enough
623 Significant difference between samples mean
Usually we do not want to test if an average is null but if the difference between two averages is null We consider tworandom samples having the same size each of them described by (Xi) and (Yi) All variables are independant (Xi)are distributed according the same law we assume the same for (Yi) We expect the following difference to be null
ηN =1
N
Nsumi=1
Xi minus1
N
Nsumi=1
Yi =1
N
[Nsumi=1
Xi minus Yi
]Considering expression (623) we can applying the central limit theorem on variable Z = X minus Y we get (η0 = 0)
radicNηN minusrarr
NrarrinfinN
(η0
radicVZN
)If both samples do not have the same number of observations this expression becomes
radicNηN minusrarr
N1rarrinfinN2rarrinfinN1N2
rarrx
N
(η0
radicVXN1
+VYN2
)
230 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
624 Application on binomial variables
A binomial variable X sim B (p) is defined by
P (X = 0) = 1minus p
P (X = 1) = p
Letrsquos consider two series of observations (Xi) sim B (p) and (Yi) sim B (q) We assume p = q and we want to determinehow many observations we need to get a p-value below 5 We know that V (Xi) = p(1minus p) and V (Yi) = q(1minus q)Next table shows the values First column contains values for p first row contains values for qminus p We also assume wehave the same number N of random observations for each variable The statistical test cen be defined like following
H0 p = q = p0
H1 p = q
If H0 is true thenradicNθN minusrarr
NrarrinfinN(0radic
p0(1minus p0)
radic1
N1+
1
N2
)(62)
pd -0200 -0100 -0020 -0010 -0002 -0001 0001 0002 0010 0020 0100 0200005 913 3650 91235 364939 364939 91235 3650 913 37 10010 70 1729 6915 172866 691463 691463 172866 6915 1729 70 18015 98 2449 9796 244893 979572 979572 244893 9796 2449 98 25020 31 123 3074 12293 307317 1229267 1229267 307317 12293 3074 123 31025 37 145 3602 14406 360137 1440548 1440548 360137 14406 3602 145 37030 41 162 4034 16135 403354 1613413 1613413 403354 16135 4034 162 41035 44 175 4370 17479 436966 1747864 1747864 436966 17479 4370 175 44040 47 185 4610 18440 460976 1843901 1843901 460976 18440 4610 185 47045 48 191 4754 19016 475381 1901523 1901523 475381 19016 4754 191 48050 49 193 4802 19208 480183 1920730 1920730 480183 19208 4802 193 49055 48 191 4754 19016 475381 1901523 1901523 475381 19016 4754 191 48060 47 185 4610 18440 460976 1843901 1843901 460976 18440 4610 185 47065 44 175 4370 17479 436966 1747864 1747864 436966 17479 4370 175 44070 41 162 4034 16135 403354 1613413 1613413 403354 16135 4034 162 41075 37 145 3602 14406 360137 1440548 1440548 360137 14406 3602 145 37080 31 123 3074 12293 307317 1229267 1229267 307317 12293 3074 123 31085 25 98 2449 9796 244893 979572 979572 244893 9796 2449 98090 18 70 1729 6915 172866 691463 691463 172866 6915 1729 70095 10 37 913 3650 91235 364939 364939 91235 3650 913
Given a binomial law with parameter p and a difference d this table gives the number of observations needed on bothsides to get a significant difference assuming p is the expected pourcentage
625 Estimate a p-value by using the distribution function
Expression (622) gives a way to estimate the p-value Computing the integral is not always possible but there is a wayto do it using Monte Carlo method221 Letrsquos assume X sim N (0 1) We denote fX as the density function of X Wealso consider an interval I = [minusa a] Then we have f(a) = f(minusa) and
P (X isin I) = P (|X| ⩽ a) = P (f(X) ⩾ f(a))
This is true because f is decreasing for x gt 0 The p-value α for a estimator β using Monte Carlo method is
1
N
Nsumi=1
11f(Xi)ltf(β) minusrarr α (63)
221 httpsenwikipediaorgwikiMonte_Carlo_method
62 Confidence Interval and p-Value 231
Machine Learning Statistiques et Programmation Version 035930
Assuming every (Xi)i follows a normal law N (0 1)
626 Correlated variables
Letrsquos assume we now have a vector a correlated variables X = (X1 Xd) drawn following a law N (θ0Σ)The central limit theorem is still valid
radicNθN minusrarr
NrarrinfinN (θ0Σ)
We know estimators for the average and the covariance matrix defined as follows
θN =1
n
Nsumi=1
Xi
ΣN =1
n
Nsumi=1
(Xi minus θN )(Xi minus θN )prime
We usually want to check if
H0 θN = θ0
H1 θN = θ0
If Λ is diagonal matrix of Σ (diagonal matrix with eigen values) All eigen values are real and positive we then define
Σ = PΛP prime and Σ12 = PΛ
12P prime
We consider Zi = (Xi minus θN )Σminus 12 We then have EZi = 0 and VZi = I2 where I2 is the identity matrix We could
now consider each dimension of Zi independently as illustrated in next figure it shows the difference on an example
if we consider the correlation of two variables correlated such as Σ =
(01 005005 02
)
232 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
We assume we observe two Bernouilli222 variables correlated Red points represents the area for which we would accepthypothesis H0 in case both variables are independant Blue area represents the same but with the correlation But thatwould not be the best way to do it The confidence interval for a couple of indenpendant gaussian (N1 N2) variables isan ellipse Two independent normal variables N2
1 +N22 with a null mean and standard deviation equal to one follows
a χ2 law Based on that we can deduce a boundary for the confidence zone at 95 Next figure shows this zone for a
non-correlated couple and a correlated couple (Σ =
(01 005005 02
))
222 httpsenwikipediaorgwikiBernoulli_distribution
62 Confidence Interval and p-Value 233
Machine Learning Statistiques et Programmation Version 035930
We assume we observe two Bernouilli variables correlated Red points represents the area for which we would accepthypothesis H0 in case both variables are independant Blue area represents the same but with the correlation
627 Multiple comparisons problem
The problem of Multiple comparisons223 happens when dealing with many metrics measyring a change Thatrsquos allwaysthe case when two version of the sam websire are compared in a test AB224 The metrics are correlated but it is unlikelythat all metrics differences will be significant or not The HolmndashBonferroni method225 proposes a way to define anhypthesis on the top of the existing ones
223 httpsenwikipediaorgwikiMultiple_comparisons_problem224 httpsfrwikipediaorgwikiTest_AB225 httpsenwikipediaorgwikiHolmE28093Bonferroni_method
234 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
628 Algorithm Expectation-Maximization
We here assume there are two populations mixed defined by random variable C Letrsquos X be a mixture of two binomiallaws of parameters p and q It is for example the case for a series draws coming from two different coins
P (X) = P (X|C = a)P (C = a) + P (X|X = b)P (C = b)
The likelihood of a random sample (X1 Xn) the class we do not observe are (C1 Cn)
L(θ) =prodi
[pXi(1minus p)(1minusXi)π
]1minusCi[qXi(1minus q)(1minusXi)(1minus π)
]Ci
(64)
The parameters are θ = (π p q) We use an algorithm Expectation-Maximization (EM)226 to determine the parametersWe define at iteration t
wi = ECi|Xiθt (Xi)
=pXit (1minus pt)
1minusXiπt
pXit (1minus pt)1minusXiπt + qXi
t (1minus qt)1minusXi(1minus πt)
We then update the parameters
π =1
n
nsumi=1
wi
p =
sumni=1 wiXisumni=1 wi
q =
sumni=1(1minus wi)Xisumni=1(1minus wi)
See also Applying the EM Algorithm Binomial Mixtures227
629 Notebooks
The following notebook produces the figures displayed in this document
p-values
Compute p-values and heavy tails estimators
from jyquickhelper import add_notebook_menuadd_notebook_menu()
bull p-value table (page 236)bull p-values in 2D (page 237)bull p-value ratio (page 239)bull p-values and EM (page 240)bull p-value and heavy tail (page 243)
226 httpsenwikipediaorgwikiExpectationE28093maximization_algorithm227 httpstatisticalrecipesblogspotfr201204applying-em-algorithm-binomial-mixtureshtml
62 Confidence Interval and p-Value 235
Machine Learning Statistiques et Programmation Version 035930
matplotlib inline
p-value table
from scipystats import normimport pandasfrom pandas import DataFrameimport numpy
def pvalue(p q N)theta = abs(p-q)var = p(1-p)bn = (2N)05 theta var05ret = (1 - normcdf(bn))2return ret
def pvalue_N(p q alpha)theta = abs(p-q)var = p(1-p)rev = abs(normppf (alpha2))N = 2 (rev var05 theta) 2return int(N+1)
def alphatable(ps dps alpha)values = []for p in ps
row=[]for dp in dps
q = p+dpr = pvalue_N(pqalpha) if 1 gt= q gt= 0 else numpynanrowappend (r)
valuesappend (row)return values
def dataframe(psdpstable)columns = dpsdf = pandasDataFrame(data=table index=ps)dfcolumns = dpsreturn df
print (normppf(0025)normppf (0025)) -19599639845400545ps = [0001 0002] + [ 005i for i in range (120) ]dps = [ -02 -01 -002 -001 -0002 -0001
02 01 002 001 0002 0001 ]dpssort()t = alphatable(ps dps 005)dataframe (ps dps t)
236 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
normppf(0025) -19599639845400545
p-values in 2D
import numpy matplotlib random mathimport matplotlibpyplot as pylab
def matrix_square_root(sigma) eigen vect = numpylinalgeig(sigma)dim = len(sigma)res = numpyidentity(dim)for i in range(0dim)
res[ii] = eigen[i]05return vect res vecttranspose()
def chi2_level (alpha = 095) N = 1000x = [ randomgauss(01) for _ in range(0N) ]y = [ randomgauss(01) for _ in range(0N) ]r = map ( lambda c (c[0]2+c[1]2)05 zip(xy))r = list(r)rsort()res = r [ int (alpha N) ]return res
def square_figure(mat a) x = [ ]y = [ ]for i in range (0100)
xappend( a mat[0][0]05 )yappend( (randomrandom ()-05) a mat[1][1]052 )xappend( -a mat[0][0]05 )yappend( (randomrandom ()-05) a mat[1][1]052 )
yappend( a mat[1][1]05 )xappend( (randomrandom ()-05) a mat[0][0]052 )yappend( -a mat[1][1]05 )xappend( (randomrandom ()-05) a mat[0][0]052 )
pylabplot(xy ro)
x = [ ]y = [ ]for i in range (0100)
xappend( a )yappend( (randomrandom ()-05) a2 )xappend( -a )yappend( (randomrandom ()-05) a2 )
yappend( a )(suite sur la page suivante)
62 Confidence Interval and p-Value 237
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
xappend( (randomrandom ()-05) a2 )yappend( -a )xappend( (randomrandom ()-05) a2 )
xsys = [][]for ab in zip (xy)
ar = numpymatrix( [ [a] [b] ] )transpose()we = ar rootxsappend( we [00] )ysappend( we [01] )
pylabplot(xsys bo)pylabshow()
def circle_figure (mat a) x = [ ]y = [ ]for i in range (0200)
z = randomrandom() mathpi 2i = a mat[0][0]05 mathcos(z)j = a mat[0][0]05 mathsin(z)xappend ( i )yappend ( j )
pylabplot(xy ro)
x = [ ]y = [ ]for i in range (0200)
z = randomrandom() mathpi 2i = a mathcos(z)j = a mathsin(z)xappend ( i )yappend ( j )
xsys = [][]for ab in zip (xy)
ar = numpymatrix( [ [a] [b] ] )transpose()we = ar rootxsappend( we [00] )ysappend( we [01] )
pylabplot(xsys bo)pylabshow()
level = chi2_level ()mat = [ [01 005] [005 02] ]npmat = numpymatrix(mat)root = matrix_square_root (npmat)square_figure (mat 196)circle_figure (mat level)
238 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
p-value ratio
import random math
def densite_gauss (mu sigma x) e = -(x - mu)2 (sigma2 2)d = 1 ((2mathpi)05 sigma)return d mathexp (e)
(suite sur la page suivante)
62 Confidence Interval and p-Value 239
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
def simulation_vector (N mu sigma) return [ randomgauss(musigma) for n in range(N) ]
def ratio (vector x fdensite) under = 0above = 0fx = fdensite(x)for u in vector
f = fdensite (u)if f gt= fx
above += 1else
under += 1return float(above) float (above + under)
x = 196N = 10000mu = 0sigma = 1
v = simulation_vector(N mu sigma)g = ratio(v x lambda y densite_gauss (mu sigma y) )print (g)
09487
p-values and EM
See Applying the EM Algorithm Binomial Mixtures228
from scipystats import normimport random math
def average_std_deviation(sample)mean = 0var = 0for x in sample
mean += xvar += xx
mean = len(sample)var = len(sample)var -= meanmeanreturn meanvar 05
def bootsample(sample)n = len(sample)-1return [ sample[ randomrandint(0n) ] for _ in sample ]
(suite sur la page suivante)
228 httpstatisticalrecipesblogspotfr201204applying-em-algorithm-binomial-mixtureshtml
240 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
def bootstrap_difference(sampleX sampleY draws=2000 confidence=005)diff = [ ]for n in range (0draws)
if n 1000 == 0print(n)
sx = bootsample(sampleX)sy = bootsample(sampleY)px = sum(sx) 10 len(sx)py = sum(sy) 10 len(sy)diffappend (px-py)
diffsort()n = int(len(diff) confidence 2)av = sum(diff) len(diff)return av diff [n] diff [len(diff)-n]
generation of a sample
def generate_obs(p)x = randomrandom()if x lt= p return 1else return 0
def generate_n_obs(p n)return [ generate_obs(p) for i in range (0n) ]
std deviation
def diff_std_deviation(px py)s = px(1-px) + py(1-py)return px py s05
def pvalue(diff std N)theta = abs(diff)bn = (2N)05 theta stdpv = (1 - normcdf(bn))2return pv
def omega_i (X pi p q) np = p pi if X == 1 else (1-p)pinq = q (1-pi) if X == 1 else (1-q)(1-pi)return np (np + nq)
def likelihood (X pi p q) np = p pi if X == 1 else (1-p)pinq = q (1-pi) if X == 1 else (1-q)(1-pi)return mathlog(np) + mathlog(nq)
def algoEM (sample)p = randomrandom()q = randomrandom()pi = randomrandom()iter = 0
(suite sur la page suivante)
62 Confidence Interval and p-Value 241
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
while iter lt 10 lk = sum ( [ likelihood (x pi p q) for x in sample ] )wi = [ omega_i (x pi p q) for x in sample ]sw = sum(wi)pin = sum(wi) len(wi)pn = sum([ x w for xw in zip (samplewi) ]) swqn = sum([ x (1-w) for xw in zip (samplewi) ]) (len(wi) - sw)
pipq = pinpnqniter += 1
lk = sum ( [ likelihood (x pi p q) for x in sample ] )return pipq lk
mixpq = 020 080pi = 07N = 1000na = int(N pi)nb = N - na
print(------- sample)sampleX = generate_n_obs(p na) + generate_n_obs (q nb)randomshuffle(sampleX)print(ave p pi + q(1-pi))print(mea sum(sampleX)1len(sampleX))
lk = sum ( [ likelihood (x pi p q) for x in sampleX ] )print (min lk lk sum (sampleX)1 len(sampleX))res = []for k in range (0 10)
r = algoEM (sampleX)resappend ( (r[-1] r) )
ressort ()
rows = []for r in res
pipqlk = r[1]rowsappend( [p pi + q(1-pi)] + list(r[1]))
df = pandasDataFrame(data=rows)dfcolumns = [average pi p q likelihood]df
------- sampleave 038mea 0373min lk -33932292120130046 0373
242 Chapter 6 Meacutetriques
Machine Learning Statistiques et Programmation Version 035930
p-value and heavy tail
from scipystats import norm zipfimport sys
def generate_n_obs_zipf (tail_index n) return list(zipfrvs(tail_index size=n))
def hill_estimator (sample) sample = list(sample)samplesort(reverse=True)end = len(sample)10end = min(end100)s = 0res = []for k in range (0end)
s += mathlog(sample[k])h = (s - (k+1)mathlog(sample[k+1]))(k+1)h = 1hresappend( [k h] )
return res
mixtail_index = 105N = 10000
sample = generate_n_obs_zipf(tail_index N)sample[5]
[357621 148 18 1812876449 36150]
import pandas
def graph_XY(curves xlabel=None ylabel=None marker=Truelink_point=False title=None format_date=Y-m-dlegend_loc=0 figsize=None ax=None)
if ax is Noneimport matplotlibpyplot as plt pylint disable=C0415fig ax = pltsubplots(1 1 figsize=figsize)
smarker = (True True) o- (True False) o (False True) - (False False) [marker link_point]
has_date = Falsefor xf yf label in curves
axplot(xf yf smarker label=label)axlegend(loc=legend_loc)return ax
(suite sur la page suivante)
62 Confidence Interval and p-Value 243
Machine Learning Statistiques et Programmation Version 035930
(suite de la page preacuteceacutedente)
def draw_variance(sample) avg = 0std = 0n = 0w = 1add = []for ix in enumerate(sample)
x = float (x)avg += x wstd += xx wn += wval = (stdn - (avgn)2)05addappend ( [ i avgn val] )
print(add[-1])table = pandasDataFrame(add columns=[index avg(n) std(n)])return graph_XY([
[table[index] table[avg(n)] avg(n)][table[index] table[std(n)] std(n)]
] marker=False link_point=True)
draw_variance(sample)
[9999 551868710339 23334255446156308]
def draw_hill_estimator (sample) res = hill_estimator(sample)table = DataFrame(res columns=[d hill])return graph_XY(
(suite sur la page suivante)
244 Chapter 6 Meacutetriques