slope 6.6.0
Loading...
Searching...
No Matches
poisson.h
Go to the documentation of this file.
1
8
9#pragma once
10
11#include "loss.h"
12
13namespace slope {
24class Poisson : public Loss
25{
26
27public:
28 explicit Poisson()
29 : Loss(std::numeric_limits<double>::infinity())
30 {
31 }
32
41 double loss(const Eigen::MatrixXd& eta, const Eigen::MatrixXd& y) override;
42
44 double loss(const Eigen::MatrixXd& eta,
45 const Eigen::MatrixXd& y,
46 const Eigen::VectorXd& observation_weights) override;
47
55 double dual(const Eigen::MatrixXd& theta,
56 const Eigen::MatrixXd& y,
57 const Eigen::VectorXd& w) override;
58
59 Eigen::MatrixXd dualPoint(const Eigen::MatrixXd& eta,
60 const Eigen::MatrixXd& y,
61 bool fit_intercept) override;
62
63 Eigen::MatrixXd dualPoint(
64 const Eigen::MatrixXd& eta,
65 const Eigen::MatrixXd& y,
66 bool fit_intercept,
67 const Eigen::VectorXd& observation_weights) override;
68
75 Eigen::MatrixXd hessianDiagonal(const Eigen::MatrixXd& eta) override;
76
85 Eigen::MatrixXd preprocessResponse(const Eigen::MatrixXd& y) override;
86
97 void updateIntercept(Eigen::VectorXd& beta0,
98 const Eigen::MatrixXd& eta,
99 const Eigen::MatrixXd& y) override;
100
106 Eigen::MatrixXd link(const Eigen::MatrixXd& mu) override;
107
113 Eigen::MatrixXd inverseLink(const Eigen::MatrixXd& eta) override;
114
122 Eigen::MatrixXd predict(const Eigen::MatrixXd& eta) override;
123};
124
125} // namespace slope
Loss(double lipschitz_constant)
Constructs an loss function with specified Lipschitz constant.
Definition loss.h:213
Eigen::MatrixXd dualPoint(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, bool fit_intercept) override
Constructs a dual candidate from a linear predictor.
double loss(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, const Eigen::VectorXd &observation_weights) override
Averages the loss over response columns and weighted rows.
Eigen::MatrixXd predict(const Eigen::MatrixXd &eta) override
Return predicted response, that is 0 or 1 depending on the predicted probabilities.
void updateIntercept(Eigen::VectorXd &beta0, const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y) override
Updates the intercept with a gradient descent update. Unlike the Quadratic and Logistic cases,...
double dual(const Eigen::MatrixXd &theta, const Eigen::MatrixXd &y, const Eigen::VectorXd &w) override
Calculates the Fenchel conjugate (dual) of the Poisson loss.
double loss(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y) override
Calculates the negative log-likelihood loss for the Poisson regression.
Eigen::MatrixXd inverseLink(const Eigen::MatrixXd &eta) override
The inverse link function, also known as the mean function.
Eigen::MatrixXd dualPoint(const Eigen::MatrixXd &eta, const Eigen::MatrixXd &y, bool fit_intercept, const Eigen::VectorXd &observation_weights) override
Constructs a dual candidate with weighted intercept stationarity.
Eigen::MatrixXd link(const Eigen::MatrixXd &mu) override
The link function.
Eigen::MatrixXd preprocessResponse(const Eigen::MatrixXd &y) override
Preprocesses the response for the Poisson model.
Eigen::MatrixXd hessianDiagonal(const Eigen::MatrixXd &eta) override
Calculates hessian diagonal.
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