		Final homework for cs141 fall 1992.

Several students asked for an assignment that provides a little more
flexibility and allows for some creativity.  In this assignment, you
are to come up with an interesting problem involving learning and then
apply one of the learning methods described in class to solve the 
problem. Here are the basic steps involved. 

    I. Problem Description: 
	1. Indicate the input space in terms of features, dimensions, etc. 
	   Essentially provide a language for describing the objects that
	   you are trying to categorize or assign to concepts. 
	2. Define the hypothesis space, e.g., conjunctions of positive
	   literals, decision trees, rule-based systems.
	3. Specify the inductive bias. 
    II. Implementation:
	1. Choose a learning method to implement the specified bias:
		a. gradient search in linear-functions spaces
		b. 3-layer networks with sigmoid units
		c. perceptrons
		d. radial basis functions *
		e. genetic algorithms * 
		f. version spaces
		g. decision trees
	   You may find some help in the files 
		a. linear.lisp
		b. pdp1.lisp, pdp2.lisp, pdp.lisp
		c. perceptron.lisp
		d. radial.lisp
		e. genetic.lisp, classifier.lisp
		f. version.lisp
		g. decision.lisp
	   which can be found in ~tld/cs141
	   
	   * We only briefly mentioned radial basis functions, and, 
	     while I described how genetic algorithms could be 
	     applied to optimization and search, I only sketched 
	     how they could be applied to learning via classifier 
	     systems.  If you choose to work on genetic algorithms
	     and classifier systems, you can get as many as three
	     extra credit points if you do a good job. If you're
	     interested, look at exercise 2 at the end of the handout
	     on simulated annealing and genetic algorithms and then
	     see me about the details. The file ~tld/classifier.lisp
	     provides a good start on building a classifier system.
    III. Evaluation and Testing:
	1. Obtain some data for training and performance evaluation.
	2. Run a series of experiments using separate training 
	   and performance evaluation data. 

Turn in your answers to I.1-3, the code for your implemented learning
system, a listing of the data and how you obtained it, and the results
of your experiments along with an adequate explanation.

The hard questions are `what's an interesting learning problem' and
`where do I get data?'  Here are some possibilities.  Get data from
things you do every day.  For instance, build a learning system that
learns when to compress a file.  Actually, an example of a concept you
might want to learn is `a file won't be accessed for at least 72
hours.'  Features might correspond to file type, directory, file
length, or time since the file was last changed.  Other on-line
problems might have to do with access to machines or networks.  You
could also collect data with regarding to dining halls, the SUN lab,
or the swimming pool, to learn when are good times to eat, work or
play.  In this case, the features might correspond to weather,
semester, proximity to a holiday, or the day of the week. You'll have
to be the final arbiter for `good.'

In this exercise, you have to face the problems of representation head
on.  You can take a relatively easy way out and define a problem that
uses decision trees. Then all the work is in coming up with a problem
and collecting the data.


Due date: this assignment is due on Tuesday December 8.