首页 > 代码库 > Machine Learning - week 2 - Multivariate Linear Regression

Machine Learning - week 2 - Multivariate Linear Regression

Gradient Descent in Practice - Feature Scaling

Make sure features are on a similar scale.

Features 的范围越小,总的可能性就越小,计算速度就能加快。

 Dividing by the range

通过 feature/range 使每个 feature 大概在 [-1, 1] 的范围内

 下题是一个例子:

技术分享

技术分享

 

Mean normalization

将值变为接近 0。除了 x0,因为 x的值为 1。

技术分享

mu1 是 average value of x1 in trainning sets;

S是 x1 的范围大小,比如卧室是 [0, 5],那么范围为 5 - 0 = 5。

 

确保 gradient descent 工作正确

技术分享

如上图,这个图像是正确的,随着循环次数的增加,J(θ) 主键减小。超过一定循环次数之后,J(θ) 曲线趋于平缓。可以根据图像得出什么时候停止,或者当每次循环,J(θ) 的变化小于 ε 时停止。

 

图像上升

技术分享

说明 α 取值大了,应该减小。真实的图像可能如下:

技术分享

如果 α 足够小,那么能缓慢但完全覆盖。

如果 α 太大:在每次循环时,可能不会减少从而不能完全覆盖。

 

Features and polynomial regression

可以使用自定义的 features 而不是完全照搬已存在的 features。比如房子有长宽两个属性,我们可以创建一个新属性--面积。然后,表达式变成

技术分享,但是这个曲线是先减小后增大的,与实际数据不符(面积越大,总价越高)。所以调整为

技术分享

Normal equation

Gradient Descent 随着循环次数增加,逐步逼近最小值。如图:

技术分享

Normal equation 是通过方法直接计算出 θ。

 

导数为 0 时最小

技术分享

然后解出 θ0 到 θn

求解 θ 的方程

技术分享

Matrix 概念见 Machine Learning - week 1

什么时候用 Gradient Descent 或者 Normal Equation

技术分享

当 n 较大时,右边的会很慢,因为计算 技术分享 是 O(n3)

当 n 小的时候,右边会更快,因为它是直接得出结果,不需要 iterations 或者 feature scaling。

 

如果 技术分享 是 non-invertible?

1. Redundant features (are not linearly independent).

E.g. x1 = size in feet2; x2 = size in m2

2. Too many features(e.g. m <= n)

比如 m = 10, n = 100,意思是你只有 10 个数据,但有 100 个 features,显然,数据不足以覆盖所有的 features。

可以删除一些 features(只保留与数据相关的 features)或者使用 regularization。

 

习题

1. 技术分享

不知道如何同时使用两种方法,这两种方法是否是顺序相关的?

使用 Dividing by the range

range = max - min = 8836 - 4761 = 4075

vector / range 后变为 

1.9438
1.2721
2.1683
1.1683

对上述使用 mean normalization

avg = 1.6382

range =  2.1683 - 1.1683 = 1

x2(4) = (1.1683 - 1.6382) / 1 = -0.46990 保留两位小数为 -0.47

 

5. 技术分享

上面提到了“Features 的范围越小,总的可能性就越小,计算速度就能加快。”(多选题也可以单选)

Machine Learning - week 2 - Multivariate Linear Regression