主要内容

主成分分析

原始数据的主成分分析

描述

例子

多项式系数= pca (X的主成分系数,也称为负载n——- - - - - -p数据矩阵X.行X对应于观察结果,列对应于变量。系数矩阵为p——- - - - - -p.的每一列多项式系数包含一个主成分的系数,列按成分方差降序排列。默认情况下,主成分分析采用奇异值分解(SVD)算法对数据进行集中。

例子

多项式系数= pca (X名称,值使用由一个或多个指定的用于计算和处理特殊数据类型的附加选项返回前面语法中的任何输出参数名称,值对参数。

例如,可以指定主成分的个数主成分分析返回或使用SVD以外的算法。

例子

多项式系数分数潜在的= pca(___还返回的主成分分数分数的主成分方差潜在的.您可以使用前面语法中的任何输入参数。

主成分分数表示X在主成分空间中。行分数对应于观测值,列对应于组件。

主成分方差是的协方差矩阵的特征值X

例子

多项式系数分数潜在的tsquared= pca(___还返回每个观察到的霍特林t平方统计量X

例子

多项式系数分数潜在的tsquared解释μ= pca(___同样的回报解释,各主成分解释的总方差的百分比μ中各变量的估计均值X

例子

全部折叠

加载示例数据集。

负载哈尔德

成分数据对4个变量有13个观测值。

找出成分数据的主要成分。

Coeff =主成分
多项式系数=4×4-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844

一排排的多项式系数包含四个成分变量的系数,其列对应四个主成分。

当数据集中有缺失值时,查找主成分系数。

加载示例数据集。

负载进口- 85

数据矩阵X在列3至15中有13个连续变量:轴距,长度,宽度,高度,约束重量,发动机尺寸,内径,冲程,压缩比,马力,峰值rpm,城市mpg和公路mpg。变量bore和stroke在第56行到第59行中少了四个值,变量马力和peak-rpm在第131行和132行中少了两个值。

进行主成分分析。

coeff = pca(X(: 3:15));

默认情况下,主成分分析方法指定的操作“行”,“完成”名称-值对参数。此选项将使用删除观察值计算前的值。行S被重新插入分数而且tsquared在相应的位置,即56至59行,131行和132行。

使用“成对”进行主成分分析。

coeff = pca(X(:,3:15),“行”“成对”);

在这种情况下,主成分分析计算(j)元素的协方差矩阵使用行列中的值jX.注意,得到的协方差矩阵可能不是正定的。当算法主成分分析采用特征值分解。当您不指定算法时,如本例所示,主成分分析将其设置为“eig”.如果你需要“圣言”作为算法,与“成对”选项,然后主成分分析返回一条警告消息,将算法设置为“eig”和仍在继续。

如果你使用“行”,“所有”名值对参数,主成分分析终止,因为此选项假定数据集中没有缺失值。

coeff = pca(X(:,3:15),“行”“所有”);
使用pca错误(第180行)原始数据包含NaN缺失值,而“Rows”选项设置为“all”。考虑使用“complete”或“pwise”选项。

在进行主成分分析时,使用逆变量方差作为权重。

加载示例数据集。

负载哈尔德

使用成分方差的倒数作为变量权重进行主成分分析。

[wcoeff,~,latent,~,explained] = pca(配料,...“VariableWeights”“方差”
wcoeff =4×4-2.7998 2.9940 -3.9736 1.4180 -8.7743 -6.4411 4.8927 9.9863 2.5240 -3.8749 -4.0845 1.7196 9.1714 7.5529 3.2710 11.3273
潜在的=4×12.2357 1.5761 0.1866 0.0016
解释了=4×155.8926 39.4017 4.6652 0.0406

注意系数矩阵,wcoeff,不是标准正交的。

计算正交系数矩阵。

系数= inv(diag(std(成分)))* wcoeff
coefforth =4×4-0.4760 0.5090 -0.6755 0.2411 -0.5639 -0.4139 0.3144 0.6418 0.3941 -0.6050 -0.6377 0.2685 0.5479 0.4512 0.1954 0.6767

检验新系数矩阵的正交性,coefforth

coefforth * coefforth’
ans =4×41.0000 0.0000 -0.0000 -0.0000 0.0000 1.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 0.0000 1.0000

当数据中有缺失值时,使用交替最小二乘(ALS)算法查找主成分。

加载样例数据。

负载哈尔德

成分数据对4个变量有13个观测值。

使用ALS算法进行主成分分析,并显示成分系数。

[coeff,score,latent,tsquared,explained] = pca(成分);多项式系数
多项式系数=4×4-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844

随机引入缺失值。

Y =配料;rng (“默认”);再现率%Ix =随机的(“unif”0 1大小(y)) < 0.30;y(ix) = NaN
y =13×47 26 6 NaN 1 29 15 52 NaN NaN 8 20 11 31 NaN 47 7 52 6 33 NaN 55 NaN NaN NaN 71 NaN 6 1 31 NaN 44 2 NaN NaN 22 21 47 4 26

现在大约有30%的数据缺少值,表示为

使用ALS算法进行主成分分析,并显示成分系数。

[coeff1,score1,latent,tsquared,explained,mu1] = pca(y,...“算法”“als”);coeff1
coeff1 =4×4-0.0362 0.8215 -0.5252 0.2190 -0.6831 -0.0998 0.1828 0.6999 0.0169 0.5575 0.8215 -0.1185 0.7292 -0.0657 0.1261 0.6694

显示估计的平均值。

mu1
mu1 =1×48.9956 47.9088 9.0451 28.5515

重建观测数据。

T = score1*coeff1' + repmat(mu1,13,1)
t =13×47.0000 26.0000 6.0000 515.250 1.0000 29.0000 15.0000 520.000 10.7819 53.0230 8.0000 20.0000 11.0000 31.0000 13.5500 47.0000 7.0000 52.0000 6.0000 33.0000 10.4818 55.0000 7.8328 17.9362 3.0982 71.0000 11.9491 6.0000 1.0000 31.0000 -0.5161 44.0000 2.0000 53.7914 5.7710 22.0000 21.0000 47.0000 4.0000 26.0000

ALS算法估计数据中缺失的值。

比较结果的另一种方法是找出由系数向量张成的两个空间之间的夹角。使用ALS查找为完整数据找到的系数与缺少值的数据之间的角度。

子空间(多项式系数,coeff1)
Ans = 6.1030e-16

这是一个很小的值。如果您使用主成分分析“行”,“完成”当没有丢失数据时,如果使用主成分分析“算法”、“als”当缺少数据时,名称-值对参数彼此接近。

执行主成分分析使用“行”,“完成”名称-值对参数并显示分量系数。

[coeff2,score2,latent,tsquared,explained,mu2] = pca(y,...“行”“完成”);coeff2
coeff2 =4×3-0.2054 0.8587 0.0492 -0.6694 -0.3720 0.5510 0.1474 -0.3513 -0.5187 0.6986 -0.0298 0.6518

在这种情况下,主成分分析删除缺少值的行和y只有四行,没有缺失值。主成分分析只返回三个主组件。您不能使用“行”,“成对”因为协方差矩阵不是正的半定的主成分分析返回一个错误消息。

使用列表删除(当)找到完整数据和缺失值数据的系数之间的角度“行”,“完成”).

子空间(多项式系数(:1:3),coeff2)
Ans = 0.3576

这两个空间之间的夹角要大得多。这表明这两个结果是不同的。

显示估计的平均值。

mu2
mu2 =1×47.8889 46.9091 9.8750 29.6000

这里,均值就是样本均值y

重建观测数据。

score2 * coeff2’
ans =13×4南南南南-7.5162 -18.3545 4.0968 22.0056南南南南南南南南南南南南南南南南南-0.5644 5.3213 -3.3432 3.6040南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南-0.1076 -6.3333 -3.7758 -

这表明删除包含值并不像ALS算法那样有效。当数据有太多缺失值时,使用ALS会更好。

找出主成分的系数、分数和方差。

加载示例数据集。

负载哈尔德

成分数据对4个变量有13个观测值。

找出成分数据的主成分系数、分数和成分的方差。

[coeff,score,latent] = pca(成分)
多项式系数=4×4-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844
分数=13×436.8218 -6.8709 -4.5909 - 3.3967 - 29.6073 4.6109 -2.2476 -0.3958 -12.9818 -4.2049 -1.1261 23.7147 -6.6341 1.8547 -0.3786 -0.5532 -4.4617 -6.0874 0.1424 -10.8125 -3.6466 0.9130 -0.1350 -32.5882 8.9798 -1.6063 0.0818 22.6064 10.7259 3.2343 -9.2626 8.9854 -0.0169 -0.5437 -3.2840 -14.1573 7.0465 0.3405
潜在的=4×1517.7969 67.4964 12.4054 0.2372

的每一列分数对应一个主成分。这个向量,潜在的,存储四个主成分的方差。

重建居中的成分数据。

居中=分数*coeff'
Xcentered =13×4-0.4615 -22.1538 -5.7692 30.000 -6.4615 -19.1538 3.2308 22.0000 3.5385 7.8462 -3.7692 -3.7692 17.0000 -0.4615 3.8462 3.5385 6.8462 -2.7692 -8.0000 -4.4615 22.8462 5.2308 -24.0000 -6.4615 -17.1538 10.2308 14.0000 -5.4615 5.8462 6.2308 - 8.0308 -8.0000 13.5385 -1.1538 -7.7692 -4.0000

的新数据Xcentered是原始成分数据居中,从相应的列减去列平均数。

将每个变量的标准正交主成分系数和每个观察结果的主成分得分可视化。

biplot(多项式系数(:,1:2),“分数”分数(:1:2),“varlabels”, {“v_1”“v_2”“v_3”“两者”});

图中包含一个轴对象。axis对象包含14个类型为line, text的对象。

在这个双线图中,所有四个变量都用一个矢量表示,矢量的方向和长度表示每个变量对图中两个主要成分的贡献。例如,在横轴上的第一个主成分,其第三和第四个变量的系数为正。因此,矢量 v 3. 而且 v 4 被引导到情节的右半部分。第一个主成分中最大的系数是第四个,与变量相对应 v 4

第二个主成分,在纵轴上,变量的系数为负 v 1 v 2 , v 4 ,变量的系数为正 v 3.

这个2-D双线图还包括13个观测值中的每个点,坐标表示图中两个主要组成部分的每个观测值的得分。例如,靠近图左边缘的点的第一个主成分得分最低。这些点是相对于最大分数值和最大系数长度进行缩放的,因此只能从图中确定它们的相对位置。

求霍特林的t平方统计值。

加载示例数据集。

负载哈尔德

成分数据对4个变量有13个观测值。

执行主成分分析并请求t平方值。

[coeff,score,latent,tsquared] = pca(成分);tsquared
tsquared =13×15.6803 3.0758 6.0002 2.6198 3.3681 0.5668 3.4818 3.9794 2.6086 7.4818

只请求前两个主成分,并在请求的主成分的缩减空间中计算t平方值。

[coeff,分数,潜在,tsquared] = pca(成分,“NumComponents”2);tsquared
tsquared =13×15.6803 3.0758 6.0002 2.6198 3.3681 0.5668 3.4818 3.9794 2.6086 7.4818

请注意,即使指定了缩减的组件空间,主成分分析计算整个空间中的t平方值,使用所有四个分量。

约简空间中的t平方值对应于约简空间中的马氏距离。

Tsqreduced = mahal(分数,分数)
tsqreduced =13×13.3179 2.0079 0.5874 1.7382 0.2955 0.4228 3.2457 2.6914 1.3619 2.9903

通过取完整空间中的t平方值与约简空间中的马氏距离之差来计算废弃空间中的t平方值。

Tsqdiscarded = tsquared - tsqreduced
tsqdiscarded =13×12.3624 1.0679 5.4128 0.8816 3.0726 0.1440 0.2362 1.2880 1.2467 4.4915

找出由主成分解释的变异性百分比。在主成分空间中显示数据表示。

加载示例数据集。

负载进口- 85

数据矩阵X在列3至15中有13个连续变量:轴距,长度,宽度,高度,约束重量,发动机尺寸,内径,冲程,压缩比,马力,峰值rpm,城市mpg和公路mpg。

找出由这些变量的主成分解释的变异性百分比。

[coeff,score,latent,tsquared,explained] = pca(X(:,3:15));解释
解释了=13×164.3429 35.4484 0.1550 0.0379 0.0078 0.0048 0.0013 0.0011 0.0005 0.0002

前三个组成部分解释了99.95%的变异性。

在前三个主成分的空间中可视化数据表示。

scatter3(分数(:1),分数(:,2),得分(:,3)轴平等的包含(“第一主成分”) ylabel (“第二主成分”) zlabel (“第三主成分”

图中包含一个轴对象。坐标轴对象包含一个散点类型的对象。

数据显示沿第一主成分轴的变异性最大。这是第一个轴的所有可能选择中最大的可能方差。第二主成分轴的变异性在第二轴的所有可能选择中是最大的。第三主成分轴变异性第三大,明显小于沿第二主成分轴的变异性。第四个到第十三个主成分轴不值得检查,因为它们只解释了数据中所有变异性的0.05%。

要跳过任何输出,可以使用而是在相应的元素中。例如,如果你不想得到t平方的值,指定

[多项式系数,分数,潜伏,~,解释]= pca (X (:, 3:15));

找出一个数据集的主成分,并将主成分分析应用于另一个数据集。当你有一个机器学习模型的训练数据集和测试数据集时,这个过程是有用的。例如,可以使用PCA对训练数据集进行预处理,然后训练一个模型。要使用测试数据集测试训练后的模型,需要将从训练数据中获得的PCA转换应用到测试数据集。

本例还描述了如何生成C/ c++代码。因为主成分分析金宝app支持代码生成,您可以生成使用训练数据集执行PCA的代码,并将PCA应用于测试数据集。然后将代码部署到设备上。在这个工作流中,您必须传递训练数据,这些数据可能相当大。为了节省设备内存,可以将训练和预测分开。使用主成分分析在MATLAB®中,并将PCA应用于设备上生成的代码中的新数据。

生成C/ c++代码需要MATLAB®Coder™。

将PCA应用于新数据

使用将数据集加载到表中readtable.数据集在文件中CreditRating_Historical.dat,其中载有历史信用评级数据。

信用评级=可读(“CreditRating_Historical.dat”);creditrating (1:5,:)
ans =5×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业评级_____ _____ _____ _______ ________ _____ ________ _______ 62394 0.013 0.104 0.036 0.447 0.142 3 {'BB'} 48608 0.232 0.335 0.062 1.969 0.281 8 {'A'} 42444 0.311 0.367 0.074 1.935 0.366 1 {'A'} 48631 0.194 0.263 0.062 1.017 0.228 4 {'BBB'} 43768 0.121 0.413 0.057 3.647 0.466 12 {'AAA'}

第一列是每个观察值的ID,最后一列是评级。指定第二至第七列为预测器数据,并指定最后一列(评级)作为回应。

X = table2array(creditrating(:,2:7));Y = creditrating.评级;

使用前100个观察数据作为测试数据,其余数据作为训练数据。

XTest = X(1:100,:);XTrain = X(101:end,:);YTest = Y(1:100);YTrain = Y(101:end);

找出训练数据集的主成分XTrain

[coeff,scoreTrain,~,~,explained,mu] = pca(XTrain);

这段代码返回四个输出:多项式系数scoreTrain解释,μ.使用解释(所解释的总方差的百分比),以找到解释至少95%变异性所需的成分数量。使用多项式系数(主成分系数)和μ(估计平均值XTrain)将主成分分析应用于测试数据集。使用scoreTrain(主成分分数)而不是XTrain当你训练模型的时候。

显示由主要成分解释的变异性百分比。

解释
解释了=6×158.2614 41.2606 0.3875 0.0632 0.0269 0.0005

前两个组成部分解释了95%以上的变异性。找出解释95%以上可变性所需的成分数量。

Idx = find(cumsum(explained)>95,1)
Idx = 2

使用前两个组件训练分类树。

scoreTrain95 = scoreTrain(:,1:idx);mdl = fitctree(scoreTrain95,YTrain);

mdl是一个ClassificationTree模型。

为了将训练过的模型用于测试集,您需要使用从训练数据集中获得的主成分分析来转换测试数据集。通过减法得到测试数据集的主成分分数μXTest然后乘以多项式系数.只有前两个分量的分数是必要的,所以使用前两个系数多项式系数(:1:idx)

scoreTest95 = (XTest-mu)*coeff(:,1:idx);

传递训练好的模型mdl以及转换后的测试数据集scoreTest预测函数预测测试集的评级。

ytest_expected = predict(mdl,scoreTest95);

生成代码

生成将PCA应用于数据的代码,并使用训练过的模型预测评级。注意,生成C/ c++代码需要MATLAB®Coder™。

将分类模型保存到文件中myMdl.mat通过使用saveLearnerForCoder

saveLearnerForCoder (mdl“myMdl”);

定义名为myPCAPredict接受测试数据集(XTest)和主成分分析资料(多项式系数而且μ),并返回测试数据的评级。

添加% # codegen编译器指令(或pragma)到函数入口点之后的函数签名,以表明您打算为MATLAB算法生成代码。添加此指令将指导MATLAB代码分析器帮助您诊断和修复在代码生成过程中可能导致错误的违规行为。

函数label = mypcappredict (XTest,coeff,mu)% # codegen使用PCA转换数据scoreTest = bsxfun(@minus,XTest,mu)*coeff;负载训练分类模型mdl = loadLearnerForCoder(“myMdl”);使用加载模型预测评级label = predict(mdl,scoreTest);

myPCAPredict应用PCA对新数据使用多项式系数而且μ,然后使用转换后的数据预测评级。通过这种方式,您不会传递训练数据,这些数据可能相当大。

注意:如果单击该页右上方部分的按钮并在MATLAB®中打开此示例,则MATLAB®将打开示例文件夹。此文件夹包括入口点函数文件。

使用以下命令生成代码codegen(MATLAB编码器).因为C和c++都是静态类型语言,所以必须在编译时确定入口点函数中所有变量的属性。要指定数据类型和精确的输入数组大小,请传递一个MATLAB®表达式,该表达式表示具有特定数据类型和数组大小的值集arg游戏选择。如果在编译时观察数未知,您还可以使用将输入指定为可变大小coder.typeof(MATLAB编码器).详细信息请参见为代码生成指定可变大小的参数

codegenmyPCAPredictarg游戏{coder.typeof (XTest[正无穷,6],[1,0]),多项式系数(:,1:idx),μ}
代码生成成功。

codegen生成MEX函数myPCAPredict_mex使用依赖于平台的扩展。

验证生成的代码。

YTest_predicted_mex = myPCAPredict_mex(XTest,coeff(:,1:idx),mu);isequal (YTest_predicted YTest_predicted_mex)
ans =逻辑1

isequal返回逻辑1 (真正的),这意味着所有的输入都是相等的。这一比较证实了预测的函数mdlmyPCAPredict_mex函数返回相同的评级。

有关代码生成的更多信息,请参见代码生成简介而且代码生成和分类学习应用程序.后者描述了如何使用Classification Learner应用程序执行PCA和训练模型,以及如何生成C/ c++代码,根据训练好的模型预测新数据的标签。

输入参数

全部折叠

输入要计算主成分的数据,指定为n——- - - - - -p矩阵。行X将观察结果和列对应于变量。

数据类型:|

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“算法”、“eig”、“集中”,假的,‘行’,‘所有’,‘NumComponents’,3指定主成分分析采用特征值分解算法,不将数据居中,使用所有观测值,只返回前三个主成分。

主成分算法主成分分析用于执行主成分分析,指定为由逗号分隔的对组成“算法”下面是其中之一。

价值 描述
“圣言” 违约。奇异值分解(SVD)X
“eig” 协方差矩阵的特征值分解。EIG算法比SVD算法快,当观测的数量,n,超过变量数,p,但不太准确,因为协方差的条件数是的条件数的平方X
“als”

交替最小二乘(ALS)算法。该算法找到了最佳秩k因式逼近X成一个n——- - - - - -k左因子矩阵L和ap——- - - - - -k右因子矩阵R,其中k是主成分的个数。因式分解使用随机初始值的迭代方法。

ALS设计用于更好地处理缺失值。这比成对删除(“行”,“成对”),并处理缺失的值而不按列表删除(“行”,“完成”).它可以很好地用于具有少量随机缺失数据的数据集,但在稀疏数据集上可能表现不佳。

例子:“算法”、“eig”

列居中的指示器,指定为逗号分隔的对,由“中心”其中一个逻辑表达式。

价值 描述
真正的

违约。主成分分析中心X计算前通过减列方式进行奇异值分解或特征值分解。如果X包含缺失值,意思是(X, omitnan)用于找到任何可用数据的平均值。可以使用分数*多项式系数的

在这种情况下主成分分析不将数据居中。您可以使用分数*多项式系数的

例子:“集中”,假的

数据类型:逻辑

指标为经济规模产出时自由度d,小于变量的个数,p,指定为逗号分隔的对,由“经济”其中一个逻辑表达式。

价值 描述
真正的

违约。主成分分析只返回第一个d的元素潜在的对应的列多项式系数而且分数

当变量的数量增加时,此选项可以显著加快p要比d

主成分分析返回的所有元素潜在的.的列多项式系数而且分数对应于零元素潜在的是0。

注意当d<p分数(d + 1:: p)而且潜在的(d + 1: p)必然为零,而多项式系数(d + 1:: p)定义正交的方向X

例子:“经济”,假的

数据类型:逻辑

请求的组件数量,指定为由逗号分隔的对组成“NumComponents”和一个标量整数k满足0 <kp,在那里p原始变量的数量是多少X.当指定时,主成分分析返回第一个k多项式系数而且分数

例子:“NumComponents”,3

数据类型:|

采取的行动数据矩阵中的值X,指定为逗号分隔的对,由“行”下面是其中之一。

价值 描述
“完成”

违约。观察与值在计算之前被删除。行S被重新插入分数而且tsquared在相应的地点。

“成对”

此选项仅适用于算法为“eig”.如果你没有指定算法“成对”,然后主成分分析将其设置为“eig”.如果你指定“圣言”作为算法,连同选项“行”,“成对”,然后主成分分析返回一条警告消息,将算法设置为“eig”和仍在继续。

当您指定“行”,“成对”选项,主成分分析计算(j)元素的协方差矩阵使用行列中的值jX

注意,得到的协方差矩阵可能不是正定的。这样的话,主成分分析以错误消息终止。

“所有”

X期望没有缺失值。主成分分析使用所有数据,如果有则终止价值被发现。

例子:“行”,“成对”

观察权重,由逗号分隔的对组成“重量”和一个长度向量n包含所有积极因素的。

数据类型:|

变量权重,指定为逗号分隔的对,由“VariableWeights”下面是其中之一。

价值 描述

行向量

长度向量p包含所有积极因素的。

“方差”

变量权重是样本方差的倒数。如果你也使用“重量”,则变量权值变为加权样本方差的逆。

如果“中心”设置为真正的同时,数据矩阵X集中和标准化。在这种情况下,主成分分析返回基于相关矩阵的主成分。

例子:“VariableWeights”、“方差”

数据类型:||字符|字符串

系数矩阵的初值多项式系数,指定为逗号分隔的对,由“Coeff0”和一个p——- - - - - -k矩阵,p是变量的个数,和k请求的主成分的数量。

请注意

只有在以下情况下才能使用此名称-值对“算法”“als”

数据类型:|

分数矩阵的初始值分数,指定为逗号分隔的对,由“Score0”和一个n——- - - - - -k矩阵,n观察的次数和k请求的主成分的数量。

请注意

只有在以下情况下才能使用此名称-值对“算法”“als”

数据类型:|

迭代的选项,指定为逗号分隔的对,由“选项”这个结构是由statset函数。主成分分析在选项结构中使用以下字段。

字段名 描述
“显示” 显示输出的级别。的选择是“关闭”“最后一次”,“通路”
“麦克斯特” 允许的最大步数。缺省值是1000。与优化设置不同,达到麦克斯特值被视为收敛。
“TolFun” 给出代价函数的终止容差的正数。默认值是1e-6。
“TolX” 给出ALS算法中左右因子矩阵L和R元素相对变化的收敛阈值的正数。默认值是1e-6。

请注意

只有在以下情况下才能使用此名称-值对“算法”“als”

中,可以更改这些字段的值并指定新的结构主成分分析使用“选项”名称-值对参数。

例子:Opt = statset('pca');opt.MaxIter = 2000;coeff = pca(X,'Options',opt);

数据类型:结构体

输出参数

全部折叠

主成分系数,返回为ap——- - - - - -p矩阵。的每一列多项式系数包含一个主成分的系数。列按方差降序排列,潜在的

主成分分数,以矩阵形式返回。行分数对应观察值,列对应组件。

主成分方差,也就是协方差矩阵的特征值X,作为列向量返回。

霍特林的t平方统计,它是每个观察的标准化分数的平方和,作为列向量返回。

由每个主成分解释的总方差的百分比,作为列向量返回。

中变量的估计均值X时,作为行向量返回为中心的设置为真正的.当为中心的,该软件不计算平均值,并返回一个零向量。

更多关于

全部折叠

霍特林的t平方统计

霍特林的t平方统计量是对每个观测值到数据集中心的多元距离的统计度量。

即使你要求的组件数量少于变量数量,主成分分析使用所有主成分来计算t平方统计量(在全空间中计算)。如果你想要减少或丢弃空间中的t平方统计量,请执行以下操作之一:

  • 对于简化空间中的t平方统计量,使用泰姬陵(得分,得分)

  • 对于废弃空间中的t平方统计量,首先使用[coeff,score,latent,tsquared] = pca(X,'NumComponents',k,…),计算t平方统计量在简化空间使用Tsqreduced = mahal(分数,分数),然后取差值:tsquared-tsqreduced

自由度

自由度,d,等于n- 1,如果数据居中和n否则,地点:

  • n行数没有吗S如果你用“行”,“完成”

  • n行数没有吗S的列对,它的行数最大S如果你用“行”,“成对”

变量权重

注意,当使用可变权重时,系数矩阵不是标准正交的。假设您使用的可变权重向量被称为varwei,主成分系数向量主成分分析返回的是wcoeff.然后你可以用变换计算标准正交系数诊断接头(sqrt (varwei)) * wcoeff

算法

主成分分析函数强制使用符号约定,强制使用的每列中幅度最大的元素系数要积极。改变系数向量的符号并不会改变它的意义。

参考文献

[1]乔利夫,麻省理工学院。主成分分析.第二版,施普林格,2002。

[2]克尔扎诺夫斯基,w。多元分析原理.牛津大学出版社,1988年。

[3] Seber g.a.f.多变量的观察.威利,1984年。

[4] j.e.a.杰克逊。主要部件的用户指南.威利,1988年。

[5] Roweis, S.“用于PCA和SPCA的EM算法。”1997年神经信息处理系统进展会议论文集.卷10 (NIPS 1997),剑桥,马萨诸塞州,美国:麻省理工学院出版社,1998年,第626-632页。

[6] Ilin, A.和T. Raiko。缺失值情况下主成分分析的实用方法j·马赫。学习。Res。.第11卷,2010年8月,1957-2000页。

扩展功能

在R2012b中引入