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,因为 x0 的值为 1。
mu1 是 average value of x1 in trainning sets;
S1 是 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 的范围越小,总的可能性就越小,计算速度就能加快。”(多选题也可以单选)