吴恩达机器学习-特征缩放和学习率(多变量)

目标

在本实验中,你将:

  • 利用在上一个实验中开发的多变量例程
  • 对具有多个特征的数据集运行梯度下降
  • 探讨学习率alpha对梯度下降的影响 通
  • 过使用z-score归一化的特征缩放提高梯度下降的性能

工具

使用matplotlib和NumPy

import numpy as np
np.set_printoptions(precision=2)
import matplotlib.pyplot as plt
dlblue = '#0096ff'; dlorange = '#FF9300'; dldarkred='#C00000'; dlmagenta='#FF40FF'; dlpurple='#7030A0'; 
plt.style.use('./deeplearning.mplstyle')
from lab_utils_multi import  load_house_data, compute_cost, run_gradient_descent 
from lab_utils_multi import  norm_plot, plt_contour_multi, plt_equal_scale, plot_cost_i_w

【注意】文件夹下一定要有下面两个文件
在这里插入图片描述

问题描述

与之前的实验一样,您将使用房价预测的激励示例。训练数据集包含许多具有4个特征(大小,卧室,楼层和年龄)的示例,如下表所示。注意,在本实验中,尺寸特征以平方英尺为单位,而早期的实验室使用1000平方英尺。这个数据集比以前的实验室要大。
我们想用这些值建立一个线性回归模型,这样我们就可以预测其他房子的价格——比如,一栋1200平方英尺、3间卧室、1层、40年的房子。

数据集

在这里插入图片描述

load the dataset
X_train, y_train = load_house_data()
X_features = ['size(sqft)','bedrooms','floors','age']`

让我们通过绘制每个特征与价格的关系来查看数据集及其特征。

fig,ax=plt.subplots(1, 4, figsize=(12, 3), sharey=True)
for i in range(len(ax)):
    ax[i].scatter(X_train[:,i],y_train)
    ax[i].set_xlabel(X_features[i])
ax[0].set_ylabel("Price (1000's)")
plt.show()

在这里插入图片描述将每个特征与目标价格进行对比,可以显示哪些特征对价格的影响最大。以上,增大尺寸也增加价格。卧室和楼层似乎对房价没有太大影响。新房子的价格比旧房子高。

多变量梯度下降

这是你在上个多变量梯度下降实验中开发的方程:
在这里插入图片描述n是特征量的数量,参数w,b是同事改变的
在这里插入图片描述M是数据集中训练样例的个数
在这里插入图片描述

学习率

讲座讨论了一些与设定学习率有关的问题。 学习率控制参数更新的大小。见式(1)。它由所有参数共享。
让我们运行梯度下降并尝试一些设置我们的数据集

a=9.9e-7

#set alpha to 9.9e-7
_, _, hist = run_gradient_descent(X_train, y_train, 10, alpha = 9.9e-7)

在这里插入图片描述看来学习率太高了。解不收敛。成本在增加而不是减少。让我们来绘制结果:

plot_cost_i_w(X_train, y_train, hist)

在这里插入图片描述右图显示了其中一个参数的值w0,在每次迭代中,它都会超过最优值,因此,成本最终会增加而不是接近最小值。请注意,这不是一个完全准确的图片,因为每次有4个参数被修改,而不仅仅是一个。这张图只是在展示w0其他参数固定在良性值。在这个和后面的图中,你可能会注意到蓝色和橙色的线稍微偏离了。

a=9e-7

#set alpha to 9e-7
_,_,hist = run_gradient_descent(X_train, y_train, 10, alpha = 9e-7)

在这里插入图片描述成本在整个运行过程中不断下降,这表明alpha不是太大。

plot_cost_i_w(X_train, y_train, hist)

在这里插入图片描述在左边,你可以看到成本在下降。在右边,你可以看到W0仍然在最小值附近振荡,但是每次迭代都在减少而不是增加。注意,dj_dw[0]随着每次迭代而改变符号,因为w[0]跳过了最优值。这个值会收敛。您可以改变迭代的次数来查看它的行为。

a= 1e-7

#set alpha to 1e-7
_,_,hist = run_gradient_descent(X_train, y_train, 10, alpha = 1e-7)

在这里插入图片描述成本在整个运行过程中不断下降,a不是太大

plot_cost_i_w(X_train,y_train,hist)

在这里插入图片描述在左边,你可以看到成本在下降。在右边你可以看到
在不超过最小值的情况下递减。注意,dj_w0在整个运行过程中都是负值。这个解决方案也会收敛,尽管没有前面的示例那么快。

特征缩放

讲座描述了重新缩放数据集的重要性,以便特征具有相似的范围。如果您对为什么会出现这种情况的细节感兴趣,请点击下面的“details”标题。如果没有,下面一节将介绍如何进行特征缩放的实现。
在这里插入图片描述

Z-score 归一化

在z-score归一化之后,所有特征的均值为0,标准差为1。
要实现z-score归一化,调整输入值,如下公式所示:

在这里插入图片描述选择X矩阵中的一个特征或一列。µ是均值,σ是标准差
在这里插入图片描述

实现注意:在对特征进行归一化时,存储用于归一化的值是很重要的——用于计算的平均值和标准偏差。在从模型中学习参数之后,我们经常想要预测我们之前没有见过的房子的价格。给定一个新的x值(客厅面积和卧室数量),我们必须首先使用我们之前从训练集中计算的平均值和标准差对x进行规范化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值