CS 349-02:
Machine Learning

Spring 2017, Wellesley College

FAQ

What is Machine Learning?

Machine learning involves designing algorithms that learn patterns from data. It usually refers to systems that make predictions based on large numbers of examples. You have likely used dozens of these systems in your lifetime, such as recommenders that suggest who you should friend or what you should buy online, face recognizers that tag photographs, speech-to-text or translation tools, spelling correction, spam filters, credit card fraud detection tools, weather prediction, or perhaps even automatic medical diagnoses.

Owing to the easy availability of "big data", machine learning is one of the fastest growing fields within CS in academic research as well as industry, and spans problems in algorithms, statistics, and systems engineering.

Here is a gorgeous visual introduction to machine learning in one page.

Why should I take this class?

This course will survey core machine learning ideas and algorithms, and give you a chance to explore their applications to several problem domains.

The objective is for you to gain a critical understanding of which models to use for a problem, and how to design machine learning systems starting from data organization to algorithm design and interpretation of results.

In true liberal arts fashion, we will also pay attention to what these algorithms tell us about human cognition and knowledge, the power and limitations of machine learning, and its societial implications and ethics.

Along the way, I hope you will learn algorithmic, mathematical, and programming concepts that may be useful even if you don't continue working in this area.

Why should I not take this class?

  • You're afraid of math or programming, or
  • You'd like to use machine learning as a black-box tool to analyze data, with some off-the-shelf package like WEKA or scikit-learn. There's nothing wrong with that, and a large amount of machine learning in industry takes this approach. However, it's not what this class is about. We will open up that box, dig deep, and examine all of its messy beauty. I can show you the black-box, off-the-shelf approach in an afternoon if you drop by my office.

What are the pre-requisites?

  • CS 230
  • At least one 200-level MATH course
The course has a fair bit of mathematics (less than MATH courses but more than many CS ones), as well as programming. No specific background knowledge is required, since we'll cover everything in class, but you should be willing to learn new mathematical concepts, and write code independently. Caveat: since a MATH 200-level is a prereq, I do expect you to be comfortable with pre-calc and single-variable calculus.

Programming will be in Python, and the math will mainly draw from linear algebra (basic vector and matrix operations), calculus (computing derivatives), and probability.

If you're wondering if the material is for you, watch these two videos which are a good preview into the kind of ideas ML involves. Of course, it's okay if you don't understand them now! We will build up the tools gradually in the course.

Will we learn [hot-model-everyone-talks-about]?

Probably? Here's an approximate sample of the topics we will cover:

Supervised Learning

  • Perceptron
  • K Nearest Neighbors
  • Logistic Regression
  • Naive Bayes
  • Neural Networks and Deep Learning
  • Support Vector Machines (time permitting)
  • Decision Trees (time permitting)
Unsupervised Learning
  • K-Means Clustering
  • Dimensionality Reduction
  • Expectation Maximization
  • Topic Models (time permitting)
Misc
  • Feature Design and Data Representation
  • Evaluation Metrics
  • Gradient Descent
  • Regularization
  • Distributed Computing for ML (time permitting)