Medial Code Documentation
Loading...
Searching...
No Matches
metric.h
1#ifndef LIGHTGBM_METRIC_H_
2#define LIGHTGBM_METRIC_H_
3
4#include <LightGBM/utils/log.h>
5#include <LightGBM/utils/common.h>
6
7#include <LightGBM/meta.h>
8#include <LightGBM/config.h>
9#include <LightGBM/dataset.h>
10#include <LightGBM/objective_function.h>
11
12#include <vector>
13
14namespace LightGBM {
15
20class Metric {
21public:
23 virtual ~Metric() {}
24
31 virtual void Init(const Metadata& metadata, data_size_t num_data) = 0;
32
33 virtual const std::vector<std::string>& GetName() const = 0;
34
35 virtual double factor_to_bigger_better() const = 0;
40 virtual std::vector<double> Eval(const double* score, const ObjectiveFunction* objective) const = 0;
41
42 Metric() = default;
44 Metric& operator=(const Metric&) = delete;
46 Metric(const Metric&) = delete;
47
53 LIGHTGBM_EXPORT static Metric* CreateMetric(const std::string& type, const Config& config);
54};
55
60public:
61 static void DefaultEvalAt(std::vector<int>* eval_at);
62 static void DefaultLabelGain(std::vector<double>* label_gain);
67 static void Init(const std::vector<double>& label_gain);
68
77 static double CalDCGAtK(data_size_t k, const label_t* label,
78 const double* score, data_size_t num_data);
79
88 static void CalDCG(const std::vector<data_size_t>& ks,
89 const label_t* label, const double* score,
90 data_size_t num_data, std::vector<double>* out);
91
99 static double CalMaxDCGAtK(data_size_t k,
100 const label_t* label, data_size_t num_data);
101
107 static void CheckLabel(const label_t* label, data_size_t num_data);
108
116 static void CalMaxDCG(const std::vector<data_size_t>& ks,
117 const label_t* label, data_size_t num_data, std::vector<double>* out);
118
124 inline static double GetDiscount(data_size_t k) { return discount_[k]; }
125
126private:
128 static std::vector<double> label_gain_;
130 static std::vector<double> discount_;
132 static const data_size_t kMaxPosition;
133};
134
135
136} // namespace LightGBM
137
138
139#endif // LightGBM_METRIC_H_
Static class, used to calculate DCG score.
Definition metric.h:59
static void CheckLabel(const label_t *label, data_size_t num_data)
Check the label range for NDCG and lambdarank.
Definition dcg_calculator.cpp:152
static double CalDCGAtK(data_size_t k, const label_t *label, const double *score, data_size_t num_data)
Calculate the DCG score at position k.
Definition dcg_calculator.cpp:107
static void Init(const std::vector< double > &label_gain)
Initial logic.
Definition dcg_calculator.cpp:40
static void CalMaxDCG(const std::vector< data_size_t > &ks, const label_t *label, data_size_t num_data, std::vector< double > *out)
Calculate the Max DCG score at multi position.
Definition dcg_calculator.cpp:75
static double GetDiscount(data_size_t k)
Get discount score of position k.
Definition metric.h:124
static void CalDCG(const std::vector< data_size_t > &ks, const label_t *label, const double *score, data_size_t num_data, std::vector< double > *out)
Calculate the DCG score at multi position.
Definition dcg_calculator.cpp:127
static double CalMaxDCGAtK(data_size_t k, const label_t *label, data_size_t num_data)
Calculate the Max DCG score at position k.
Definition dcg_calculator.cpp:51
This class is used to store some meta(non-feature) data for training data, e.g. labels,...
Definition dataset.h:36
The interface of metric. Metric is used to calculate metric result.
Definition metric.h:20
virtual std::vector< double > Eval(const double *score, const ObjectiveFunction *objective) const =0
Calcaluting and printing metric result.
virtual ~Metric()
virtual destructor
Definition metric.h:23
static LIGHTGBM_EXPORT Metric * CreateMetric(const std::string &type, const Config &config)
Create object of metrics.
Definition metric.cpp:11
Metric & operator=(const Metric &)=delete
Disable copy.
Metric(const Metric &)=delete
Disable copy.
virtual void Init(const Metadata &metadata, data_size_t num_data)=0
Initialize.
The interface of Objective Function.
Definition objective_function.h:13
desc and descl2 fields must be written in reStructuredText format
Definition application.h:10
float label_t
Type of metadata, include weight and label.
Definition meta.h:33
int32_t data_size_t
Type of data size, it is better to use signed type.
Definition meta.h:14
Definition config.h:27