Maison  >  Article  >  Périphériques technologiques  >  Régularisation Tikhonov

Régularisation Tikhonov

王林
王林avant
2024-01-23 09:33:161190parcourir

Régularisation Tikhonov

La régularisation de Tikhonov, également connue sous le nom de régression de crête ou régularisation L2, est une méthode de régularisation utilisée pour la régression linéaire. Il contrôle la complexité et la capacité de généralisation du modèle en ajoutant un terme de pénalité de norme L2 à la fonction objectif du modèle. Ce terme de pénalité pénalise le poids du modèle par la somme des carrés pour éviter un poids excessif, atténuant ainsi le problème de surajustement. Cette méthode introduit un terme de régularisation dans la fonction de perte et ajuste le coefficient de régularisation pour équilibrer la capacité d'ajustement et la capacité de généralisation du modèle. La régularisation de Tikhonov a un large éventail d'applications pratiques et peut améliorer efficacement les performances et la stabilité du modèle.

Avant la régularisation, la fonction objectif de la régression linéaire peut être exprimée comme suit :

J(w)=frac{1}{2m}sum_{i=1}^{m}(h_w(x^{ (i)})-y^{(i)})^2

Dans cette fonction objectif, on peut voir que w est le vecteur de poids du modèle, h_w(x^{(i)}) est le vecteur de poids du modèle pour le résultat de prédiction du i-ème échantillon x^{(i)}, y^{(i)} est la véritable étiquette et m est le nombre d'échantillons. Afin d'optimiser cette fonction objectif, des méthodes telles que la descente de gradient sont souvent utilisées. Ces méthodes calculent le gradient de la fonction objectif et mettent à jour le vecteur de poids w, réduisant ainsi progressivement la valeur de la fonction objectif, rapprochant ainsi les résultats de prédiction du modèle de l'étiquette réelle. De cette manière, nous pouvons améliorer les performances du modèle en optimisant la fonction objectif.

Et dans la régularisation de Tikhonov, la fonction objectif devient :

J(w)=frac{1}{2m}sum_{i=1}^{m}(h_w(x^ {(i)} )-y^{(i)})^2+frac{lambda}{2}||w||_2^2

où, lambda est le paramètre de régularisation, utilisé pour contrôler le terme de pénalité Force de. ||w||_2^2 représente la norme L2 du vecteur de poids, qui est la somme des carrés de tous les poids. Ce terme de pénalité limite les valeurs des poids afin qu'elles ne puissent pas être trop grandes, empêchant ainsi le surajustement du modèle.

Dans les applications pratiques, la valeur du paramètre de régularisation lambda doit généralement être déterminée par validation croisée et d'autres méthodes. Si lambda est trop petite, l'effet de régularisation deviendra faible et le modèle sera toujours sujet au surajustement ; si lambda est trop grande, le terme de pénalité submergera la fonction objectif d'origine, entraînant un sous-ajustement du modèle.

La régularisation Tikhonov a d'autres fonctionnalités et applications. Par exemple, il peut mieux gérer les corrélations entre les fonctionnalités car il permet aux pondérations des fonctionnalités associées de s'annuler ; il peut également être utilisé pour gérer des données de grande dimension car il peut réduire le nombre de fonctionnalités en pénalisant les fonctionnalités sans importance.

Ce qui suit est un exemple de régression linéaire utilisant la régularisation de Tikhonov.

Supposons qu'il existe un ensemble de données contenant 2 entités et une étiquette. Nous utilisons la bibliothèque Scikit-learn de Python pour ce faire :

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_regression

# 生成数据集
X, y = make_regression(n_samples=100, n_features=2, noise=0.5, random_state=42)

# 数据归一化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建模型
ridge = Ridge(alpha=1.0)  # alpha为正则化参数

# 模型训练
ridge.fit(X_train, y_train)

# 模型评估
print("Train score:", ridge.score(X_train, y_train))
print("Test score:", ridge.score(X_test, y_test))

Dans cet exemple, nous utilisons la fonction make_regression de la bibliothèque Scikit-learn pour générer un ensemble de données avec 2 fonctionnalités et une étiquette. Nous avons d'abord normalisé les données, puis utilisé la fonction train_test_split pour diviser l'ensemble de données en un ensemble d'entraînement et un ensemble de test. Ensuite, nous avons utilisé la fonction Ridge pour construire un modèle de régression linéaire régularisée de Tikhonov, où le paramètre alpha est le paramètre de régularisation. Enfin, nous avons utilisé la fonction d'ajustement pour entraîner le modèle et la fonction de score pour calculer les scores R2 sur l'ensemble d'entraînement et l'ensemble de test respectivement.

Il convient de noter que la valeur du paramètre de régularisation alpha doit être déterminée par validation croisée et d'autres méthodes. Dans cet exemple, nous avons utilisé la valeur par défaut de alpha=1.0. Si l'alpha est trop petit, le modèle peut ne pas fonctionner de manière satisfaisante ; si l'alpha est trop grand, le modèle peut être sous-ajusté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer