Vowpal Wabbit
Functions
binary.cc File Reference
#include <cfloat>
#include "reductions.h"

Go to the source code of this file.

Functions

template<bool is_learn>
void predict_or_learn (char &, LEARNER::single_learner &base, example &ec)
 
LEARNER::base_learnerbinary_setup (options_i &options, vw &all)
 

Function Documentation

◆ binary_setup()

LEARNER::base_learner* binary_setup ( options_i options,
vw all 
)

Definition at line 30 of file binary.cc.

References VW::config::option_group_definition::add(), VW::config::options_i::add_and_parse(), LEARNER::as_singleline(), LEARNER::init_learner(), LEARNER::make_base(), VW::config::make_option(), and setup_base().

Referenced by parse_reductions().

31 {
32  bool binary = false;
33  option_group_definition new_options("Binary loss");
34  new_options.add(make_option("binary", binary).keep().help("report loss as binary classification on -1,1"));
35  options.add_and_parse(new_options);
36 
37  if (!binary)
38  return nullptr;
39 
41  LEARNER::init_learner(as_singleline(setup_base(options, all)), predict_or_learn<true>, predict_or_learn<false>);
42  return make_base(ret);
43 }
base_learner * make_base(learner< T, E > &base)
Definition: learner.h:462
virtual void add_and_parse(const option_group_definition &group)=0
single_learner * as_singleline(learner< T, E > *l)
Definition: learner.h:476
learner< T, E > & init_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), size_t ws, prediction_type::prediction_type_t pred_type)
Definition: learner.h:369
typed_option< T > make_option(std::string name, T &location)
Definition: options.h:80
LEARNER::base_learner * setup_base(options_i &options, vw &all)
Definition: parse_args.cc:1222

◆ predict_or_learn()

template<bool is_learn>
void predict_or_learn ( char &  ,
LEARNER::single_learner base,
example ec 
)

Definition at line 7 of file binary.cc.

References example::l, label_data::label, LEARNER::learner< T, E >::learn(), example::loss, example::pred, LEARNER::learner< T, E >::predict(), polyprediction::scalar, polylabel::simple, and example::weight.

8 {
9  if (is_learn)
10  base.learn(ec);
11  else
12  base.predict(ec);
13 
14  if (ec.pred.scalar > 0)
15  ec.pred.scalar = 1;
16  else
17  ec.pred.scalar = -1;
18 
19  if (ec.l.simple.label != FLT_MAX)
20  {
21  if (fabs(ec.l.simple.label) != 1.f)
22  std::cout << "You are using label " << ec.l.simple.label << " not -1 or 1 as loss function expects!" << std::endl;
23  else if (ec.l.simple.label == ec.pred.scalar)
24  ec.loss = 0.;
25  else
26  ec.loss = ec.weight;
27  }
28 }
void predict(E &ec, size_t i=0)
Definition: learner.h:169
float scalar
Definition: example.h:45
float label
Definition: simple_label.h:14
label_data simple
Definition: example.h:28
float loss
Definition: example.h:70
polylabel l
Definition: example.h:57
polyprediction pred
Definition: example.h:60
void learn(E &ec, size_t i=0)
Definition: learner.h:160
float weight
Definition: example.h:62