Nothing
library(contextual)
horizon <- 1000
simulations <- 100L
# Lets set up a minimal contextual data generator or "bandit",
# that represents a website frontpage with sports and movie
# articles for arms, and male and female visitors for the context.
#
# Within this setup, we define the following click-probabilities,
# where a click is a reward of 1, an no click a reward of 0:
#
# Contexts | Sport (arm) | Movie (arm)
# -----------------------------------------
# Male* | 0.4 x 0.5 | 0.7 x 0.5
# Female* | 0.8 x 0.5 | 0.3 x 0.5
# -----------------------------------------
# CTR total | 0.7 | 0.5
#
# So, overall, sports is the most clicked frontpage article type,
# but males actually click movie links more.
#
#
# S----M------------> Arm 1: Sport
# | | Arm 2: Movie
# | |
weights <- matrix( c(0.4, 0.7, #-----> Context: Male
0.8, 0.3), #-----> Context: Female
nrow = 2, ncol = 2, byrow = TRUE)
bandit <- ContextualBernoulliBandit$new(weights = weights)
# Lets now run an epsilon greedy policy against this bandit.
# Epsilon greedy is a non-contextual bandit, so has no knowledge
# of the context, and is expected to prefer the sports arm (nr1):
policy <- EpsilonGreedyPolicy$new(epsilon = 0.1)
agents <- list(Agent$new(policy, bandit, "EG"))
sim <- Simulator$new(agents, horizon, simulations, save_context = TRUE)
history <- sim$run()
plot(history, regret = TRUE)
plot(history, type = "arms")
plot(history, type = "arms", limit_context= c("X.1"))
plot(history, type = "arms", limit_context= c("X.2"))
# Now run an contextual epsilon greedy policy against this bandit.
policy <- ContextualEpsilonGreedyPolicy$new(0.1)
agents <- list(Agent$new(policy,bandit, "cEpsilonGreedy"))
sim <- Simulator$new(agents, horizon, simulations, save_context = TRUE)
history <- sim$run()
plot(history, regret = TRUE)
plot(history, type = "arms")
plot(history, type = "arms", limit_context= c("X.1"))
plot(history, type = "arms", limit_context= c("X.2"))
# Finaly, ContextualEpochGreedyPolicy
policy <- ContextualEpochGreedyPolicy$new(11)
agents <- list(Agent$new(policy, bandit, "cEpochGreedy"))
sim <- Simulator$new(agents, horizon, simulations, save_context = TRUE)
history <- sim$run()
plot(history, regret = TRUE)
plot(history, type = "arms")
plot(history, type = "arms", limit_context= c("X.1"))
plot(history, type = "arms", limit_context= c("X.2"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.