6 #ifndef TURI_FACTORIZATION_MODEL_BASE_H_ 7 #define TURI_FACTORIZATION_MODEL_BASE_H_ 15 #include <toolkits/factorization/loss_model_profiles.hpp> 16 #include <core/storage/serialization/serialization_includes.hpp> 17 #include <core/data/flexible_type/flexible_type.hpp> 18 #include <model_server/lib/variant.hpp> 19 #include <model_server/lib/variant_deep_serialize.hpp> 32 class ml_data_side_features;
36 namespace factorization {
73 static constexpr
size_t USER_COLUMN_INDEX = 0;
74 static constexpr
size_t ITEM_COLUMN_INDEX = 1;
94 static std::shared_ptr<factorization_model> factory_train(
95 const std::string& factor_mode,
96 const v2::ml_data& train_data,
97 std::map<std::string, flexible_type> options);
101 std::map<std::string, variant_type> get_training_stats()
const;
124 static void add_options(
126 const std::vector<std::string>& option_flags);
136 double calculate_loss(
const v2::ml_data& data)
const;
142 sframe predict(
const v2::ml_data& test_data)
const;
147 virtual void score_all_items(
148 std::vector<std::pair<size_t, double> >& scores,
149 const std::vector<v2::ml_data_entry>& query_row,
151 const std::shared_ptr<v2::ml_data_side_features>& known_side_features)
const = 0;
156 virtual void reset_state(
size_t random_seed,
double sd) = 0;
162 virtual std::map<std::string, variant_type> get_coefficients()
const = 0;
172 virtual double calculate_fx(
size_t thread_idx,
const std::vector<v2::ml_data_entry>& x)
const = 0;
176 virtual double calculate_fx(
const std::vector<v2::ml_data_entry>& x)
const = 0;
180 virtual void get_item_similarity_scores(
181 size_t item, std::vector<std::pair<size_t, double> >& sim_scores)
const = 0;
183 typedef Eigen::Matrix<float, Eigen::Dynamic, 1> vector_type;
188 virtual void calculate_intracolumn_similarity(vector_type& dest,
size_t column_index,
size_t ref_index)
const = 0;
197 const std::string& loss_model_name,
198 const v2::ml_data& train_data,
199 const std::map<std::string, flexible_type>& opts);
203 virtual void internal_setup(
const v2::ml_data& train_data) {}
210 std::map<std::string, flexible_type> options;
219 size_t n_total_dimensions = 0;
221 std::vector<size_t> index_sizes;
222 std::vector<size_t> index_offsets;
226 std::vector<std::pair<double, double> > column_shift_scales;
228 std::shared_ptr<v2::ml_metadata> metadata;
230 double target_mean=0;
233 size_t random_seed = 0;
237 std::string loss_model_name;
238 std::shared_ptr<loss_model_profile> loss_model;
240 std::map<std::string, variant_type> _training_stats;
260 virtual size_t get_version()
const = 0;
267 virtual void load_version(
turi::iarchive& iarc,
size_t version) = 0;
277 virtual std::map<std::string, variant_type> get_serialization_parameters()
const = 0;
281 static std::shared_ptr<factorization_model> factory_load(
283 const std::map<std::string, variant_type>& serialization_parameters,
300 size_t version = m->get_version();
304 std::map<std::string, variant_type> serialization_parameters =
305 m->get_serialization_parameters();
309 m->local_save_impl(arc);
312 } END_OUT_OF_PLACE_SAVE()
316 arc >> is_not_nullptr;
325 std::map<std::string, variant_type> data;
326 data = variant_get_value<decltype(data)>(data_v);
331 m = std::shared_ptr<factorization::factorization_model>();
333 } END_OUT_OF_PLACE_LOAD()
#define BEGIN_OUT_OF_PLACE_LOAD(arc, tname, tval)
Macro to make it easy to define out-of-place loads.
The serialization input archive object which, provided with a reference to an istream, will read from the istream, providing deserialization capabilities.
void variant_deep_load(variant_type &v, iarchive &iarc)
void variant_deep_save(const variant_type &v, oarchive &oarc)
boost::make_recursive_variant< flexible_type, std::shared_ptr< unity_sgraph_base >, dataframe_t, std::shared_ptr< model_base >, std::shared_ptr< unity_sframe_base >, std::shared_ptr< unity_sarray_base >, std::map< std::string, boost::recursive_variant_ >, std::vector< boost::recursive_variant_ >, boost::recursive_wrapper< function_closure_info > >::type variant_type
static std::shared_ptr< factorization_model > factory_load(size_t version, const std::map< std::string, variant_type > &serialization_parameters, turi::iarchive &iarc)
variant_type to_variant(const T &f)
The serialization output archive object which, provided with a reference to an ostream, will write to the ostream, providing serialization capabilities.
#define BEGIN_OUT_OF_PLACE_SAVE(arc, tname, tval)
Macro to make it easy to define out-of-place saves.