Neural Network Categorical Inputs - 200k Inputs I am building a neural network and one of the inputs is a unique customer number.  There are about 200k customers and it is important that they are an input.  What is the best way to prepare these as inputs in my model? Is 200k 1-of-C categorical inputs the best way to do it?
 A: You could do that, but I doubt your results would be useful unless you have a lot of training data to support your model. Details would help.
I might treat each customer as an entity that has one or more values. These may be seeded and/or inferred by other datasets, but for training purposes each value is a weight per customer. So you map your customer into maybe 5 continuous variables, not 24 dense binary ones or god forbid 200k sparse binary ones! This approach requires you somehow seed and tune each customer's state, of course.
A: Did you try decision trees or random forest? You can change all categories to the numbers and than apply them into the model. Using this approach you will have just 1 dimension for categories instead of 200k dimensions and that would be computationally cheaper. Probably your results would be worse, because numbers assume some kind of ordering in categories (decision tree should split those categories into a huge amount of leaves), but it could be a good starting point. In my experience random forest shows pretty good results in cases where some columns have huge amount of categories. Of course, It's not always work, but it's definitely better to try something simple instead of using NN with a huge number of connections.
It could be even simpler if you use only customer number in prediction model. You can try predict the average values using sales history related to that customer (that should be actual prediction for decision tree if you use just one categorical variable). At least it could be a good benchmark.
Also it's not a good practice to use all categories for testing first approaches. You can make a sample that contains maybe 1000 categories and then you can test different algorithm much faster and identify some typical problems for different approaches.
