梯度下降SGD

在处理大量数据无法一次性加载到内存时,采用SGDRegressor进行模型训练。这种方法每次仅用一个样本点优化参数,相较于ridge或lasso需要更多迭代,但内存和时间消耗较小。在使用SGD时,需要考虑代价函数的选择,如huber或modified_huber以抵抗异常值,并对特征进行标准化。通过部分拟合和交叉验证,可以看到SGD在迭代过程中逐步降低错误率。
摘要由CSDN通过智能技术生成

当数据过多时,无法将数据一次性加载到内存中,进行模型训练,

因此可以使用随机梯度下降回归器或分类器,作为线性预测器

该方法每次只是用一个观察点来进行参数优化,因此代码使用ridge或lasso回归到达可比较的结果之前,采用了更多的迭代,但只需要较少的内存和时间。

  • 使用SGD优化时,需要测试不同的代价函数性能,一些SGD对异常点抵抗力较强,例如分类的modfied_huer和回归的huber
  • SGD对变量尺度敏感,需要标准化特征,限制在【-1,1】或者【0,1】
  • 使用SGD时,总是需要处理数据块。为了有效训练,首先使用StandardScaler从首批可用的数据中导出平均值和方差来做标准化。整个数据集的分布情况不同,但初始估计得到的变换可以发展成一个可工作的学习步骤。

from sklearn.linear_model import SGDRegressor
from sklearn.preprocessing import StandardScaler

SGD = SGDRegressor(loss='squared_loss', penalty='l2', alpha=0.0001, l1_ratio=0.15, n_iter=2000)
#  l1_ratio=0 corresponds to L2 penalty, l1_ratio=1 to L1
# alpha constant that multiplies the regularization term. Defaults to 0.0001
scaling = StandardScaler()
scaling.fit(polyX)
scaled_X = scaling.tran

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值