# shrinkage.StoppingCriterion

Shrinkage for Python · 0.2.0

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

<a id="constructor"></a>

```python
StoppingCriterion(
    kind: typing.Literal["duality_gap", "kkt_violation", "proximal_gradient_mapping"],
    absolute: float,
    relative: float = 0.0
)
```

A convergence check with tolerances in its own units.

Gaussian lasso supports `duality_gap` and `kkt_violation`. HybridCoordinateDescent and proximal gradient support only `proximal_gradient_mapping`. KKT and mapping tolerances must be finite and strictly positive and use no relative component. Gap tolerances must be finite and nonnegative, with at least one positive component. Compatibility is checked when fitting.

<a id="kind"></a>

## `kind`

```python
kind: typing.Literal["duality_gap", "kkt_violation", "proximal_gradient_mapping"]
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

<a id="absolute"></a>

## `absolute`

```python
absolute: float
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

<a id="relative"></a>

## `relative`

```python
relative: float = 0.0
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

<a id="duality_gap"></a>

## `duality_gap`

```python
duality_gap(
    relative: float = 1e-6,
    *,
    absolute: float = 0.0
) -> shrinkage.StoppingCriterion
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

Require gap \<= absolute + relative \* fixed null-model loss.

<a id="kkt_violation"></a>

## `kkt_violation`

```python
kkt_violation(absolute: float = 1e-6) -> shrinkage.StoppingCriterion
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

Require the largest absolute KKT violation \<= absolute.

<a id="proximal_gradient_mapping"></a>

## `proximal_gradient_mapping`

```python
proximal_gradient_mapping(absolute: float = 1e-6) -> shrinkage.StoppingCriterion
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/packages/python/src/shrinkage/_common.py>)

Bound the full mapping and the free-intercept derivative.
