Mat*_*ber 3 matlab components regression principal
我正在尝试用Matlab学习主成分回归(pcr).我在这里使用本指南:http://www.mathworks.fr/help/stats/examples/partial-least-squares-regression-and-principal-components-regression.html
这真的很好,但我无法理解一步:
我们做PCA和回归,很好很清楚:
[PCALoadings,PCAScores,PCAVar] = princomp(X);
betaPCR = regress(y-mean(y), PCAScores(:,1:2));
Run Code Online (Sandbox Code Playgroud)
然后我们调整第一个系数:
betaPCR = PCALoadings(:,1:2)*betaPCR;
betaPCR = [mean(y) - mean(X)*betaPCR; betaPCR];
yfitPCR = [ones(n,1) X]*betaPCR;
Run Code Online (Sandbox Code Playgroud)
为什么系数需要'mean(y) - mean(X)*betaPCR'为恒定的一个因子?你能解释一下吗?
提前致谢!
这实际上是一个数学问题,而不是编码问题.你PCA抽取一组功能,并将它们放入一个矩阵,它给你PCALoadings和PCAScores.拉出前两个主要组件及其载荷,并将它们放在自己的矩阵中:
W = PCALoadings(:, 1:2)
Z = PCAScores(:, 1:2)
Run Code Online (Sandbox Code Playgroud)
之间的关系X,并Z是,X可以近似表示为:
Z = (X - mean(X)) * W <=> X ~ mean(X) + Z * W' (1)
Run Code Online (Sandbox Code Playgroud)
直觉是Z捕获大部分"重要信息" X,矩阵W告诉你如何在两个表示之间进行转换.
现在,你可以做的回归y上Z.首先,您必须从中减去平均值y,以便左侧和右侧均为零:
y - mean(y) = Z * beta + errors (2)
Run Code Online (Sandbox Code Playgroud)
现在,您希望使用该回归来为yfrom 做出预测X.将等式(1)代入等式(2)给出
y - mean(y) = (X - mean(X)) * W * beta
= (X - mean(X)) * beta1
Run Code Online (Sandbox Code Playgroud)
我们定义的位置beta1 = W * beta(您在第三行代码中执行此操作).重新排列:
y = mean(y) - mean(X) * beta1 + X * beta1
= [ones(n,1) X] * [mean(y) - mean(X) * beta1; beta1]
= [ones(n,1) X] * betaPCR
Run Code Online (Sandbox Code Playgroud)
如果我们定义,那就可以解决
betaPCR = [mean(y) - mean(X) * beta1; beta1]
Run Code Online (Sandbox Code Playgroud)
就像你的第四行代码一样.