Imagine the following dataset:

First 4 columns are predictor variables and the engine running index is the response variable.

   O2 level | Cylinder pressure | Fuel Flow | Engine temp | Engine running index
       5              15               3           31                7
       2              31              18            1               88
       1              22              66            4               31
      ...            ...              ...          ...             ...

Situation: An engineer comes with a similar data set and asks a question: "What should be the setting of my O2 level, cylinder pressure etc to get the best running index?"

Now one could take a statistical approach and try figure out the answer but I was looking to employ some machine learning technique. The ones Ive tried, i.e. Regression, but its used more to predict what the Engine running index will be rather than suggest what the settings should be to get the best running index. The other one I was looking at was PCA, but not sure that it will give me an answer as well.

Note: the possible max value for Engine running index is not known.

So my question is simple: are there ML techniques to help me answer engineer's question?

Any suggestions are welcome, thanks.


Regression is quite well suited for learning what settings generate the best running index (or at least a good running index). All you need is in the regression coefficients. If the regression coefficient is positive, a greater value of the corresponding regressor will tend to yield a greater value of the response*. You want to maximize the response; hence, the recipe is to increase (maximize) the regressor value. Conversely, if the regression coefficient is negative, minimize the corresponding regressor's value. That is the answer the engineer needs.

Consider a concrete example. Suppose the fitted regression equation is $$ y=0.5+2x_1-0.5x_2+\varepsilon. $$ Since $2>0$, an increase in $x_1$ should hopefully yield an increase in $y$. Thus the engineer should seek to increase $x_1$ as much as possible. On the other hand, since $-0.5<0$, an increase in $x_2$ would yield a decrease in $y$. Therefore the engineer should minimize $x_2$ to maximize $y$.

Edit: as Matthew Drury points out, a simple regression like this need not be a good model for your particular application. (Perhaps some feature engineering would make it better.) The important thing is that if the model has decent fit, then it can be used conveniently for finding settings in which the response is maximized.

*This requires some assumptions such as exogeneity of the regressor.

  • $\begingroup$ You're also assuming that it is possible to fit the data well with a linear function of the predictors. There's no ap-priori reason to believe this is true. So while I agree that regression is a good approach, I think in practice it's more complicated than just throwing all the raw predictors in a linear regression. The OP will have to do some exploratory data analysis to determine what fits for the predictors are appropriate. If they are non-linear, the model will have to be used in an optimization scheme to determine the best parameters. I do agree with this approach. $\endgroup$ Aug 25 '17 at 14:17
  • $\begingroup$ @MatthewDrury, I agree. What I wanted to point out is that regression is a tool that can be used directly for the task (contrary to the OP's assertion). Now it requires some skill, for sure, but so do the alternative tools. $\endgroup$ Aug 25 '17 at 14:19
  • $\begingroup$ Agree completely. $\endgroup$ Aug 25 '17 at 14:20
  • $\begingroup$ Although the suggestion is contrary to my initial assertation, I overlooked these properties provided by using regression technique. I shall start my investigation and come back to you, thank you (both @MatthewDrury && Richard Hardy) $\endgroup$ Aug 25 '17 at 14:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.