Your SlideShare is downloading. ×
Machine learning-with-f sharp
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Machine learning-with-f sharp


Published on

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. © Mathias Brandewinder / @brandewinder Machine Learning on .NET F# FTW!
  • 2. © Mathias Brandewinder / @brandewinder A few words about me »Mathias Brandewinder / @brandewinder »Background: economics, operations research ».NET developer for 10~ years (C#, F#) »Bay.Net San Francisco, »
  • 3. © Mathias Brandewinder / @brandewinder I am assuming… »Few familiar with F# »Mostly unfamiliar with Data Science / Machine Learning »Mostly familiar with OO languages (C#, Java) »Some familiar with Functional Languages
  • 4. © Mathias Brandewinder / @brandewinder Why this talk »Machine Learning, Data Science are red-hot topics › ... and relevant to developers ».NET is under-represented »ML is also for developers!
  • 5. © Mathias Brandewinder / @brandewinder My 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
  • 6. © Mathias Brandewinder / @brandewinder What is F#? »Functional first, statically typed language »Cross-platform: Windows, iOS, Linux »Open-source ( »Think lighter Scala? Python with types? »Very friendly community (Twitter #fsharp)
  • 7. © Mathias Brandewinder / @brandewinder What 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]
  • 8. © Mathias Brandewinder / @brandewinder In 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
  • 9. © Mathias Brandewinder / @brandewinder The plan »Classification »Regression »Unsupervised »Type Providers »Existing .NET libraries »Algebra »Functional fit
  • 10. © Mathias Brandewinder / @brandewinder Classification & Regression
  • 11. © Mathias Brandewinder / @brandewinder Goal »What does “a day of Machine Learning” look like? »Illustrate Classification and Regression
  • 12. © Mathias Brandewinder / @brandewinder Classification, 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
  • 13. © Mathias Brandewinder / @brandewinder Support Vector Machine »Classic algorithm »Tries to separate the 2 classes by the widest possible margin »Using Accord.NET implementation
  • 14. © Mathias Brandewinder / @brandewinder Demo: Kaggle Digit Recognizer
  • 15. © Mathias Brandewinder / @brandewinder Take-Aways »F# is a first-class citizen in .NET »Good libraries: Accord.NET, Math.NET, Alea.cuBase, … »Interactive experience with the REPL »Syntax matters! »Classification, Regression, Cross-Validation
  • 16. © Mathias Brandewinder / @brandewinder Unsupervised
  • 17. © Mathias Brandewinder / @brandewinder Goal »Illustrate unsupervised learning »Functional programming and ML are a great fit
  • 18. © Mathias Brandewinder / @brandewinder Writing your own »Usually not advised »Useful for ML because › Active research: you might not have a library yet › As you learn your domain, you may need a custom model
  • 19. © Mathias Brandewinder / @brandewinder Most ML algorithms are the same »Read data »Transform into Features »Learn a Model from the Features »Evaluate Model quality
  • 20. © Mathias Brandewinder / @brandewinder Translates well to FP »Read data »Transform into Features -> Map »Learn a Model from the Features -> Recursion »Evaluate Model quality -> Fold/Reduce
  • 21. © Mathias Brandewinder / @brandewinder Focus on transforms, not objects »Need to transform rapidly Features › Don’t force domain to fit algorithm › Morph around the shape of the data, pass functions › Algorithms need to be generic »FP is fantastic for code reuse
  • 22. © Mathias Brandewinder / @brandewinder What is Unsupervised Learning? »“Tell me something about my data” »Example: Clustering › Find groups of “similar” entities in my dataset
  • 23. © Mathias Brandewinder / @brandewinder Example: clustering (1)
  • 24. © Mathias Brandewinder / @brandewinder Example: clustering (2) “Assign to closest Centroid” [Map Distance]
  • 25. © Mathias Brandewinder / @brandewinder Example: clustering (3) “Update Centroids based on Cluster” [Reduce]
  • 26. © Mathias Brandewinder / @brandewinder Example: clustering (4) “Stop when no change” [Recursion]
  • 27. © Mathias Brandewinder / @brandewinder Demo
  • 28. © Mathias Brandewinder / @brandewinder Type Providers
  • 29. © Mathias Brandewinder / @brandewinder No 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
  • 30. © Mathias Brandewinder / @brandewinder Demo »
  • 31. © Mathias Brandewinder / @brandewinder Conclusion
  • 32. © Mathias Brandewinder / @brandewinder F# 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 »Flexible exploration, performance in production »Type Providers: static types, without the pain
  • 33. © Mathias Brandewinder / @brandewinder My recommendation »Take a look at Machine Learning, Data Science »Do it with a functional language »… and preferably, do it using F#
  • 34. © Mathias Brandewinder / @brandewinder Getting involved »Very dynamic community », the F# Foundation »#fsharp on Twitter