I am working on a model that is supposed to predict how a given order volume distributes over the available articles in a retail scenario. For simplicity's sake, let's say I'm a retailer that buys apples from different farmers and suppliers, and sells them to supermarkets. I don't have all apples at all times, so there's a set of available apple types at any given time. Based on what I can currently offer, and a given predicted volume for apples in general, I need to predict how the volume distributes among my currently available apple sorts.
I have a list of orders with information on time, article, pricing and a few other meta columns.
My current approach is to aggregate these orders by day and article, then construct a binary dataframe to indicate availability, enriched with pricing and discount features.
I then construct a label frame that contains the relative distribution, normalized so they sum to 1:
I'm training a custom neural network that learns these distributions, but i'm struggling with noise and overfitting.
My typical prediction looks like this:
The model doesn't learn to actually predict 0 for articles that aren't currently available. There's always a significant noise floor that weakens the predictions for the actually available articles. I have looked into a SoftMax layer to clean up the predictions and custom loss functions that punish unavailable articles harder, but I'm honestly a bit stuck.
I'm looking for tweaks I can make to my current approach, and also completely different approaches, since I can't find a lot of info on challenges like this.