RGD 1
RGD 1
hjanati@[Link]
Machine learning classique: zero-to-hero Exemple: Churn prediction
Un opérateur téléphonique a les données historiques sur ses clients.
L’entreprise souhaite anticiper le “churn” avec un algorithme de prédiction pour cibler les clients concernés
1 6
X = (X , . . . , X ) ! y 2 {0, 1}
n
X
2
On cherche une fonction f telle que: f (X) ⇡ y min (f (xi ) yi ) Erreur de prédiction
f
i=1
On ne peut pas chercher g dans la totalité de l’espace des fonctions (dimension in nie), il faut paramétriser g
2
fi
Machine learning classique: zero-to-hero séparateur linéaire en dimension 1
On ne peut pas chercher g dans la totalité de l’espace des fonctions (dimension in nie), il faut paramétriser g
x = Months 2 R
g(x) = 1x + 0, 0, 1 2R
n
X
2
Chercher la meilleure f = chercher le meilleur : min2 (1{ 1 xi + 0 0} yi )
2R
i=1
3
fi
Machine learning classique: zero-to-hero séparateur linéaire en dimension 2
1 2
On considère une deux variables: “Months” et “MonthlyCharges”: x = (x , x ) f (x) = 1g(x) 0
1 2
g(x) = ↵ + 1x + 2x , ↵, 1, 2 2R
2
g(x) = ↵ + h , xi, ↵ 2 R, 2R
> 2
g(x) = ↵ + x, ↵ 2 R, 2 R
Xn
2
min 2 (1{↵+ > xi 0} yi )
↵2R, 2R
i=1
On considère g : x 7! >
x. Étudions ses courbes de niveaux, c-à-d pour c 2 R les ensembles: {x|g(x) = c}.
Machine learning classique: zero-to-hero séparateur linéaire en dimension 2
On considère g : x 7! >
x. Étudions ses courbes de niveaux, c-à-d pour c 2 R les ensembles: {x|g(x) = c}.
{x 2 R2 | >
x = 0} est la droite perpendiculaire à .
Machine learning classique: zero-to-hero séparateur linéaire en dimension 2
On considère g : x 7! >
x. Étudions ses courbes de niveaux, c-à-d pour c 2 R les ensembles: {x|g(x) = c}.
g(x) > 0
Exemple avec = (1, 0.5)> et c = 0.
>
Quels sont les x tels que x=0?
g (x
{x 2 R2 | >
x = 0} est la droite perpendiculaire à .
)=
0
g(x) < 0 >
à droite de (D), x>0
(D)
>
à gauche de (D), x<0
et si c = 1 ? ou c = 1?
Machine learning classique: zero-to-hero séparateur linéaire en dimension 2
On considère g : x 7! >
x. Étudions ses courbes de niveaux, c-à-d pour c 2 R les ensembles: {x|g(x) = c}.
g(x) > 0
Exemple avec = (1, 0.5)> et c = 0.
g (x
)=
>
Quels sont les x tels que x=0?
1
Tous les vecteurs orthogonaux à .
g (x
g (x
)=
{x 2 R2 | >
x = 0} est la droite perpendiculaire à .
)=
1
0
g(x) < 0 >
à droite de (D), x>0
(D)
>
à gauche de (D), x<0
et si c = 1 ? ou c = 1?
Machine learning classique: zero-to-hero séparateur linéaire en dimension 2
1 2 3 3
Et si on utilise trois variables: g(x) = ↵ + 1x + 2x + 3x , ↵, 2R
> 3
g(x) = ↵ + x, ↵, 2R
> d
En dimension d: g(x) = ↵ + x, 2R
11
Machine learning classique: zero-to-hero Régression logistique
n
X
2
min (1{↵+ >x
i 0} yi ) Fonction non di érentiable (discontinue même) di cile à optimiser
↵2R, 2Rd
i=1
>
Au lieu de prendre le signe, transformer les scores ↵ + xi vers [0, 1] et modéliser des probabilités
1
sigmoid: t 7! 1+e t (logistique)
def >
pi = P(y i = 1|xi ) = sigmoid(↵ + xi )
? ? ?> 1
On a donc une fonction de prédiction: f (xi ) = 1 , sigmoid(↵ + xi ) 2
12
ff
ffi
Machine learning classique: zero-to-hero Train and test error
def >
pi = P(y i = 1|xi ) = sigmoid(↵ + xi ) Optimisation faite sur (x1 , y 1 ), . . . , (xn , y n )
n
X “Training” data
min y i log(pi ) + (1 y i ) log(1 pi )
↵2R, 2Rd
i=1
L’erreur de prédiction sur ces données est optimisée: elle est forcément petite. predictions true labels
? 0 0
Il faut évaluer la performance du modèle sur des données f (x1 ) y1
nouvelles non vues à l’entraînement: “Test data” .. .. “Test” error
. .
? 0 0
f (xm ) ym
13
Machine learning classique: zero-to-hero Train error goes to zero
Peut-on séparer les classes avec une séparation linéaire dans ces cas ?
d=2 d=3
d=1
Non !
Non ! Oui !
d + 1 représente le nombre de paramètres à estimer: plus d est grand, plus le modèle est riche, complexe.
Comment évolue l’erreur sur le train au fur-et-à mesure que la dimension d augmente ?
14
Machine learning classique: zero-to-hero Test error makes a U shape
“La meilleure” séparation linéaire sur le train n’est pas la meilleure sur le test: elle est biaisée par les outliers
15
fi
Machine learning classique: zero-to-hero Bias-Variance tradeo
“Bias-Variance” tradeo
Model complexity
16
fi
fi
fi
fi
f
f
Machine learning classique: zero-to-hero Regularization
Pour réduire l’over tting, on peut réduire l’espace d’optimisation en privilégiant des coe cients simples:
n
X
min y i log(pi ) + (1 y i ) log(1 pi )
2Rd+1
i=1
k k22 C
Ce problème n’est pas facile à résoudre (contrainte quadratique), on peut montrer que ce problème est équivalent:
n
X 1 2
min y i log(pi ) + (1 y i ) log(1 pi ) + k k2
2Rd+1
i=1
C
Dans les deux cas plus C est petit plus on minimise k k: “Plus on régularise”.
CC!
!00?? lele optimal
optimalest
estlelevecteur
vecteurnul:
nul: lalafonction
fonctionde
deprédiction
prédictionest
estconstante:
constante: underfitting
underfitting
C! ! +1
C +1 ? l’optimisation
? l’optimisation
est est R R en en
sursur d+1d+1
entier:
entier:
risque
risque
d’overfitting.
d’overfitting.
17
fi
ffi
Machine learning classique: zero-to-hero Regularization
18
Machine learning classique: zero-to-hero Regularization
La fonction “pénalité” est aussi appelée “régularisation”: elle vient simpli er (régulariser) la fonction de prédiction
19
fi
fi
Machine learning classique: zero-to-hero Regularization
2
3. pénalité Elastic net : k✓k2 + (1 )k✓k1
Souvent, prendre un mélange des deux permet Lasso: annule les coe cients un par un
d’obtenir de meilleures performances.
20
ff
ffi
ffi
ff
Machine learning classique: zero-to-hero Regularization
Comment choisir C ?
X Xtrain Xtest
Y Ytrain Ytest
2. Choisir une liste de valeurs de C, par ex: [0.01, 0.05, 0.1, 1., 10]
Pour chaque C:
Xn
1 1
1. Optimiser sur Xtrain Ytrain minp loss(f✓ (xi ), y i ) + pénalité(✓)
C optimal ✓2R n C
i=1
Quel est l’inconvénient principal de cette méthode ? Le C choisi dépend du découpage aléatoire train / test
21
Machine learning classique: zero-to-hero Cross-validation
Idée: E ectuer plusieurs découpages et moyenner l’erreur de test
X X1 X2 X3 X4 X5
Y Y1 Y2 Y3 Y4 Y5
2. Choisir une liste de valeurs de C, par ex: [0.01, 0.05, 0.1, 1., 10]
3. Pour chaque k in [1, 2, 3, 4, 5], créer un découpage train/test C optimal
4. Pour chaque C, calculer l’erreur de prédiction moyenne C’est l’erreur de validation croisée
0
>
2
↵
+
2
x>
23
Machine learning classique Intro to neural nets
Linéarités
def > 1
z1 = x + ↵1
def > 2 non-linéarité
z2 = x + ↵2
.. max(z 1 , . . . , z p )
.
def > p
zp = x + ↵p sigmoid
25
Machine learning classique Intro to neural nets
Linéarités
def > 1
z1 = x + ↵1
def > 2 non-linéarité
z2 = x + ↵2
.. max(z 1 , . . . , z p )
.
def > p
zp = x + ↵p sigmoid
26
Machine learning classique Intro to neural nets
Linéarités
def > 1
z1 = x + ↵1
.. non-linéarité
. max(z 1 , . . . , z p ) sigmoid
def > p
zp = x + ↵p
En pratique, ce modèle ne fonctionne pas pour ces données complexes. Pourquoi à votre avis ?
Il faudrait donc: utiliser plusieurs non-linéarités simples + les combiner pour apprendre des fonctions non-linéaires complexes
Idée: def
z 1 = h(x> 1
+ ↵1 ) p
X
1. Appliquer plusieurs non-linéarités h plus tôt .. !j zj + !0
.
2. Combiner les z j linéairement avec wj à optimiser def j=1
z p = h(x> p
+ ↵p )
sigmoid
27
fi
Machine learning classique Intro to neural nets
def
z 1 = h(x> 1
+ ↵1 ) p h(x) = max(x, 0)
.. X
>
. sigmoid( ! j z j + ! 0 ) = sigmoid(z ! + ! 0 )
def > p j=1
z p = h(x + ↵p )
def > 1
1 1 z 1 = h(x + ↵1 )
,↵
.. def
z j = h(x > j
+ ↵j )
p
! , !0 >
= sigmoid(z ! + ! 0 )
x .
Output layer
p p def
Input layer
,↵ z p = h(x> p
+ ↵p )
Réseau de neurones à une couche cachée
Hidden layer 28
fi
Machine learning classique Intro to neural nets
On peut augmenter la complexité du modèle à l’in ni…
def
1
z 1 = h(x> 1
+ ↵1 ) 1
, ⌧1 def
, ↵1 1
, µ1 v 1 = h(c> 1
+ µ1 )
.. ..
.
!p , !0
..
.
def
z j = h(x> j
x . + ↵j )
m
,⌧ m
m
, µm
def
v k = h(c> k
+ µk )
p
,↵ p
def
= sigmoid(v > ! + ! 0 )
z p = h(x> p
+ ↵p )
Input layer Hidden layer 1 Hidden layer 2 Hidden layer L Output layer
..
.
Deep neural networks = many layers / many neurons
This is a “general purpose” neural network (NN) known as “fully connected multilayer perceptron” (MLP)
On considère un problème de classi cation binaire avec le réseau ci-dessus optimisé avec une très bonne performance.
d k
On dé nit la transformation des données en s’arrêtant à l’avant dernier layer: g : x 2 R 7! v 2 R
Apprendre à classifier les g(xi ) est-il plus facile ou plus difficile que classifier les xi ?
29
fi
fi
fi
Machine learning classique Representation learning
On peut augmenter la complexité du modèle à l’in ni…
def
1
z 1 = h(x> 1
+ ↵1 ) 1
, ⌧1 def
, ↵1 1
, µ1 v 1 = h(c> 1
+ µ1 )
.. ..
.
!p , !0
..
.
def
z j = h(x> j
x . + ↵j )
m
,⌧ m
m
, µm
def
v k = h(c> k
+ µk )
p
,↵ p
def
= sigmoid(v > ! + ! 0 )
z p = h(x> p
+ ↵p )
Input layer Hidden layer 1 Hidden layer 2 Hidden layer L Output layer
..
.
On considère un problème de classi cation binaire avec le réseau ci-dessus optimisé avec une très bonne performance.
d k
On dé nit la transformation des données en s’arrêtant à l’avant dernier layer: g : x 2 R 7! v 2 R
Apprendre à classifier les g(xi ) est-il plus facile ou plus difficile que classifier les xi ?
Plus facile: car un seul neurone (output) a su t pour les classi er: ils sont forcément linéairement séparables