COSC 387: Artificial Intelligence

Project 4
Fall 2004

Due: Nov 19 @ 5 P.M.
13 points

For this project, you can use any programming language for which I have a compiler/interpreter on my machine. This includes clisp, gcc 3.4.2, g++, g77, java 1.4.1, perl 5.6.1, and ruby 1.8.1. Yep, I got Ruby just for you guys. I hope I don't regret this.

  1. Implement a concept generator for the STAGGER Concepts. We talked about this in class, but for time steps 1-40, the generator should generate examples of the concept "small and red". For time steps 41-80, it should be "green or circle". And for time steps 81-120, it should be "small or medium".

  2. Implement STAGGER.

  3. Implement an incremental version of naive Bayes.

  4. Implement Schlimmer's decaying function for both methods. Here's some Lisp code that does it: decay.lisp.

  5. Evaluate the four versions of the algorithms on the STAGGER concepts by training on a single example and testing on 100 examples. Do this for time steps 1-120. At each time step, all algorithms must be trained and tested on the same examples. Run the algorithms ten times, averaging the results at each time step.

  6. Plot your results for the four algorithms. These plots should be accompanied with error bars, which can be standard deviation, variance, standard error, or 95% confidence intervals. The plots must be in a format I can view, so Postscript, PDF, and probably Excel. PDF is safest.

  7. Analyze the results. Which algorithm performed best? Did decaying help naive Bayes? Did STAGGER without decaying outperform both naive Bayes algorithms? What else?

Instructions for Submission

Put everything (source, plots, analysis, Makefile, whatever) in a zip or tar file, and send it to me as an attachment to an e-mail. I don't care what you name the archive, but the name of the archived directory should be your netid.

In a README file, provide the following information:

COSC 387 Project 4
Name
E-mail Address
Platform: Windows, Linux, Solaris (gusun, daruma)
Language: clisp, gcc, g++, etc.

In accordance with the class policies and Georgetown's Honor Code,
I certify that, with the exceptions of the course materials and those
items noted below, I have neither given nor received any assistance
on this project.
Also in this README file, provide instructions so I know how to compile and run your code and your analysis. This applies doubly to you Ruby guys.

You must submit your project before 5 PM on the due date.

When storing source code on university machines, it is important to set file permissions so others cannot read the file. To turn off such read/write permissions, type at the UNIX prompt chmod og-rw <file>, where <file> is the name of your source file.