Take the 2-minute tour ×
Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. It's 100% free, no registration required.

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

share|improve this question
    
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
show 3 more comments

2 Answers 2

up vote 2 down vote accepted

This is supervised learning with a vector-valued output, i.e. learning a vector to vector mapping. There's a large literature on this in the neural network community. One application is generating control signals for a physical device (e.g. pointing a camera based on visual input). Here's a typical reference:

Suh, I.H. and Kim, T.W. Fuzzy membership function based neural networks with applications to the visual servoing of robot manipulators. IEEE Transactions on Fuzzy Systems, 2(3):203-220, 1994.

From another angle, this can be viewed as multitask learning, a currently popular area in machine learning. If one knows more about constraints among the output values, then it could usefully be viewed as a structured prediction problem, also recently popular.

share|improve this answer
add comment

Without going into detail about your example, this seems to be a multiclass prediction problem. As the outputs are on a range of possibilities, instead of counting mistakes (0-1 loss), you can pick a desirable loss function for your application (especially if you're in the non-realizable case) and then a suitable learning algorithm. Because you have two outputs, you can make each prediction separately to make things simpler.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.