过拟合(Overfitting)是机器学习模型在训练数据上表现非常好,但在测试数据或新数据上表现不佳的现象。这通常是因为模型对训练数据中的噪声或细节过于敏感,导致其泛化能力下降。
正则化(Regularization)是一种技术,用于限制模型的复杂度,从而降低过拟合的风险。通过在损失函数中引入惩罚项,正则化方法可以抑制模型参数的不必要增长,使模型更具泛化能力。
正则化通过修改损失函数来约束模型复杂度。
L1正则化通过对模型参数的绝对值进行惩罚。
L2正则化通过对模型参数的平方进行惩罚:
Dropout 是深度学习中特有的正则化技术,主要用于神经网络中,通过在训练过程中随机“丢弃”一定比例的神经元来防止过拟合。
在一个简单的线性回归模型中,加入L2正则化可以显著降低过拟合。代码示例(Python):
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 示例数据
X, y = generate_data() # 自定义函数生成数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 使用 Ridge 回归(L2 正则化)
model = Ridge(alpha=1.0) # alpha 控制正则化强度
model.fit(X_train, y_train)
# 评估模型
y_pred = model.predict(X_test)
print("均方误差:", mean_squared_error(y_test, y_pred))使用 Keras 训练一个简单的神经网络,并在隐藏层中添加 Dropout:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
# 构建模型
model = Sequential([
Dense(128, activation='relu', input_shape=(input_dim,)),
Dropout(0.5), # 丢弃50%的神经元
Dense(64, activation='relu'),
Dropout(0.5),
Dense(output_dim, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=20, batch_size=32, validation_split=0.2)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。