Gaël Varoquaux (INRIA): “scikit-learn for easy machine learning: the vision, the tools and its development”
Bio: Gaël Varoquaux is an INRIA faculty researcher working on computational science for brain imaging in the Neurospin brain research institute (Paris, France). His research focuses on modeling and mining brain activity in relation to cognition. Years before the NSA, he was hoping to make bleeding-edge data processing available across new fields, and he has been working on a mastermind plan building easy-to-use open-source software in Python. He is a core developer of scikit-learn, joblib, and Mayavi, a nominated member of the PSF, and often teaches scientific computing with Python using http://scipy-lectures.github.com/.
4. 1 Scikit-learn: the vision
An enabler
Machine learning
for everybody and
for everything
Machine learning
without learning the
machinery
G Varoquaux 2
5. Machine learning in a nutshell
Machine learning is about making prediction from data
G Varoquaux 3
6. 1 Machine learning: a historical perspective
Artificial Intelligence The 80s
Building decision rules
Eatable?
Mobile?
Tall?
G Varoquaux 4
7. 1 Machine learning: a historical perspective
Artificial Intelligence The 80s
Building decision rules
Machine learning The 90s
Learn these from observations
G Varoquaux 4
8. 1 Machine learning: a historical perspective
Artificial Intelligence The 80s
Building decision rules
Machine learning The 90s
Learn these from observations
Statistical learning 2000s
Model the noise in the observations
G Varoquaux 4
9. 1 Machine learning: a historical perspective
Artificial Intelligence The 80s
Building decision rules
Machine learning The 90s
Learn these from observations
Statistical learning 2000s
Model the noise in the observations
Big data today
Many observations,
simple rules
G Varoquaux 4
10. 1 Machine learning: a historical perspective
Artificial Intelligence The 80s
Building decision rules
Machine learning The 90s
Learn these from observations
Statistical learning 2000s
Model the noise in the observations
Big data today
Many observations,
simple rules
“Big data isn’t actually interesting without machine
learning”
Steve Jurvetson, VC, Silicon Valley
G Varoquaux 4
11. 1 Machine learning in a nutshell: an example
Face recognition
Andrew Bill Charles Dave
G Varoquaux 5
12. 1 Machine learning in a nutshell: an example
Face recognition
Andrew Bill Charles Dave
?G Varoquaux 5
13. 1 Machine learning in a nutshell
A simple method:
1 Store all the known (noisy) images and the names
that go with them.
2 From a new (noisy) images, find the image that is
most similar.
“Nearest neighbor” method
G Varoquaux 6
14. 1 Machine learning in a nutshell
A simple method:
1 Store all the known (noisy) images and the names
that go with them.
2 From a new (noisy) images, find the image that is
most similar.
“Nearest neighbor” method
How many errors on already-known images?
... 0: no erreurs
Test data = Train data
G Varoquaux 6
15. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
G Varoquaux 7
16. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
x
y
Which model to prefer?
G Varoquaux 7
17. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
x
y
Problem of “over-fitting”
Minimizing error is not always the best strategy
(learning noise)
Test data = train data
G Varoquaux 7
18. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
x
y
Prefer simple models
= concept of “regularization”
Balance the number of parameters to learn
with the amount of data
G Varoquaux 7
19. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
Two descriptors:
2 dimensions
X_1
X_2
y
More parameters
G Varoquaux 7
20. 1 Machine learning in a nutshell: regression
A single descriptor:
one dimension
x
y
Two descriptors:
2 dimensions
X_1
X_2
y
More parameters
⇒ need more data
“curse of dimensionality”
G Varoquaux 7
21. 1 Machine learning in a nutshell: classification
Example:
recognizing hand-written digits
G Varoquaux 8
22. 1 Machine learning in a nutshell: classification
X1
X2
Example:
recognizing hand-written digits
Represent with 2 numerical features
G Varoquaux 8
24. 1 Machine learning in a nutshell: unsupervised
ConocoPhillipsApple
Pepsi
Navistar
GlaxoSmithKline
crosoft
Kimberly-Clark
Ryder
SAP
an Sachs
Sony
Pfizer
Amazon
Marriott
Novartis
Coca Cola
3M
Comcast
Sanofi-Aventis
IBM
Chevron
DuPont de Nemours
S
Total
Caterpillar
Canon
rner
Home Depot
Texas instruments
Valero Energy
Ford
Cablevision
Toyota
g
Honda
HP
Dell
Mitsubishi
Xerox
Yahoo
Exxon
Mc Donalds
Cisco
Kraft Foods Unilever
Stock market structure
G Varoquaux 9
25. 1 Machine learning in a nutshell: unsupervised
ConocoPhillipsApple
Pepsi
Navistar
GlaxoSmithKline
crosoft
Kimberly-Clark
Ryder
SAP
an Sachs
Sony
Pfizer
Amazon
Marriott
Novartis
Coca Cola
3M
Comcast
Sanofi-Aventis
IBM
Chevron
DuPont de Nemours
S
Total
Caterpillar
Canon
rner
Home Depot
Texas instruments
Valero Energy
Ford
Cablevision
Toyota
g
Honda
HP
Dell
Mitsubishi
Xerox
Yahoo
Exxon
Mc Donalds
Cisco
Kraft Foods Unilever
Stock market structure
Unlabeled data
more common than labeled data
G Varoquaux 9
26. Machine learning
Mathematics and algorithms for fitting predictive models
Regression
x
y
Classification
Notions of overfit and test error
G Varoquaux 10
27. Machine learning is everywhere
Image recognition
Marketing (click-through rate)
Movie / music recommendation
Medical data
Logistic chains (eg supermarkets)
Language translation
Detecting industrial failures
G Varoquaux 11
29. Real statisticians use R
And real astronomers use IRAF
Real economists use Gauss
Real coders use C assembler
Real experiments are controlled in Labview
Real Bayesians use BUGS stan
Real text processing is done in Perl
Real Deep learner is best done with torch (Lua)
And medical doctors only trust SPSS
G Varoquaux 13
30. 1 My stack
Python, what else?
General purpose
Interactive language
Easy to read / write
G Varoquaux 14
31. 1 My stack
The scientific Python stack
numpy arrays
Mostly a float**
No annotation / structure
Universal across applications
Easily shared with C / fortran
03878794797927
01790752701578
94071746124797
54970718717887
13653490495190
74754265358098
48721546349084
90345673245614
57187745620
03878794797927
01790752701578
94071746124797
54970718717887
13653490495190
74754265358098
48721546349084
90345673245614
187745620
G Varoquaux 14
32. 1 My stack
The scientific Python stack
numpy arrays
Connecting to
scipy
scikit-image
pandas
...
It’s about plugin things
together
G Varoquaux 14
33. 1 My stack
The scientific Python stack
numpy arrays
Connecting to
scipy
scikit-image
pandas
...
Being Pythonic and
SciPythonic
G Varoquaux 14
34. 1 scikit-learn vision
Machine learning for all
No specific application domain
No requirements in machine learning
High-quality Pythonic software library
Interfaces designed for users
Community-driven development
BSD licensed, very diverse contributors
http://scikit-learn.org
G Varoquaux 15
35. 1 Between research and applications
Machine learning research
Conceptual complexity is not an issue
New and bleeding edge is better
Simple problems are old science
In the field
Tried and tested (aka boring) is good
Little sophistication from the user
API is more important than maths
Solving simple problems matters
Solving them really well matters a lot
G Varoquaux 16
36. 2 Scikit-learn: the tool
A Python library for machine learning
c Theodore W. Gray
G Varoquaux 17
37. 2 A Python library
A library, not a program
More expressive and flexible
Easy to include in an ecosystem
As easy as py
from s k l e a r n import svm
c l a s s i f i e r = svm.SVC()
c l a s s i f i e r . f i t ( X t r a i n , Y t r a i n )
Y t e s t = c l a s s i f i e r . p r e d i c t ( X t e s t )
G Varoquaux 18
38. 2 API: specifying a model
A central concept: the estimator
Instanciated without data
But specifying the parameters
from s k l e a r n . n e i g h b o r s import
KNear estNeig hbo r s
e s t i m a t o r = KN ea r estNe ig h b or s (
n n e i g h b o r s =2)
G Varoquaux 19
39. 2 API: training a model
Training from data
e s t i m a t o r . f i t ( X t r a i n , Y t r a i n )
with:
X a numpy array with shape
nsamples × nfeatures
y a numpy 1D array, of ints or float, with shape
nsamples
G Varoquaux 20
40. 2 API: using a model
Prediction: classification, regression
Y 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 )
Transforming: dimension reduction, filter
X new = e s t i m a t o r . t r a n s f o r m ( X t e s t )
Test score, density estimation
t 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 )
G Varoquaux 21
41. 2 Vectorizing
From raw data to a sample matrix X
For text data: counting word occurences
- Input data: list of documents (string)
- Output data: numerical matrix
G Varoquaux 22
42. 2 Vectorizing
From raw data to a sample matrix X
For text data: counting word occurences
- Input data: list of documents (string)
- Output data: numerical matrix
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 t
import 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 22
43. 2 Scikit-learn: very rich feature set
Supervised learning
Decision trees (Random-Forest, Boosted Tree)
Linear models
SVM
Unsupervised Learning
Clustering
Dictionary learning
Outlier detection
Model selection
Built in cross-validation
Parameter optimization
G Varoquaux 23
46. What if the data does not fit in memory?
“Big data”:
Petabytes...
Distributed storage
Computing cluster
G Varoquaux 25
47. What if the data does not fit in memory?
“Big data”:
Petabytes...
Distributed storage
Computing cluster
Mere mortals:
Gigabytes...
Python programming
Off-the-self computers
See also: http://www.slideshare.net/GaelVaroquaux/processing-
biggish-data-on-commodity-hardware-simple-python-patterns
G Varoquaux 25
49. 2 On-line algorithms
e s t i m a t o r . p a r t i a l f i t ( X t r a i n , Y t r a i n )
Linear models
sklearn.linear model.SGDRegressor
sklearn.linear model.SGDClassifier
Clustering
sklearn.cluster.MiniBatchKMeans
sklearn.cluster.Birch (new in 0.16)
PCA (new in 0.16)
sklearn.decompositions.IncrementalPCA
G Varoquaux 26
50. 2 On-the-fly data reduction
Many features
⇒ Reduce the data as it is loaded
X s m a l l = e s t i m a t o r . t r a n s f o r m ( X big , y)
G Varoquaux 27
51. 2 On-the-fly data reduction
Random projections (will average features)
sklearn.random projection
random linear combinations of the features
Fast clustering of features
sklearn.cluster.FeatureAgglomeration
on images: super-pixel strategy
Hashing when observations have varying size
(e.g. words)
sklearn.feature extraction.text.
HashingVectorizer
stateless: can be used in parallel
G Varoquaux 27
53. 3 Community-based development in scikit-learn
Huge feature set:
benefits of a large team
Project growth:
More than 200 contributors
∼ 12 core contributors
1 full-time INRIA programmer
from the start
Estimated cost of development: $ 6 millions
COCOMO model,
http://www.ohloh.net/p/scikit-learn
G Varoquaux 29
54. 3 Many eyes makes code fast
L. Buitinck, O. Grisel, A. Joly, G. Louppe, J. Nothman, P. Prettenhofer
G Varoquaux 30
55. 3 6 steps to a community-driven project
1 Focus on quality
2 Build great docs and examples
3 Use github
4 Limit the technicality of your codebase
5 Releasing and packaging matter
6 Focus on your contributors,
give them credit, decision power
http://www.slideshare.net/GaelVaroquaux/
scikit-learn-dveloppement-communautaire
G Varoquaux 31
56. 3 Quality assurance
Code review: pull requests
Can include newcomers
We read each others code
Everything is discussed:
- Should the algorithm go in?
- Are there good defaults?
- Are names meaningfull?
- Are the numerics stable?
- Could it be faster?
G Varoquaux 32
57. 3 Quality assurance
Unit testing
Everything is tested
Great for numerics
Overall tests enforce on all estimators
- consistency with the API
- basic invariances
- good handling of various inputs
G Varoquaux 33
58. Make it work, make it right, make it boring
G Varoquaux 34
59. 3 The tragedy of the commons
Individuals, acting independently and rationally accord-
ing to each one’s self-interest, behave contrary to the
whole group’s long-term best interests by depleting
some common resource.
Wikipedia
Make it work, make it right, make it boring
Core projects (boring) taken for granted
⇒ Hard to fund, less excitement
They need citation, in papers & on corporate web pages
G Varoquaux 35
60. 3 The tragedy of the commons
Individuals, acting independently and rationally accord-
ing to each one’s self-interest, behave contrary to the
whole group’s long-term best interests by depleting
some common resource.
Wikipedia
Make it work, make it right, make it boring
Core projects (boring) taken for granted
⇒ Hard to fund, less excitement
They need citation, in papers & on corporate web pages
+ It’s so hard to scale
User support
Growing codebase
G Varoquaux 35