python机器学习第二章(3)改善梯度下降

2.3.3通过调整特征大小改善梯度下降
许多机器学习算法需要通过对某种特征进行调整以优化性能。
梯度下降是许多可以从特征调整中优化的算法之一。可以利用一种叫做标准化的特征尺度调整方法来加快收敛,它可以使数据具有标准正态分布的特征,有助于梯度下降学习。标准化可以使标准化后的特征平均值为0,标准差为1。比如要标准化第j个特征值 xj=(xj-μj)/σj。μi是所有样本第i个特征的均值。σi是所有样本第i个特征的标准差。用Numpy的方法mean和std可以很容易地实现标准化:

X_std=np.copy(X)
X_std[:,0]=(X_std[:,0]-X_std[:,0].mean())/X[:,0].std()#标准化特征1
X_std[:,1]=(X_std[:,1]-X_std[:,1].mean())/X[:,1].std()#标准化特征2

标准化后再次训练上一节的Adaline,在η=0.01的情况下观察其收敛情况:

ada=AdalineGD(n_iter=15,eta=0.01)
ada.fit(X_std,y)

plot_decision_regions(X_std,y,classifier=ada)
plt.title('Adaline - Gradient Descent')
plt.xlabel('sepal length [standardized]')
plt.ylabel('petal length [standardized]')
plt.legend(loc='upper left')
plt.tight_layout
plt.show()

plt.plot(range(1,len(ada.cost_)+1),ada.cost_,marker='o')
plt.xlabel('Epochs')
plt.ylabel('Sum-aquared-error')
plt.show()

在这里插入图片描述
在这里插入图片描述
在学习率为0.01的情况下,在第10次就基本收敛。

2.3.4 大规模机器学习与随机梯度下降
上一节是基于整个训练集计算代价梯度,也称为批量式梯度下降。但当数据集有高达数百万个数据点的时候,批量式梯度下降就会成本很高。

在大型数据集中替代批量式梯度下降的方法是随机梯度下降法,也称为迭代或在线梯度下降法,该方法不是基于所有样本累加误差之和更新权重,而是为每个训练样本逐渐更新权重
在这里插入图片描述
虽然随机梯度下降可以看作是梯度下降的近似,但因为权重更新更频繁,通常收敛得更快
随机梯度下降以及在线学习的代码见作者github:https://github.com/PacktPublishing/Python-Machine-Learning-Second-Edition。

第二章小结:本章主要讨论有监督学习的线性分类器,通过实现感知器了解如何通过向量化实现梯度下降和基于随机梯度下降的在线学习,有效地训练自适应线性神经元。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值