3
$\begingroup$

Consider the following scenario. I am a sculpturer and customers ask me for what price I am willing to provide them with some statues. Their request for sculptures can vary in difficulty, quantity, material, size. In response, I reply with the price and subsequently they will either accept or reject (1 or 0) my proposal. I know of traditional machine learning methods that I can train to predict the probability of acceptance given all inputs.

In this case the price can be influenced by myself. Not let's assume that my expected profit is this function: (quantity * price * (probability_of_acceptance)). I would like to respond to the customers with the price where this expected profit is the highest. Of course you can input different prices in the machine learning model, which will give you some kind of probability acceptance curve that you can subsequently optimize against. But I am looking to do this in one go.

I am wondering:

  1. What is the theoretical name for this type of problem?
  2. What machine learning method is suitable here?
  3. Are there any python packages that implement these models?
$\endgroup$

2 Answers 2

0
$\begingroup$

Have a look at this competition organized by the European Spatial Agency (ESA). https://kelvins.esa.int/collision-avoidance-challenge/scoring/

Here they use a composed loss function. A binary classification whether two spatial are at risk of colliding or not. And in case that they collide a regression saying what is estimated risk between them.

This is done by constructing a loss function combining the Mean Squared Error (MSE) and the F_β score with β=2.

You could consider your problem similar. You will want to classify whether your offer gets accepted or not, and in case of acceptance the money in return that you will receive.

In the part of the discussion of the challenge, you will find some notes on how to do it. Also, I believe that they will publish a paper in the next weeks.

$\endgroup$
3
  • $\begingroup$ I am not sure if I understand the proposed model correctly in relation to my problem. It seems that in the example, you first classify the output as high or low risk. Indeed you can classify the offer in my problem as high probability of being accepted or not. However in the example they then do a regression to determine estimated risk. I on the other hand, already assume that the profit is equal to this function -> (quantity * price * (probability_of_acceptance)). $\endgroup$
    – GdvJ
    Commented Jan 23, 2020 at 16:32
  • $\begingroup$ Depending on other factors, each offer will have a different elasticity curve. I would like the model to determine the curve first and subsequently solve for the optimal price. $\endgroup$
    – GdvJ
    Commented Jan 23, 2020 at 16:38
  • $\begingroup$ The optimal price will also depend on what is the risk you want to take when making an offer. The threshold can be up to you. Or you can minimize a composed loss function with it. "However in the example, they then do a regression to determine estimated risk" for your case you will determine which is your estimated profit, taking into consideration the probability of being accepted. This way might be to complex. I am assuming you know ML techniques and concepts. $\endgroup$ Commented Jan 23, 2020 at 17:02
0
$\begingroup$

Generally that is called optimization, finding the best possible solution given constraints. There many flavors of optimization - integer programming and linear programming are popular.

Optimization is important for machine learning but is not everything. Machine learning also has to deal with problems that change over time and predicting performance on unseen data.

If you frame the problem as optimization, SciPy has many optimization routines. Additionally, PuLP is a Python linear programming API for defining problems and invoking external solvers.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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