SKLearner Home | About | Contact | Examples

Scikit-Learn mean_tweedie_deviance() Metric

mean_tweedie_deviance() is a metric used for evaluating the performance of predictive models. It calculates the average Tweedie deviance between the true and predicted values.

The Tweedie deviance is a measure of how different the predicted values are from the actual values, adjusted by a power parameter. A lower Tweedie deviance indicates a better model fit, with values close to zero being ideal.

The mean_tweedie_deviance() function in scikit-learn takes the true labels, predicted labels, and a power parameter as input. The power parameter allows flexibility in adjusting the variance of the distribution. For classification problems, a common choice for the power parameter is 1.

mean_tweedie_deviance() is used in various problem types, including those where the distribution of the target variable can be adjusted by changing the power parameter. However, it has limitations, such as requiring specification of the power parameter and being sensitive to outliers.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import mean_tweedie_deviance
import numpy as np

# Generate synthetic dataset
X, y = make_classification(n_samples=1000, n_classes=2, random_state=42)
y = 1 + np.abs(y)

# 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 a logistic regression classifier
clf = LogisticRegression(random_state=42)
clf.fit(X_train, y_train)

# Predict on test set
y_pred = clf.predict(X_test)

# Calculate mean Tweedie deviance
tweedie_dev = mean_tweedie_deviance(y_test, y_pred, power=1)
print(f"Mean Tweedie Deviance: {tweedie_dev:.2f}")

Running the example gives an output like:

Mean Tweedie Deviance: 0.11

The steps are as follows:

  1. Generate a synthetic binary classification dataset using make_classification().
  2. Split the dataset into training and test sets using train_test_split().
  3. Train a LogisticRegression classifier on the training set.
  4. Use the trained classifier to make predictions on the test set with predict().
  5. Calculate the mean Tweedie deviance of the predictions using mean_tweedie_deviance() by comparing the predicted labels to the true labels. Specify the power parameter as 1.

First, we generate a synthetic binary classification dataset using the make_classification() function from scikit-learn. This function creates a dataset with 1000 samples and 2 classes, simulating a classification problem without using real-world data.

Next, we split the dataset into training and test sets using the train_test_split() function. This step is crucial for evaluating the performance of our classifier on unseen data. We use 80% of the data for training and reserve 20% for testing.

With our data prepared, we train a logistic regression classifier using the LogisticRegression class from scikit-learn. The fit() method is called on the classifier object, passing in the training features (X_train) and labels (y_train) to learn the underlying patterns in the data.

After training, we use the trained classifier to make predictions on the test set by calling the predict() method with X_test. This generates predicted labels for each sample in the test set.

Finally, we evaluate the mean Tweedie deviance of our classifier using the mean_tweedie_deviance() function. This function takes the true labels (y_test), the predicted labels (y_pred), and the power parameter as input. The resulting mean Tweedie deviance score is printed, giving us a quantitative measure of our classifier’s performance.



See Also