Stanford机器学习 -- Linear Regression with multiple variable

来源:互联网 发布:英雄联盟淘宝店 编辑:程序博客网 时间:2024/04/20 22:52

上一课中,学习了 Linear Regression with one Variable

但是在现实生活中我们遇到到的数据集大多都具有多个特征(Feature),再有些学习中一个样本甚至包含成千上万个特征(Feature)。

Gradient descent for multiple variables

给定一个多特征的数据集

这里写图片描述

假设理想的Hypothesis 是

这里写图片描述

为了后面数学推导和函数处理的方便 在上述公式的θ0后面加一个x0 , Hypothesis变成:

这里写图片描述

同时知道了参数集 θ0 θ1 θ2 … θn 一共有n+1 个参数

还可知他的Cost Function

和它的向量表示法

这里写图片描述

对代价函数运用梯度下降算法

图4

上面的循环,表示对每个参数 θ0 θ1 θ2 … θn 进行改变。

Practice I : Feature Scaling (特征缩放)

这里写图片描述

上图左面是没有对特征进行任何的处理,直接用于 Regression 算法中,可以发现在进行梯度下降时,抖动很厉害,方向具有不确定性,虽然最终还是下降到最低点,但中间的过程曲折。
右面的则是对所有的数据进行归一处理,得到的梯度下降,可以看到,下降的方向很明确。对数据进行归一化处理还可以加快回归的速度,去掉不同量纲和量纲单位对结果的影响(在计算两个数据样本的距离时这一点尤其重要,这也是为什么KNN算法要对数据归一化的主要原因)。在这里要引入一个概念 奇异样本数据
所谓奇异样本数据数据指的是相对于其他输入样本特别大或特别小的样本矢量。举个例子,比如下面的两个特征样本数据

这里写图片描述

上面第五列的数据相对于其它的列的数据就是奇异样本数据,奇异样本数据的存在会引起训练时间增大,并可能引起无法收敛。所以在存在奇异样本数据的情况下,进行训练之前最好进行归一化,如果不存在奇异样本数据,则可以不用归一化。
在一般的情况下我们会将数据归一到一定的范围内 , 这个范围大概在
[ -3 ,+3] ~ [-1/3 , +1/3] 不要太小也不要太大 。

最常用的归一化方法有:
一、min-max标准化(Min-Max Normalization)
也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

这里写图片描述

其中maxA为样本数据某特征的最大值,minA为该特征的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
二、Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

这里写图片描述

标准差公式

这里写图片描述

其中 μ 为所有样本数据某特征的均值,σ 为所有样本数据在该特征的标准差。
该方法适用于属性的最大值或者最小值未知的情况,或有超出取值范围的离散数据的情况

Parctice II : Learning rate (学习速率)

在下降算法中另外一个关键因素是:选择合理的 Learning rate.选择合理的学习速率(α)是保证梯度下降算法收敛的重要保证,也是学习用时长短的重要影响因素。

这里写图片描述

上图显示了循环次数和minJ()的曲线图。可以看到越往前梯度下降越明显,越往后,下降越不明显。

这里写图片描述

上面三种情况是梯度无法下降的情况。造成的原因是选择了太大α
改变的方法是改选一个小α(较小学习速率)
总结:如何选取学习率

.1 学习速率在一开始可以选大一些,越往后,学习速率变小。
.2 可以试验不同的学习速率,如α=0.001,收敛太慢(cost function下降太慢),测试0.01,过了?那就0.003……

Features and Polynomial Regression

这里写图片描述

Size 表示的是房子的尺寸。
在学习算法中我们经常面临对最后的拟合方程进行选择。
在这里我们有两个方程,一个是二次方程,蓝色线。
一个是三次方程,绿色线。
但是我们知道二次方程在到达最高点后开始下降。这与实际情况有些不相符。应为房价一般不会有很大的下降,更不会到达某个临界点后变成严格下降。因此我们常选取三次方程来拟合房价。
这也告诉我们,在选择拟合曲线时,有符合现实实际。
当然,还有另一种情况就是,数据集上的数据有明显的分解线,我们可以用多条曲线来拟合,这种情况发生的可能不大,因为这需要对数据有很直观的了解(要得到数据的直观印象,画图是最好的方法,但维度大于3时就无法显示)。
当然,我们并不是只有三次曲线这一种选择,下图是另一种更可行的选择。在曲线的后半段曲线会趋于某个最大值,而不会像三次曲线那样趋于无穷大。

这里写图片描述

提醒:曲线的选择一定要符合现实世界。
从另一个角度看,这一是我们对已有数据的一种新的理解。
平方项是房子的面积,立方项表示房子的体积。所有对数据的理解越深入,我们越可以更好的设计算法和拟合曲线。

Normal equation

与Gradient Descent 不同的是另一种处理 Regression 问题的方法是Normal equation.它采用非迭代的方法,运用公式可以更方便快捷的处理Regression 问题。
对于给定的数据集:

这里写图片描述

把数据的特征提取出来写入一个矩阵,把预测结果写入一个列向量,我们要做的就是找到一个列向量Θ
Θ = [θ0 θ1 θ2 … θn ]
代入公式

这里写图片描述

可以得到和Gradient Descent 一样的结果。但是这种方法更快,而且更容易编程实现。
下面对两种方法的比较

这里写图片描述

这两种方法NE 算法适合处理特征变量不是太多的情况而且由于要求矩阵的逆,所有要求矩阵时非奇异的。GD算法适合处理所有情况,没有限制,但一般能用NE 处理的就不用 GD ,他们的分界线一般在N = 10000(特征数量)时。

0 0
原创粉丝点击