class TrailGuide::Algorithms::Bandit
Public Instance Methods
choose!(**opts)
click to toggle source
# File lib/trail_guide/algorithms/bandit.rb, line 6 def choose!(**opts) variants.find { |var| var == best_guess } end
Private Instance Methods
arm_guess(participants, conversions)
click to toggle source
# File lib/trail_guide/algorithms/bandit.rb, line 26 def arm_guess(participants, conversions) a = [participants, 0].max b = [(participants - conversions), 0].max s = SimpleRandom.new s.set_seed s.beta(a+fairness_constant, b+fairness_constant) end
best_guess()
click to toggle source
# File lib/trail_guide/algorithms/bandit.rb, line 18 def best_guess @best_guess ||= begin gmax = guesses.values.max best = guesses.keys.select { |name| guesses[name] == gmax } best.sample end end
fairness_constant()
click to toggle source
# File lib/trail_guide/algorithms/bandit.rb, line 34 def fairness_constant 7 end
guesses()
click to toggle source
# File lib/trail_guide/algorithms/bandit.rb, line 12 def guesses @guesses ||= variants.map do |variant| [variant.name, arm_guess(variant.participants, variant.converted)] end.to_h end