views:

106

answers:

1

I'm trying to determine how to transform my "meaningful input" into data for an Artificial Neural Network and how to turn the output into "meaningful output".

The way I can always see of doing it is by convering everything to categories with binary values.

For example, rather than outputting age, having a 0-1 for <10, a 0-1 for 10 - 19, etc.

Same with the inputs, where I might be using for example, hair colour. Is the only way to turn this into input to have Blonde 0-1, Brown 0-1, etc?

Am I missing some entire topic of ANNs? Most of the books and similar I read use theoretical examples.

+2  A: 

Your example is spot-on, and is known as discretization. Another method would be to scale your continuous input/output into the 0-1 range. For your other example of hair color, that would be a nominal attribute, so the only real option there is to discretize it as separate inputs per color.

Chris S
I thought this might be the case. I scaled the age for input, but for things like hair colour I am glad that at least one other person sees the same solution as me. :) (But knows the correct term :))
Micheal
Actually, I've been thinking about this and I'm not sure about scaling the age. Scaling wouldn't be able to handle unusual peaks (such as a peak around age 20 and another peak around age 40 with a dip in the middle), if I understand correctly. Is this another call for discretisation?
Micheal
There are different ways to scale a continuous value. I think a linear scaling would preserve the "peaks", but you would have to establish a bounds for your ages. For example, your could set a minimum age of 0 (for obvious reasons) and a maximum age of 100, so that an age of 50 would become 0.5. If you used logarithmic scaling, then you wouldn't need to set explicit bounds, but your distribution might be distorted, making it harder for the NN to make sense of it.
Chris S
That's great. Thanks a lot, Chris.
Micheal