我使用SVM和MLP的二进制分类来获取财务数据。我的输入数据有21个功能,所以我使用了降维方法来减少数据的维数。一些尺寸缩减方法(如逐步回归)报告最佳特征,因此我将这些特征用于我的分类模式,而另一种方法(如PCA将数据转换为新空间),例如我使用60%的最佳报告列(特征)。关键问题在于使用最终模型的阶段。例如,我使用过去一年和两年前的财务数据作为今天的财务状况。所以现在我想用过去和今天的数据来预测明年。我的问题是:在插入我设计的分类模型之前,我应该使用PCA获取新的输入数据吗?如何使用(例如主成分分析)此数据?我必须像以前一样使用它吗? (pca(newdata ...))或者我在这个阶段必须使用的最后一个PCA有哪些结果?
更多信息:
这是我的系统结构: 我有一个混合分类方法,带有优化算法,用于选择我的模型的最佳特征(输入)和我的分类方法的最佳参数,因此对于像MLP这样的分类方法需要很长时间来优化21个特征(除此之外我重复每次迭代我的优化算法12次/横截面)。所以我希望在将其插入分类方法之前,通过降维技术(如PCA,NLPCA或监督方法,如LDA / FDA)减少功能。例如,我正在使用这种PCA代码结构:
[coeff,score,latent,tsquared,explain,mu] = pca( _ )
之后我将使用10个第一列输出(按PCA功能排序)输入我的分类和优化模型。在最后阶段,我将找到具有最佳输入组合的最佳模型参数。例如,我的原始数据有21个功能。在使用PCA的第一阶段之后,我将在优化我的分类模型后选择10个特征和最终模型。我将拥有一个具有5个最佳选择功能的模型。现在我想用这个模型和新数据。我该怎么办?
非常感谢您的帮助。
答案 0 :(得分:0)
您应该按照以下步骤操作:
以下是步骤1和3的一些代码段(2和4取决于您的分类器):
%Step 1.Generate a PCA data model
[W, Y] = pca(data, 'VariableWeights', 'variance', 'Centered', true);
%# Getting the correct W, mean and weights of data (for future data)
W = diag(std(data))\W;
[~, mu, we] = zscore(data);
we(we==0) = 1;
%Step 3.Apply the previous data model to a new vector
%# New coordinates as principal components
x = newDataVector;
x = bsxfun(@minus,x, mu);
x = bsxfun(@rdivide, x, we);
newDataVector_PCA = x*W;