0

我正在使用带有 SVM 和 MLP 的二进制分类来处理财务数据。我的输入数据有 21 个特征,所以我使用降维方法来降低数据的维度。一些降维方法(如逐步回归)报告了最佳特征,因此我将这些特征用于我的分类模式,另一种方法(如 PCA 将数据转换到新空间),我使用例如 60% 的最佳报告列(特征)。关键问题是在使用最终模型的阶段。例如,我使用过去一年和两年前的财务数据作为今天的财务状况。所以现在我想用过去和今天的数据来预测明年。我的问题在这里:在插入到我设计的分类模型之前,我应该将 PCA 用于新的输入数据吗?我如何使用(例如主成分分析)这些数据?我必须像以前一样使用它吗?(pca(newdata…)) 还是我必须在此阶段使用上一次 PCA 的一些结果?

更多信息 :

这是我的系统结构:我有一个混合分类方法和优化算法,用于选择我的模型的最佳特征(输入)和我的分类方法的最佳参数,所以对于像 MLP 这样的分类方法,我需要很长时间来优化 21 个特征(除了其中我重复优化算法的每次迭代 12 次/横截面)。因此,我想在将特征插入分类方法之前,使用降维技术(如 PCA、NLPCA 或 LDA/FDA 等监督方法)来减少特征。例如,我正在使用这种 PCA 代码结构:

[系数,分数,潜在,tsquared,解释,mu] = pca( _ )

之后,我将使用前 10 列输出(按 PCA 函数排序)作为我的分类和优化模型的输入。在最后阶段,我将找到具有最佳输入组合的最佳模型参数。例如,我的原始数据有 21 个特征。在使用 PCA 的第一阶段之后,我将选择 10 个特征并在优化我的分类模型后的最终模型中。我将有一个具有 5 个最佳选择特征的模型。现在我想将此模型与新数据一起使用。我必须做什么?

非常感谢您的帮助。

4

1 回答 1

0

您应该遵循以下步骤:

  1. 使用您的训练数据创建 PCA 模型
  2. 使用训练数据的 PCA,训练分类器
  3. 将第一个 PCA 模型应用于新数据
  4. 使用新数据的 PCA,测试分类器

以下是步骤 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;
于 2014-03-27T09:37:58.043 回答