I have dataset with horse racing results including bookie odds - converted to percentage chance of winning. Data are stored in relation tables.
The basic entity relation is described on image. Each race consist of n number of horses. Each horse have own history, is owned by owner, trained by trainer and "raced" by jockey. Each entity have many mandatory (M) and optional (OP) attributes:
- Race: datetime, winning prize, distance, race course, race type, ... (all mandatory)
- Horse: age (M), official rating (OP), speed rating (OP), ...
- Trainer: wins and rides in last days (M), year income (M), 0 .. n previous races with results (again with many attributes)
- Jockey: same as Trainer
- Owner: same as Trainer
- History: 0 .. n previous races with results (again with many attributes)
The predicted value should be percentage of winning for each horse. Im looking for MODEL which takes as input race, single horse, his history, trainer,... and the output should be for example 23.5%.
Now my questions.
- How to deal with variable number of horses in race? Insted of perctenage, should be the output some ranking? Then, out of the model, the ranking can be converted to percentage based on total race horse count? How this formula should look like?
- How to deal with data from lower entities? For example last trainer's races. The trainer could have 5 races in last day, or 0 in last week. How to propage this variable data to upper level? I assume that using thousands of "sometimes used" input features are not good way.
- Use models based on deep learning or rather some simplier models like XGBRegression?
This problem can be transfered to many other situations, 100m sprint, elections. The question is very broad. I'm looking for direction how to solve similar problem. Thank You for any help.