CS 478 – Introduction to Machine Learning

 

Winter 2015, TuTh 1:35-2:50pm, B114 MARB

Professor: Tony Martinez, 3326 TMCB, 422-6464, Office hours: by appointment

 martinez at cs.byu.edu, http://axon.cs.byu.edu/~martinez

TAs: Logan Mitchell, Chris Tensmeyer, Dean Lebaron, 3304 TMCB, e-mail: cs478ta@cs.byu.edu

Office Hours – Logan: Th 10-11, 12-1, Fri 9am-11

Chris: M 12-2, Tu 12-1:30

Dean: M 2-4, W 3-5

You can also e-mail the TAs for a specific appointment if none of these times work

 Course Website: http://axon.cs.byu.edu/~martinez/classes/478/

 

Goals:  Introduction to the philosophy, utility, and models of machine learning, such that students are able to understand the basic concepts and issues of machine learning.  Students will be prepared to use machine learning approaches in real world applications and/or to continue in a graduate research program.  Topics covered include neural networks, decision trees, instance based learning, data mining, feature selection, clustering, performance measures, etc.

 

Text:  The text for the class is Machine Learning: An Algorithmic Perspective by Stephen Marsland. We will cover much of the text following the provided schedule. You are responsible for reading the material for a given day prior to that day's lecture. Because class time is limited, we may not cover everything in the text. However, except where specifically noted, you are responsible to know the entirety of each chapter assigned.  There will also be supplemental required readings made available on the schedule.  To help encourage quality reading, I will pass around a sheet each day for you to mark whether you have done a complete and careful reading, a partial reading, or no reading.  Each day you will mark if you have done the reading for the lecture to be given that day.  If you are absent a day, fill in later what your reading status would have been for that day.  The grading will be non-linear such that missing one or two readings does not hurt much, but it picks up fast after that.

 

One nice thing about this book is that once you have bought it you can also access an electronic version on your computer and/or mobile devices.  You just create an account at http://bookshelf.vitalsource.com and enter the code number in the front leaf of your book. When you access your copy you may also subscribe with my e-mail address above and see my copy with yellow highlighted notes where I have corrected errors or added insights in a few areas where appropriate.  You may also download free apps from the site to your computer or mobile device to have off-line access which syncs whenever you are on-line.

 

Programming Projects and Assignments:  Assignments will be in the form of programming projects and an associated written report.  For a  number of the machine learning models we study in depth, there will be a programming project involving the implementation of the model and experimentation with its abilities on one or more learning tasks. Much of the learning for this class will come in the development, experimentation, and analysis of the specific models. These programming projects will help you gain not only a mastery of the models themselves but also a beginning understanding of the major issues involved in designing machine learning solutions.  By the end of the course, you will have developed a suite of machine learning algorithms that will be usable (and useful) in the future. A written report will also be due describing your efforts, results and conclusions. Details for what is expected in the reports are found at the projects page.  The last project (Clustering) is optional.  If you do it, it will replace the lowest score of your previous 4 projects (up to a maximum 40 points of net increase).

 

Final Group Project:  We will break into groups of 2-4 people each to do a group project. A month into the semester, we will have you propose real world machine learning projects which could be done in a semester.  We will then vote as a class on the projects we feel most appropriate.  I will then assign the groups based on your project preferences (as best as I can).  Each group will then a) gather and prepare data for the application, b) select a machine learning approach(es), c) train the model and gather results, d) consider and implement ways to improve the results, e) write-up the work as a conference style paper and f) give an oral presentation.  More details can be found in projects.

 

Tests: There will be one mid-term (administered in the testing center) and one final (administered in class). They will consist of written problems testing your understanding of the machine learning models and issues covered in class. If you put in the effort on reading, class discussion, and programming projects, then the tests should go well for you. More information can be found in the exam study guide.

 

TAs:  We have tried to stagger the TA hours to give best possible coverage.  If you cannot make any of those times, e-mail the TAs to set up an appointment.  When you have questions regarding content of the class, assignments, or grading, please see the TAs first as that is their specific responsibility. Appealing grades on projects and on tests begins with you. Make an effort to understand why you received the score that you did and make sure that you have a good reason to appeal. If after making these efforts, you still feel like you have a concern, the next step is to calmly and intelligently discuss it with the TA.  Don’t wait until the end of the semester to appeal a grade.  If after taking both of these steps you still are not satisfied, come see me.  Make sure you have done the reading and tried your best to understand the problem.  If you have done this, then the question and answer effort will be effective. 

 

Grading: If you think, you'll be all right. Class attendance and participation is expected. This is not because I feel the need to have students in class; instead, it is because your attendance and participation leads to a better learning experience.  You can see most of your grades on BYU learning suite to make sure your assignment was graded, but ignore any grade scales given there as they are not correct.  The scales below are approximately correct but I reserve the right to adjust slightly based on circumstances.  The grade scale is based on the sum of all your grades.

 

Reading

5%

Individual Projects

42%

Group Project

10%

Mid-term

21%

Final

22%

 

90-100

A

86-90

A-

83-86

B+

80-83

B

76-80

B-

73-76

C+

70-73

C

67-70

C-

 

Late Policy:  For projects you will be allotted a total of 4 late days throughout the semester (hopefully, you will not need any of them).  As an incentive, 1 extra point (out of 100, and up to a maximum of 4 points) will be allotted for each day (excluding Sunday) you turn in a project earlier than the due date.  If/after you use up your 4 day allotment, late projects will be marked off at 5%/day late (excluding Sundays) up to a maximum of 50% off.  Each late day ends at midnight.  Finally, if you have any extremely unusual circumstances (sickness, or issue very unique from what all the other students have, etc.), which you inform us of, then we will not take off any late points for homework or projects (this should be rare).  Nothing can be accepted after the last day of class instruction.

 

Working Together:  You may discuss course topics together with other members of the class to enhance your understanding of the topics.  However, do NOT turn in other people's work. This is a fine line that may require some judgment on your part.  If you are not sure about a particular situation just come ask. Examples of acceptable collaboration are discussing homework and programming problems and potential solution paths with others in the class, and comparing learning results and conclusions from programming projects with other class members. Unacceptable collaboration would be simply copying homework, code or test answers from a friend or allowing someone else to copy homework, code or test answers.  When you start writing actual code, reports, etc., the work should just be yours.  Academic dishonesty will be grounds for failure of the course; however, I do not anticipate that we will have any problems in this area.

 

We will set up a class discussion group (Google group) which you can sign up for if you would like.  You can use this group to post questions and discussion with your class mates.  The TAs will also monitor this group and answer questions which come up.  This is a good place to post and ask about performance results so you can see if your solution is in the “ballpark.”  This is also a good place to discuss high level algorithmic issues etc.  Obviously, actual code or detailed pseudocode should not be published on this group.

 

Schedule:

Projects and Assignments

University Legal Issues: