用Matlab设计模型后重用降维

时间:2014-03-27 09:18:08

标签: matlab svm pca feature-selection dimensionality-reduction

我使用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个最佳选择功能的模型。现在我想用这个模型和新数据。我该怎么办?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该按照以下步骤操作:

  1. 根据您的训练数据,创建一个PCA模型
  2. 使用您的训练数据的PCA,训练您的分类器
  3. 将第一个PCA模型应用于新数据
  4. 使用新数据的PCA,测试分类器
  5. 以下是步骤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;