# Training a function that maps n-dim to n-dim

As an example, say the input is an array of numbers representing an audio snippet and the output is a transformed/filtered version of it.

What would be the proper name for that? Which are examples of algorithms for the job?

EDIT: More specifically, I want to train audio source separation. The input is a mixed sound (spectrogram) and the output is the sound with some energy removed in certain frequencies. The function needs to recognize some pattern in the input and decide what to remove.

• How is the output related to the input, other than being of the same dimension? What are you trying to do?
– Emre
Jan 15 '15 at 4:18
• neural networks have been trained for filtering. Jan 19 '15 at 20:34

I would call a mapping between N dimensional input and N dimensional output a regression problem.

If you add more constraints about the relation between the input and output it might be called different names: linear filtering, nonlinear filtering, etc...

some examples on common techniques for that would be: neural networks, regression trees, regularised regressions...

N_dimension input - n_dimension output is a too general description. You could think of it as a regression problem where you predict multi-dimensional output.

But also it could be the case that you are solving multiclass-classification problem:

input: n features

output: vector which defines class membership - either 0's and 1's or the real value which defines degree of membership to the class

Or you could also think of it as of multilabel classification problem:

input: n features

output: vector of 0 and 1 which define which labels are associated with the input.

So in general multi-dimensional output is not telling anything about the matter of task.

You could try 2 approaches to solve the task which involves multi-dimensional output:

1) One-vs-rest or one-vs-one strategies (or their variations) where for each 'part' (dimension) of the output you train separate classifier or separate regressor.

2) Neural network with multiple output neurons. I would suggest to try it after trying #1, neural networks are complicated, computing-expensive and maybe somewhat clumsy - so far, I wasn't able to construct neural network which would outperform other models in specific tasks I tried to solve. But of course, this is my personal opinion about NN. In your case they may really shine.