L2WithDeadZone implements a standard L2 penalty, but with a dead zone of width 2*k, centered at the origin.
The resulting penalty within the dead zone is always zero, and grows quadratically outside the dead zone. In this sense, the L2WithDeadZone penalty is "robust to inliers", rather than being robust to outliers. This penalty can be used to create barrier functions in a general way.
|
| L2WithDeadZone (double k=1.0, const ReweightScheme reweight=Block) |
|
double | weight (double distance) const override |
|
double | loss (double distance) const override |
|
void | print (const std::string &s) const override |
|
bool | equals (const Base &expected, double tol=1e-8) const override |
|
| Base (const ReweightScheme reweight=Block) |
|
virtual double | loss (double distance) const |
|
virtual double | weight (double distance) const =0 |
|
virtual void | print (const std::string &s) const =0 |
|
virtual bool | equals (const Base &expected, double tol=1e-8) const =0 |
|
double | sqrtWeight (double distance) const |
|
Vector | weight (const Vector &error) const |
| produce a weight vector according to an error vector and the implemented robust function
|
|
Vector | sqrtWeight (const Vector &error) const |
| square root version of the weight function
|
|
void | reweight (Vector &error) const |
| reweight block matrices and a vector according to their weight implementation
|
|
void | reweight (std::vector< Matrix > &A, Vector &error) const |
|
void | reweight (Matrix &A, Vector &error) const |
|
void | reweight (Matrix &A1, Matrix &A2, Vector &error) const |
|
void | reweight (Matrix &A1, Matrix &A2, Matrix &A3, Vector &error) const |
|