SKLearner Home | About | Contact | Examples

Configure SVR "coef0" Parameter

The coef0 parameter in scikit-learn’s SVR (Support Vector Regression) controls the independent term in the kernel function, which affects the model’s flexibility and complexity.

SVR is a regression algorithm that uses support vector machines to find a hyperplane that fits the data with a specified margin of tolerance. The coef0 parameter is used with certain kernel functions, such as the polynomial and sigmoid kernels.

The default value for coef0 is 0.0, which means the independent term is not included in the kernel function. In practice, values between 0.0 and 1.0 are commonly used, depending on the characteristics of the dataset and the desired model complexity.

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error

# Generate synthetic dataset
X, y = make_regression(n_samples=1000, n_features=10, n_informative=5,
                       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 coef0 values
coef0_values = [0.0, 0.5, 1.0, 2.0]
mse_scores = []

for coef0 in coef0_values:
    svr = SVR(kernel='poly', coef0=coef0)
    svr.fit(X_train, y_train)
    y_pred = svr.predict(X_test)
    mse = mean_squared_error(y_test, y_pred)
    mse_scores.append(mse)
    print(f"coef0={coef0}, MSE: {mse:.3f}")

Running the example gives an output like:

coef0=0.0, MSE: 1889.920
coef0=0.5, MSE: 115.306
coef0=1.0, MSE: 0.982
coef0=2.0, MSE: 0.025

The key steps in this example are:

  1. Generate a synthetic regression dataset with informative and noise features
  2. Split the data into train and test sets
  3. Train SVR models with different coef0 values using the polynomial kernel
  4. Evaluate the mean squared error (MSE) of each model on the test set

Some tips and heuristics for setting coef0:

Issues to consider:



See Also