Online Coordinate Coordinate Descent
Overview
This submodule holds the functions related to the online coordinate descent (OCO).
API Reference
ondil.coordinate_descent.online_coordinate_descent
online_coordinate_descent(
x_gram: ndarray,
y_gram: ndarray,
beta: ndarray,
regularization: float,
is_regularized: bool,
alpha: float,
beta_lower_bound: ndarray,
beta_upper_bound: ndarray,
selection: Literal["cyclic", "random"] = "cyclic",
tolerance: float = 0.0001,
max_iterations: int = 1000,
) -> Tuple[np.ndarray, int]
The parameter update cycle of the online coordinate descent.
Parameters:
-
x_gram(ndarray) –X-Gramian \(\(X^TX\)\)
-
y_gram(ndarray) –Y-Gramian \(\(X^TY\)\)
-
beta(ndarray) –Current beta vector
-
regularization(float) –Regularization parameter lambda
-
is_regularized(bool) –Vector of bools indicating whether the coefficient is regularized
-
beta_lower_bound(ndarray) –Lower bounds for beta
-
beta_upper_bound(ndarray) –Upper bounds for beta
-
selection(Literal['cyclic', 'random'], default:'cyclic') –Apply cyclic or random coordinate descent. Defaults to "cyclic".
-
tolerance(float, default:0.0001) –Tolerance for the beta update. Defaults to 1e-4.
-
max_iterations(int, default:1000) –Maximum iterations. Defaults to 1000.
Returns:
-
Tuple[ndarray, int]–Tuple[np.ndarray, int]: Converged $$ \beta $$
ondil.coordinate_descent.online_coordinate_descent_path
online_coordinate_descent_path(
x_gram: ndarray,
y_gram: ndarray,
beta_path: ndarray,
lambda_path: ndarray,
is_regularized: ndarray,
alpha: float,
early_stop: int,
beta_lower_bound: ndarray,
beta_upper_bound: ndarray,
which_start_value: Literal[
"previous_lambda", "previous_fit", "average"
] = "previous_lambda",
selection: Literal["cyclic", "random"] = "cyclic",
tolerance: float = 0.0001,
max_iterations: int = 1000,
) -> Tuple[np.ndarray, np.ndarray]
Run coordinate descent on a grid of regularization values.
Parameters:
-
x_gram(ndarray) –X-Gramian \(\(X^TX\)\)
-
y_gram(ndarray) –Y-Gramian \(\(X^TY\)\)
-
beta_path(ndarray) –The current coefficent path
-
lambda_path(ndarray) –The lambda grid
-
is_regularized(bool) –Vector of bools indicating whether the coefficient is regularized
-
early_stop(int) –Early stopping criterion. 0 implies no early stopping. Defaults to 0.
-
beta_lower_bound(ndarray) –Lower bounds for beta
-
beta_upper_bound(ndarray) –Upper bounds for beta
-
which_start_value(Literal['previous_lambda', 'previous_fit', 'average'], default:'previous_lambda') –Values to warm-start the coordinate descent. Defaults to "previous_lambda".
-
selection(Literal['cyclic', 'random'], default:'cyclic') –Apply cyclic or random coordinate descent. Defaults to "cyclic".
-
tolerance(float, default:0.0001) –Tolerance for the beta update. Will be passed through to the parameter update. Defaults to 1e-4.
-
max_iterations(int, default:1000) –Maximum iterations. Will be passed through to the parameter update. Defaults to 1000.
Returns:
-
Tuple[ndarray, ndarray]–Tuple[np.ndarray, np.ndarray]: Tuple with the updated coefficient path and the iteration count.
ondil.coordinate_descent.soft_threshold
The soft thresholding function.
For value \(x\) and threshold \(\\lambda\), the soft thresholding function \(S(x, \\lambda)\) is defined as:
Parameters:
-
value(float) –The value
-
threshold(float) –The threshold
Returns:
-
out(float) –The thresholded value