机器学习入门(11)--多特征量梯度下降算法

定义

多变量假设:输出由多维输入决定,即输入为多维特征。对于前文的房价预测的案例,假设变量从房屋面积,增加到卧室数量,层数,房屋年限三个变量,给出数据集如下图所示:Price为输出,前面四维为输入:

机器学习入门(11)--多特征量梯度下降算法_第1张图片
多特征向量

Tips:

n = 特征数目

x(i)= 第i个训练样本的所有输入特征,可以认为是一组特征向量

x(i)j = 第i个训练样本第j个特征的值,可以认为是特征向量中的第j个值

假设h(x)=θ0+θ1x1+……所谓多参数线性回归即每个输入x有(n+1)维[x0……xn]1. 多特征量线性假设模型,

                       hθ(x) = θ0 + θ1x1 + θ2x2 + θ3x3 + θ4x4

为了方便,记x0 = 1,则多变量线性回归可以记为:

                                  hθ(x)=θTx

其中:

机器学习入门(11)--多特征量梯度下降算法_第2张图片

多特征量的梯度下降算法

而对于多变量的梯度下降算法,

对于Hypothesis:hθ(x)=θTx=θ0+θ1x1+θ2x2+…+θnxn

其中参数:θ0, θ1,…,θn可表示为n+1维的向量  θ

对于Cost Function:

梯度下降算法可以改造为:

机器学习入门(11)--多特征量梯度下降算法_第3张图片

多特征量的归一

如果你有一个机器学习问题 这个问题有多个特征 如果你能确保这些特征 都处在一个相近的范围 我的意思是确保 不同特征的取值 在相近的范围内,这样梯度下降法就能更快地收敛,否则不但会收敛速度慢,而且还会出现波动甚至震荡,这就用到了Feature Scaling算法。

思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;

方法一:Mean Normalization,即简单的归一化,除以每组特征的最大值,则:

例如房价问题:特征1:房屋的大小(0-2000);特征2:房间数目(1-5);

其等高线如下:

机器学习入门(11)--多特征量梯度下降算法_第4张图片

按照简单归一化处理,

其等高线为

机器学习入门(11)--多特征量梯度下降算法_第5张图片

方法二:均值归一化,基本思想是用xi–μi替换xi使特征的均值近似为0(但是不对x0=1处理),均值归一化的公式是:

其中:

Si可以是特征的取值范围(最大值-最小值),也可以是标准差(standard deviation).

μi是训练集xi的均值。


学习速率的选择

对于梯度下降算法:需要注意两点:

-“调试”:如何确保梯度下降算法正确的执行;

-如何选择正确的步长(learning rate):  α;

第二点很重要,它也是确保梯度下降收敛的关键点。要确保梯度下降算法正确运行,需要保证 J(θ)在每一步迭代中都减小,如果某一步减少的值少于某个很小的值 ϵ , 则其收敛。例如:

机器学习入门(11)--多特征量梯度下降算法_第6张图片

300步到400步迭代之间 也就是曲线的这一段 看起来 J(θ) 并没有下降多少 所以当你 到达400步迭代时 这条曲线看起来已经很平坦了 也就是说 在这里400步迭代的时候 梯度下降算法 基本上已经收敛了 因为代价函数并数并没有继续下降 所以说 看这条曲线 可以帮助你判断 梯度下降算法是否已经收敛.即如果代价函数 J(θ) 的下降小于 一个很小的值 ε 那么就认为已经收敛,通常要选择一个合适的阈值 ε 是相当困难的。通常会尝试一系列α值 所以在运行梯度下降算法制 请尝试不同的 α 值 比如0.001, 0.01 这里每隔10倍 取一个值 然后对于这些不同的 α 值 绘制 J(θ) 随迭代步数变化的曲线 然后选择 看上去使得 J(θ) 快速下降的一个 α 值。

你可能感兴趣的:(机器学习入门(11)--多特征量梯度下降算法)