Machine Learning
Machine learning (ML) is a field devoted to understanding and building methods that let machines "learn" โ that is, methods that leverage data to improve computer performance on some set of tasks. Machine learning algorithms build a model based on sample data, known as training data, in order to make predictions or decisions without being explicitly programmed to do so. Machine learning algorithms are used in a wide variety of applications, such as in medicine, email filtering, speech recognition, agriculture, and computer vision, where it is difficult or unfeasible to develop conventional algorithms to perform the needed tasks.
MOOCs
Nowadays, there are a couple of really excellent online lectures to get you started. The list is too long to include them all. Every one of the major MOOC sites offers not only one but several good Machine Learning classes, so please check coursera, edX, Udacity yourself to see which ones are interesting to you.
However, there are a few that stand out, either because they're very popular or are done by people who are famous for their work in ML. Roughly in order from easiest to hardest, those are:
-
Andrew Ng's ML-Class at coursera: Focused on application of techniques. Easy to understand, but mathematically very shallow. Good for beginners!
https://www.coursera.org/course/ml -
Hasti/Tibshirani's Statistical Learning
https://lagunita.stanford.edu/courses/HumanitiesSciences/StatLearning/Winter2016/about -
Yaser Abu-Mostafa's Learning From Data: Focuses a lot more on theory, but also doable for beginners
https://work.caltech.edu/telecourse.html -
Geoff Hinton's Neural Nets for Machine Learning: As the title says, this is almost exclusively about Neural Networks.
https://www.coursera.org/course/neuralnets -
Hugo Larochelle's Neural Net lectures: Again mostly on Neural Nets, with a focus on Deep Learning
http://www.youtube.com/playlist?list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH -
Daphne Koller's Probabilistic Graphical Models Is a very challenging class, but has a lot of good material that few of the other MOOCs here will cover
https://www.coursera.org/course/pgm
Books
The most often recommended textbooks on general Machine Learning are (in no particular order):
-
Hasti/Tibshirani/Friedman's Elements of Statistical Learning FREE
http://statweb.stanford.edu/%7Etibs/ElemStatLearn/ -
Barber's Bayesian Reasoning and Machine Learning FREE
http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage -
MacKay's Information Theory, Inference and Learning Algorithms FREE
http://www.inference.phy.cam.ac.uk/itila/book.html -
Goodfellow/Bengio/Courville's Deep Learning FREE
http://www.deeplearningbook.org/ -
Nielsen's Neural Networks and Deep Learning FREE
http://neuralnetworksanddeeplearning.com/ -
Graves' Supervised Sequence Labelling with Recurrent Neural Networks FREE
http://www.cs.toronto.edu/%7Egraves/preprint.pdf -
Sutton/Barto's Reinforcement Learning: An Introduction; 2nd Edition FREE
https://www.dropbox.com/s/7jl597kllvtm50r/book2015april.pdf
Note that these books delve deep into math, and might be a bit heavy for complete beginners. If you don't care so much about derivations or how exactly the methods work but would rather just apply them, then the following are good practical intros:
-
An Introduction to Statistical Learning FREE
http://www-bcf.usc.edu/%7Egareth/ISL/ -
Probabilistic Programming and Bayesian Methods for Hackers FREE
http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Prologue/Prologue.ipynb
There are of course a whole plethora on books that only cover specific subjects, as well as many books about surrounding fields in Math. A very good list has been collected by /u/ilsunil here
Deep Learning Resources
-
Karpathy's Stanford CS231n: Convolutional Neural Networks for Visual Recognition (Lecture Notes)
http://cs231n.github.io/ -
Video Lecture's Stanford CS231n: Convolutional Neural Networks for Visual Recognition
https://www.youtube.com/playlist?list=PLlJy-eBtNFt6EuMxFYRiNRS07MCWN5UIA -
Silver's Reinforcement Learning Lectures
https://www.youtube.com/watch?v=2pWv7GOvuf0 -
Colah's Informational Blog
http://colah.github.io/ -
Bruna's UC Berkeley Stat212b: Topics Course on Deep Learning
https://joanbruna.github.io/stat212b/ -
Overview of Neural Network Architectures
http://www.asimovinstitute.org/neural-network-zoo/
Math Resources
-
Strang's Linear Algebra Lectures
https://www.youtube.com/watch?v=ZK3O402wf1c -
Kolter/Do's Linear Algebra Review and Reference Notes
http://cs229.stanford.edu/section/cs229-linalg.pdf -
Calculus 1
https://www.edx.org/course/calculus-1a-differentiation-mitx-18-01-1x -
Introduction to Probability
https://www.edx.org/course/introduction-probability-science-mitx-6-041x-1
Programming Languages and Software
In general, the most used languages in ML are probably Python, R and Matlab (with the latter losing more and more ground to the former two). Which one suits you better depends wholy on your personal taste. For R, a lot of functionality is either already in the standard library or can be found through various packages in CRAN. For Python, NumPy/SciPy are a must. From there, Scikit-Learn covers a broad range of ML methods.
If you just want to play around a bit and don't do much programming yourself then things like Visions of Chaos, WEKA, KNIME or RapidMiner might be of your liking. Word of caution: a lot of people in this subreddit are very critical of WEKA, so even though it's listed here, it is probably not a good tool to do anything more than just playing around a bit. A more detailed discussion can be found here
Deep Learning Software, GPU's and Examples
There are a number of modern deep learning toolkits you can utilize to implement your models. Below, you will find some of the more popular toolkits. This is by no means an exhaustive list. Generally speaking, you should utilize whatever GPU has the most memory, highest clock speed, and most CUDA cores available to you. This was the NVIDIA Titan X from the previous generation. These frameworks are all very close in computation speed, so you should choose the one you prefer in terms of syntax.
Theano is a python based deep learning toolkit developed by the Montreal Institute of Learning Algorithms, a cutting edge deep learning academic research center and home of many users of this forum. This has a large number of tutorials ranging from beginner to cutting edge research.
Torch is a Luajit based scientific computing framework developed by Facebook Artificial Intelligence Research (FAIR) and is also in use at Twitter Cortex. There is the torch blog which contains examples of the torch framework in action.
TensorFlow is a python deep learning framework developed by Google Brain and in use at Google Brain and Deepmind. The newest framework around. Some TensorFlow examples may be found here Do not ask questions on the Google Groups, ask them on stackoverflow
Neon is a python based deep learning framework built around a custom and highly performant CUDA compiler Maxas by NervanaSys.
Caffe is an easy to use, beginner friendly deep learning framework. It provides many pretrained models and is built around a protobuf format of implementing neural networks.
Keras can be used to wrap Theano or TensorFlow for ease of use.
Datasets and Challenges for Beginners
There are a lot of good datasets here to try out your new Machine Learning skills.
-
Kaggle has a lot of challenges to sink your teeth into. Some even offer prize money!
http://www.kaggle.com/ -
The UCI Machine Learning Repository is a collection of a lot of good datasets
http://archive.ics.uci.edu/ml/ -
http://blog.mortardata.com/post/67652898761/6-dataset-lists-curated-by-data-scientists lists some more datasets
-
Here is a very extensive list of large-scale datasets of all kinds.
http://www.quora.com/Data/Where-can-I-find-large-datasets-open-to-the-public -
Another dataset list
http://www.datawrangling.com/some-datasets-available-on-the-web
Research Oriented Datasets
In many papers, you will find a few datasets are the most common. Below, you can find the links to some of them.
-
MNIST A short handwriting dataset that is often used as a sanity check in modern research
http://yann.lecun.com/exdb/mnist/ -
SVHN Similar to MNIST, but with color numbers. A sanity check in most cases.
http://ufldl.stanford.edu/housenumbers/ -
CIFAR-10/0 CIFAR 10 and 100 are two natural color images that are often used with convolutional neural networks for image classification.
https://www.cs.toronto.edu/%7Ekriz/cifar.html
Communities
-
http://www.datatau.com/ is a data-science centric hackernews
-
http://metaoptimize.com/qa/ and http://stats.stackexchange.com/ are Stackoverflow-like discussion forums
ML Research
Machine Learning is a very active field of research. The two most prominent conferences are without a doubt NIPS and ICML. Both sites contain the pdf-version of the papers accepted there, they're a great way to catch up on the most up-to-date research in the field. Other very good conferences include UAI (general AI), COLT (covers theoretical aspects) and AISTATS.
Good journals for ML papers are the Journal of Machine Learning Research, the Journal of Machine Learning and arxiv.
Other sites and Tutorials
-
http://datasciencemasters.org/ is an extensive list of lectures and textbooks for a whole Data Science curriculum
-
http://videolectures.net/Top/Computer_Science/Machine_Learning/
FAQ
- How much Math/Stats should I know?
That depends on how deep you want to go. For a first exposure (e.g. Ng's Coursera class) you won't need much math, but in order to understand how the methods really work,having at least an undergrad level of Statistics, Linear Algebra and Optimization won't hurt.
view the rest of the comments
I also want to share some resources.
For Pytorch,
For TPU,