SKLearner Home | About | Contact | Examples

Configure Ridge "solver" Parameter

The solver parameter in scikit-learn’s Ridge class determines the algorithm used to compute the Ridge coefficients.

Ridge regression is a regularized linear regression technique that adds an L2 penalty term to the ordinary least squares objective function. This penalty helps to mitigate multicollinearity and handle high-dimensional data.

The choice of solver can impact the computational efficiency and scalability of the Ridge model, depending on the size and structure of the dataset.

The default value for solver is ‘auto’, which automatically selects the solver based on the type and size of the data.

Common solver options include ‘svd’, ‘cholesky’, ’lsqr’, ‘sparse_cg’, ‘sag’, and ‘saga’. The ‘sag’ and ‘saga’ solvers are efficient for large datasets, while ‘svd’ and ‘cholesky’ provide exact solutions but are slower for larger data.

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
import time

# Generate synthetic dataset
X, y = make_regression(n_samples=10000, n_features=100, n_informative=50,
                       n_targets=1, bias=0.0, noise=0.1, random_state=42)

# Split into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train with different solver options
solvers = ['auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga']

for solver in solvers:
    start_time = time.time()
    ridge = Ridge(solver=solver)
    ridge.fit(X_train, y_train)
    y_pred = ridge.predict(X_test)
    mse = mean_squared_error(y_test, y_pred)
    elapsed_time = time.time() - start_time
    print(f"Solver: {solver}, MSE: {mse:.3f}, Training time: {elapsed_time:.3f} seconds")

Running the example gives an output like:

Solver: auto, MSE: 0.013, Training time: 0.010 seconds
Solver: svd, MSE: 0.013, Training time: 0.067 seconds
Solver: cholesky, MSE: 0.013, Training time: 0.008 seconds
Solver: lsqr, MSE: 0.013, Training time: 0.008 seconds
Solver: sparse_cg, MSE: 0.013, Training time: 0.008 seconds
Solver: sag, MSE: 0.013, Training time: 0.515 seconds
Solver: saga, MSE: 0.014, Training time: 0.227 seconds

The key steps in this example are:

  1. Generate a synthetic regression dataset with correlated features
  2. Split the data into train and test sets
  3. Train Ridge models with different solver options
  4. Evaluate the models using mean squared error (MSE) on the test set
  5. Compare the training time and MSE for each solver

Some tips and heuristics for setting the solver parameter:



See Also