slope 6.6.0
Loading...
Searching...
No Matches
solver.h
Go to the documentation of this file.
1
5
6#pragma once
7
9#include "../losses/loss.h"
10#include "../sorted_l1_norm.h"
11#include <Eigen/Core>
12#include <Eigen/SparseCore>
13#include <memory>
14
15namespace slope {
16
30{
31public:
44
46 virtual ~SolverBase() = default;
47
64 virtual void run(
65 Eigen::VectorXd& beta0,
66 Eigen::VectorXd& beta,
67 Eigen::MatrixXd& eta,
68 const Eigen::ArrayXd& lambda,
69 const std::unique_ptr<Loss>& loss,
70 const SortedL1Norm& penalty,
71 const Eigen::VectorXd& gradient,
72 const std::vector<int>& working_set,
73 const Eigen::MatrixXd& x,
74 const Eigen::VectorXd& x_centers,
75 const Eigen::VectorXd& x_scales,
76 const Eigen::MatrixXd& y,
77 const Eigen::VectorXd& observation_weights = Eigen::VectorXd()) = 0;
78
95 virtual void run(
96 Eigen::VectorXd& beta0,
97 Eigen::VectorXd& beta,
98 Eigen::MatrixXd& eta,
99 const Eigen::ArrayXd& lambda,
100 const std::unique_ptr<Loss>& loss,
101 const SortedL1Norm& penalty,
102 const Eigen::VectorXd& gradient,
103 const std::vector<int>& working_set,
104 const Eigen::SparseMatrix<double>& x,
105 const Eigen::VectorXd& x_centers,
106 const Eigen::VectorXd& x_scales,
107 const Eigen::MatrixXd& y,
108 const Eigen::VectorXd& observation_weights = Eigen::VectorXd()) = 0;
109
126 virtual void run(
127 Eigen::VectorXd& beta0,
128 Eigen::VectorXd& beta,
129 Eigen::MatrixXd& eta,
130 const Eigen::ArrayXd& lambda,
131 const std::unique_ptr<Loss>& loss,
132 const SortedL1Norm& penalty,
133 const Eigen::VectorXd& gradient,
134 const std::vector<int>& working_set,
135 const Eigen::Map<Eigen::MatrixXd>& x,
136 const Eigen::VectorXd& x_centers,
137 const Eigen::VectorXd& x_scales,
138 const Eigen::MatrixXd& y,
139 const Eigen::VectorXd& observation_weights = Eigen::VectorXd()) = 0;
140
157 virtual void run(
158 Eigen::VectorXd& beta0,
159 Eigen::VectorXd& beta,
160 Eigen::MatrixXd& eta,
161 const Eigen::ArrayXd& lambda,
162 const std::unique_ptr<Loss>& loss,
163 const SortedL1Norm& penalty,
164 const Eigen::VectorXd& gradient,
165 const std::vector<int>& working_set,
166 const Eigen::Map<Eigen::SparseMatrix<double>>& x,
167 const Eigen::VectorXd& x_centers,
168 const Eigen::VectorXd& x_scales,
169 const Eigen::MatrixXd& y,
170 const Eigen::VectorXd& observation_weights = Eigen::VectorXd()) = 0;
171
172protected:
175};
176
177} // namespace slope
virtual ~SolverBase()=default
Default destructor.
JitNormalization jit_normalization
JIT feature normalization strategy.
Definition solver.h:173
bool intercept
If true, fits intercept term.
Definition solver.h:174
virtual void run(Eigen::VectorXd &beta0, Eigen::VectorXd &beta, Eigen::MatrixXd &eta, const Eigen::ArrayXd &lambda, const std::unique_ptr< Loss > &loss, const SortedL1Norm &penalty, const Eigen::VectorXd &gradient, const std::vector< int > &working_set, const Eigen::SparseMatrix< double > &x, const Eigen::VectorXd &x_centers, const Eigen::VectorXd &x_scales, const Eigen::MatrixXd &y, const Eigen::VectorXd &observation_weights=Eigen::VectorXd())=0
Pure virtual function defining the solver's optimization routine.
virtual void run(Eigen::VectorXd &beta0, Eigen::VectorXd &beta, Eigen::MatrixXd &eta, const Eigen::ArrayXd &lambda, const std::unique_ptr< Loss > &loss, const SortedL1Norm &penalty, const Eigen::VectorXd &gradient, const std::vector< int > &working_set, const Eigen::MatrixXd &x, const Eigen::VectorXd &x_centers, const Eigen::VectorXd &x_scales, const Eigen::MatrixXd &y, const Eigen::VectorXd &observation_weights=Eigen::VectorXd())=0
Pure virtual function defining the solver's optimization routine.
virtual void run(Eigen::VectorXd &beta0, Eigen::VectorXd &beta, Eigen::MatrixXd &eta, const Eigen::ArrayXd &lambda, const std::unique_ptr< Loss > &loss, const SortedL1Norm &penalty, const Eigen::VectorXd &gradient, const std::vector< int > &working_set, const Eigen::Map< Eigen::MatrixXd > &x, const Eigen::VectorXd &x_centers, const Eigen::VectorXd &x_scales, const Eigen::MatrixXd &y, const Eigen::VectorXd &observation_weights=Eigen::VectorXd())=0
Pure virtual function defining the solver's optimization routine.
SolverBase(JitNormalization jit_normalization, bool intercept)
Constructs a base solver for SLOPE optimization.
Definition solver.h:39
virtual void run(Eigen::VectorXd &beta0, Eigen::VectorXd &beta, Eigen::MatrixXd &eta, const Eigen::ArrayXd &lambda, const std::unique_ptr< Loss > &loss, const SortedL1Norm &penalty, const Eigen::VectorXd &gradient, const std::vector< int > &working_set, const Eigen::Map< Eigen::SparseMatrix< double > > &x, const Eigen::VectorXd &x_centers, const Eigen::VectorXd &x_scales, const Eigen::MatrixXd &y, const Eigen::VectorXd &observation_weights=Eigen::VectorXd())=0
Pure virtual function defining the solver's optimization routine.
Class representing the Sorted L1 Norm.
Enums to control predictor standardization behavior.
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
JitNormalization
Enums to control predictor standardization behavior.
The declaration of the SortedL1Norm class.