The talk is an intro to Bayesian Inference from the point of view of a software developer rather than from the one of a mathematician. If we read a textbook about Bayesian Inference, we need to go through tow-three chapters about probability theory. This can be hard and pointless for who is just seeking a few practical examples or a few use cases. The talk is suitable for those that are not interested in the math behind such methods but want to apply them. When is Bayesian Inference useful? What’s its advantage? How can I implement it? The talk shows few use cases where Bayesian Inference is a killer feature through PyMC library.
2. Which color will sell more?
Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
Page B
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
3. Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
Page B
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
#buy / N #buy / N
4. • What if N is small?
• What is N to have 90% confidence?
• What if N is different on A and B?
16. Only one difference between A and B
Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
Page B
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
17. Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
Page B
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
18. Assume there is
p_a
probability of clicking BUY when landing on A
p_b
probability of clicking BUY when landing on B
How to compute p_a and p_b?
19. Page A
– N_a visitors
– C_a BUY-click on page A
Page B
– N_b visitors
– C_b BUY-click on page B
22. Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
30. Confidence 90% that P is between X and Y?
There is 90% probability that p_A is between
0.0373019596856 and 0.0548052806892
p_A_samples = mcmc.trace('p_A')[:]
lower_bound = np.percentile(p_A_samples, 5)
upper_bound = np.percentile(p_A_samples, 95)
print 'There is 90%% probability that p_A is between %s and %s' %
(lower_bound, upper_bound)
35. Confidence 90% that P is between X and Y?
There is 90% probability that p_A is between
0.0160966147705 and 0.114655284797
p_A_samples = mcmc.trace('p_A')[:]
lower_bound = np.percentile(p_A_samples, 5)
upper_bound = np.percentile(p_A_samples, 95)
print 'There is 90%% probability that p_A is between %s and %s' %
(lower_bound, upper_bound)
37. Does the red have a larger probability of being clicked?
Page A
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
Page B
A Tea Pot
Lorem ipsum dolor sit amet, nemore accusam mel ne, usu offendit
delicata id, idque splendide constituam ex vel. Sea in nemore impedit
singulis, vivendo sadipscing cum ea. Eum debet torquatos prodesset cu.
Mel id mollis comprehensam, nemore verear mei cu.
Mei meis iuvaret vituperata ad, ne cetero iisque singulis eum. Ex magna
latine virtute nam, ne graecis dissentias eloquentiam ius. Nam alienum
omittam no. Eu vix docendi maiestatis signiferumque, alienum officiis
delicata te pri, commodo corrumpit deterruisset eu cum. An mei
tincidunt incorrupte dissentias, prompta diceret delenit vis ad.
Sea ad sadipscing intellegebat, quod sumo mea cu, ei eos feugait alienum
nominavi. Ei vix simul possit. Recteque tincidunt incorrupte pri no, ipsum
constituam eu quo. Per ne populo quodsi persius, molestie efficiantur et
his. Munere discere vis id, te sea homero suscipiantur definitionem, quot
dicam vis ne.
BUY
57. Date HomeTeam AwayTeam FTHG FTAG FTR HTHG HTAG HTR
24/08/2013 Sampdoria Juventus 0 1 A 0 0 D
24/08/2013 Verona Milan 2 1 H 1 1 D
25/08/2013 Cagliari Atalanta 2 1 H 1 1 D
25/08/2013 Inter Genoa 2 0 H 0 0 D
25/08/2013 Lazio Udinese 2 1 H 2 0 H
25/08/2013 Livorno Roma 0 2 A 0 0 D
25/08/2013 Napoli Bologna 3 0 H 2 0 H
25/08/2013 Parma Chievo 0 0 D 0 0 D
25/08/2013 Torino Sassuolo 2 0 H 1 0 H
26/08/2013 Fiorentina Catania 2 1 H 2 1 H
31/08/2013 Chievo Napoli 2 4 A 2 2 D
31/08/2013 Juventus Lazio 4 1 H 2 1 H
01/09/2013 Atalanta Torino 2 0 H 0 0 D
01/09/2013 Bologna Sampdoria 2 2 D 1 1 D
01/09/2013 Catania Inter 0 3 A 0 1 A
01/09/2013 Genoa Fiorentina 2 5 A 0 3 A
01/09/2013 Milan Cagliari 3 1 H 2 1 H
01/09/2013 Roma Verona 3 0 H 0 0 D
01/09/2013 Sassuolo Livorno 1 4 A 0 1 A
01/09/2013 Udinese Parma 3 1 H 1 0 H
14/09/2013 Inter Juventus 1 1 D 0 0 D
14/09/2013 Napoli Atalanta 2 0 H 0 0 D
14/09/2013 Torino Milan 2 2 D 0 0 D
15/09/2013 Fiorentina Cagliari 1 1 D 0 0 D
https://datahub.io/dataset/italian-football-data-serie-a-b
64. Let’s model this
• goal: infer unknown p1, p2, TAU
• FIRST STEP OF Bayesian Inference: assign a prior
probability to different possible values of p
• what would be a good prior for p1, p2? Use
uniform:
– p1 ~ Uniform(0,1)
– p2 ~ Uniform(0,1)
– TAU ~ DiscreteUniform(1, 38)
• P(TAU=k)=1/38 for all k
65. from pymc import Uniform, DiscreteUniform, deterministic, Bernoulli, Model, MCMC
p_1 = Uniform('p_1', lower=0, upper=1)
p_2 = Uniform('p_2', lower=0, upper=1)
tau = DiscreteUniform('tau', lower=1, upper=38)
print 'Random output: ', tau.random(), tau.random(), tau.random()
Random output: 14 24 33
@deterministic
def p_(tau=tau, p_1=p_1, p_2=p_2, num_matches=38):
# concatenate p_1 and p_2 based on tau
out = np.empty(num_matches)
out[:tau] = p_1
out[tau:] = p_2
return out
66. Load Data
import pandas as pd
df = pd.read_csv('serie_a.csv', parse_dates=['Date'], date_parser=parse_date)
matches = df[(df.HomeTeam == ‘Milan’) | (df.AwayTeam == ‘Milan’)]
matches = matches.set_index(['Date'])
matches = compute_extra_columns(matches, team)
# some pandas manipulations occur here
matches[‘Win’] = … # 1 if Milan won, 0 otherwise
70. Expected Win Probability
num_matches = 38
N = tau_samples.shape[0]
expected_p_per_match = np.zeros(num_matches)
for match in range(num_matches):
ix = match < tau_samples
p_samples_match = np.concatenate([p_1_samples[ix], p_2_samples[~ix]])
expected_p_per_match[match] = np.percentile(p_samples_match, 50)
71.
72. Compute Confidence Bounds
lower_p_per_match = np.zeros(num_matches)
upper_p_per_match = np.zeros(num_matches)
for match in range(num_matches):
ix = match < tau_samples
p_samples_match = np.concatenate([p_1_samples[ix], p_2_samples[~ix]])
lower_p_per_match[match] = np.percentile(p_samples_match, 5)
upper_p_per_match[match] = np.percentile(p_samples_match, 95)
73. Bayesian returns a distribution. What have we gained? We see uncertainty in our
estimates. The wider the distribution, the less certain our posterior belief should be.
Hinweis der Redaktion
imagine to build e-commerce website
choose color
set up experiment
Interpretation of probability
Freq: probability is the frequency of event
Difficult to understand for other scenario
E.g. Presidential Elections (happen only once)
Bayes: measure of belief or confidence in an event occurring.
Assign a belief of 0 to an event: certainty NO occur
You look for bugs in your code
You are starting to believe that there may be no bugs in this code
If you think this way, then congratulations: You already are thinking Bayesian!
Bayesian inference is simply updating your beliefs after considering new evidence
a Python library for performing Bayesian analysis that is undaunted by the mathematiccal monster we have created
The code is not random; it is probabilistic in the sense that we create probability models using programming variables as the model’s components.
We go through a simple example to understand some basic features of PyMC
Only one difference between A and B: any change in dynamics can be attributed to that change
No need to be same number on A or on B
Observed frequency <> true frequency (probability)
Only for large numbers (law of large numbers)
Only one difference between A and B: any change in dynamics can be attributed to that change
Define a model (random variables)
prior probabilities i.e. our prior belief
Fit to the dataset
compute posterior probabilities
random variable which takes the value 1 with success probability of p and the value 0 with failure probability of 1-p.
What is the value of p?
random value
value not determined
obs: observations of clicking BUY
random variable but unlike p_A we observed value
argument observed to True -> value should not be changed
Only one difference between A and B: any change in dynamics can be attributed to that change
N_A > N_B
Posterior of p_B is flatter
Most of Posterior of p_A – p_B is above 0. So we are confident p_A > p_B
If this probability is too low, one can try to get more samples from B (to make it less flat).
Fitting a model means characterizing its posterior distribution somehow.
the MCMC sampler randomly updates the values of p_A, p_B, delta over a specified number of iterations (iter).
burn parameter specifies a sufficiently large number of iterations for the algorithm to converge
Recommend it
Nice intro to BI and Probabilistic Programming
assumes NO prior knowledge of Bayesian inference and probability
HOW TO: Probability applied to real examples
Was there a change in the win rate?
Define a model (random variables)
prior probabilities i.e. our prior belief
Fit to the dataset
compute posterior probabilities
random variable which takes the value 1 with success probability of p and the value 0 with failure probability of 1-p.
What is the value of p?
What is the value of p?
seems to increase at some point during observations
Let’s assume that on some day TAU during the observation period the parameter p suddenly jumps to a higher value. So, we really have two p parameters: one for the period before TAU, and one for the rest of the observation period
Define a model (random variables)
prior probabilities i.e. our prior belief
Fit to the dataset
compute posterior probabilities