This course covers the computational principles and techniques that
enable software systems to improve their performance by learning from
data. The focus is on fundamental algorithms, mathematical models and
programming techniques used in Machine Learning. Topics include:
different learning settings (such as supervised, unsupervised and
reinforcement learning), various learning algorithms (such as decision
trees, neural networks, k-NN, boosting, SVM, k-means) and crosscutting
issues of generalization, data representation, feature selection,
model fitting and optimization. The course covers both theory and
practice, including programming and written assignments that use
concepts covered in lectures.
Strong programming ability (CS 315), basic probability and statistics
(STAT 281), and basic concepts of linear algebra (MA/CS 321 or MA/CS
322), or instructor's consent.
Students should know Python or MATLAB and have the ability to learn
how to use new software libraries with limited instruction. Students
should know the following mathematical concepts: calculus (partial
derivatives), probability (basic rules of probability), and linear
algebra (matrix multiplication and inverse). A quick review will be
provided as these concepts are used, but please ask the instructor if
you are unsure if you have sufficient experience.