>기술 주변기기 >일체 포함 >Tikhonov 정규화

Tikhonov 정규화

王林
王林앞으로
2024-01-23 09:33:161295검색

Tikhonov 정규화

능선 회귀 또는 L2 정규화라고도 하는 Tikhonov 정규화는 선형 회귀에 사용되는 정규화 방법입니다. 모델의 목적 함수에 L2 규범 페널티 항을 추가하여 모델의 복잡성과 일반화 능력을 제어합니다. 이 패널티 항은 과도한 가중치를 피하기 위해 제곱합으로 모델의 가중치에 패널티를 부여하여 과적합 문제를 완화합니다. 이 방법은 손실 함수에 정규화 항을 도입하고 정규화 계수를 조정하여 모델의 피팅 능력과 일반화 능력의 균형을 맞춥니다. Tikhonov 정규화는 실제 적용 범위가 넓으며 모델의 성능과 안정성을 효과적으로 향상시킬 수 있습니다.

정규화 전 선형 회귀의 목적 함수는 다음과 같이 표현할 수 있습니다.

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

이 목적 함수에서 w는 모델의 가중치 벡터이고 h_w(x^{(i)})는 i번째 샘플 x^{(i)}의 예측 결과에 대한 모델의 가중치 벡터, y^{(i)}는 실제 레이블, m은 샘플 수입니다. 이러한 목적함수를 최적화하기 위해 경사하강법(Gradient Descent)과 같은 방법이 자주 사용됩니다. 이러한 방법은 목적함수의 기울기를 계산하고 가중치 벡터 w를 업데이트함으로써 목적함수의 값을 점진적으로 줄여 모델의 예측 결과를 실제 레이블에 가깝게 만듭니다. 이러한 방식으로 목적함수를 최적화하여 모델의 성능을 향상시킬 수 있습니다.

그리고 Tikhonov 정규화에서 목적 함수는 다음과 같습니다.

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

여기서 람다는 정규화 매개변수이며 페널티 항 강도를 제어하는 ​​데 사용됩니다. ||w||_2^2는 모든 가중치의 제곱의 합인 가중치 벡터의 L2 놈을 나타냅니다. 이 페널티 항은 가중치 값이 너무 커지지 않도록 제한하여 모델이 과적합되는 것을 방지합니다.

실제 응용 분야에서 정규화 매개변수 람다의 값은 일반적으로 교차 검증 및 기타 방법을 통해 결정되어야 합니다. 람다가 너무 작으면 정규화 효과가 약해지고 모델이 여전히 과적합되기 쉽습니다. 람다가 너무 크면 페널티 항이 원래 목적 함수를 압도하여 모델 과소적합이 발생합니다.

Tikhonov 정규화에는 몇 가지 다른 기능과 응용 프로그램이 있습니다. 예를 들어, 관련 특성 가중치를 서로 상쇄할 수 있으므로 특성 간의 상관관계를 더 잘 처리할 수 있습니다. 또한 중요하지 않은 특성에 불이익을 주어 특성 수를 줄일 수 있으므로 고차원 데이터를 처리하는 데에도 사용할 수 있습니다.

다음은 Tikhonov 정규화를 이용한 선형 회귀의 예입니다.

2개의 특성과 하나의 레이블이 포함된 데이터 세트가 있다고 가정해 보겠습니다. 이를 위해 Python의 Scikit-learn 라이브러리를 사용합니다.

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))

이 예에서는 Scikit-learn 라이브러리의 make_regression 함수를 사용하여 2개의 기능과 레이블이 있는 데이터 세트를 생성합니다. 먼저 데이터를 정규화한 다음 train_test_split 함수를 사용하여 데이터 세트를 훈련 세트와 테스트 세트로 나눴습니다. 다음으로 Ridge 함수를 사용하여 Tikhonov 정규화 선형 회귀 모델을 구축했습니다. 여기서 알파 매개변수는 정규화 매개변수입니다. 마지막으로 Fit 함수를 사용하여 모델을 훈련시켰고, Score 함수를 사용하여 훈련 세트와 테스트 세트에 대한 R2 점수를 각각 계산했습니다.

정규화 매개변수 알파의 값은 교차 검증 및 기타 방법을 통해 결정되어야 한다는 점에 유의해야 합니다. 이 예에서는 기본값인 alpha=1.0을 사용했습니다. 알파가 너무 작으면 모델이 만족스럽게 수행되지 않을 수 있습니다. 알파가 너무 크면 모델이 과소적합될 수 있습니다.

위 내용은 Tikhonov 정규화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 163.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제