jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Attributes | List of all members
jubatus::core::bandit::ucb1 Class Reference

#include <ucb1.hpp>

Inheritance diagram for jubatus::core::bandit::ucb1:
Inheritance graph
Collaboration diagram for jubatus::core::bandit::ucb1:
Collaboration graph

Public Member Functions

void clear ()
 
bool delete_arm (const std::string &arm_id)
 
arm_info_map get_arm_info (const std::string &player_id) const
 
void get_diff (diff_t &diff) const
 
storage::version get_version () const
 
void mix (const diff_t &lhs, diff_t &rhs) const
 
std::string name () const
 
void pack (framework::packer &pk) const
 
bool put_diff (const diff_t &diff)
 
bool register_arm (const std::string &arm_id)
 
bool register_reward (const std::string &player_id, const std::string &arm_id, double reward)
 
bool reset (const std::string &player_id)
 
std::string select_arm (const std::string &player_id)
 
 ucb1 (bool assume_unrewarded)
 
void unpack (msgpack::object o)
 
- Public Member Functions inherited from jubatus::core::bandit::bandit_base
 bandit_base ()
 
virtual ~bandit_base ()
 

Private Attributes

summation_storage s_
 

Additional Inherited Members

- Public Types inherited from jubatus::core::bandit::bandit_base
typedef jubatus::util::data::unordered_map< std::string, arm_info_mapdiff_t
 

Detailed Description

Definition at line 29 of file ucb1.hpp.

Constructor & Destructor Documentation

jubatus::core::bandit::ucb1::ucb1 ( bool  assume_unrewarded)
explicit

Definition at line 30 of file ucb1.cpp.

31  : s_(assume_unrewarded) {
32 }
summation_storage s_
Definition: ucb1.hpp:60

Member Function Documentation

void jubatus::core::bandit::ucb1::clear ( )
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 86 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::clear(), and s_.

86  {
87  s_.clear();
88 }
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

bool jubatus::core::bandit::ucb1::delete_arm ( const std::string &  arm_id)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 69 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::delete_arm(), and s_.

69  {
70  return s_.delete_arm(arm_id);
71 }
bool delete_arm(const std::string &arm_id)
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

arm_info_map jubatus::core::bandit::ucb1::get_arm_info ( const std::string &  player_id) const
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 79 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::get_arm_info_map(), and s_.

79  {
80  return s_.get_arm_info_map(player_id);
81 }
arm_info_map get_arm_info_map(const std::string &player_id) const
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

void jubatus::core::bandit::ucb1::get_diff ( diff_t diff) const
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 97 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::get_diff(), and s_.

97  {
98  s_.get_diff(diff);
99 }
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

storage::version jubatus::core::bandit::ucb1::get_version ( ) const
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 106 of file ucb1.cpp.

106  {
107  return storage::version();
108 }
void jubatus::core::bandit::ucb1::mix ( const diff_t lhs,
diff_t rhs 
) const
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 103 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::mix(), and s_.

103  {
104  s_.mix(lhs, rhs);
105 }
static void mix(const table_t &lhs, table_t &rhs)
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

std::string jubatus::core::bandit::ucb1::name ( ) const
inlinevirtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 47 of file ucb1.hpp.

47  {
48  return "ucb1";
49  }
void jubatus::core::bandit::ucb1::pack ( framework::packer pk) const
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 90 of file ucb1.cpp.

References s_.

90  {
91  pk.pack(s_);
92 }
summation_storage s_
Definition: ucb1.hpp:60
bool jubatus::core::bandit::ucb1::put_diff ( const diff_t diff)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 100 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::put_diff(), and s_.

100  {
101  return s_.put_diff(diff);
102 }
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

bool jubatus::core::bandit::ucb1::register_arm ( const std::string &  arm_id)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 66 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::register_arm(), and s_.

66  {
67  return s_.register_arm(arm_id);
68 }
bool register_arm(const std::string &arm_id)
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

bool jubatus::core::bandit::ucb1::register_reward ( const std::string &  player_id,
const std::string &  arm_id,
double  reward 
)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 73 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::register_reward(), and s_.

75  {
76  return s_.register_reward(player_id, arm_id, reward);
77 }
bool register_reward(const std::string &player_id, const std::string &arm_id, double reward)
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

bool jubatus::core::bandit::ucb1::reset ( const std::string &  player_id)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 83 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::reset(), and s_.

83  {
84  return s_.reset(player_id);
85 }
bool reset(const std::string &player_id)
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

std::string jubatus::core::bandit::ucb1::select_arm ( const std::string &  player_id)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 34 of file ucb1.cpp.

References jubatus::core::bandit::summation_storage::get_arm_ids(), jubatus::core::bandit::summation_storage::get_arm_info(), JUBATUS_EXCEPTION, jubatus::core::bandit::summation_storage::notify_selected(), s_, jubatus::core::bandit::arm_info::trial_count, and jubatus::core::bandit::arm_info::weight.

34  {
35  const std::vector<std::string>& arms = s_.get_arm_ids();
36  if (arms.empty()) {
37  throw JUBATUS_EXCEPTION(
38  common::exception::runtime_error("arm is not registered"));
39  }
40 
41  int total_trial = 0;
42  for (size_t i = 0; i < arms.size(); ++i) {
43  const arm_info& a = s_.get_arm_info(player_id, arms[i]);
44  if (a.trial_count == 0) {
45  return arms[i];
46  }
47  total_trial += a.trial_count;
48  }
49  double log_total_trial = std::log(total_trial);
50 
51  double score_max = -DBL_MAX;
52  std::string result;
53  for (size_t i = 0; i < arms.size(); ++i) {
54  const arm_info& a = s_.get_arm_info(player_id, arms[i]);
55  double exp = a.weight / a.trial_count;
56  double score = exp + std::sqrt(2 * log_total_trial / a.trial_count);
57  if (score > score_max) {
58  score_max = score;
59  result = arms[i];
60  }
61  }
62  s_.notify_selected(player_id, result);
63  return result;
64 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
const std::vector< std::string > & get_arm_ids() const
void notify_selected(const std::string &player_id, const std::string &arm_id)
arm_info get_arm_info(const std::string &player_id, const std::string &arm_id) const
summation_storage s_
Definition: ucb1.hpp:60

Here is the call graph for this function:

void jubatus::core::bandit::ucb1::unpack ( msgpack::object  o)
virtual

Implements jubatus::core::bandit::bandit_base.

Definition at line 93 of file ucb1.cpp.

References s_.

93  {
94  o.convert(&s_);
95 }
summation_storage s_
Definition: ucb1.hpp:60

Member Data Documentation

summation_storage jubatus::core::bandit::ucb1::s_
private

The documentation for this class was generated from the following files: