6 (all.
loss ==
nullptr) || (all.
sd ==
nullptr))
32 if ((label1_cnt + label2_cnt) <= 0.)
36 if (funcName.compare(
"squared") == 0 || funcName.compare(
"Huber") == 0 || funcName.compare(
"classic") == 0)
43 else if (funcName.compare(
"hinge") == 0)
45 best_constant = label2_cnt <= label1_cnt ? -1.f : 1.f;
47 else if (funcName.compare(
"logistic") == 0)
54 else if (label2_cnt <= 0)
57 best_constant = log(label2_cnt / label1_cnt);
59 else if (funcName.compare(
"quantile") == 0 || funcName.compare(
"pinball") == 0 || funcName.compare(
"absolute") == 0)
66 float q = tau * (label1_cnt + label2_cnt);
68 best_constant = label2;
70 best_constant = label1;
77 best_constant_loss = (label1_cnt > 0) ? all.
loss->
getLoss(all.
sd, best_constant, label1) * label1_cnt : 0.0f;
78 best_constant_loss += (label2_cnt > 0) ? all.
loss->
getLoss(all.
sd, best_constant, label2) * label2_cnt : 0.0f;
79 best_constant_loss /= label1_cnt + label2_cnt;
82 best_constant_loss = FLT_MIN;
VW::config::options_i * options
bool is_more_than_two_labels_observed
float first_observed_label
bool get_best_constant(vw &all, float &best_constant, float &best_constant_loss)
virtual float getLoss(shared_data *, float prediction, float label)=0
typed_option< T > & get_typed_option(const std::string &key)
virtual bool was_supplied(const std::string &key)=0
virtual std::string getType()=0
double weighted_labeled_examples
float second_observed_label