关于Feature Scaling:
get every feature into approximately into [-1, 1]
a:每个维度的特征减去此维度特征均值,除以此维度特征的最大值与最小值之差:
(xi - mean(xi)) / (max(xi) - min(xi)) (mean normalization)
b:每个维度的特征减去此维度的均值,除以这个维度的标准差:
(xi - mean(xi)) / std(xi) (mean normalization)
c:常数项x0 = 1,已经在(或接近)合理的range内,无需缩放
a:每个维度的特征减去此维度特征均值,除以此维度特征的最大值与最小值之差:
(xi - mean(xi)) / (max(xi) - min(xi)) (mean normalization)
b:每个维度的特征减去此维度的均值,除以这个维度的标准差:
(xi - mean(xi)) / std(xi) (mean normalization)
c:常数项x0 = 1,已经在(或接近)合理的range内,无需缩放
d:为什么要Feature Scaling呢?
特征缩放有助于算法快速收敛,可以通过迭代算法的公式来解释:
e:使用缩放特征计算得到的模型参数去做预测,预测样本是否也需要做Feature Scaling
对于一个待预测的sample instance X,使用模型参数预测前,应首先对X进行Feature Scaling
即:X = (X - mean(xi)) / std(xi),其中,mean(xi)和std(xi)是训练样本集第i维特征的均值和方差
f:使用Normal Equation(正规方程)计算模型参数,是否需要做特征缩放?
使用正规方程计算参数时,无需进行Feature Scaling
g:Why not Feature Scaling the y ?????
特征缩放有助于算法快速收敛,可以通过迭代算法的公式来解释:
e:使用缩放特征计算得到的模型参数去做预测,预测样本是否也需要做Feature Scaling
对于一个待预测的sample instance X,使用模型参数预测前,应首先对X进行Feature Scaling
即:X = (X - mean(xi)) / std(xi),其中,mean(xi)和std(xi)是训练样本集第i维特征的均值和方差
f:使用Normal Equation(正规方程)计算模型参数,是否需要做特征缩放?
使用正规方程计算参数时,无需进行Feature Scaling
g:Why not Feature Scaling the y ?????
关于Learning Rate:
与正规方程(Normal Equation)不同,梯度下降算法需要选择合适的Learning rate,以便控制
算法的迭代效果和迭代速度。通常情况下,先选择一个较小的初始学习率,观察效果,然后可
以按照3倍、10倍递增的方式逐步提高学习率,观察效果。直到能够找到一个合适的Learning rate
与正规方程(Normal Equation)不同,梯度下降算法需要选择合适的Learning rate,以便控制
算法的迭代效果和迭代速度。通常情况下,先选择一个较小的初始学习率,观察效果,然后可
以按照3倍、10倍递增的方式逐步提高学习率,观察效果。直到能够找到一个合适的Learning rate
a:学习率过大,会导致算法不收敛
b:学习率过小,会导致算法迭代速度过慢,影响算法效率
b:学习率过小,会导致算法迭代速度过慢,影响算法效率
关于Debugging Issue:
为了验证迭代算法(梯度下降)是否能够在迭代中逐步降低Cost function。需要画出代价函数
关于迭代次数的曲线,根据这个曲线适当调整算法参数,可以实现算法收敛/提高收敛效率
关于迭代次数的曲线,根据这个曲线适当调整算法参数,可以实现算法收敛/提高收敛效率
关于Normal Equation:
不需要Feature Scaling,不需要迭代,不需要设置学习率
Normal Equation定义如下所示:
theta = (X^T * X)^(-1) * X^T * y
其中:
a:X为design matrix,每行为一个sample instance的特征,共n + 1项,n为特征维数
每个sample instance的第一项都为1,为常数项(为便于计算而引入的)
b:X^T表示矩阵X的转置,^(-1)表示矩阵求逆,y表示训练样本中的预测值,为mx1维,m为
sample instance的个数,theta表示要计算的模型参数向量,为n + 1维
c:假设矩阵A维数为nxn,则A^(-1)的计算复杂度为O(n^3)
何时使用Normal Equation,何时使用Gradient Descent
m = number of training samples, n = number of features
n=10000时,Normal Equation需要计算逆矩阵,所以Normal Equation方法效率会慢下来,可以
考虑使用Gradient descent代替
n=100000时,计算Normal Equation中的(XT*X)^(-1)会变得非常慢,此时,definitely使用Gradient Descent
Normal Equation定义如下所示:
theta = (X^T * X)^(-1) * X^T * y
其中:
a:X为design matrix,每行为一个sample instance的特征,共n + 1项,n为特征维数
每个sample instance的第一项都为1,为常数项(为便于计算而引入的)
b:X^T表示矩阵X的转置,^(-1)表示矩阵求逆,y表示训练样本中的预测值,为mx1维,m为
sample instance的个数,theta表示要计算的模型参数向量,为n + 1维
c:假设矩阵A维数为nxn,则A^(-1)的计算复杂度为O(n^3)
何时使用Normal Equation,何时使用Gradient Descent
m = number of training samples, n = number of features
n=10000时,Normal Equation需要计算逆矩阵,所以Normal Equation方法效率会慢下来,可以
考虑使用Gradient descent代替
n=100000时,计算Normal Equation中的(XT*X)^(-1)会变得非常慢,此时,definitely使用Gradient Descent