Class: ClassicBandit::ThompsonSampling
- Inherits:
-
Object
- Object
- ClassicBandit::ThompsonSampling
- Includes:
- ArmUpdatable
- Defined in:
- lib/classic_bandit/thompson_sampling.rb
Overview
Implements Thompson Sampling algorithm for multi-armed bandit problems. Uses Beta-Bernoulli conjugate model, sampling from Beta distribution using Gamma random variables.
Instance Attribute Summary collapse
-
#alpha_prior ⇒ Object
readonly
Returns the value of attribute alpha_prior.
-
#arms ⇒ Object
readonly
Returns the value of attribute arms.
-
#beta_prior ⇒ Object
readonly
Returns the value of attribute beta_prior.
Instance Method Summary collapse
-
#initialize(arms:, alpha_prior: 1.0, beta_prior: 1.0) ⇒ ThompsonSampling
constructor
A new instance of ThompsonSampling.
- #select_arm ⇒ Object
Methods included from ArmUpdatable
Constructor Details
#initialize(arms:, alpha_prior: 1.0, beta_prior: 1.0) ⇒ ThompsonSampling
Returns a new instance of ThompsonSampling.
22 23 24 25 26 27 28 29 |
# File 'lib/classic_bandit/thompson_sampling.rb', line 22 def initialize(arms:, alpha_prior: 1.0, beta_prior: 1.0) raise ArgumentError, "alpha_prior must be positive" unless alpha_prior.positive? raise ArgumentError, "beta_prior must be positive" unless beta_prior.positive? @arms = arms @alpha_prior = alpha_prior @beta_prior = beta_prior end |
Instance Attribute Details
#alpha_prior ⇒ Object (readonly)
Returns the value of attribute alpha_prior.
17 18 19 |
# File 'lib/classic_bandit/thompson_sampling.rb', line 17 def alpha_prior @alpha_prior end |
#arms ⇒ Object (readonly)
Returns the value of attribute arms.
17 18 19 |
# File 'lib/classic_bandit/thompson_sampling.rb', line 17 def arms @arms end |
#beta_prior ⇒ Object (readonly)
Returns the value of attribute beta_prior.
17 18 19 |
# File 'lib/classic_bandit/thompson_sampling.rb', line 17 def beta_prior @beta_prior end |
Instance Method Details
#select_arm ⇒ Object
31 32 33 |
# File 'lib/classic_bandit/thompson_sampling.rb', line 31 def select_arm @arms.max_by { |arm| ts_score(arm) } end |