gpt4 book ai didi

machine-learning - 较小的参数值如何有助于防止过度拟合?

转载 作者:行者123 更新时间:2023-11-30 08:26:35 25 4
gpt4 key购买 nike

为了减少机器学习中线性回归的过拟合问题,建议通过包含参数的平方来修改成本函数。这导致参数值更小。

这对我来说一点也不直观。较小的参数值如何导致更简单的假设并有助于防止过度拟合?

最佳答案

我整理了一个相当人为的示例,但希望它有所帮助。

import pandas as pd
import numpy as np

from sklearn import datasets
from sklearn.linear_model import Ridge, Lasso
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import PolynomialFeatures

首先构建一个线性数据集,并进行训练和测试划分。每个 5 个

X,y, c = datasets.make_regression(10,1, noise=5, coef=True, shuffle=True, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X,y, train_size=5)

Original Data

使用无正则化的五阶多项式拟合数据。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
pipeline = Pipeline([
('poly', PolynomialFeatures(5)),
('model', Ridge(alpha=0.)) # alpha=0 indicates 0 regularization.
])

pipeline.fit(X_train,y_train)

查看系数

pipeline.named_steps['model'].coef_
pipeline.named_steps['model'].intercept_

# y_pred = -12.82 + 33.59 x + 292.32 x^2 - 193.29 x^3 - 119.64 x^4 + 78.87 x^5

No Regularization

这里模型接触了所有训练点,但系数很高,没有接触测试点。

让我们再试一次,但改变我们的 L2 正则化

pipeline.set_params(model__alpha=1)

With regularization

y_pred = 6.88 + 26.13 x + 16.58 x^2 + 12.47 x^3 + 5.86 x^4 - 5.20 x^5

在这里,我们看到形状更平滑,摆动更少。它不再触及所有训练点,但它是一条平滑得多的曲线。由于加入了正则化,系数更小。

关于machine-learning - 较小的参数值如何有助于防止过度拟合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com