# 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. – Dave Clarke Dec 23 '11 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 Dec 23 '11 at 10:46
• You can probably post-process the output to get rid of obvious junk. – Dave Clarke Dec 23 '11 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 Dec 23 '11 at 12:04
• What if you simply tried to use linear regression? – Jukka Suomela Dec 23 '11 at 12:05