**CMSC422: Machine Learning**
This is archived version of the Fall 2018 offering of the class
Welcome to CMSC422: Machine Learning!
It's an exciting time to study machine learning! This course is a broad overview of methods for machine learning and an introduction to adaptive systems. We will cover: supervised learning, unsupervised learning, learning theory, deep learning, and reinforcement learning.
*[Confused on a topic? Submit it here!](https://docs.google.com/forms/d/e/1FAIpQLSd-I8H_bdh2KUgTXDwxpd7WgC1J6eCTThu8uZavaqBileSk9A/viewform)*
- **11/24/18** [Deep Learning (Extra Credit) project](projects/extra-credit.html) has been posted! It will be due 12/14 at 11:59PM.
- **11/20/18** [Project 3](projects/linear-to-nonlinear.html) has been posted! It will be due 12/10 at 11:59PM.
- **11/05/18** [Problem Set 3](psets/pset03.pdf) has been posted! It will be due 11/07 by start of class.
- **10/01/18** [Problem Set 2](psets/pset02.pdf) has been posted! It will be due 10/15 at 11:59PM.
- **09/22/18** [Project 2](projects/clustering-pca.html) has been posted! It will be due 10/15 at 11:59PM.
- **09/16/18** Submit your Project 1 code on ELMS. See [Project 1](projects/decision-trees.html) for details
- **09/03/18** [Project 1](projects/decision-trees.html) parts b and c have been released!
- **08/29/18** [Problem Set 1](psets/pset01.pdf) has been posted! It will be due 9/17 at 11:59PM.
- **08/29/18** [Project 1](projects/decision-trees.html) has been posted! The second portion of the project will be released by 9/3. It will be due 9/17 at 11:59PM.
- **08/28/18** [Project 0](projects/setup.html) has been posted! This will not be turned in for a grade.
- **08/25/18** We look forward to meeting you on Monday 8/27 at 3:30pm!
The projects for the course are linked below.
Set up the environment necessary on your computer to complete the projects in this class.
Implement your own decision tree algorithm and use it for inference on a real-life titanic dataset.
[Clustering and PCA](projects/clustering-pca.html)
Implement K-means clustering and PCA and use these algorithms on a real-life dataset.
[Linear to Nonlinear](projects/linear-to-nonlinear.html)
Implement, analyze, and interpret perceptrons, SVMs, and neural networks, and apply them to canonical prediction tasks.
[Deep Learning (Extra Credit)](projects/extra-credit.html)
Train a deep neural network with PyTorch for activity recognition, and write a report documenting your work.
# Problem Sets
Please write or type your answers on a separate document and export into PDF form. See [assignment details](#assignments) for submission information.
- [Problem Set 01](psets/pset01.pdf)
- [Problem Set 02](psets/pset02.pdf)
- [Problem Set 03](psets/pset03.pdf)
**Please check the class Piazza for the latest slides.** The following list of lectures is not guaranteed to be up to date.
Mon 27 Aug 2018: Welcome
- [**Lecture slides**](https://piazza-resources.s3.amazonaws.com/jl2b00mpen3au/jlcu3erfdj9456/CMSC422Introduction.pdf)
- Class objectives
- Why ML now
- Review [Math4ML](http://users.umiacs.umd.edu/~hal/courses/2013S_ML/math4ml.pdf)
Wed 29 Aug 2018: Decision Trees I
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jlfoziomqhb1/CMSC422DecisionTreesI.pdf)
- Heuristic search
- Inductive bias
- Occam's razor
Wed 5 September 2018: Decision Trees II
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jlqr8gv463x/CMSC422DecisionTrees2.pdf)
Mon 10 September 2018: KNN and Clustering
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jlwwhq9hpwaa/CMSC422KNNClustering.pdf)
- Unsupervised learning
- Distance metrics (l1, l2, max norm)
- Voronoi diagrams
- Computational geometry
- Decision boundaries
- Epsilon ball nearest-neighbors
- Weighted voting
- Curse of dimensionality
- Hierarchical clustering
Wed 12 September 2018: Augmenting Human Decisionmaking *(Optional)*
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jlzztlu8n4wl/REGLI_UMDNew_Type_of_Thinkingfor_Turing.pdf)
- [Archived video](https://www.youtube.com/watch?v=8gVMTcPxsYU)
- Personal bio
- UMD ISR
- Case study: manufacturing
- New relationship with data
- Limitless computing
Mon 17 September 2018: Kalman Filters and Linear Regression
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jm714nrqm4az/CMSC422RegressionKalman.pdf)
- [Introduction to Kalman Filter](https://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf)
- [Visual Tutorial to Kalman Filter](https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/)
- [Visual Demo of Kalman Filter](https://youtu.be/Jq8HcIar68Y?t=5m35s)
- Linear regression
- Least squares
- Loss surface
- Multivariate regression
- Non-linear basis functions
- Kalman filter
- Prediction-correction cycle
Wed 19 September 2018: Principal Component Analysis
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jmbcujx4jc70/CMSC422HomworkReviewPCA.pdf)
- [PCA Tutorial](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jmbcvr57rstu/principal_components.pdf)
- [Short PCA Primer](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jmbcvykxqtof/pcaprimer.pdf)
- Dimensionality reduction
- Principal components
- Eigenvalue interpretation
- Hyperparameter (k)
Mon 24 September 2018: Review
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jmhwxlt4hdgk/CMSC422ExamReviewHmwk2.pdf)
- Information gain
- Hierarchical clustering
- Kalman Filter
- Linear regression
- Decision trees
- Hypothesis space
10 October 2018: Perceptrons
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jn9f4p17wi31/CMSC422Perceptrons.pdf)
- Linear threshold
- Hebbian learning
- Perceptron learning rule
- Perceptron convergence theorem
- XOR problem
17 October 2018: Support Vector Machines
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jnfyd7uxldvb/CMSC422SVMs.pdf)
- Maximum margin
- Support vectors
- Lagrange multipliers
- Primal dual
22 October 2018: PAC Learning and VC Dimension
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jntb4o0banvp/CMSC422PACandVC.pdf)
- Learning theory
- PAC Learning
- VC Dimension
- Hypothesis class
- True error
24 October 2018: Neural Nets
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jnrlcnp21tu/CMSC422MultilayerPerceptronstoNeuralNets.pdf)
- Multilayer perceptron
- Universal approximator
- Feedforward net
- Activation functions
- Sigmoid function
- Chain rule
- Gradient descent
29 October 2018: Kernel Methods
- [**Lecture slides**](https://d1b10bmlvqabco.cloudfront.net/attach/jl2b00mpen3au/jl2b0jnvzgn3hf/jntbddv8l7ln/CMSC422KernelTrick.pdf)
- Non-linearly separable data
- Feature mapping
- Kernel methods
- Inner product
- Mercer's condition
- Radial basis functions
- Kernel trick
31 October 2018: Neural Computing
- [**Lecture video 1**](https://www.ted.com/talks/jeff_hawkins_on_how_brain_science_will_change_computing)
- [**Lecture video 2**](https://www.youtube.com/watch?v=zVGQeFFjhEk)
- Memory-prediction framework
- Cortical columns
- Situated capture
# Course Information
## Time and Location
MW 3:30pm - 4:45pm, [ESJ 2204](https://esj.umd.edu/)
## Office Hours
Name | Day | Time | Location | Email |
William Regli | Wednesday | 2:00pm - 3:30pm | 2173 AVW | email@example.com |
John Kanu | Friday | 10:00am - 12:00pm | 4101/4103 AVW | firstname.lastname@example.org |
Jason Fan | Tuesday/Thursday | 9:45am - 10:45am | 4101/4103 AVW | email@example.com |
Kevin Chen | Friday | 12:00pm - 2:00pm | 3164 AVW | firstname.lastname@example.org |
## Course Materials
- Maryland students: [Piazza](http://piazza.com/umd/fall2018/cmsc422)
- [A Course in Machine Learning, Hal Daumé III](http://ciml.info/)
Students are expected to have the following background::
- CMSC320: Introduction to Data Science
- MATH240 or MATH461: Introduction to Linear Algebra
- CMSC330: Organization of Programming Languages
- CMSC351: Introduction to algorithms
There will be *five* assignments, *two* midterms, and *one* final.
Assignments must be submitted through the class [Gradescope](https://gradescope.com). Use the code 9ZZKKR to sign up for the course.
## No Late Assignments
The instructors and the teaching assistants reserve the right to not accept late homework. Homework problems may be reviewed in the class in which they are due, rendering late homework unacceptable as the answers are then given.
## Honor Code
We encourage students to form study groups, but each student must independently work on their own solutions without referencing information from another student or outside source.