正则化(Regularization)

正则化(Regularization)是机器学习中防止模型过拟合的技术,通过在损失函数中添加惩罚项来约束模型复杂度。以下是常见的正则化方法及其实现:


L1正则化(Lasso)

L1正则化通过添加权重的绝对值之和作为惩罚项,倾向于产生稀疏权重矩阵(部分特征权重为0)。

损失函数公式: $$ J(w) = \text{MSE}(w) + \alpha \sum_{i=1}^n |w_i| $$

Python示例(Scikit-learn):

from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1)  # alpha为正则化强度
model.fit(X_train, y_train)


L2正则化(Ridge)

L2正则化添加权重的平方和作为惩罚项,使权重均匀减小但通常不为0。

损失函数公式: $$ J(w) = \text{MSE}(w) + \alpha \sum_{i=1}^n w_i^2 $$

Python示例:

from sklearn.linear_model import Ridge
model = Ridge(alpha=0.1)
model.fit(X_train, y_train)


弹性网络(Elastic Net)

结合L1和L2正则化,平衡两者的效果。

损失函数公式: $$ J(w) = \text{MSE}(w) + \alpha \rho \sum_{i=1}^n |w_i| + \frac{\alpha (1-\rho)}{2} \sum_{i=1}^n w_i^2 $$

Python示例:

from sklearn.linear_model import ElasticNet
model = ElasticNet(alpha=0.1, l1_ratio=0.5)  # l1_ratio控制L1/L2比例
model.fit(X_train, y_train)


提前停止(Early Stopping)

在训练迭代过程中监控验证集误差,当误差不再下降时终止训练,防止过拟合。

Keras示例:

from keras.callbacks import EarlyStopping
early_stop = EarlyStopping(monitor='val_loss', patience=5)
model.fit(X_train, y_train, validation_split=0.2, callbacks=[early_stop])


Dropout(神经网络)

训练过程中随机丢弃部分神经元,强制网络学习冗余表征。

TensorFlow示例:

from tensorflow.keras.layers import Dropout
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))  # 丢弃50%神经元


数据增强(图像任务)

通过旋转、平移等方式生成更多训练数据,增加模型泛化能力。

PyTorch示例:

from torchvision import transforms
transform = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(10),
])


选择正则化方法需考虑数据特征和任务类型:L1适合特征选择,L2适用于大部分线性问题,Dropout对深度网络效果显著。超参数(如alpha)通常通过交叉验证调优。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值