58
Apprentissage statistique, Cr´ eer des machines intelligentes Ga¨ el Varoquaux

Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

Embed Size (px)

DESCRIPTION

High-level talk about machine learning: the statistical and computational challenges, as well as how they can be answer by the scikit-learn Python toolkit. In French

Citation preview

Page 1: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

Apprentissage statistique,Creer des machines intelligentes

Gael Varoquaux

Page 2: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique en deuxmots

2 Une application en recherche enneuroscience

3 Scikit-learn: une boite a outilsd’apprentissage

G Varoquaux 2

Page 3: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique endeux mots

G Varoquaux 3

Page 4: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Une perspective historiqueIntelligence artificielle annees 80

Concevoir des regles de decision

Mangeable?

Mobile?

Grand?

Apprentissage machine annees 90Les creer a partir d’observations

Apprentissage statistique annees 2000Modeliser le bruit dans les observations

Big data maintenantBeaucoup d’observations,des regles simples

“Big data isn’t actually interesting without machinelearning” Steve Jurvetson, VC, Silicon Valley

G Varoquaux 4

Page 5: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Une perspective historiqueIntelligence artificielle annees 80

Concevoir des regles de decision

Apprentissage machine annees 90Les creer a partir d’observations

Apprentissage statistique annees 2000Modeliser le bruit dans les observations

Big data maintenantBeaucoup d’observations,des regles simples

“Big data isn’t actually interesting without machinelearning” Steve Jurvetson, VC, Silicon Valley

G Varoquaux 4

Page 6: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Une perspective historiqueIntelligence artificielle annees 80

Concevoir des regles de decision

Apprentissage machine annees 90Les creer a partir d’observations

Apprentissage statistique annees 2000Modeliser le bruit dans les observations

Big data maintenantBeaucoup d’observations,des regles simples

“Big data isn’t actually interesting without machinelearning” Steve Jurvetson, VC, Silicon Valley

G Varoquaux 4

Page 7: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Une perspective historiqueIntelligence artificielle annees 80

Concevoir des regles de decision

Apprentissage machine annees 90Les creer a partir d’observations

Apprentissage statistique annees 2000Modeliser le bruit dans les observations

Big data maintenantBeaucoup d’observations,des regles simples

“Big data isn’t actually interesting without machinelearning” Steve Jurvetson, VC, Silicon Valley

G Varoquaux 4

Page 8: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Une perspective historiqueIntelligence artificielle annees 80

Concevoir des regles de decision

Apprentissage machine annees 90Les creer a partir d’observations

Apprentissage statistique annees 2000Modeliser le bruit dans les observations

Big data maintenantBeaucoup d’observations,des regles simples

“Big data isn’t actually interesting without machinelearning” Steve Jurvetson, VC, Silicon Valley

G Varoquaux 4

Page 9: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique

Exemple: reconnaissance de visage

Andre Bernard Charles Didier

G Varoquaux 5

Page 10: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique

Exemple: reconnaissance de visage

Andre Bernard Charles Didier

?G Varoquaux 5

Page 11: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Methode naıve

1 Stocker des images connues (bruitees) et les nomsqui vont avec.

2 A partir d’une photo (bruitee aussi), trouver l’imagequi lui ressemble le plus.

Methode “des plus proches voisins”

Quel taux d’erreurs sur les images deja vues?... 0: pas d’erreurs

Donnees de test 6= donnees d’apprentissage

G Varoquaux 6

Page 12: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Methode naıve

1 Stocker des images connues (bruitees) et les nomsqui vont avec.

2 A partir d’une photo (bruitee aussi), trouver l’imagequi lui ressemble le plus.

Methode “des plus proches voisins”Quel taux d’erreurs sur les images deja vues?

... 0: pas d’erreurs

Donnees de test 6= donnees d’apprentissage

G Varoquaux 6

Page 13: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 1er probleme: le bruitDonnees non liees a la variable a predire

0.0 0.5 1.0 1.5 2.0 2.5 3.0Niveau de bruit

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

Taux d

e p

redic

tion

G Varoquaux 7

Page 14: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 2eme probleme: nombre de descripteurs

Trouver une aiguille dans une botte de foin

1 2 3 4 5 6 7 8 9 10Fraction utile du cadre

0.65

0.70

0.75

0.80

0.85

0.90

0.95

Taux d

e p

redic

tion

G Varoquaux 8

Page 15: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique

Exemple: reconnaissance de visage

Andre Bernard Charles Didier

?

Apprentissage a partir dedescripteurs numeriquesDifficultes: i) bruit,

ii) nombre de descripteursTache “supervisee”: labels connusTache “non supervisee”: labels inconnus

G Varoquaux 9

Page 16: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

y

G Varoquaux 10

Page 17: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

y

x

yQuel modele preferer?

G Varoquaux 10

Page 18: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

y

x

yProbleme du “sur-apprentissage” (“overfit”)

Minimiser l’erreur n’est pas toujours favorable(apprentissage du bruit)

Donnees de test 6= donnees d’apprentissageG Varoquaux 10

Page 19: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

y

x

yPreferer les modeles simples

= concept de “regularisation”Equilibrer le nombre de parametres a apprendreavec la quantite de donnees

G Varoquaux 10

Page 20: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

y

x

yPreferer les modeles simples

= concept de “regularisation”Equilibrer le nombre de parametres a apprendreavec la quantite de donnees

Compromis biais variance

G Varoquaux 10

Page 21: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

yDeux descripteurs:2 dimensions

X_1

X_2

y

Plus de parametres

Equilibrer le nombre de parametres a apprendreavec la quantite de donnees

G Varoquaux 10

Page 22: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: regressionUn seul descripteur:une dimension

x

yDeux descripteurs:2 dimensions

X_1

X_2

y

Plus de parametres⇒ besoin de plus de donnees

“malediction de la dimensionalite”

G Varoquaux 10

Page 23: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage supervise: classificationVariable a predire categorielle, par ex. des chiffres

X2

X1

G Varoquaux 11

Page 24: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage non supervise

Structure de la bourse

http://scikit-learn.org/stable/auto examples/applications/plot stock market.html

Donnees non labeliseesplus courantes que les donnees labelisees

G Varoquaux 12

Page 25: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage non supervise

Structure de la bourse

http://scikit-learn.org/stable/auto examples/applications/plot stock market.html

Donnees non labeliseesplus courantes que les donnees labelisees

G Varoquaux 12

Page 26: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 L’apprentissage statistique

Des defis

StatistiquesComputationels

G Varoquaux 13

Page 27: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

Big data

L’acces aux donnees limite plus quela puissance de calcul

G Varoquaux 14

Page 28: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

1 Reduction de donnees a la volee

Une reduction rapide,respectant les proprietesstatistiques des donnees

Limite la charge memoire + disque

G Varoquaux 14

Page 29: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

1 Reduction de donnees a la volee2 Algorithmes “en ligne”

Consomment les donnees en flux

Convergent vers des grandeurs moyennes

G Varoquaux 14

Page 30: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

1 Reduction de donnees a la volee2 Algorithmes “en ligne”3 Parallelisme par decoupage des donnees

Stratification pour suivrela structure statistique etde stockage des donneesTaille des blocs adapteaux unites de calcul

G Varoquaux 14

Page 31: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

1 Reduction de donnees a la volee2 Algorithmes “en ligne”3 Parallelisme par decoupage des donnees4 Caching

Minimiser la latence d’acces aux donnees

Ne pas recalculer la meme chose

G Varoquaux 14

Page 32: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Strategies d’apprentissage sur du “big data”

1 Reduction de donnees a la volee2 Algorithmes “en ligne”3 Parallelisme par decoupage des donnees4 Caching5 Acces rapide aux donnees

Representation coherente avec les motifs d’accesCompression pour limiter la bande consommee

G Varoquaux 14

Page 33: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage statistique

Apprendre une logiquedecisionnelle

G Varoquaux 15

Page 34: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage statistique et big data

Apprendre une logiquedecisionnelle riche

G Varoquaux 15

Page 35: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage statistique et big data

Apprendre une logiquedecisionnelle riche

Regression Classification

Non supervise, ex. clustering

G Varoquaux 15

Page 36: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

1 Apprentissage statistique et big data

Apprendre une logiquedecisionnelle riche

Les difficultes

Statistiquesgrande dimension⇒ sur-apprentissage

Computationellesschema d’acces aux donnees

G Varoquaux 15

Page 37: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 Une application en rechercheen neuroscience

Lier la biologie des neurones a la penseeG Varoquaux 16

Page 38: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 L’IRM fonctionnelle

t

Enregistrement de l’activite cerebrale

G Varoquaux 17

Page 39: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 NeuroImagerie cognitive

Apprendre un lien bilateral entre activitecerebrale et fonction cognitive

G Varoquaux 18

Page 40: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 Modeles d’encodage de l’information

Predire les reponses neurales⇒ apprendre les representations cerebrale

G Varoquaux 19

Page 41: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 Decodage de l’activite cerebrale

“Lire dans les pensees”

G Varoquaux 20

Page 42: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 Accumulation de donnees

Atlas cognitif

Problematique d’apprentissage et de“big data” en science fondementale

G Varoquaux 21

Page 43: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

2 Accumulation de donnees

Atlas cognitif

Problematique d’apprentissage et de“big data” en science fondementale

G Varoquaux 21

Page 44: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Scikit-learn: une boite aoutils d’apprentissage

c©Theodore W. GrayG Varoquaux 22

Page 45: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 scikit-learn

L’apprentissage statistique pour tousPas de domaine d’application specifique

Pas de prerequis en machine learning

Librairie logicielle de qualiteInterfaces pensees pour l’utilisateur

Developpement communautaireLicense BSD, contributeurs tres varies

http://scikit-learn.org

G Varoquaux 23

Page 46: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Une bibliotheque Python

Une bibliotheque, pas un programmePlus expressif et polyvalentFacile a integrer

Python:Un langage haut niveau- interactif,- facile a debugger,Appels transparents au CEcosysteme tres dynamique

G Varoquaux 24

Page 47: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Performance computationelle

scikit-learn mlpy pybrain pymvpa mdp shogunSVM 5.2 9.47 17.5 11.52 40.48 5.63LARS 1.17 105.3 - 37.35 - -Elastic Net 0.52 73.7 - 1.44 - -kNN 0.57 1.41 - 0.56 0.58 1.36PCA 0.18 - - 8.93 0.47 0.33k-Means 1.34 0.79 ∞ - 35.75 0.68

Optimisations algorithmiques et non bas niveau

Minimiser les copies des donnees

G Varoquaux 25

Page 48: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Developpement comunautaireEnormement de fonctionnalites:

benefices d’une grande equipe

Croissance du projet:

Plus de 200 contributeurs∼ 12 developpeurs coeur

1 ingenieur INRIA temps plein

Cout de developpement estime: 6 millions $Modele COCOMO,http://www.ohloh.net/p/scikit-learn

G Varoquaux 26

Page 49: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Fonctionalites

Apprentissage superviseArbres de decision (Random-Forest, Boosted Tree)Modeles lineairesSVM

Apprentissage non superviseClusteringApprentissage de dictionnaireDetection d’outliers

Selection de modelesValidation croisee integreeOptimisation de parametres

G Varoquaux 27

Page 50: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

Code

G Varoquaux 28

Page 51: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Structures de donnees

0387879479

7927

0179075270

1578

9407174612

4797

5497071871

7887

1365349049

5190

7475426535

8098

4872154634

9084

9034567324

5614

7895718774

5620

Tableau numpyTableau numerique type n-dimensionnelAbstraction sur un pointeur

3 7

9

9 2

8

9 4

4

9 7 1

7

1 3 9

0

7 6

8

4 5

8

4 3

1

6

Matrice creuse scipyStructure 2D avec peu d’elementsDifferentes representations de donnees

Calcul vectorielOperations numeriques et matricielles

G Varoquaux 29

Page 52: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Specifier un modele

Un concept central: l’estimateurInstancie sans les donneesMais en specifiant ses parametres

from s k l e a r n . n e i g h b o r s importK N e a r e s t N e i g h b o r s

e s t i m a t o r = K N e a r e s t N e i g h b o r s (n n e i g h b o r s =2)

G Varoquaux 30

Page 53: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Entraıner un modele

Apprendre a partir de donneese s t i m a t o r . f i t ( X t r a i n , Y t r a i n )

ou:X est un tableau ou une matrice de forme

nobservations × ndescripteurs

y est un tableau numpy, entier ou flottantnobservations

G Varoquaux 31

Page 54: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Utiliser un modele

Prediction: classification, regressionY t e s t = e s t i m a t o r . p r e d i c t ( X t e s t )

Transformation: reduction de dimension, filtreX new = e s t i m a t o r . t r a n s f o r m ( X t e s t )

Estimation de densite, vraissemblancet e s t s c o r e = e s t i m a t o r . s c o r e ( X t e s t )

Estimation “en-line”e s t i m a t o r . p a r t i a l f i t (X, Y)

G Varoquaux 32

Page 55: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Vectorization

Passer des donnees brutes a la matrices X

Pour le texte: compter les occurrences de mots- Donnees d’entree: liste de documents (string)- Donnees de sortie: matrice creuse

3 7

9

9 2

8

9 4

4

9 7 1

7

1 3 9

0

7 6

8

4 5

8

4 3

1

6

3 7

9

9 2

8

9 4

4

9 7 1

7

1 3 9

0

7 6

8

4 5

8

4 3

1

6

doc 1

doc 2

doc 3

doc 4

doc 5

doc 6

doc 7

doc 8

doc 9

doc 1

0d

oc 1

1d

oc 1

2d

oc 1

3d

oc 1

4

python

java

C#

compiler

interface

server

driver

system

logs

G Varoquaux 33

Page 56: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

3 Vectorization

Passer des donnees brutes a la matrices X

Pour le texte: compter les occurrences de mots- Donnees d’entree: liste de documents (string)- Donnees de sortie: matrice creuse

from s k l e a r n . f e a t u r e e x t r a c t i o n . t e x timport H a s h i n g V e c t o r i z e r

h a s h e r = H a s h i n g V e c t o r i z e r ()

X = h a s h e r . f i t t r a n s f o r m ( documents )

G Varoquaux 33

Page 57: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

Exemples

G Varoquaux 34

Page 58: Scikit-learn: apprentissage statistique en Python. Créer des machines intelligentes

Scikit-Learn: Machine Learning en Python

Apprentissage +++ big data = logique decisionnelle riche

Statistiques, algorithmes, acces aux donnees

Scikit-learn:- En Python- Projet dynamique- Page web tres fournie

http://scikit-learn.org

@GaelVaroquaux