# Define regularization object for predictor and external data.

Source:`R/define_penalty.R`

`define_penalty.Rd`

Defines regularization for predictors and external data
variables in `xrnet`

fitting. Use helper functions define_lasso,
define_ridge, or define_enet to specify a common penalty on x or external.

## Usage

```
define_penalty(
penalty_type = 1,
quantile = 0.5,
num_penalty = 20,
penalty_ratio = NULL,
user_penalty = NULL,
custom_multiplier = NULL
)
```

## Arguments

- penalty_type
type of regularization. Default is 1 (Lasso). Can supply either a scalar value or vector with length equal to the number of variables the matrix.

0 = Ridge

(0,1) = Elastic-Net

1 = Lasso / Quantile

- quantile
specifies quantile for quantile penalty. Default of 0.5 reduces to lasso (currently not implemented).

- num_penalty
number of penalty values to fit in grid. Default is 20.

- penalty_ratio
ratio between minimum and maximum penalty for x. Default is 1e-04 if \(n > p\) and 0.01 if \(n <= p\).

- user_penalty
user-defined vector of penalty values to use in penalty path.

- custom_multiplier
variable-specific penalty multipliers to apply to overall penalty. Default is 1 for all variables. 0 is no penalization.

## Value

A list object with regularization settings that are used to define
the regularization for predictors or external data in `xrnet`

and
`tune_xrnet`

:

- penalty_type
The penalty type, scalar with value in range [0, 1].

- quantile
Quantile for quantile penalty, 0.5 defaults to lasso (not currently implemented).

- num_penalty
The number of penalty values in the penalty path.

- penalty_ratio
The ratio of the minimum penalty value compared to the maximum penalty value.

- user_penalty
User-defined numeric vector of penalty values, NULL if not provided by user.

- custom_multiplier
User-defined feature-specific penalty multipliers, NULL if not provided by user.

## Examples

```
# define ridge penalty with penalty grid split into 30 values
my_penalty <- define_penalty(penalty_type = 0, num_penalty = 30)
# define elastic net (0.5) penalty with user-defined penalty
my_custom_penalty <- define_penalty(
penalty_type = 0.5, user_penalty = c(100, 50, 10, 1, 0.1)
)
```