Resources for Beginners
Summary
Some resources for people interested in contributing code or starting ML research/applications
DynaML aims to make a versatile and powerful data analysis and machine learning toolkit available as a shell and runtime environment. As is the case with any tool, relevant background and knowledge is crucial in order to yield its power. This post is intended to be a starting point for online resources which are relevant to DynaML.
Machine Learning¶
Machine Learning refers to the ability to make predictions and decisions from data. It is a field that has evolved from the study of pattern recognition and computational learning theory in artificial intelligence.
Machine Learning theory and applications lie at the intersection of a number of concepts in the domains of Mathematics, Physics and Computer Science. It is no surprise that machine learning is a rich and deep domain with much intellectual and practical rewards to offer to the persistent and observant student.
The following is a non-exhaustive list of educational resources for learning ML.
Online Courses¶
- Andrew Ng's famous course on Coursera.
- Intro to Machine Learning at Udacity
- Machine Learning: MIT Open Course Ware
Videos/Youtube¶
- Machine Learning Playlist by mathematicalmonk
- Machine Learning Course by caltech
Books¶
- Bayesian Reasoning and Machine Learning by David Barber
- Machine Learning: A Probabilistic Perspective by Kevin P. Murphy
- Pattern Recognition and Machine Learning by Christopher Bishop
- Understanding Machine Learning: From Theory to Algorithms by Shai Shalev-Shwartz and Shai Ben-David
- The Elements of Statistical Learning: Data Mining, Inference, and Prediction by Trevor Hastie, Robert Tibshirani and Jerome Friedman
Forums¶
- How do I learn machine learning on Quora
Blogs¶
- Deepmind Blog
- Cortana Blog
- Shakir Mohammad's Blog
- Darren Wilkinson's research blog
- John's Langford's Blog.
- Kyle Kastner's Blog
- Sander Dieleman's Blog
Programming Environment: Scala¶
Scala is the implementation language for DynaML, it is a hybrid language which gives the user the ability to leverage functional and object oriented programming styles. Scala code compiles to Java byte code giving Scala complete interoperability with Java, i.e. you can use Java libraries and classes in Scala code.
The Java Virtual Machine which executes byte code is the run time for the complete Java ecosystem. This enables Scala, Java, Groovy and Clojure programs to run on a common platform, which is a boon for Machine Learning applications as we can leverage all the libraries in the Java ecosystem.
Learning Scala can be a significant investment as the language has a large number of features which require varying levels of skill and practice to master. Some resources for learning Scala are given below.
Courses¶
- Functional Programming Principles with Scala by Martin Odersky.
- Functional Program Design in Scala by Martin Odersky.