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

#include <compressive_storage.hpp>

Inheritance diagram for jubatus::core::clustering::compressive_storage:
Inheritance graph
Collaboration diagram for jubatus::core::clustering::compressive_storage:
Collaboration graph

Public Member Functions

void add (const weighted_point &point)
 
 compressive_storage (const std::string &name, const clustering_config &config)
 
wplist get_mine () const
 
void set_compressor (jubatus::util::lang::shared_ptr< compressor::compressor > compressor)
 
- Public Member Functions inherited from jubatus::core::clustering::storage
void clear ()
 
virtual wplist get_all () const
 
virtual wplist get_common () const
 
void get_diff (diff_t &d) const
 
size_t get_revision ()
 
core::storage::version get_version () const
 
void mix (const diff_t &, diff_t &ret)
 
 MSGPACK_DEFINE (revision_, name_, config_, common_)
 
void pack (framework::packer &packer) const
 
bool put_diff (const diff_t &d)
 
 storage (const std::string &name, const clustering_config &config)
 
void unpack (msgpack::object o)
 
virtual ~storage ()
 
- Public Member Functions inherited from jubatus::core::clustering::event_dispatcher< storage_event_type, wplist >
void add_event_listener (const storage_event_type &type, callback_t callback)
 
virtual ~event_dispatcher ()
 

Private Member Functions

void carry_up (size_t r)
 
void clear_impl_ ()
 
void forget_weight (wplist &points)
 
bool is_next_bucket_full (size_t bucket_number)
 
void pack_impl_ (framework::packer &packer) const
 
bool reach_forgetting_threshold (size_t bucket_number)
 
void unpack_impl_ (msgpack::object o)
 

Private Attributes

jubatus::util::lang::shared_ptr< compressor::compressorcompressor_
 
std::vector< wplistmine_
 
uint64_t status_
 

Additional Inherited Members

- Protected Member Functions inherited from jubatus::core::clustering::storage
void increment_revision ()
 
- Protected Member Functions inherited from jubatus::core::clustering::event_dispatcher< storage_event_type, wplist >
void dispatch (const storage_event_type &type, const wplist &data) const
 
- Protected Attributes inherited from jubatus::core::clustering::storage
std::vector< std::pair< std::string, wplist > > common_
 
clustering_config config_
 
std::string name_
 
size_t revision_
 
- Protected Attributes inherited from jubatus::core::clustering::event_dispatcher< storage_event_type, wplist >
event_type_table events_
 

Detailed Description

Definition at line 31 of file compressive_storage.hpp.

Constructor & Destructor Documentation

jubatus::core::clustering::compressive_storage::compressive_storage ( const std::string &  name,
const clustering_config config 
)

Definition at line 29 of file compressive_storage.cpp.

References mine_.

32  : storage(name, config),
33  status_(0) {
34  mine_.push_back(wplist());
35 }
storage(const std::string &name, const clustering_config &config)
Definition: storage.cpp:28
std::vector< weighted_point > wplist
Definition: types.hpp:55

Member Function Documentation

void jubatus::core::clustering::compressive_storage::add ( const weighted_point point)
virtual

Implements jubatus::core::clustering::storage.

Definition at line 42 of file compressive_storage.cpp.

References jubatus::core::clustering::clustering_config::bicriteria_base_size, jubatus::core::clustering::clustering_config::bucket_size, carry_up(), jubatus::core::clustering::clustering_config::compressed_bucket_size, compressor_, jubatus::core::clustering::storage::config_, jubatus::core::clustering::storage::increment_revision(), mine_, and status_.

42  {
43  wplist& c0 = mine_[0];
44  c0.push_back(point);
45  if (c0.size() >= static_cast<size_t>(config_.bucket_size)) {
46  wplist cr;
47  compressor_->compress(
49  c0.swap(cr);
50  status_ += 1;
51  carry_up(0);
52 
54  }
55 }
jubatus::util::lang::shared_ptr< compressor::compressor > compressor_
std::vector< weighted_point > wplist
Definition: types.hpp:55

Here is the call graph for this function:

void jubatus::core::clustering::compressive_storage::carry_up ( size_t  r)
private

Definition at line 88 of file compressive_storage.cpp.

References jubatus::core::clustering::clustering_config::bicriteria_base_size, jubatus::core::clustering::clustering_config::compressed_bucket_size, compressor_, jubatus::core::clustering::concat(), jubatus::core::clustering::storage::config_, forget_weight(), get_mine(), is_next_bucket_full(), mine_, and reach_forgetting_threshold().

Referenced by add().

88  {
89  if (r >= mine_.size() - 1) {
90  mine_.push_back(wplist());
91  }
92  forget_weight(mine_[r]);
93  if (!is_next_bucket_full(r)) {
94  if (!reach_forgetting_threshold(r + 1) ||
95  mine_[r].size() == get_mine().size()) {
96  concat(mine_[r], mine_[r + 1]);
97  mine_[r].clear();
98  } else {
99  mine_[r + 1].swap(mine_[r]);
100  mine_[r].clear();
101  }
102  } else {
103  wplist cr = mine_[r];
104  wplist crr = mine_[r + 1];
105  mine_[r].clear();
106  mine_[r + 1].clear();
107  concat(cr, crr);
108  size_t dstsize = (r == 0) ? config_.compressed_bucket_size :
109  2 * r * r * config_.compressed_bucket_size;
111  dstsize, mine_[r + 1]);
112  carry_up(r + 1);
113  }
114 }
jubatus::util::lang::shared_ptr< compressor::compressor > compressor_
void concat(const wplist &src, wplist &dst)
Definition: util.cpp:33
std::vector< weighted_point > wplist
Definition: types.hpp:55

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::clustering::compressive_storage::clear_impl_ ( )
privatevirtual

Reimplemented from jubatus::core::clustering::storage.

Definition at line 136 of file compressive_storage.cpp.

References jubatus::core::clustering::storage::clear_impl_(), mine_, and status_.

136  {
138  mine_.clear();
139  mine_.push_back(wplist());
140  status_ = 0;
141 }
std::vector< weighted_point > wplist
Definition: types.hpp:55

Here is the call graph for this function:

void jubatus::core::clustering::compressive_storage::forget_weight ( wplist points)
private

Definition at line 66 of file compressive_storage.cpp.

References jubatus::core::clustering::storage::config_, and jubatus::core::clustering::clustering_config::forgetting_factor.

Referenced by carry_up().

66  {
67  double factor = std::exp(-config_.forgetting_factor);
68  typedef wplist::iterator iter;
69  for (iter it = points.begin(); it != points.end(); ++it) {
70  it->weight *= factor;
71  }
72 }

Here is the caller graph for this function:

wplist jubatus::core::clustering::compressive_storage::get_mine ( ) const
virtual

Implements jubatus::core::clustering::storage.

Definition at line 57 of file compressive_storage.cpp.

References jubatus::core::clustering::concat(), and mine_.

Referenced by carry_up().

57  {
58  wplist ret;
59  for (std::vector<wplist>::const_iterator it = mine_.begin();
60  it != mine_.end(); ++it) {
61  concat(*it, ret);
62  }
63  return ret;
64 }
void concat(const wplist &src, wplist &dst)
Definition: util.cpp:33
std::vector< weighted_point > wplist
Definition: types.hpp:55

Here is the call graph for this function:

Here is the caller graph for this function:

bool jubatus::core::clustering::compressive_storage::is_next_bucket_full ( size_t  bucket_number)
private

Definition at line 83 of file compressive_storage.cpp.

References jubatus::core::clustering::clustering_config::bucket_length, jubatus::core::clustering::storage::config_, jubatus::core::clustering::digit(), and status_.

Referenced by carry_up().

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::clustering::compressive_storage::pack_impl_ ( framework::packer packer) const
privatevirtual

Reimplemented from jubatus::core::clustering::storage.

Definition at line 116 of file compressive_storage.cpp.

References compressor_, mine_, jubatus::core::clustering::storage::pack_impl_(), and status_.

116  {
117  packer.pack_array(4);
119  packer.pack(mine_);
120  packer.pack(status_);
121  packer.pack(*compressor_);
122 }
jubatus::util::lang::shared_ptr< compressor::compressor > compressor_
msgpack::packer< jubatus_packer > packer
Definition: bandit_base.hpp:31
virtual void pack_impl_(framework::packer &packer) const
Definition: storage.cpp:112

Here is the call graph for this function:

bool jubatus::core::clustering::compressive_storage::reach_forgetting_threshold ( size_t  bucket_number)
private

Definition at line 74 of file compressive_storage.cpp.

References jubatus::core::clustering::storage::config_, jubatus::core::clustering::clustering_config::forgetting_factor, and jubatus::core::clustering::clustering_config::forgetting_threshold.

Referenced by carry_up().

74  {
75  double C = config_.forgetting_threshold;
76  double lam = config_.forgetting_factor;
77  if (std::exp(-lam * bucket_number) < C) {
78  return true;
79  }
80  return false;
81 }

Here is the caller graph for this function:

void jubatus::core::clustering::compressive_storage::set_compressor ( jubatus::util::lang::shared_ptr< compressor::compressor compressor)

Definition at line 37 of file compressive_storage.cpp.

References compressor_.

Referenced by jubatus::core::clustering::storage_factory::create().

38  {
39  compressor_ = compressor;
40 }
jubatus::util::lang::shared_ptr< compressor::compressor > compressor_

Here is the caller graph for this function:

void jubatus::core::clustering::compressive_storage::unpack_impl_ ( msgpack::object  o)
privatevirtual

Reimplemented from jubatus::core::clustering::storage.

Definition at line 124 of file compressive_storage.cpp.

References compressor_, mine_, status_, and jubatus::core::clustering::storage::unpack_impl_().

124  {
125  std::vector<msgpack::object> mems;
126  o.convert(&mems);
127  if (mems.size() != 4) {
128  throw msgpack::type_error();
129  }
130  storage::unpack_impl_(mems[0]);
131  mems[1].convert(&mine_);
132  mems[2].convert(&status_);
133  mems[3].convert(compressor_.get());
134 }
jubatus::util::lang::shared_ptr< compressor::compressor > compressor_
virtual void unpack_impl_(msgpack::object o)
Definition: storage.cpp:115

Here is the call graph for this function:

Member Data Documentation

jubatus::util::lang::shared_ptr<compressor::compressor> jubatus::core::clustering::compressive_storage::compressor_
private

Definition at line 53 of file compressive_storage.hpp.

Referenced by add(), carry_up(), pack_impl_(), set_compressor(), and unpack_impl_().

std::vector<wplist> jubatus::core::clustering::compressive_storage::mine_
private
uint64_t jubatus::core::clustering::compressive_storage::status_
private

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