slope 6.6.0
Loading...
Searching...
No Matches
score.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include "losses/loss.h"
9#include <Eigen/Core>
10#include <memory>
11
12namespace slope {
13
25double
26binaryRocAuc(const Eigen::VectorXd& scores, const Eigen::VectorXd& labels);
27
29double
30binaryRocAuc(const Eigen::VectorXd& scores,
31 const Eigen::VectorXd& labels,
32 const Eigen::VectorXd& observation_weights);
33
47double
48rocAuc(const Eigen::MatrixXd& scores, const Eigen::MatrixXd& labels);
49
51double
52rocAuc(const Eigen::MatrixXd& scores,
53 const Eigen::MatrixXd& labels,
54 const Eigen::VectorXd& observation_weights);
55
64class Score
65{
66public:
67 virtual ~Score() = default;
68
75 virtual bool isWorse(double other, double current) const = 0;
76
81 virtual double initValue() const = 0;
82
87 std::function<bool(double, double)> getComparator() const;
88
96 virtual double eval(const Eigen::MatrixXd& eta,
97 const Eigen::MatrixXd& y,
98 const std::unique_ptr<Loss>& loss) const = 0;
99
107 virtual double eval(const Eigen::MatrixXd& eta,
108 const Eigen::MatrixXd& y,
109 const std::unique_ptr<Loss>& loss,
110 const Eigen::VectorXd& observation_weights) const;
111
117 static std::unique_ptr<Score> create(const std::string& metric);
118};
119
127class MinimizeScore : public Score
128{
129public:
136 bool isWorse(double a, double b) const override;
137
142 double initValue() const override;
143};
144
152class MaximizeScore : public Score
153{
154public:
161 bool isWorse(double a, double b) const override;
162
167 double initValue() const override;
168};
169
183class MSE : public MinimizeScore
184{
185public:
192 double eval(const Eigen::MatrixXd& eta,
193 const Eigen::MatrixXd& y,
194 const std::unique_ptr<Loss>&) const override;
195
196 double eval(const Eigen::MatrixXd& eta,
197 const Eigen::MatrixXd& y,
198 const std::unique_ptr<Loss>& loss,
199 const Eigen::VectorXd& observation_weights) const override;
200};
201
218class MAE : public MinimizeScore
219{
220public:
227 double eval(const Eigen::MatrixXd& eta,
228 const Eigen::MatrixXd& y,
229 const std::unique_ptr<Loss>&) const override;
230
231 double eval(const Eigen::MatrixXd& eta,
232 const Eigen::MatrixXd& y,
233 const std::unique_ptr<Loss>& loss,
234 const Eigen::VectorXd& observation_weights) const override;
235};
236
251{
252public:
260 double eval(const Eigen::MatrixXd& eta,
261 const Eigen::MatrixXd& y,
262 const std::unique_ptr<Loss>& loss) const override;
263
264 double eval(const Eigen::MatrixXd& eta,
265 const Eigen::MatrixXd& y,
266 const std::unique_ptr<Loss>& loss,
267 const Eigen::VectorXd& observation_weights) const override;
268};
269
286{
287public:
295 double eval(const Eigen::MatrixXd& eta,
296 const Eigen::MatrixXd& y,
297 const std::unique_ptr<Loss>& loss) const override;
298
299 double eval(const Eigen::MatrixXd& eta,
300 const Eigen::MatrixXd& y,
301 const std::unique_ptr<Loss>& loss,
302 const Eigen::VectorXd& observation_weights) const override;
303};
304
317{
318public:
326 double eval(const Eigen::MatrixXd& eta,
327 const Eigen::MatrixXd& y,
328 const std::unique_ptr<Loss>& loss) const override;
329
330 double eval(const Eigen::MatrixXd& eta,
331 const Eigen::MatrixXd& y,
332 const std::unique_ptr<Loss>& loss,
333 const Eigen::VectorXd& observation_weights) const override;
334};
335
353class AUC : public MaximizeScore
354{
355public:
363 double eval(const Eigen::MatrixXd& eta,
364 const Eigen::MatrixXd& y,
365 const std::unique_ptr<Loss>& loss) const override;
366
367 double eval(const Eigen::MatrixXd& eta,
368 const Eigen::MatrixXd& y,
369 const std::unique_ptr<Loss>& loss,
370 const Eigen::VectorXd& observation_weights) const override;
371};
372
373} // namespace slope
Area Under the ROC Curve (AUC-ROC) scoring metric.
Definition score.h:354
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss) const override
Classification Accuracy scoring metric.
Definition score.h:251
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
Deviance scoring metric.
Definition score.h:317
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss) const override
Mean Absolute Error (MAE) scoring metric.
Definition score.h:219
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &) const override
Mean Squared Error (MSE) scoring metric.
Definition score.h:184
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &) const override
Scoring metric that aims to maximize the score value.
Definition score.h:153
bool isWorse(double a, double b) const override
double initValue() const override
Scoring metric that aims to minimize the score value.
Definition score.h:128
double initValue() const override
bool isWorse(double a, double b) const override
Misclassification Rate scoring metric.
Definition score.h:286
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const override
double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss) const override
Base class for scoring metrics used in regularized generalized linear regression.
Definition score.h:65
std::function< bool(double, double)> getComparator() const
virtual double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss, const Eigen::VectorXd &observation_weights) const
virtual bool isWorse(double other, double current) const =0
static std::unique_ptr< Score > create(const std::string &metric)
virtual double eval(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const std::unique_ptr< Loss > &loss) const =0
virtual double initValue() const =0
The declartion of the Objctive class and its subclasses, which represent the data-fitting part of the...
Namespace containing SLOPE regression implementation.
Definition clusters.h:11
double binaryRocAuc(const Eigen::VectorXd &scores, const Eigen::VectorXd &labels)
double rocAuc(const Eigen::MatrixXd &scores, const Eigen::MatrixXd &labels)