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

#include <lsh.hpp>

Inheritance diagram for jubatus::core::recommender::lsh:
Inheritance graph
Collaboration diagram for jubatus::core::recommender::lsh:
Collaboration graph

Classes

struct  config
 

Public Member Functions

void clear ()
 
void clear_row (const std::string &id)
 
void get_all_row_ids (std::vector< std::string > &ids) const
 
framework::mixableget_mixable () const
 
 lsh (uint64_t hash_num)
 
 lsh (const config &config)
 
 lsh ()
 
void neighbor_row (const common::sfv_t &query, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const
 
void pack (framework::packer &packer) const
 
void similar_row (const common::sfv_t &query, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const
 
std::string type () const
 
void unpack (msgpack::object o)
 
void update_row (const std::string &id, const sfv_diff_t &diff)
 
 ~lsh ()
 
- Public Member Functions inherited from jubatus::core::recommender::recommender_base
void complete_row (const std::string &id, common::sfv_t &ret) const
 
void complete_row (const common::sfv_t &query, common::sfv_t &ret) const
 
void decode_row (const std::string &id, common::sfv_t &ret) const
 
virtual const core::storage::recommender_storage_baseget_const_storage () const
 
virtual jubatus::util::lang::shared_ptr< const storage::column_tableget_const_table () const
 
virtual jubatus::util::lang::shared_ptr< storage::column_tableget_table ()
 
virtual jubatus::util::lang::shared_ptr< unlearner::unlearner_baseget_unlearner ()
 
virtual void neighbor_row (const std::string &id, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const
 
 recommender_base ()
 
virtual void similar_row (const std::string &id, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const
 
virtual ~recommender_base ()
 
- Public Member Functions inherited from jubatus::core::framework::model
virtual ~model ()
 

Private Member Functions

void calc_lsh_values (const common::sfv_t &sfv, storage::bit_vector &bv) const
 
void generate_column_base (const std::string &column)
 
void generate_column_bases (const common::sfv_t &v)
 
void initialize_model ()
 

Private Attributes

jubatus::util::data::unordered_map< std::string, std::vector< float > > column2baseval_
 
const uint64_t hash_num_
 
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storagemixable_storage_
 

Additional Inherited Members

- Static Public Member Functions inherited from jubatus::core::recommender::recommender_base
static float calc_l2norm (const common::sfv_t &query)
 
static float calc_similality (common::sfv_t &q1, common::sfv_t &q2)
 
- Protected Attributes inherited from jubatus::core::recommender::recommender_base
core::storage::sparse_matrix_storage orig_
 
- Static Protected Attributes inherited from jubatus::core::recommender::recommender_base
static const uint64_t complete_row_similar_num_ = 128
 

Detailed Description

Definition at line 40 of file lsh.hpp.

Constructor & Destructor Documentation

jubatus::core::recommender::lsh::lsh ( uint64_t  hash_num)
explicit

Definition at line 44 of file lsh.cpp.

References initialize_model(), and JUBATUS_EXCEPTION.

45  : hash_num_(hash_num) {
46  if (!(1 <= hash_num)) {
47  throw JUBATUS_EXCEPTION(
48  common::invalid_parameter("1 <= hash_num"));
49  }
51 }
const uint64_t hash_num_
Definition: lsh.hpp:91
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Here is the call graph for this function:

jubatus::core::recommender::lsh::lsh ( const config config)
explicit

Definition at line 53 of file lsh.cpp.

References jubatus::core::recommender::lsh::config::hash_num, initialize_model(), and JUBATUS_EXCEPTION.

54  : hash_num_(config.hash_num) {
55 
56  if (!(1 <= config.hash_num)) {
57  throw JUBATUS_EXCEPTION(
58  common::invalid_parameter("1 <= hash_num"));
59  }
60 
62 }
const uint64_t hash_num_
Definition: lsh.hpp:91
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Here is the call graph for this function:

jubatus::core::recommender::lsh::lsh ( )

Definition at line 64 of file lsh.cpp.

References initialize_model().

67 }
const uint64_t hash_num_
Definition: lsh.hpp:91
static const uint64_t DEFAULT_HASH_NUM
Definition: lsh.cpp:38

Here is the call graph for this function:

jubatus::core::recommender::lsh::~lsh ( )

Definition at line 69 of file lsh.cpp.

69  {
70 }

Member Function Documentation

void jubatus::core::recommender::lsh::calc_lsh_values ( const common::sfv_t sfv,
storage::bit_vector bv 
) const
private

Definition at line 108 of file lsh.cpp.

References column2baseval_, generate_column_bases(), hash_num_, jubatus::core::recommender::prod_invert_and_vector(), and jubatus::core::recommender::set_bit_vector().

Referenced by similar_row(), and update_row().

108  {
109  const_cast<lsh*>(this)->generate_column_bases(sfv);
110 
111  vector<float> lsh_vals;
113  set_bit_vector(lsh_vals, bv);
114 }
const uint64_t hash_num_
Definition: lsh.hpp:91
void set_bit_vector(const std::vector< float > &vec, bit_vector &bit_vec)
Definition: lsh_util.cpp:44
void generate_column_bases(const common::sfv_t &v)
Definition: lsh.cpp:116
void prod_invert_and_vector(const unordered_map< string, vector< float > > &matrix, const common::sfv_t &vec, size_t dim, vector< float > &ret)
Definition: lsh_util.cpp:55
jubatus::util::data::unordered_map< std::string, std::vector< float > > column2baseval_
Definition: lsh.hpp:86

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::recommender::lsh::clear ( )
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 96 of file lsh.cpp.

References jubatus::core::storage::sparse_matrix_storage::clear(), column2baseval_, mixable_storage_, jubatus::core::recommender::recommender_base::orig_, and jubatus::core::clustering::swap().

96  {
97  orig_.clear();
98  jubatus::util::data::unordered_map<std::string, std::vector<float> >()
100  mixable_storage_->get_model()->clear();
101 }
void swap(weighted_point &p1, weighted_point &p2)
Definition: types.hpp:47
jubatus::util::data::unordered_map< std::string, std::vector< float > > column2baseval_
Definition: lsh.hpp:86
core::storage::sparse_matrix_storage orig_
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89

Here is the call graph for this function:

void jubatus::core::recommender::lsh::clear_row ( const std::string &  id)
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 103 of file lsh.cpp.

References mixable_storage_, jubatus::core::recommender::recommender_base::orig_, and jubatus::core::storage::sparse_matrix_storage::remove_row().

103  {
104  orig_.remove_row(id);
105  mixable_storage_->get_model()->remove_row(id);
106 }
core::storage::sparse_matrix_storage orig_
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89

Here is the call graph for this function:

void jubatus::core::recommender::lsh::generate_column_base ( const std::string &  column)
private

Definition at line 122 of file lsh.cpp.

References jubatus::core::common::hash_util::calc_string_hash(), column2baseval_, jubatus::core::recommender::generate_random_vector(), and hash_num_.

Referenced by generate_column_bases().

122  {
123  if (column2baseval_.count(column) != 0) {
124  return;
125  }
126  const uint32_t seed = common::hash_util::calc_string_hash(column);
128 }
const uint64_t hash_num_
Definition: lsh.hpp:91
jubatus::util::data::unordered_map< std::string, std::vector< float > > column2baseval_
Definition: lsh.hpp:86
void generate_random_vector(size_t dim, uint32_t seed, vector< float > &ret)
Definition: lsh_util.cpp:35
static uint64_t calc_string_hash(const std::string &s)
Definition: hash.hpp:29

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::recommender::lsh::generate_column_bases ( const common::sfv_t v)
private

Definition at line 116 of file lsh.cpp.

References generate_column_base().

Referenced by calc_lsh_values(), and update_row().

116  {
117  for (size_t i = 0; i < sfv.size(); ++i) {
118  generate_column_base(sfv[i].first);
119  }
120 }
void generate_column_base(const std::string &column)
Definition: lsh.cpp:122

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::recommender::lsh::get_all_row_ids ( std::vector< std::string > &  ids) const
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 140 of file lsh.cpp.

References mixable_storage_.

140  {
141  mixable_storage_->get_model()->get_all_row_ids(ids);
142 }
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89
framework::mixable * jubatus::core::recommender::lsh::get_mixable ( ) const
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 148 of file lsh.cpp.

References mixable_storage_.

148  {
149  return mixable_storage_.get();
150 }
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89
void jubatus::core::recommender::lsh::initialize_model ( )
private

Definition at line 152 of file lsh.cpp.

References mixable_storage_.

Referenced by lsh().

152  {
154  typedef storage::mixable_bit_index_storage storage_t;
155  model_ptr p(new storage::bit_index_storage);
156  mixable_storage_.reset(new storage_t(p));
157 }
jubatus::util::lang::shared_ptr< Model > model_ptr
framework::linear_mixable_helper< bit_index_storage, bit_table_t > mixable_bit_index_storage
Definition: lsh.hpp:34
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89
storage::mixable_lsh_index_storage::model_ptr model_ptr
Definition: euclid_lsh.cpp:90

Here is the caller graph for this function:

void jubatus::core::recommender::lsh::neighbor_row ( const common::sfv_t query,
std::vector< std::pair< std::string, float > > &  ids,
size_t  ret_num 
) const
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 86 of file lsh.cpp.

References similar_row().

89  {
90  similar_row(query, ids, ret_num);
91  for (size_t i = 0; i < ids.size(); ++i) {
92  ids[i].second = 1 - ids[i].second;
93  }
94 }
void similar_row(const common::sfv_t &query, std::vector< std::pair< std::string, float > > &ids, size_t ret_num) const
Definition: lsh.cpp:72

Here is the call graph for this function:

void jubatus::core::recommender::lsh::pack ( framework::packer packer) const
virtual

Implements jubatus::core::framework::model.

Definition at line 159 of file lsh.cpp.

References mixable_storage_, jubatus::core::recommender::recommender_base::orig_, and jubatus::core::storage::sparse_matrix_storage::pack().

159  {
160  packer.pack_array(2);
161  orig_.pack(packer);
162  mixable_storage_->get_model()->pack(packer);
163 }
void pack(framework::packer &packer) const
msgpack::packer< jubatus_packer > packer
Definition: bandit_base.hpp:31
core::storage::sparse_matrix_storage orig_
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89

Here is the call graph for this function:

void jubatus::core::recommender::lsh::similar_row ( const common::sfv_t query,
std::vector< std::pair< std::string, float > > &  ids,
size_t  ret_num 
) const
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 72 of file lsh.cpp.

References calc_lsh_values(), and mixable_storage_.

Referenced by neighbor_row().

75  {
76  ids.clear();
77  if (ret_num == 0) {
78  return;
79  }
80 
81  bit_vector query_bv;
82  calc_lsh_values(query, query_bv);
83  mixable_storage_->get_model()->similar_row(query_bv, ids, ret_num);
84 }
bit_vector_base< uint64_t > bit_vector
void calc_lsh_values(const common::sfv_t &sfv, storage::bit_vector &bv) const
Definition: lsh.cpp:108
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89

Here is the call graph for this function:

Here is the caller graph for this function:

string jubatus::core::recommender::lsh::type ( ) const
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 144 of file lsh.cpp.

144  {
145  return string("lsh");
146 }
void jubatus::core::recommender::lsh::unpack ( msgpack::object  o)
virtual

Implements jubatus::core::framework::model.

Definition at line 165 of file lsh.cpp.

References mixable_storage_, jubatus::core::recommender::recommender_base::orig_, and jubatus::core::storage::sparse_matrix_storage::unpack().

165  {
166  if (o.type != msgpack::type::ARRAY || o.via.array.size != 2) {
167  throw msgpack::type_error();
168  }
169  orig_.unpack(o.via.array.ptr[0]);
170  mixable_storage_->get_model()->unpack(o.via.array.ptr[1]);
171 }
core::storage::sparse_matrix_storage orig_
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89

Here is the call graph for this function:

void jubatus::core::recommender::lsh::update_row ( const std::string &  id,
const sfv_diff_t diff 
)
virtual

Implements jubatus::core::recommender::recommender_base.

Definition at line 130 of file lsh.cpp.

References calc_lsh_values(), generate_column_bases(), jubatus::core::storage::sparse_matrix_storage::get_row(), mixable_storage_, jubatus::core::recommender::recommender_base::orig_, and jubatus::core::storage::sparse_matrix_storage::set_row().

130  {
131  generate_column_bases(diff);
132  orig_.set_row(id, diff);
133  common::sfv_t row;
134  orig_.get_row(id, row);
135  bit_vector bv;
136  calc_lsh_values(row, bv);
137  mixable_storage_->get_model()->set_row(id, bv);
138 }
void get_row(const std::string &row, std::vector< std::pair< std::string, float > > &columns) const
void generate_column_bases(const common::sfv_t &v)
Definition: lsh.cpp:116
bit_vector_base< uint64_t > bit_vector
void calc_lsh_values(const common::sfv_t &sfv, storage::bit_vector &bv) const
Definition: lsh.cpp:108
core::storage::sparse_matrix_storage orig_
std::vector< std::pair< std::string, float > > sfv_t
Definition: type.hpp:29
jubatus::util::lang::shared_ptr< storage::mixable_bit_index_storage > mixable_storage_
Definition: lsh.hpp:89
void set_row(const std::string &row, const std::vector< std::pair< std::string, float > > &columns)

Here is the call graph for this function:

Member Data Documentation

jubatus::util::data::unordered_map<std::string, std::vector<float> > jubatus::core::recommender::lsh::column2baseval_
private

Definition at line 86 of file lsh.hpp.

Referenced by calc_lsh_values(), clear(), and generate_column_base().

const uint64_t jubatus::core::recommender::lsh::hash_num_
private

Definition at line 91 of file lsh.hpp.

Referenced by calc_lsh_values(), and generate_column_base().

jubatus::util::lang::shared_ptr<storage::mixable_bit_index_storage> jubatus::core::recommender::lsh::mixable_storage_
private

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