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. |
|
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.
|
|
|