Influence diagrams / Decision models in Stan and PyMC3
Is it possible to write decision-making models in either Stan or PyMC3? By that I mean: we define not only the distribution of random variables, but also the definition of decision and utility variables, and determine the decisions maximizing expected utility.
My understanding is that Stan is more of a general optimizer than PyMC3, so that suggests decision models would be more directly implemented in it, but I would like to hear what people have to say.
Edit: While it is possible to enumerate all decisions and compute their corresponding expected utility, I am wondering about more efficient methods since the number of decisions could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow computing of the decisions on only a smaller set of relevant random variables. I wonder if either Stan or PyMC3 do that kind of thing.
pymc3 stan markov-decision-process probabilistic-programming
add a comment |
Is it possible to write decision-making models in either Stan or PyMC3? By that I mean: we define not only the distribution of random variables, but also the definition of decision and utility variables, and determine the decisions maximizing expected utility.
My understanding is that Stan is more of a general optimizer than PyMC3, so that suggests decision models would be more directly implemented in it, but I would like to hear what people have to say.
Edit: While it is possible to enumerate all decisions and compute their corresponding expected utility, I am wondering about more efficient methods since the number of decisions could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow computing of the decisions on only a smaller set of relevant random variables. I wonder if either Stan or PyMC3 do that kind of thing.
pymc3 stan markov-decision-process probabilistic-programming
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58
add a comment |
Is it possible to write decision-making models in either Stan or PyMC3? By that I mean: we define not only the distribution of random variables, but also the definition of decision and utility variables, and determine the decisions maximizing expected utility.
My understanding is that Stan is more of a general optimizer than PyMC3, so that suggests decision models would be more directly implemented in it, but I would like to hear what people have to say.
Edit: While it is possible to enumerate all decisions and compute their corresponding expected utility, I am wondering about more efficient methods since the number of decisions could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow computing of the decisions on only a smaller set of relevant random variables. I wonder if either Stan or PyMC3 do that kind of thing.
pymc3 stan markov-decision-process probabilistic-programming
Is it possible to write decision-making models in either Stan or PyMC3? By that I mean: we define not only the distribution of random variables, but also the definition of decision and utility variables, and determine the decisions maximizing expected utility.
My understanding is that Stan is more of a general optimizer than PyMC3, so that suggests decision models would be more directly implemented in it, but I would like to hear what people have to say.
Edit: While it is possible to enumerate all decisions and compute their corresponding expected utility, I am wondering about more efficient methods since the number of decisions could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow computing of the decisions on only a smaller set of relevant random variables. I wonder if either Stan or PyMC3 do that kind of thing.
pymc3 stan markov-decision-process probabilistic-programming
pymc3 stan markov-decision-process probabilistic-programming
edited Nov 18 '18 at 19:07
user118967
asked Nov 17 '18 at 23:55
user118967user118967
558416
558416
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58
add a comment |
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58
add a comment |
1 Answer
1
active
oldest
votes
The basic steps for Bayesian decision theory are:
- Enumerate a finite set of decisions that could be made
- Specify a utility function of the decision and perhaps other things
- Draw from the posterior distribution of all the unknowns given the known data
- Evaluate the utility function for each possible decision and each posterior draw
- Make the decision with the highest expected utility, averaging over the posterior draws.
You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities
block.
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53356699%2finfluence-diagrams-decision-models-in-stan-and-pymc3%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The basic steps for Bayesian decision theory are:
- Enumerate a finite set of decisions that could be made
- Specify a utility function of the decision and perhaps other things
- Draw from the posterior distribution of all the unknowns given the known data
- Evaluate the utility function for each possible decision and each posterior draw
- Make the decision with the highest expected utility, averaging over the posterior draws.
You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities
block.
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
add a comment |
The basic steps for Bayesian decision theory are:
- Enumerate a finite set of decisions that could be made
- Specify a utility function of the decision and perhaps other things
- Draw from the posterior distribution of all the unknowns given the known data
- Evaluate the utility function for each possible decision and each posterior draw
- Make the decision with the highest expected utility, averaging over the posterior draws.
You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities
block.
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
add a comment |
The basic steps for Bayesian decision theory are:
- Enumerate a finite set of decisions that could be made
- Specify a utility function of the decision and perhaps other things
- Draw from the posterior distribution of all the unknowns given the known data
- Evaluate the utility function for each possible decision and each posterior draw
- Make the decision with the highest expected utility, averaging over the posterior draws.
You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities
block.
The basic steps for Bayesian decision theory are:
- Enumerate a finite set of decisions that could be made
- Specify a utility function of the decision and perhaps other things
- Draw from the posterior distribution of all the unknowns given the known data
- Evaluate the utility function for each possible decision and each posterior draw
- Make the decision with the highest expected utility, averaging over the posterior draws.
You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities
block.
answered Nov 18 '18 at 5:58
Ben GoodrichBen Goodrich
3,1221813
3,1221813
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
add a comment |
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect.
– user118967
Nov 18 '18 at 19:04
1
1
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case.
– Ben Goodrich
Nov 19 '18 at 20:05
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53356699%2finfluence-diagrams-decision-models-in-stan-and-pymc3%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway.
– Ben Goodrich
Nov 18 '18 at 5:58