这是一个初学者的问题,但我有一个包含两个特征的数据集,房子的大小和卧室的数目,所以我正在研究八度;所以基本上我尝试进行一个特征缩放,但是就像在“设计矩阵”中,我添加了一列(用于tetha0),所以我尝试做一个平均规范化:(x-均值(X)/std(X)),但在其中一个列中,明显是1,因为每行只有1,所以当我这样做时,截距colum设置为0:
mu = mean(X)
mu =
1.0000 2000.6809 3.1702
votric = X - mu
votric =
0.00000 103.31915 -0.17021
0.00000 -400.68085 -0.17021
0.00000 399.31915 -0.17021
0.00000 -584.68085 -1.17021
0.00000 999.31915 0.82979那么,第一列不应该被排除在平均归一化之外?
发布于 2018-10-17 13:20:10
是的,您应该首先对所有观测数据进行规范化,然后才添加偏倚项(即‘一列’)。
标准化的目的是让不同的特征在平等的基础上进行比较,这大大加快了优化算法的速度。
偏倚(即一列)在技术上不是特征的一部分。它只是一个数学上的方便,让我们使用一个矩阵乘法,以一种计算和非有效的方式获得我们的结果。
换句话说,您不需要说Y = bias + weight1 * X1 + weight2 * X2等,而是创建一个虚构的X0 = 1,并将偏差表示为weight0,然后允许您以矢量化的方式表示它,如下所示:Y = weights * X
“正常化”偏见术语没有意义,因为很明显,这将使X0 = 0,其效果将是,然后你会完全放弃偏见项的影响。所以,是的,先正常化,然后再在标准化的特征中添加“一个”。
PS。我在这里冒险,猜测你是从安德鲁·吴( Andrew )在course上的机器学习课程来的。您将在ex1_multi.m中看到,这确实是他在代码中所做的(第52行)。
% Scale features and set them to zero mean
fprintf('Normalizing Features ...\n');
[X mu sigma] = featureNormalize(X);
% Add intercept term to X
X = [ones(m, 1) X];https://stackoverflow.com/questions/52852353
复制相似问题