# What kind of machine learning is this?

The objective is to build a classifier that produces M correct outputs when given N inputs.

Let a "sample" be M outputs and N inputs. Each output is some function some of the N inputs but the functions are not given. You only know that some of the N inputs can possibly combine to produce each of the M outputs.

Several samples are available for the machine learning algorithm to learn from, and in each sample, the functions for each output produced from what input sets are the exactly same.

It sounds like supervised learning but it doesn't seem to match exactly.

I'll provide an example:

__Sample 1:

Inputs: people = 6; salary = 100

outputs: width = 600; height = 100

__Sample 2:

Inputs: people = 3; salary = 60

outputs: width = 180; height = 60

__Sample 3:

Inputs: people = 5; salary = 101

outputs: width = 505; height = 101

The correct functions are then: width = people * salary; height = salary

• Such functions can be learned using genetic programming. An application very close to this is described in the book: Programming collective intelligence: building smart web 2.0 applications by Toby Segaran. Commented Dec 23, 2011 at 9:21
• Wow genetic programming is awesome! I downloaded pyevolve and it can classify my example almost perfectly! The only imperfection being some junk in the functions; e.g. making functions like a * b + b - b instead of a * b.
– Eric
Commented Dec 23, 2011 at 10:46
• You can probably post-process the output to get rid of obvious junk. Commented Dec 23, 2011 at 11:02
• I found a way that seems to be working: Get the RMSE of each instance between inputs and outputs, add to it (the number of nodes in the function divided by 100). Two correct functions will have scores e.g. 0.14 and 0.03. One of them contains lots of junk and the other less. Both are preferable to incorrect functions.
– Eric
Commented Dec 23, 2011 at 12:04
• What if you simply tried to use linear regression? Commented Dec 23, 2011 at 12:05