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::classifier::arow Class Reference

#include <arow.hpp>

Inheritance diagram for jubatus::core::classifier::arow:
Inheritance graph
Collaboration diagram for jubatus::core::classifier::arow:
Collaboration graph

Public Member Functions

 arow (storage_ptr storage)
 
 arow (const classifier_config &config, storage_ptr storage)
 
std::string name () const
 
void train (const common::sfv_t &fv, const std::string &label)
 
- Public Member Functions inherited from jubatus::core::classifier::linear_classifier
std::string classify (const common::sfv_t &fv) const
 
void classify_with_scores (const common::sfv_t &fv, classify_result &scores) const
 
void clear ()
 
bool delete_label (const std::string &label)
 
std::vector< std::string > get_labels () const
 
framework::mixableget_mixable ()
 
virtual void get_status (std::map< std::string, std::string > &status) const
 
jubatus::util::lang::shared_ptr< unlearner::unlearner_baselabel_unlearner () const
 
 linear_classifier (storage_ptr storage)
 
void pack (framework::packer &pk) const
 
bool set_label (const std::string &label)
 
void set_label_unlearner (jubatus::util::lang::shared_ptr< unlearner::unlearner_base > label_unlearner)
 
bool unlearn_label (const std::string &label)
 
void unpack (msgpack::object o)
 
virtual ~linear_classifier ()
 
- Public Member Functions inherited from jubatus::core::classifier::classifier_base
 classifier_base ()
 
virtual ~classifier_base ()
 

Private Member Functions

void update (const common::sfv_t &fv, float alpha, float beta, const std::string &pos_label, const std::string &neg_label)
 

Private Attributes

classifier_config config_
 

Additional Inherited Members

- Protected Member Functions inherited from jubatus::core::classifier::linear_classifier
float calc_margin (const common::sfv_t &sfv, const std::string &label, std::string &incorrect_label) const
 
float calc_margin_and_variance (const common::sfv_t &sfv, const std::string &label, std::string &incorrect_label, float &variance) const
 
void check_touchable (const std::string &label)
 
std::string get_largest_incorrect_label (const common::sfv_t &sfv, const std::string &label, classify_result &scores) const
 
void touch (const std::string &label)
 
void update_weight (const common::sfv_t &sfv, float step_weigth, const std::string &pos_label, const std::string &neg_class)
 
- Static Protected Member Functions inherited from jubatus::core::classifier::linear_classifier
static float squared_norm (const common::sfv_t &sfv)
 
- Protected Attributes inherited from jubatus::core::classifier::linear_classifier
framework::linear_function_mixer mixable_storage_
 
storage_ptr storage_
 
jubatus::util::lang::shared_ptr< unlearner::unlearner_baseunlearner_
 

Detailed Description

Definition at line 28 of file arow.hpp.

Constructor & Destructor Documentation

jubatus::core::classifier::arow::arow ( storage_ptr  storage)
explicit

Definition at line 33 of file arow.cpp.

34  : linear_classifier(storage) {
35 }
jubatus::core::classifier::arow::arow ( const classifier_config config,
storage_ptr  storage 
)

Definition at line 37 of file arow.cpp.

References JUBATUS_EXCEPTION, and jubatus::core::classifier::classifier_config::regularization_weight.

40  : linear_classifier(storage),
41  config_(config) {
42 
43  if (!(0.f < config.regularization_weight)) {
44  throw JUBATUS_EXCEPTION(
45  common::invalid_parameter("0.0 < regularization_weight"));
46  }
47 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
classifier_config config_
Definition: arow.hpp:41

Member Function Documentation

string jubatus::core::classifier::arow::name ( ) const
virtual

Implements jubatus::core::classifier::linear_classifier.

Definition at line 101 of file arow.cpp.

101  {
102  return string("arow");
103 }
void jubatus::core::classifier::arow::train ( const common::sfv_t fv,
const std::string &  label 
)
virtual

Implements jubatus::core::classifier::linear_classifier.

Definition at line 49 of file arow.cpp.

References jubatus::core::classifier::linear_classifier::calc_margin_and_variance(), jubatus::core::classifier::linear_classifier::check_touchable(), config_, jubatus::core::classifier::classifier_config::regularization_weight, jubatus::core::classifier::linear_classifier::storage_, and update().

49  {
50  check_touchable(label);
51 
52  string incorrect_label;
53  float variance = 0.f;
54  float margin = -calc_margin_and_variance(sfv, label, incorrect_label,
55  variance);
56  if (margin >= 1.f) {
57  storage_->register_label(label);
58  return;
59  }
60 
61  float beta = 1.f / (variance + 1.f / config_.regularization_weight);
62  float alpha = (1.f - margin) * beta; // max(0, 1 - margin) = 1 - margin
63  update(sfv, alpha, beta, label, incorrect_label);
64 }
float calc_margin_and_variance(const common::sfv_t &sfv, const std::string &label, std::string &incorrect_label, float &variance) const
void update(const common::sfv_t &fv, float alpha, float beta, const std::string &pos_label, const std::string &neg_label)
Definition: arow.cpp:66
void check_touchable(const std::string &label)
classifier_config config_
Definition: arow.hpp:41

Here is the call graph for this function:

void jubatus::core::classifier::arow::update ( const common::sfv_t fv,
float  alpha,
float  beta,
const std::string &  pos_label,
const std::string &  neg_label 
)
private

Definition at line 66 of file arow.cpp.

References jubatus::core::classifier::ClassifierUtil::get_two(), jubatus::core::classifier::linear_classifier::storage_, jubatus::core::classifier::linear_classifier::touch(), jubatus::core::storage::val2_t::v1, and jubatus::core::storage::val2_t::v2.

Referenced by train().

71  {
72  util::concurrent::scoped_lock lk(storage_->get_lock());
73  for (common::sfv_t::const_iterator it = sfv.begin(); it != sfv.end(); ++it) {
74  const string& feature = it->first;
75  float val = it->second;
77  storage_->get2_nolock(feature, ret);
78 
79  storage::val2_t pos_val(0.f, 1.f);
80  storage::val2_t neg_val(0.f, 1.f);
81  ClassifierUtil::get_two(ret, pos_label, neg_label, pos_val, neg_val);
82 
83  storage_->set2_nolock(
84  feature,
85  pos_label,
86  storage::val2_t(
87  pos_val.v1 + alpha * pos_val.v2 * val,
88  pos_val.v2 - beta * pos_val.v2 * pos_val.v2 * val * val));
89  if (neg_label != "") {
90  storage_->set2_nolock(
91  feature,
92  neg_label,
93  storage::val2_t(
94  neg_val.v1 - alpha * neg_val.v2 * val,
95  neg_val.v2 - beta * neg_val.v2 * neg_val.v2 * val * val));
96  }
97  }
98  touch(pos_label);
99 }
static void get_two(const T &t, const std::string &label1, const std::string &label2, U &u1, U &u2)
std::vector< std::pair< std::string, val2_t > > feature_val2_t

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

classifier_config jubatus::core::classifier::arow::config_
private

Definition at line 41 of file arow.hpp.

Referenced by train().


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