slope 0.29.0
Loading...
Searching...
No Matches
hybrid.cpp
Go to the documentation of this file.
1
6#include "hybrid.h"
7#include "../losses/loss.h"
8#include "../sorted_l1_norm.h"
9#include <Eigen/Dense>
10#include <Eigen/SparseCore>
11#include <memory>
12
13namespace slope {
14
15// Override for dense matrices
16void
17Hybrid::run(Eigen::VectorXd& beta0,
18 Eigen::VectorXd& beta,
19 Eigen::MatrixXd& eta,
20 const Eigen::ArrayXd& lambda,
21 const std::unique_ptr<Loss>& loss,
22 const SortedL1Norm& penalty,
23 const Eigen::VectorXd& gradient,
24 const std::vector<int>& working_set,
25 const Eigen::MatrixXd& x,
26 const Eigen::VectorXd& x_centers,
27 const Eigen::VectorXd& x_scales,
28 const Eigen::MatrixXd& y)
29{
30 runImpl(beta0,
31 beta,
32 eta,
33 lambda,
34 loss,
35 penalty,
36 gradient,
37 working_set,
38 x,
39 x_centers,
40 x_scales,
41 y);
42}
43
44// Override for sparse matrices
45void
46Hybrid::run(Eigen::VectorXd& beta0,
47 Eigen::VectorXd& beta,
48 Eigen::MatrixXd& eta,
49 const Eigen::ArrayXd& lambda,
50 const std::unique_ptr<Loss>& loss,
51 const SortedL1Norm& penalty,
52 const Eigen::VectorXd& gradient,
53 const std::vector<int>& working_set,
54 const Eigen::SparseMatrix<double>& x,
55 const Eigen::VectorXd& x_centers,
56 const Eigen::VectorXd& x_scales,
57 const Eigen::MatrixXd& y)
58{
59 runImpl(beta0,
60 beta,
61 eta,
62 lambda,
63 loss,
64 penalty,
65 gradient,
66 working_set,
67 x,
68 x_centers,
69 x_scales,
70 y);
71}
72
73} // namespace slope
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) override
Pure virtual function defining the solver's optimization routine.
Definition hybrid.cpp:17
Class representing the Sorted L1 Norm.
Hybrid numerical solver for SLOPE combining coordinate descent and proximal gradient descent.
Namespace containing SLOPE regression implementation.
Definition clusters.cpp:5