机器学习入门(11)--多特征量梯度下降算法
定义
多变量假设:输出由多维输入决定,即输入为多维特征。对于前文的房价预测的案例,假设变量从房屋面积,增加到卧室数量,层数,房屋年限三个变量,给出数据集如下图所示:Price为输出,前面四维为输入:
多特征向量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
其中:
多特征量的梯度下降算法
而对于多变量的梯度下降算法,
对于Hypothesis:hθ(x)=θTx=θ0+θ1x1+θ2x2+…+θnxn
其中参数:θ0, θ1,…,θn可表示为n+1维的向量 θ
对于Cost Function:
梯度下降算法可以改造为:
多特征量的归一
如果你有一个机器学习问题 这个问题有多个特征 如果你能确保这些特征 都处在一个相近的范围 我的意思是确保 不同特征的取值 在相近的范围内,这样梯度下降法就能更快地收敛,否则不但会收敛速度慢,而且还会出现波动甚至震荡,这就用到了Feature Scaling算法。
思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;
方法一:Mean Normalization,即简单的归一化,除以每组特征的最大值,则:
例如房价问题:特征1:房屋的大小(0-2000);特征2:房间数目(1-5);
其等高线如下:
按照简单归一化处理,
其等高线为
方法二:均值归一化,基本思想是用xi–μi替换xi使特征的均值近似为0(但是不对x0=1处理),均值归一化的公式是:
其中:
Si可以是特征的取值范围(最大值-最小值),也可以是标准差(standard deviation).
μi是训练集xi的均值。
学习速率的选择
对于梯度下降算法:需要注意两点:
-“调试”:如何确保梯度下降算法正确的执行;
-如何选择正确的步长(learning rate): α;
第二点很重要,它也是确保梯度下降收敛的关键点。要确保梯度下降算法正确运行,需要保证 J(θ)在每一步迭代中都减小,如果某一步减少的值少于某个很小的值 ϵ , 则其收敛。例如:
300步到400步迭代之间 也就是曲线的这一段 看起来 J(θ) 并没有下降多少 所以当你 到达400步迭代时 这条曲线看起来已经很平坦了 也就是说 在这里400步迭代的时候 梯度下降算法 基本上已经收敛了 因为代价函数并数并没有继续下降 所以说 看这条曲线 可以帮助你判断 梯度下降算法是否已经收敛.即如果代价函数 J(θ) 的下降小于 一个很小的值 ε 那么就认为已经收敛,通常要选择一个合适的阈值 ε 是相当困难的。通常会尝试一系列α值 所以在运行梯度下降算法制 请尝试不同的 α 值 比如0.001, 0.01 这里每隔10倍 取一个值 然后对于这些不同的 α 值 绘制 J(θ) 随迭代步数变化的曲线 然后选择 看上去使得 J(θ) 快速下降的一个 α 值。