1 hour to browse the algos stars of machine learning. No code, big concepts with a little math. Linear regression, classification (logistic regression / svm / tree), neural network, deep learning...
4. Machine learning ?
“ Field of study that gives computers the
ability to learn without being explicitly
programmed ”
Arthur Samuel
1901-1990
5. Machine learning ?
Quelques exemples :
• Reconnaissance de texte (OCR)
• Finance/Trading
• Google AlphaGo
• Reconnaissance d'objets sur une image
• Détection de spam
• Publicité (enchères)
• Marketing/Vente (segmentation, prediction)
• Médecine (aide à la décision, analyse de radios)
• Traduction vocale
• ...
6. Quand l'utiliser ?
• Incapacité à expliquer notre expertise (reconnaissance vocale)
• Solutions changeantes au cours du temps (analyse de traffic)
• Solutions pour lesquelles les règles peuvent différer pour chaque
individu (biométrie)
• Expertise inexistante (détection automatique de fraude)
• Volume de données rendant une analyse/exploration/prediction
humaine impossible
9. Explorons les données
X1 = m2 X2 = Nb salle d’eau X3 = étages … Prix
50 1 1 … 490 000 €
65 1 1 … 540 000 €
34 1 1 … 340 000 €
128 2 2 … 1 100 000 €
… … … … …
90 2 1 … 800 000 €
54 1 1 … ???
k Features
Feature vector
Prix des appartements dans Paris
Prediction
m samples
Trouver 𝑾 =
𝒘 𝟎
𝒘1
…
𝒘 𝑘
tel que 𝒘0 + 𝒘1 ∗ 𝑚2 + 𝒘2 ∗ 𝑛𝑏𝑆𝑎𝑙𝑙𝑒𝐸𝑎𝑢 + … = 𝑝𝑟𝑖𝑥
Par exemple 𝟏𝟎𝟎𝟎 + 𝟖𝟓𝟎 ∗ 𝑚2 + 𝟏𝟎𝟎𝟎 ∗ 𝑛𝑏𝑆𝑎𝑙𝑙𝑒𝐸𝑎𝑢 + … = 𝑝𝑟𝑖𝑥
10. Régression linéaire
Fonction d’objectif : 𝑚𝑖𝑛
𝒘 𝟎
,𝒘 𝟏
𝑖=1
𝑚
(𝐡 𝒘 𝐱𝐢 − y𝐢)2
Trouver la droite 𝐡 𝒘 𝐱 = 𝒘 𝟎 + 𝒙 ∗ 𝒘 𝟏 = 𝒑𝒓𝒆𝒅𝒊𝒄𝒕𝒊𝒐𝒏𝑷𝒓𝒊𝒙 ayant la plus petite erreur
Erreur : distance entre la prévision et la valeur : (𝐡 𝒘 𝐱 - y)2
11. A la recherche du minimum
Résoudre l’équation normale
Soit X la matrice représentant notre dataset (features), y le résultat (prix)
𝑾 = 𝑋 𝑇 𝑋 −1 𝑋 𝑇 𝑦
Problème
Inversion : Opération complexe : O(n3)
14. Et quand ce n’est pas linéaire ?
Solution : ajouter en entrée des paramètres polynomiaux
Exemple : x1, x2, … => x1, x2, x1
2, x1*x2, x2
2, x1
3 …
mètre2, salle d’eau => mètre2, salle d’eau, (mètre2)2, (salle d’eau)2,(mètre2 * salle d’eau)…
Mais quel ordre polynomial choisir ? ^2, ^3, ^15 ?
15. Choisir ses paramètres : l’overfitting
L’algorithme sur-apprend le modèle et devient aberrant
Comment détecter ce sur-apprentissage
16. La crossvalidation
X1 = m2 X2 = Nb salle d’eau X3 = étages … Prix
50 1 1 … 490 000 €
65 1 1 … 540 000 €
…. …. …. …. ….
34 1 1 … 340 000 €
128 2 2 … 110 000 €
… … … … …
90 2 1 … 800 000 €
54 1 1 … ???
Séparer son jeu de données : 80% entrainement, 20% de validation
80% Données
d’entrainement
20% Données
de validation pour
évaluer le modèle
17. La crossvalidation
Modèle simple
High bias
Modèle complexe
High variance
Meilleure solution
Erreur du jeu d’apprentissage (80%)
Erreur du jeu de validation/test (20%)
Meilleur model
18. Pour résumer
• Régression linéaire : prédire une valeur sur la base d’un jeu de données
• Définir une fonction d’objectif et trouver son min
• Resoudre l’équation normale ou estimation avec le “gradient descent”
• Modèles non linéaires : ajout de paramètres polynomiaux en entrée
• Tuning des paramètres de machine-learning : crossvalidation
19. Un exemple avec Scikit-Learn
#Get the data formatted
data = get_formatted_data()
#extract features and prices
features = data [[‘m2’, ‘salle-de-bain’, ’etage’]]
price = data[‘price’ ]
#Split with train and test dataset
features_train, features_test, price_train, price_test =
sklearn.cross_validation.train_test_split( features, price)
#Build and train the model with the train dataset
regression = linear_model.LinearRegression()
regression.fit(features_train, price_train)
#Get the residual sum of squares from the test dataset
RSS = np.sum((regression.predict(features_test) - price_test) ** 2))
X1 = m2 X2 = Nb salle
d’eau
X3 = étages … Prix
50 1 1 … 490 000 €
65 1 1 … 540 000 €
…. …. …. …. ….
34 1 1 … 340 000 €
128 2 2 … 110 000 €
… … … … …
90 2 1 … 800 000 €
54 1 1 … ???
24. SVM : Support vector machine
Construit un hyperplan ayant la plus grande distance avec tous les points
• Relativement complexe : O(n_samples2 * n_features)
• Faible sur-apprentissage
• Résout des problèmes non linéaires
25. Support vector machine
Pour des problèmes non-linéaire, utilise des kernels pour construire ces
hyperplans dans des dimensions élevées voir infinies
26. Arbres de décision
revenus Endettement Durée y
haut faible 3ans OK
bas moyen 5ans Risque
haut moyen 3ans OK
haut important 5ans Risque
bas important 3ans Risque
bas faible 5ans OK
Root
Endettement
Faible moyen important
0 1 1 0 1 0
3 3
Revenus
bas haut
2 1 1 2
Erreur = (1+1)/6
Durée
…
27. Random forest
Mieux vaut se baser sur plusieurs solutions simples qu’une complexe
revenus Endetteme
nt
Durée … y
haut moyen 3ans … OK
… … … … …
bas important 3ans … OK
bas faible 5ans … Risque
… … … … …
haut important 5ans … Risque
… … … … Risque
haut moyen 3ans … OK
… … … … …
Subset 1
Subset 2
Subset n
Subset 1 Subset nSubset 2
Sélectionne la classe la plus présente
parmi les n résultats
29. Evaluer le modèle
Précision : Parmi les messages classifiés SPAM, quelle fraction est vrai-SPAM ?
Precision =
𝑛𝑏 𝑆𝑃𝐴𝑀 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑚𝑒𝑛𝑡 𝑐𝑙𝑎𝑠𝑠é 𝑆𝑃𝐴𝑀
𝑛𝑏 𝑑𝑒 𝑐𝑙𝑎𝑠𝑠é 𝑆𝑃𝐴𝑀
=
𝑉𝑟𝑎𝑖 𝑝𝑜𝑠𝑖𝑡𝑖𝑓
𝑉𝑟𝑎𝑖 𝑝𝑜𝑠𝑖𝑡𝑖𝑓 + 𝐹𝑎𝑢𝑥 𝑝𝑜𝑠𝑖𝑡𝑖𝑓
=
1
1+0
= 1
Exemple : 1000 messages dont 10 sont SPAM
Classifier : Détecte 1 seul SPAM parmi les 10
vrai-SPAM
10
vrai-NON-SPAM
990
classé SPAM
1
Vrai positif
1
Faux positif
0
classé NON-
SPAM 999
Faux négatif
9
Vrai négatif
990
Véritable classe
Prédiction
Rappel : Parmi les vrai-SPAM, quelle fraction a été classée en SPAM ?
Recall =
𝑛𝑏 𝑆𝑃𝐴𝑀 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑚𝑒𝑛𝑡 𝑐𝑙𝑎𝑠𝑠é𝑠 𝑆𝑃𝐴𝑀
𝑛𝑏 𝑑𝑒 𝑣𝑟𝑎𝑖 𝑆𝑃𝐴𝑀
=
𝑉𝑟𝑎𝑖 𝑝𝑜𝑠𝑖𝑡𝑖𝑓
𝑉𝑟𝑎𝑖 𝑝𝑜𝑠𝑖𝑡𝑖𝑓 + 𝐹𝑎𝑢𝑥 𝑛é𝑔𝑎𝑡𝑖𝑓
=
1
1+9
= 0.1
Accuracy: Quel pourcentage de message a été bien classé ?
Accuracy =
𝑛𝑏 𝑚𝑒𝑠𝑠𝑎𝑔𝑒 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑚𝑒𝑛𝑡 𝑐𝑙𝑎𝑠𝑠é
𝑛𝑏 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑚𝑒𝑠𝑠𝑎𝑔𝑒
=
𝑉𝑟𝑎𝑖 𝑝𝑜𝑠𝑖𝑡𝑖𝑓+𝑉𝑟𝑎𝑖 𝑛é𝑔𝑎𝑡𝑖𝑓
𝑇𝑜𝑡𝑎𝑙 𝑝𝑜𝑝𝑢𝑙𝑎𝑡𝑖𝑜𝑛
=
1+990
1000
= 0.991
Matrice de confusion
30. Precision vs Rappel, un seul survivra
Score F1 =
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ∗𝑅𝑒𝑐𝑎𝑙𝑙
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙
On peut faire varier le seuil à partir duquel le message sera classé en spam
Pessimiste :
Tout est NON-
SPAM
Optimiste :
Tout est SPAM
Algorithme parfait
32. Données non libellées
• Liste des clients d’une marque (age, sexe, adresse…)
• Liste d’articles vendus (prix, taille, couleur, matière…)
• Ensemble des mots trouvés sur un site internet
• Poissons (taille, nombre d’épines dorsales, écailles)
Exploration/Structuration de données en grande dimension
33. Cluster
Entités « similaires » au sein d’un cluster et « différentes »
d’un autre cluster
Prix Prix
Taille Taille
35. K-means
• Nécessite de connaître le nombre de cluster K
• Fonctionne bien pour des clusters hypersphériques
• Initialisation aléatoire (résultats variables)
• Idéal pour de gros volumes de données, O(n)
40. Réseau de neurones artificiel
Rond
Rouge
Jaune
Probabilité « Pomme »
Probabilité « Banane »
… Poire, Kiwi, fraise
Topologie à définir : nombre de couches, nombre de neurones…
43. Backpropagation
Rondeur
Rouge
Jaune
Probabilité Pomme 𝑦8 1 = 0.4
Variation du poids :
∆𝑤𝑖𝑗 𝑛 = 𝜂 𝛿𝑗 𝑛 𝑦𝑖(𝑛)
4
5
6
7
8
9
Calcul du nouveau poids :
𝒘 𝟒𝟖 𝒏 + 𝟏 = 𝒘 𝟒𝟖 𝒏 + 𝜂 ∗ 1 − 0.4 ∗ 𝑦4(1)
𝒘 𝟒𝟖
Les poids sont ajustés en fonction de l’erreur, propagée de la sortie vers l’entrée
1
2
3
Erreur : 𝛿8 1 = 1 − 0.4 = 0.6
44. Historiquement
• Algorithmes « anciens » (80’ pour le multilayer perceptron MLP)
• CNN et MLP utilisés avec succès dans les années 90 pour de la
reconnaissance de caractères (Cf vidéo de Yann Lecun)
• Algorithmes très couteux
• Les premières couches apprennent lentement
• Nécessite énormément de données pour obtenir des résultats
satisfaisants
• Laissé à l’abandon par l’industrie au profit d’autres modèles comme
le SVM
• De nouveau à la mode depuis 2012 avec le deep learning …
46. Deep learning
Un réseau de neurone profond
Typiquement dizaines de couches et centaines de milliers d’entrées
(1 par pixel)
47. Deep learning aujourd’hui
• Natural Language Processing (NLP) : Bots
• OCR : reconnaître du texte (google maps numéro de rue)
• Reconnaissance vocale: Siri, cortana…
• Voiture sans pilote
• IA jeux « go »
• …
48. 2012 : la révolution imageNet
Concours Imagenet : libeller des images
49. Ce qui a changé
• Base de données de millions d’images libellées
• Amélioration des algorithmes, utilisation du GPU
• Amélioration du matériel : DGX-1, 170 TeraFlops pour 100kE
50. Computer vision “traditionnelle”
Algorithmes intermédiaires pour extraire les caractéristiques
principales de l’image
Rame
Œil
Eau
Bateau
Classifier
Batard
John Snow
sur un bateau
51. Computer vision “deep learning”
Apprentissage/découverte automatique des caractéristiques
principales
52. Jeu de go
Problématiques
• Arbre de possibilités immense : 10170 vs 1050 pour un jeu d’echec
• Pas de critère « numérique » pour évaluer une position
Approche
• Apprentissage de parties humaines et auto-apprentissage (joue
contre lui-même)
2 principaux réseaux de neurones
• Détecte les « meilleures » branches de l’arbre à analyser dans un
Monte-Carlo Tree Search
• Evaluation des positions : tente de scorer les positions
53. Bilan
Futur proche
• Voitures autonomes
• Assistants
• Médecine (prothèse intelligente etc.)
Fausse quête
• Machine intelligente sans conscience propre
• Pas de souhait ou de désir, résout le problème présenté
Skynet n’est pas pour demain !
54. Les grands frameworks
• Python
Scikit-learn
Torch
Tensorflow
Dato/Turi ?
• Java/Scala
Spark ML
Deeplearning4j
• R
• Mathlab
• C …
• Cloud
Amazon
Google
Microsoft
IBM Watson
BigML
57. Pour discuter
• Système de recommandation
• Compression, réduction de dimension (PCA, T-Sne)
• Détection d’anomalie
• Recherche de voisin / similarité
• Calculs de distances
• Réseaux de Neurones Convolutionnels, encodeurs
• ….
• Autant d’algorithme que de publication de Thèse :)