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

#include <passive_aggressive.hpp>

Inheritance diagram for jubatus::core::regression::passive_aggressive:
Inheritance graph
Collaboration diagram for jubatus::core::regression::passive_aggressive:
Collaboration graph

Classes

struct  config
 

Public Member Functions

void clear ()
 
 passive_aggressive (const config &config, storage_ptr storage)
 
 passive_aggressive (storage_ptr storage)
 
void train (const common::sfv_t &fv, float value)
 
- Public Member Functions inherited from jubatus::core::regression::regression_base
float estimate (const common::sfv_t &fv) const
 
virtual void get_status (std::map< std::string, std::string > &status) const
 
storage_ptr get_storage ()
 
 regression_base (storage_ptr storage)
 
virtual ~regression_base ()
 

Private Attributes

config config_
 
float count_
 
float sq_sum_
 
float sum_
 

Additional Inherited Members

- Protected Member Functions inherited from jubatus::core::regression::regression_base
void update (const common::sfv_t &fv, float coeff)
 
- Protected Attributes inherited from jubatus::core::regression::regression_base
storage_ptr storage_
 

Detailed Description

Definition at line 28 of file passive_aggressive.hpp.

Constructor & Destructor Documentation

jubatus::core::regression::passive_aggressive::passive_aggressive ( const config config,
storage_ptr  storage 
)

Definition at line 27 of file passive_aggressive.cpp.

References JUBATUS_EXCEPTION, jubatus::core::regression::passive_aggressive::config::regularization_weight, and jubatus::core::regression::passive_aggressive::config::sensitivity.

30  : regression_base(storage),
31  config_(config),
32  sum_(0.f),
33  sq_sum_(0.f),
34  count_(0.f) {
35 
36  if (!(0.f < config.regularization_weight)) {
37  throw JUBATUS_EXCEPTION(
38  common::invalid_parameter("0.0 < regularization_weight"));
39  }
40 
41  if (!(0.f <= config.sensitivity)) {
42  throw JUBATUS_EXCEPTION(
43  common::invalid_parameter("0.0 <= sensitivity"));
44  }
45 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
jubatus::core::regression::passive_aggressive::passive_aggressive ( storage_ptr  storage)
explicit

Member Function Documentation

void jubatus::core::regression::passive_aggressive::clear ( )
virtual
void jubatus::core::regression::passive_aggressive::train ( const common::sfv_t fv,
float  value 
)
virtual

Implements jubatus::core::regression::regression_base.

Definition at line 62 of file passive_aggressive.cpp.

References config_, count_, jubatus::core::regression::regression_base::estimate(), jubatus::core::regression::passive_aggressive::config::regularization_weight, jubatus::core::regression::passive_aggressive::config::sensitivity, sq_sum_, jubatus::core::regression::squared_norm(), sum_, and jubatus::core::regression::regression_base::update().

62  {
63  sum_ += value;
64  sq_sum_ += value * value;
65  count_ += 1;
66  float avg = sum_ / count_;
67  float std_dev = std::sqrt(sq_sum_ / count_ - avg * avg);
68 
69  float predict = estimate(fv);
70  float error = value - predict;
71  float sign_error = error > 0.f ? 1.0f : -1.0f;
72  float loss = sign_error * error - config_.sensitivity * std_dev;
73 
74  if (loss > 0.f) {
76  float coeff = sign_error * std::min(C, loss) / squared_norm(fv);
77  if (!std::isinf(coeff)) {
78  update(fv, coeff);
79  }
80  }
81 }
static float squared_norm(const common::sfv_t &fv)
float estimate(const common::sfv_t &fv) const
void update(const common::sfv_t &fv, float coeff)

Here is the call graph for this function:

Member Data Documentation

config jubatus::core::regression::passive_aggressive::config_
private

Definition at line 55 of file passive_aggressive.hpp.

Referenced by train().

float jubatus::core::regression::passive_aggressive::count_
private

Definition at line 58 of file passive_aggressive.hpp.

Referenced by clear(), and train().

float jubatus::core::regression::passive_aggressive::sq_sum_
private

Definition at line 57 of file passive_aggressive.hpp.

Referenced by clear(), and train().

float jubatus::core::regression::passive_aggressive::sum_
private

Definition at line 56 of file passive_aggressive.hpp.

Referenced by clear(), and train().


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