Skip to content

Commit 9ef1035

Browse files
committed
Implemented thompson sampling in R
1 parent 6565bce commit 9ef1035

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Importing the dataset
2+
dataset = read.csv('../../data_files/Ads_CTR_Optimisation.csv')
3+
4+
# Implementing Thompson Sampling
5+
N = 10000
6+
d = 10
7+
ads_selected = integer()
8+
numbers_of_rewards_1 = integer(d)
9+
numbers_of_rewards_0 = integer(d)
10+
total_reward = 0
11+
12+
for (n in 1:N) {
13+
ad = 0
14+
max_random = 0
15+
16+
for (i in 1:d) {
17+
random_beta = rbeta(
18+
n=1,
19+
shape1=numbers_of_rewards_1[i]+1,
20+
shape2=numbers_of_rewards_0[i]+1
21+
)
22+
23+
if (random_beta > max_random) {
24+
max_random = random_beta
25+
ad = i
26+
}
27+
}
28+
29+
ads_selected = append(ads_selected, ad)
30+
reward = dataset[n, ad]
31+
32+
if (reward == 1) {
33+
numbers_of_rewards_1[ad] = numbers_of_rewards_1[ad] + 1
34+
} else if (reward == 0) {
35+
numbers_of_rewards_0[ad] = numbers_of_rewards_0[ad] + 1
36+
}
37+
38+
total_reward = total_reward + reward
39+
}
40+
41+
# Visualising the results - Histogram
42+
hist(ads_selected,
43+
col = 'blue',
44+
main = 'Histogram of ads selections',
45+
xlab = 'Ads',
46+
ylab = 'Number of times each ad was selected')

0 commit comments

Comments
 (0)