For each observations there are 207 variables (binary, either a 'symptom' happened or not), class variable is also binary.
For each variable or symptom there is a weight attached (currently set manually to be between -5 and 50) and for each observation there is a critical line (there are 3 different critical lines). Matrix of dummy variables is multiplied by weights and resulting matrix is added up across different columns for each observations resulting in some score. If this score is higher then particular critical line associated with observation then prediction is 1, otherwise is 0.
The problem is to set up those weights and critical lines optimally. I obviously have a data set to see which symptoms usually correspond to '1' in prediction.
For me it looks like an optimization problem but obviously the prediction itself can be made with machine learning but I am looking for another resource.
Question is: do you guys know any areas of OR or can point out me some keywords to look at on how this type of problems are solved? I am good with Python so if you want to recommend me some packages I am more then happy. The only thing I though about is to randomly generate weights in (-5, 50) interval and for loads of trials maybe I will find ones that correspond to best accuracy (point is to minimize false positives).
My current formulation is as follows:
max( sum over N (t_i * s_i)) st.
(M x')_i >= L_i then s_i = 1
(M x')_i < L_i then s_i = 0
sum over N(s_i) =< 0.06N
where N is the number of observation, M number of variables x is a vector of weights, M is a NxM matrix of dummy variables where each row represents one observation therefore Mx' results in a Nx1 vector of cumulative weights for each observation.
As I mentioned in the comment, optimal cut-off line L = [L_1, ..., L_n] is also a part of the problem. Vector of true allocations t is known. The point is that once I got cut-off lines and weights, the system would process new observations using them.
I also don't want to many positive s_i and this is another constrain of the problem.
Thank you for all comments, I am new to stack exchange so please bear with me.