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

#include <burst_result.hpp>

Collaboration diagram for jubatus::core::burst::burst_result:
Collaboration graph

Public Member Functions

 burst_result ()
 
 burst_result (const input_window &input, double scaling_param, double gamma, double costcut_threshold, const burst_result &prev_result, int max_reuse_batches)
 
 burst_result (const result_window &src)
 
bool contains (double pos) const
 
double get_all_interval () const
 
const batch_resultget_batch_at (double pos) const
 
double get_batch_interval () const
 
int get_batch_size () const
 
const std::vector< batch_result > & get_batches () const
 
double get_end_pos () const
 
double get_start_pos () const
 
bool has_same_batch_interval (const burst_result &x) const
 
bool has_same_start_pos_to (double start_pos) const
 
bool has_start_pos_newer_than (double start_pos) const
 
bool has_start_pos_older_than (double start_pos) const
 
bool is_bursted_at (double pos) const
 
bool is_bursted_at_latest_batch () const
 
bool is_valid () const
 
bool mix (const burst_result &w)
 
void msgpack_pack (framework::packer &packer) const
 
void msgpack_unpack (msgpack::object o)
 
void swap (burst_result &x)
 

Static Public Attributes

static const double invalid_pos = -1
 

Private Attributes

jubatus::util::lang::shared_ptr< const result_windowp_
 

Friends

void swap (burst_result &x, burst_result &y)
 

Detailed Description

Definition at line 33 of file burst_result.hpp.

Constructor & Destructor Documentation

jubatus::core::burst::burst_result::burst_result ( )

Definition at line 46 of file burst_result.cpp.

46  {
47 }
jubatus::core::burst::burst_result::burst_result ( const input_window input,
double  scaling_param,
double  gamma,
double  costcut_threshold,
const burst_result prev_result,
int  max_reuse_batches 
)

Definition at line 49 of file burst_result.cpp.

References jubatus::core::burst::burst_detect(), jubatus::core::burst::basic_window< Batch >::get_batch_size(), jubatus::core::burst::basic_window< Batch >::get_batches(), jubatus::core::burst::get_intersection(), jubatus::core::burst::basic_window< Batch >::get_start_pos(), and p_.

55  {
56  const std::vector<batch_input>& input_batches = input.get_batches();
57  const size_t n = input.get_batch_size();
58  const int max_reuse = (std::min)(max_reuse_batches, static_cast<int>(n));
59 
60  // make vectors for engine
61  std::vector<uint32_t> d_vec, r_vec;
62  std::vector<double> burst_weights;
63  d_vec.reserve(n);
64  r_vec.reserve(n);
65  burst_weights.reserve(n);
66  for (size_t i = 0; i < n; ++i) {
67  d_vec.push_back(input_batches[i].d);
68  r_vec.push_back(input_batches[i].r);
69  burst_weights.push_back(-1); // uncalculated
70  }
71 
72  // reuse batch weights
73  if (prev_result.p_) {
74  const result_window& prev = *prev_result.p_;
75  if (prev.get_start_pos() <= input.get_start_pos()) {
76  const std::pair<int, int> intersection = get_intersection(prev, input);
77  const std::vector<batch_result>& prev_results = prev.get_batches();
78  for (int i = 0, j = intersection.first;
79  i < max_reuse && j < intersection.second;
80  ++i, ++j) {
81  burst_weights[i] = prev_results[j].burst_weight;
82  }
83  }
84  }
85 
86  // doit
87  burst::burst_detect(d_vec, r_vec, burst_weights,
88  scaling_param, gamma, costcut_threshold);
89 
90  // store result
91  p_.reset(new result_window(input, burst_weights));
92 }
std::pair< int, int > get_intersection(const W1 &w1, const W2 &w2)
jubatus::util::lang::shared_ptr< const result_window > p_
void burst_detect(const std::vector< uint32_t > &d_vector, const std::vector< uint32_t > &r_vector, std::vector< double > &batch_weights, double scaling_param, double gamma, double burst_cut_threshold)
Definition: engine.cpp:159

Here is the call graph for this function:

jubatus::core::burst::burst_result::burst_result ( const result_window src)
explicit

Definition at line 94 of file burst_result.cpp.

95  : p_(new result_window(src)) {
96 }
jubatus::util::lang::shared_ptr< const result_window > p_

Member Function Documentation

bool jubatus::core::burst::burst_result::contains ( double  pos) const

Definition at line 110 of file burst_result.cpp.

References p_.

110  {
111  return p_ && p_->contains(pos);
112 }
jubatus::util::lang::shared_ptr< const result_window > p_
double jubatus::core::burst::burst_result::get_all_interval ( ) const

Definition at line 120 of file burst_result.cpp.

References p_.

120  {
121  return p_ ? p_->get_all_interval() : 0;
122 }
jubatus::util::lang::shared_ptr< const result_window > p_
const batch_result & jubatus::core::burst::burst_result::get_batch_at ( double  pos) const

Definition at line 168 of file burst_result.cpp.

References p_.

168  {
169  int i = p_ ? p_->get_index(pos) : -1;
170  if (i < 0) {
171  throw std::out_of_range("burst_result: pos is out of range");
172  }
173  return p_->get_batches()[i];
174 }
jubatus::util::lang::shared_ptr< const result_window > p_
double jubatus::core::burst::burst_result::get_batch_interval ( ) const

Definition at line 117 of file burst_result.cpp.

References p_.

117  {
118  return p_ ? p_->get_batch_interval() : 1;
119 }
jubatus::util::lang::shared_ptr< const result_window > p_
int jubatus::core::burst::burst_result::get_batch_size ( ) const

Definition at line 114 of file burst_result.cpp.

References p_.

Referenced by mix(), and jubatus::core::burst::result_storage::impl_::store().

114  {
115  return p_ ? p_->get_batch_size() : 0;
116 }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the caller graph for this function:

const std::vector< batch_result > & jubatus::core::burst::burst_result::get_batches ( ) const

Definition at line 164 of file burst_result.cpp.

References jubatus::core::burst::empty_batch_results, and p_.

164  {
165  return p_ ? p_->get_batches() : empty_batch_results;
166 }
const std::vector< batch_result > empty_batch_results
jubatus::util::lang::shared_ptr< const result_window > p_
double jubatus::core::burst::burst_result::get_end_pos ( ) const

Definition at line 107 of file burst_result.cpp.

References invalid_pos, and p_.

107  {
108  return p_ ? p_->get_end_pos() : invalid_pos;
109 }
jubatus::util::lang::shared_ptr< const result_window > p_
double jubatus::core::burst::burst_result::get_start_pos ( ) const

Definition at line 104 of file burst_result.cpp.

References invalid_pos, and p_.

Referenced by mix(), and jubatus::core::burst::result_storage::impl_::store().

104  {
105  return p_ ? p_->get_start_pos() : invalid_pos;
106 }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the caller graph for this function:

bool jubatus::core::burst::burst_result::has_same_batch_interval ( const burst_result x) const

Definition at line 154 of file burst_result.cpp.

References jubatus::core::burst::intersection_helper::has_batch_interval_equals_to(), and p_.

Referenced by mix().

154  {
155  if (!p_ || !x.p_) {
156  return false;
157  }
158  double interval_x = x.p_->get_batch_interval();
159  return intersection_helper(*p_).has_batch_interval_equals_to(interval_x);
160 }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the call graph for this function:

Here is the caller graph for this function:

bool jubatus::core::burst::burst_result::has_same_start_pos_to ( double  start_pos) const

Definition at line 146 of file burst_result.cpp.

References p_, and jubatus::core::burst::window_position_near().

Referenced by mix().

146  {
147  if (!p_) {
148  return false;
149  }
150  double pos0 = p_->get_start_pos();
151  return window_position_near(pos0, pos, p_->get_batch_interval());
152 }
bool window_position_near(double pos0, double pos1, double batch_interval)
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the call graph for this function:

Here is the caller graph for this function:

bool jubatus::core::burst::burst_result::has_start_pos_newer_than ( double  start_pos) const

Definition at line 135 of file burst_result.cpp.

References p_, and jubatus::core::burst::window_position_near().

135  {
136  if (!p_) {
137  return false;
138  }
139  double pos0 = p_->get_start_pos();
140  if (pos0 > pos) {
141  return !window_position_near(pos0, pos, p_->get_batch_interval());
142  } else {
143  return false;
144  }
145 }
bool window_position_near(double pos0, double pos1, double batch_interval)
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the call graph for this function:

bool jubatus::core::burst::burst_result::has_start_pos_older_than ( double  start_pos) const

Definition at line 124 of file burst_result.cpp.

References p_, and jubatus::core::burst::window_position_near().

124  {
125  if (!p_) {
126  return false;
127  }
128  double pos0 = p_->get_start_pos();
129  if (pos0 < pos) {
130  return !window_position_near(pos0, pos, p_->get_batch_interval());
131  } else {
132  return false;
133  }
134 }
bool window_position_near(double pos0, double pos1, double batch_interval)
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the call graph for this function:

bool jubatus::core::burst::burst_result::is_bursted_at ( double  pos) const

Definition at line 176 of file burst_result.cpp.

References p_.

Referenced by jubatus::core::burst::burst::impl_::get_all_bursted_results_at().

176  {
177  int i = p_ ? p_->get_index(pos) : -1;
178  if (i < 0) {
179  return false;
180  }
181  return p_->get_batches()[i].is_bursted();
182 }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the caller graph for this function:

bool jubatus::core::burst::burst_result::is_bursted_at_latest_batch ( ) const

Definition at line 184 of file burst_result.cpp.

References p_.

Referenced by jubatus::core::burst::burst::impl_::get_all_bursted_results().

184  {
185  if (!p_) {
186  return false;
187  }
188  const std::vector<batch_result>& batches = p_->get_batches();
189  return !batches.empty() && batches.back().is_bursted();
190 }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the caller graph for this function:

bool jubatus::core::burst::burst_result::is_valid ( ) const

Definition at line 98 of file burst_result.cpp.

References p_.

98  {
99  return p_.get() != NULL;
100 }
jubatus::util::lang::shared_ptr< const result_window > p_
bool jubatus::core::burst::burst_result::mix ( const burst_result w)

Definition at line 192 of file burst_result.cpp.

References get_batch_size(), get_start_pos(), has_same_batch_interval(), has_same_start_pos_to(), and p_.

192  {
193  if (!has_same_start_pos_to(w.get_start_pos()) ||
195  get_batch_size() != w.get_batch_size()) {
196  return false;
197  }
198 
199  if (p_ != w.p_) {
200  if (accumulate_d_vec(*this) < accumulate_d_vec(w)) {
201  p_ = w.p_;
202  }
203  }
204 
205  return true;
206 }
bool has_same_start_pos_to(double start_pos) const
bool has_same_batch_interval(const burst_result &x) const
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the call graph for this function:

void jubatus::core::burst::burst_result::msgpack_pack ( framework::packer packer) const

Definition at line 208 of file burst_result.cpp.

References invalid_pos, and p_.

208  {
209  if (!p_) {
210  result_window r(invalid_pos);
211  packer.pack(r);
212  } else {
213  packer.pack(*p_);
214  }
215 }
msgpack::packer< jubatus_packer > packer
Definition: bandit_base.hpp:31
jubatus::util::lang::shared_ptr< const result_window > p_
void jubatus::core::burst::burst_result::msgpack_unpack ( msgpack::object  o)

Definition at line 217 of file burst_result.cpp.

References p_.

217  {
218  shared_ptr<result_window> unpacked(new result_window());
219  unpacked->msgpack_unpack(o);
220  p_ = unpacked;
221 }
jubatus::util::lang::shared_ptr< const result_window > p_
void jubatus::core::burst::burst_result::swap ( burst_result x)
inline

Definition at line 48 of file burst_result.hpp.

References p_.

Referenced by jubatus::core::burst::aggregator::impl_::flush_results().

48  {
49  p_.swap(x.p_);
50  }
jubatus::util::lang::shared_ptr< const result_window > p_

Here is the caller graph for this function:

Friends And Related Function Documentation

void swap ( burst_result x,
burst_result y 
)
friend

Definition at line 51 of file burst_result.hpp.

51  {
52  x.swap(y);
53  }

Member Data Documentation

const double jubatus::core::burst::burst_result::invalid_pos = -1
static

Definition at line 57 of file burst_result.hpp.

Referenced by get_end_pos(), get_start_pos(), and msgpack_pack().

jubatus::util::lang::shared_ptr<const result_window> jubatus::core::burst::burst_result::p_
private

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