联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2021-10-24 10:49

Homework 4

Oct 20, 2021

You will calculate the value of information using an adapted ocean drilling example.

Background story

You are the boss of an oil drilling company. Your company found N potential oil wells, but one and only one

of these wells contains oil. You decide the buy one well, hoping it contains oil so that you can make a big

fortune. You did some research and formed a prior of which well contains oil. Then a microbiologist comes to

you, saying that she has a test to analyze microbes in the ocean. The task can be only performed in one well

chosen by you. If there is oil in the examined well, a certain type of microbe is more likely to be detected.

She asks you how much you want to pay for the test.

To calculate the value of information, we need to be able to 1) perform Bayesian Inference given a piece of

evidence and 2) calculate expected utility.

Module 1 - Bayesian Inference

In this module, you are supposed to complete the 5 functions: getUnnormalizedPosterior, normalize,

getSumOfProbability, getPosterior, getMarginalOfData.

Task 1: Calculate the Posterior The formula is

P(s|e) = P(e|s)P(s)

P

s P(e|s)P(s)

.

You are supposed to complete the functions getUnnormalizedPosterior, normalize, and getPosterior

in the valueOfInfo.py file.

1. Calculate unnormalized posterior P(e|s)P(s)

There are two input parameters for the function getUnnormalizedPosterior.

(a) prior - A dictionary representing the prior of the state. The keys of dictionary are the possible states s

and the values of the dictionary are the corresponding probability p(s).

(b) likelihood - A dictionary representing the likelihood P(e|s) - the probability of collecting evidence e

given the state is s. The keys of the dictionary are the possible states s and the values of the dictionary

are the corresponding likelihood P(e|s).

The return value of the function getPosterior is a dictionary representing the unnormalized posterior

P(e|s)P(s). The keys of the dictionary are the possible states s and the values of the dictionary are the

posterior probabilities P P(e|s)P(s).

2. Normalization

Perform a normalization on a unnormalized probability distribution. P(x) = P

Punnormalized(x)

x

Punnormalized(x)

.

The function normalize takes in one parameter, which is a dictionary representing a probability distribution.

It returns a dictionary, the normalized version of the input probability distribution.

3. Calculate the posterior:

Combine getUnnormalizedPosterior and normalize to complete the function getPosterior.

There are two input parameters for the function getPosterior.

(a) prior - A dictionary representing the prior of the state. The keys of dictionary are the possible states s

and the values of the dictionary are the corresponding probability p(s).

1

(b) likelihood - A dictionary representing the likelihood P(e|s) - the probability of collecting evidence e

given the state is s. The keys of the dictionary are the possible states s and the values of the dictionary

are the corresponding likelihood P(e|s).

The return value of the function getPosterior is a dictionary representing the normalized posterior P(s|e).

The keys of the dictionary are the possible states s and the values of the dictionary are the posterior

probabilities P(s|e).

Task 2: Calculate the marginal probability of evidence The formula is

P(e) = X

s

P(e|s)P(s)

.

You are supposed to complete the functions getSumOfProbability and getMarginalOfData in the

valueOfInfo.py file.

1. Sum up the probability

Sum up the probabilities in a probability distribution. P

x Punnormalized(x).

The function getSumOfProbability takes in one parameter, which is a dictionary representing a probability

distribution. It returns a scalar, the sum of the probabilities in the input probability distribution.

2. Calculate the marginal probability of evidence

Combine getUnnormalizedPosterior and getSumOfProbability to complete the function getMarginalOfData..

There are two input parameters for the function getPosterior.

(a) prior - A dictionary representing the prior of the state. The keys of dictionary are the possible states s

and the values of the dictionary are the corresponding probability p(s).

(b) likelihood - A dictionary representing the likelihood P(e|s) - the probability of collecting evidence e

given the state is s. The keys of the dictionary are the possible states s and the values of the dictionary

are the corresponding likelihood P(e|s).

The return value of the function getMarginalOfData is a scalar representing the marginal probability P(e).

Module 2 - Calculate expected utility

In this module, you are supposed to complete the 2 functions: getEU, getMaxEUFull.

Task 3: expected utility of an action The formula is

EU(a) = X

s

R(a, s)P(s)

.

Since there is no state transition in our problem, we need to calculate expected utility of an action a by

calculating the expected reward received by taking the action.

You are supposed to complete the function getEU in the valueOfInfo.py file.

There are three input parameters for the function getEU.

(a) action - a string indicating which action a is being evaluated.

(b) sDistribution - A dictionary representing the probability distribution of the current state s. The keys of

dictionary are the possible states s and the values of the dictionary are the corresponding probability

p(s).

(c) rewardTable - A dictionary representing the reward from taking action a in state s. It is represented as

{s : {a : R(a, s)}}.

The return value of the function getEU is a scalar representing the expected utility of the input action a.

2

Task 4: maximum utility given a piece of evidence The formula is E(α|e) = maxa E(a|e).

Calculate the expected utility for each possible action and choose the maximum.

You are supposed to complete the function getMaxEUFull in the valueOfInfo.py file.

There are five input parameters for the function getMaxEUFull.

(a) evidence - A string indicating the evidence e you collected. It can be input as None. If e_j is input

as None, use the prior to calculate E(α).

(b) prior - A dictionary representing the probability distribution before any new evidence is collected. The

keys of dictionary are the possible states s and the values of the dictionary are the corresponding

probability p(s).

(c) likelihoodTable - A nested dictionary representing the likelihood for each evidence P(e|s). The dictionary

is in the format of {e : {s : {P(e|s)}}.

(d) rewardTable - A dictionary representing the reward from taking action a in state s. It is represented as

{s : {a : R(a, s)}}.

(e) actionSpace - A list of all possible actions

The return value of the function getMaxEUFull is a scalar representing the maximum expected utility after

receiving ej . E(α|ej ). You should use the getEU function.

The getMaxEUFull function will be transformed in the main function to only take parameters “test” and

“evidence”.

Module 3 - Calculate the value of information

Task 5: value of information of a given test The formula is

V P I(Ej ) = X

ejk

P(ejk)EU(α|ejk) − EU(α)

You are supposed to complete the function getValueOfInformationFull in the valueOfInfo.py file.

The getValueOfInformationFull function takes four parameters:

(a) prior - A dictionary representing the probability distribution before any new evidence is collected. The

keys of dictionary are the possible states s and the values of the dictionary are the corresponding

probability p(s).

(b) evidenceSpace - A list of all possible evidence you can get from the test.

(c) getMarginalOfEvidence - A function that calculates the marginal probability of each evidence P(e). Its

input argument is a piece of evidence in evidenceSpace. Its return value is a scalar representing the

marginal probability P(e)

(d) getMaxEU - A function that calculates the maximum expected utility you can get after receiving a

piece of evidence EU(α|e). Its input argument is a piece of evidence in evidenceSpace, or None if you

calculate E(α) for the prior. Its return value is a scalar representing the maximum expected utility

EU(α|e) or EU(α).

The return value of the function getValueOfInformationFull is a scalar, representing the value of the

given test.

The getValueOfInformationFull function will be transformed in the main function to only take parameter

“test” so that it can calculate value of information for different tests.

Information in main function

The parameters of one example problem are provided in the main function.

The prior - There are 4 potential oil wells. You think that the probability that Well 2 contains oil is 0.4. The

probability for each other well to contain oil is 0.2.

3

The action space - You have 4 possible actions: buy one of the wells.

The reward table - If you buy the well that contains oil, you earn 100 millions. If you buy a well without oil,

you do not earn or lose money. The reward table is a nested dictionary {s : {a : R(s, a)}}, with the value

being the reward from taking action a in state s.

The test space - You have 4 possible tests to take. You can try each of them with your algorithm.

The evidence space - Each test can give you 2 potential results: the microbe detected or not detectd.

The likelihood table: given one state to be true, the probability of collecting the evidence through the test. It

is a nested dictionary {test : {evidence : {s : P(e|s)}}}. If there is oil in the tested well, the probability of

microbes being detected is 0.8, the probability that they are not detected is 0.2. If there is no oil in the tested

well, the probability of microbes being detected is 0.1, the probability that they are not detected is 0.9.

Submission

Please submit a completed valueOfInfo_YourLastName_YourFirstName.py file on CCLE before due. The

due date and time of this homework assignment is Friday, 10/29/2021 11:59pm.

4


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp