CS760, Fall 2017
Department of Computer Sciences
University of Wisconsin–Madison
Machine Learning is concerned with computer programs that automatically improve their performance through experience (e.g., programs that learn to distinguish between images of cats and dogs, analyze the sentiment behind text data, and play games like Go and Starcraft). This course provides an introduction to the theory and practical methods for machine learning, and is designed to give a graduate-level student a thorough grounding in the methodologies, mathematics and algorithms of machine learning. Topics covered include nearest neighbor method, decision tree learning, Support Vector Machines, Bayesian networks, neural networks, unsupervised learning and reinforcement learning. The course covers theoretical concepts such as inductive bias, the PAC learning framework, Bayesian learning methods, mistake bounds, etc. Assignments include some written exercise and short programming experiments with various learning algorithms.
Students entering the class are expected to have a background knowledge of probability, linear algebra, and calculus, and have good programming experience.
The grading for the course will be be based on:
The following policies are adapted from Mark Craven's CS760 Fall 2016 Course and David Page's CS760 Spring 2017 Course.
All homework assignments must be done individually. Cheating and plagiarism will be dealt with in accordance with University procedures (see the Academic Misconduct Guide for Students). Hence, for example, code for programming assignments must not be developed in groups, nor should code be shared. You are encouraged to discuss with your peers, the TAs or the instructor ideas, approaches and techniques broadly, but not at a level of detail where specific implementation issues are described by anyone. If you have any questions on this, please ask the instructor before you act.
You can use C, C++, Java, Perl, Python, Matlab, or R for the homework assignments. Your program must be executable from the command line, however. In general, third-party libraries may not be used. You must use only the standard libraries for the chosen language, or exceptions approved by the instructor. Code must compile and run on the Computer Science Department Linux servers.
Projects must be done in groups of 3-5 people and will be due (pdf report and submission of any code written) to the instructor by email, by the project deadline. Late days cannot be used for the project because it needs time to grade them all by the end of exam week, in order to compute final grades on time. Projects should be proposed by the proposal deadline (this is expected to be around the midterm and will be specified in class). The basis for the project grade will be your written report. The report should be in the style of a conference paper, providing an introduction/motivation, discussion of related work, a description of your work that is detailed enough that the work could be replicated, and a conclusion. The format of the description of your work will depend on the nature of your project. If it is an implementation, then the description should make clear the algorithm(s) implemented and provide experimental results. If it is an application project, the description should say which system was used, how the data (or any other materials used) were collected, what experimental methodology was employed, and some estimate of the quality of the experimental results (e.g. a 10-fold cross-validation accuracy estimate). If it is a theoretical project, then the project description should consist of detailed definitions, theorems, and proofs.