В предыдущей статье мы видели, как регуляризация помогает избежать переобучения в наборе данных. Сегодня мы узнаем больше о типах регуляризации. Есть регуляризация L1 и L2. С точки зрения линейной регрессии, регуляризация L1 — это регуляризация лассо, а регуляризация L2 — это регуляризация хребта.

  1. Импорт библиотек
import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

2. Чтение набора данных PIMA Indians Diabetes CSV.

df = pd.read_csv("/kaggle/input/pima-indians-diabetes-database/diabetes.csv")
print(df.head())
print("Shape of the Dataset: {}".format(df.shape))

3. Предварительная обработка и разделение обучающих и тестовых данных.

# Segregating the Feature and Target
X = df.drop("Outcome", axis=1).values
y = df["Outcome"].values

# Train Test Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42, stratify=y)

print("Shape of Train Features: {}".format(X_train.shape))
print("Shape of Test Features: {}".format(X_test.shape))
print("Shape of Train Target: {}".format(y_train.shape))
print("Shape of Test Target: {}".format(y_test.shape))

4. Столбцы набора данных

# Dataset Columns
columns = df.columns[:-1]
print("Columns in the dataset excluding the target column: {}".format(columns))

5. Определение функции графика

def plot_coefficient(xindex, yindex, xlabel, ylabel, title):
    plt.plot(xindex, yindex)
    plt.title(title)
    plt.xticks(rotation=90)
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.grid()
    plt.show()

6. Построение регуляризованной логистической регрессии L1.

plot_coefficient(columns, l1_lr.coef_.flatten(), "Feature", "Coefficient Value", "L1 Regularization")

7. Построение регуляризованной логистической регрессии L2.

plot_coefficient(columns, l2_lr.coef_.flatten(), "Feature", "Coefficient Value", "L2 Regularization")

8. Построение вышеприведенных графиков на одном графике —

plt.plot(columns, l1_lr.coef_.flatten(), label="L1 Regularization")
plt.plot(columns, l2_lr.coef_.flatten(), label="L2 Regularization")
plt.legend()
plt.title("Feature Coefficient Value after Regularization")
plt.xlabel("Feature")
plt.ylabel("Coefficient Value")
plt.xticks(rotation=90)
plt.grid()
plt.show()

Как мы знаем, регуляризация борется с переоснащением. Регуляризация приводит к снижению точности набора обучающих данных за счет обобщения, что упрощает подгонку моделей к невидимым/новым данным. В общем, регуляризация L1 сводит важность многих функций к 0, в то время как регуляризация L2 уменьшает важность функции. В нашей реализации мы увидели, что важность функции регуляризации L1 ближе к 0, чем важность функции регуляризации L2.

Я ценю вас и время, которое вы потратили на чтение этого дня!

Linkedin: https://www.linkedin.com/in/saurav-agrawal-137500214/

StackOverFlow: https://stackoverflow.com/users/11842006/saurav-agrawal

Электронная почта: [email protected]