I've got the following dataset:
Features Algorithms ------------ ---------------------- P | | | r | | | o | | | b | | | l | | | e | | | m | | | s | | |
There are two matrices, the feature matrix (N x M) and the algorithms matrix (N x K). N is the amount of problems, M the amount of features and K the amount of algorithms. The feature matrix contains features that can be extracted from mathematical problems. The algorithms matrix contains information for a lot of different algorithms (K). Each column in this matrix contains the information for a single algorithm. This information is how long it takes the algorithm to solve the problem (or -1 if it doesn't). So instead of only having a single label column there are multiple.
The goal is, given a maximum amount of time, to find out which algorithms are best suited for solving the problem. This means that it is a combination of classification and regression. The algorithms have to be chosen (prediction) and how long they should run (regression). The maximum amount of time is used because multiple algorithms can be run within this timespan and these have to be chosen and the time has to be distributed over them.
There are different kinds of solutions, for example figuring out which algorithms solve the most problems and taking the mean time and just using this. Or just picking random algorithms and dividing the the maximum amount of time over those.
Another option is using KNN and using rows from the algorithm matrix as labels. This way it's only a classification problem.
Combining classification and regression methods is also possible. For classification all values can be set to 0 (no solve) or 1 (solve) and then random forest classifiers can be trained over each algorithm (column). This way we can use these forests to predict whether a certain algorithm should be used for a certain problem. We still need the time then, for this we can train a regressor for each column (removing any unsolvable problems). These regressors can then be used to predict the amount of time for the strategies that the classifier has chosen.
All the above solutions already work and are more as an example of what's possible and to hopefully give a better understanding of the structure of the data.
At the moment I'm interested in how this problem can be represented and solved using linear programming. I've been looking into linear programming by just reading up on it and trying out several simple problems, but I can't really seem to wrap my head around it, so I'm wondering if anyone here has any suggestions.
[link][8 comments]