Machine Learning on .NET FTW: A few words about me

Machine Learning on .NET FTW: A few words about me
paly

Mathias Brandewinder discusses his background in economics and operations research and his experience with machine learning on the .NET framework.

About Machine Learning on .NET FTW: A few words about me

PowerPoint presentation about 'Machine Learning on .NET FTW: A few words about me'. This presentation describes the topic on Mathias Brandewinder discusses his background in economics and operations research and his experience with machine learning on the .NET framework.. The key topics included in this slideshow are . Download this presentation absolutely free.

Presentation Transcript


Slide1Machine Learning on.NET F# FTW!

Slide2A few words about me Mathias Brandewinder / @brandewinder  Background: economics, operations research  .NET developer for 10~ years (C#, F#)  Bay.Net San Francisco, SFSharp.org  Yes I have an accent  www.clear-lines.com/blog

Slide3I am assuming… Few familiar with F#  Mostly unfamiliar with Data Science / Machine Learning  Mostly familiar with C#, VB.NET  Some familiar with Functional Languages

Slide4Why this talk Machine Learning, Data Science are red-hot topics › ... and relevant to developers  .NET is under-represented

Slide5My goal Can’t introduce F#, Machine Learning under 1h  Give you a sense for what Machine Learning is › Highlight some differences with “standard” development › Mostly live code  Illustrate why I think F# is a great fit

Slide6What is Machine Learning? "A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E“ [Tom M. Mitchell]

Slide7In English, please? Program performs a Task using Data  The more Data, the better it gets  Rooted in statistics, math  A Computer Science problem as well › Used in live software, with changing data

Slide8The plan Classification  Regression  Unsupervised  Type Providers  Existing .NET libraries  Algebra  Functional fit

Slide9Classification & Regression

Slide10Goal What does “a day of Machine Learning” look like?  Illustrate Classification and Regression

Slide11Classification, Regression Classification = using data to classify items › Ex: Spam vs. Ham, Character Recognition, …  Regression = predicting a number › Ex: predict price of item given attributes, …  Both belong to Supervised Learning › You know what question you are trying to answer › You use data to fit a predictive model

Slide12Support Vector Machine Classic algorithm  Tries to separate the 2 classes by the widest possible margin  Using Accord.NET implementation

Slide13Demo

Slide14Take-aways F# is a first-class citizen in .NET  Decent libraries: Accord.NET, Math.NET, Alea.cuBase, …  Interactive experience with the REPL  Syntax matters!  Classification, Regression, Cross-Validation

Slide15Unsupervised

Slide16Goal Illustrate unsupervised learning  Functional programming and ML are a great fit

Slide17Writing your own Usually not advised  Useful for ML because › You don’t always have a library › As you learn your domain, you may need a custom model

Slide18Most ML algorithms are the same Read data  Transform into Features  Learn a Model from the Features  Evaluate Model quality

Slide19Translates well to FP Read data  Transform into Features -> Map  Learn a Model from the Features -> Recursion  Evaluate Model quality -> Fold/Reduce

Slide20Focus on transforms, not objects Need to transform rapidly Features › Don’t force your domain to fit my algorithm › Morph around the shape of the data, pass functions › Algorithms need to be generic  FP is fantastic for code reuse

Slide21What is Unsupervised Learning? “Tell me something about my data”  Example: Clustering › Find groups of “similar” entities in my dataset

Slide22Example: clustering (1)

Slide23Example: clustering (2)“Assign to  closest  Centroid” [Distance]

Slide24Example: clustering (3)“Update Centroids based on Cluster” [ Reduce ]

Slide25Example: clustering (4)“Stop when no change” [Recursion]

Slide26Demo

Slide27Type Providers

Slide28No data, no learning Most of ML effort is spent acquiring data  Most of the World is not in your Type System  Unpleasant trade-off: › Dynamic: easy hacking but runtime exceptions › Static: safer, but straight-jacket

Slide29Demo

Slide30Conclusion

Slide31F# is a perfect fit for ML on .NET Functional style fits very well with ML  REPL/interactive experience is crucial  Smooth integration with all of .NET  Type Providers: static types, without the pain

Slide32My recommendation Take a look at Machine Learning, Data Science  Do it with a functional language  … and preferably, do it using F#  Workshop this Friday!

Slide33Getting involved Very dynamic community  FSharp.org, the F# Foundation  Machine Learning working group, FsLab.org  Kaggle.com

Slide34Contacting me mathias@clear-lines.com  @brandewinder