ComS 573: Machine Learning
Department of Computer Science
Iowa State University
Spring 2008

Course Information

 

Course Prerequisites

The prerequisites for the course include knowledge of programming, programming language concepts (functional programming, imperative programming, declarative programming, object-oriented programming, recursion, abstract data types), discrete mathematics (set theory, graph theory, logic), calculus, linear algebra, basic probability theory and statistics, and data structures (lists, trees, graphs etc.) and algorithms (design and analysis). These topics are covered in Com S 311, 362 and and Stat 330. In addition, students are expected to have the writing and presentation skills necessary for preparing written reports and presentations based on term projects. These skills are taught in Engl 105, Sp Cm 212.

The laboratory assignments will require you to program in Java. If you do not know Java already, you are expected to quickly acquire a working knowledge of Java on your own. We will use the open source machine learning programming environment Weka for the assignments. You are expected to familiarize yourself with Weka.

If you are not sure whether you have the necessary background, please talk to the instructor.

Target Audience

This course is targeted to beginning graduate students in Computer Science, Bioinformatics and Computational Biology, Statistics, Mathematics, Electrical and Computer Engineering, Chemical and Biological Engineering, Industrial Engineering, Material Science and Engineering, Neuroscience, Human-Computer Interaction, Psychology, Business and related disciplines, and qualified undergraduate students, especially those in the honors program at Iowa State University

Course Objectives

The course aims to provide an introduction to the basic principles, techniques, and applications of Machine Learning. Programming assignments are used to help clarify basic concepts.

The course covers the principles, design and implementation of learning programs that improve their performance on some set of tasks with experience. Upon successful completion of the course, students will have a broad understanding of machine learning algorithms and their use in data-driven knowledge discovery and program synthesis. Students will have designed and implemented several machine learning algorithms in Java. Students will also be able to identify, formulate and solve machine learning problems that arise in practical applications. Students will have a knowledge of the strengths and weaknesses of different machine learning algorithms (relative to the characteristics of the application domain) and be able to adapt or combine some of the key elements of existing machine learning algorithms to design new algorithms as needed. You will have an understanding of the current state of the art in machine learning and be able to begin to conduct original research in machine learning.

 

Textbook

The recommended textbook for the course is:
  • Bishop, C. (2006). Pattern Recognition and Machine Learning. Berlin: Springer-Verlag.

The course will often draw upon a variety of additional references and readings to supplement the treatment of topics available in the primary textbook. Students should consult the weekly study guide for specific reading assignments. Additional references are:

  • Duda, R., Hart, P., and Stork, D. (2001). Pattern Classification. New York: Wiley.
  • Hastie, T., Tibshirani, R., and Friedman, J. (2001). The elements of Statistical Learning - Data Mining, Inference, and Prediction. Berlin: Springer-Verlag.
  • Mitchell, T. (1997). Machine Learning. New York: Mc Graw-Hill.
     

Syllabus

The following gives a tentative list of topics to be covered in the course (not necessarily in the order in which they will be covered):

  • Review of probability theory, information theory.
  • Bayesian decision theory.
  • Maximum-Likelihood and Bayesian parameter estimation.
  • Naive Bayes Classifier
  • Nearest neighbor methods
  • Linear models
  • Decision trees
  • Neural networks
  • Support vector machines
  • Bayesian networks,
  • Hidden Markov models
  • Ensemble classifiers.
  • Clustering
  • Computational learning theory
  • Reinforcement learning
  • Selected applications in data mining, automated knowledge acquisition, pattern recognition, program synthesis, text and language processing, internet-based information systems, human-computer interaction, semantic web, and bioinformatics and computational biology.