Options
Multicriteria Optimization based on different models
a_metzmacher
Member Posts: 9 Contributor I
Hi,
Is it possible to apply three different models with three different target variables (A,B,C) on one dataset simultaneously?
I already built three different models based on the same dataset. One predicts target A, the second target B and the third target C.
My objective is to conduct a multicriteria optimization, so that I receive certain values for A, B and C.
Thank you very much in advance!
0
Answers
If I understand you correctly, you've already trained three different models on the same data set and now you want to take a scoring data set and pass that to the the 3 different models? If yes, then just use a Multiply operator to make 3 copies of the scoring data and then use 3 Apply Model operators to apply your three models.
Thank you for your quick reply!
Unfortunately, I already tried this solution. The problem is that I need only one result table, meaning one table including the predictions of target A, B and C.
The labels are polynominal - they all contain three categories: small, medium, large. My objective is to receive a prediction for each dataset containing a predicted value for A, B and C.
Hi,
cant you just chain 3x Apply Model with Set Role (to avoid collisions between prediction roles) after another?
Best,
Martin
Dortmund, Germany
Yes, but then I have three example sets. Is there no opportunity to get only one?
Hi,
i think the answer is a double no.
First of all multiply is not generating a in-memory copy of an example set. We work with a view concept, thus the data will most likely not be copied.
Further you can simply chain the applies. You just need to be sure to change the roles of prediction/confidence because they need to be unique. Have a look at the attached process. The only manual thing is setting the roles correctly. That might be doable with a tiny script if it annoys you too much.
Best,
Martin
Dortmund, Germany
You have to consider the correlation between the variables, before you can apply this approach. If the features used to predict A are independent from the features to predict B (and so forth with C, D, etc.), then it is safe to apply separate models for each of them. If that's not the case, you will have biased predictions.
Take a look at this Stack Exchange post:
https://stats.stackexchange.com/questions/18151/methods-to-predict-multiple-dependent-variables
EDIT: Actually you can apply the different models and then look for correlations between the residuals. If you observe no correlation, then the approach is correct.
Best,
Sebastian
Thank you! I think I understood what you suggested.
However, I am still struggling with the solution. I tried to import your process but it does not work with my version (7.2.002).
With the three example sets, I meant that I received three data sets with predicted values- so this had nothing to do with the "multiply" operator.
Furthermore, I want to apply my already built models, therefore I have three operators named "retrieve model". When I chain the "apply model" operators including the "set role" operators, I only receive the example set with the last label. This is not surprising as the data set to be included into the "apply model" operator is usually unlabeled.
Do you have another idea how to solve this problem?
Hi,
any chance you can post a dummy process (or two)?
Best,
Martin
Dortmund, Germany
Does this one help?
Kind of. Try this instead:
Dortmund, Germany
Good morning,
Thank you very much.
I just tried to change my xml code according to your suggestions. As it did not work at the first try, I tried to integrate variables called "pediction (Class_Small)".... into my dataset.
However, it still does not give out the desired results.
Hi,
What is the remaining issue?
Best,
Martin
Dortmund, Germany
I only receive values for the last predicted variable ("prediction(class_large)"), "prediction(class_medium)" is empty and "prediction(class_small)" does not exist in the final example set.
I tried to conduct a data join with the three result example sets. For testing this, I tried to join only two (including predictions of "class_small" and "class_medium), but then I receive a warning that the attribute "class_small" has two different roles in the input sets (regular vs. label). Do you know how to solve this problem?
Hi,
i think you need to rename the attributes as well, see attached process.
Why are you doing this by the way? I have the odd feeling that Polynominal by Binominal Classification is the nice solution of your problem.
Best,
Martin
Dortmund, Germany
Thanks for your answer!
Actually, I want to determine certain attribute ranges of my input variables, which should lead to distinct values in my target variables.
As an example:
Attributes "weight"= 1000-2000g, "material"= Cu or Ni and "size"= 10-20mm lead to targets "class_small"=low, "class_medium"=low and "class_large"=high.
Does this somehow work in RapidMiner?
*Everything* can be done with Rapidminer!
I think in this case the "Discretize" set of operators can come in handy. The problem will be much easier dealing with cathegorical variables. I would try training decision trees for each variable.
Hi,
have you considered to take this as an Association RUle problem instead of a supervised learning one?
Are you maybe attending IDS - we might catch a bit of time there. Details: http://ids2017.rapidminer.com/
Best,
Martin
Dortmund, Germany