Reuse dimensionality reduction after designing model

2 ビュー (過去 30 日間)
Jack 2014 年 3 月 27 日
コメント済み: Jack 2014 年 3 月 30 日
Hi. I'm using a binary classification with SVM and MLP for financial data. My input data has 21 features so I used dimensionally reduction methods for reducing the dimension of data. Some dimensionally reduction methods like stepwise regression report best features so I will used these features for my classification mode and another methods like PCA transform data to a new space and I use for instance 60% of best reported columns (features). The critical problem is in the phase of using final model. For example I used the financial data of past year and two years ago for today financial position. So now I want use past and today data to prediction next year. My question is here: Should I use PCA for new input data before inserting to my designed classification model? How can I use (For example Principal component analysis) for this data? I must use it like before? (pca(newdata…)) or there is some results from last PCA that I must use in this phase?
Thank you so much for your kind helps.


Greg Heath
Greg Heath 2014 年 3 月 28 日
PCA does not take into account the output variance. Therefore, it is suboptimal for classification.
Use PLS instead.
Whatever transformations are made to training data must also be used in validation, test and operational data using the EXACT SAME transformation formed from training data characteristics.
Hope this helps.
Thank you for formally accepting my answer
  1 件のコメント
Jack 2014 年 3 月 28 日
編集済み: Jack 2014 年 3 月 28 日
Thank you for your answer. Beside of Partial Least Square (PLS), Witch dimensionally reduction techniques do you suggest for a binary classification problem? (I'm using Fisher Discriminant Analysis, Stepwise regression, Welch test and Neighborhood components analysis now) I have a hybrid classification and optimization model that my optimization algorithm optimize parameters of classification methods (MLP, SVM, ELM …) and find best inputs (features) according to classification accuracy (Cost function of optimization algorithm) but I used 5 fold cross validation and repeat it 5 times in every iteration of optimization algorithm for increase reliability of my system so I have high computational problem. My input data has 20 features so I want reduce the dimension of my data. After that I insert these low dimension data (for example 15 features) to my model and model select best combination of 10 features automatically. Now I want use this model for out sample data. As you said I can’t use PCA, Kernel PCA or Non-linear PCA (Auto-associative neural network) methods for my problem. In general what do you think about my structure?
I read somewhere when the sample size is low we can use PLS. my input data size regularly is between 800-6000 or above. So can I use this method?
// my data is labeled (0 and 1 / binary classification) and inputs are financial rations and variables from companies statements so I think I have correlation in input features. so i think i must only use dimensionally reduction techniques that take into account data labeling like FDA ? //
Thank you so much for your kind helps.


その他の回答 (2 件)

Tom Lane
Tom Lane 2014 年 3 月 29 日
Greg seems to have some good ideas. However, going back to your original question, this is how it looks to me. If you apply PCA to your original data and train a model using the components you compute, then you do not want to do a new PCA on your new data. You want to get the coefficients from the PCA of your old data, and use them to compute components (scores) for the new data.
  4 件のコメント
Jack 2014 年 3 月 30 日
Thank you for answer Greg. I add some more question.I would greatly appreciate it if you could take a look at these questions.


Greg Heath
Greg Heath 2014 年 3 月 28 日
I am unfamiliar with Neighborhood components analysis.
PCA maximizes variance in the input space without regard to outputs. It is used often. In general however, it is suboptimal for reduced feature classification and regression.
On the other hand, PLS considers the linear I/O transformation. Like PCA, it is applicable to polynomials. However, I do not use higher powers than squares and crossproducts.
For nonlinear classification I use MATLAB's MLP PATTERNNET. I sometimes use the RBF NEWRB. However, it is not very flexible (identically shaped spherical Gaussian basis functions at locations of algorithm selected training data).
When data sets are large use crossvalidation.
Hope this helps.
Thank you for formally accepting my answer
  2 件のコメント
Jack 2014 年 3 月 29 日
編集済み: Jack 2014 年 3 月 29 日
Beside choosing appropriate method, is this structure true? For example I’m using Fisher discriminant analysis. I have 21 features and 6000 samples. I will transform my data with FDA so now I have data-set with 6000*21 dimension. After that I will choose first 10 best features of this data-set. So this 6000*10 data-set is now my input of hybrid classification model. Finally my model choose 4 best features (1, 3, 6, and 8).
Suppose that my out sample (testing data) is 15000*21. So I will find W*(new data-set) for calculating transformed data-set (W: weight matrix from last FDA method). Now I will select 10 first features. After that I will select 1, 3, 7 and 8 columns for input features of my design model. Is this structure true?
Which one do you think better? Normalizing data before insert it to dimensionally reduction or normalizing it after that? Which normalization method do you suggest for it? Max/Min mapping or whitening?**
I find this from stackoverflow:
%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 2.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;
In this code we normalized testing data with mean and variance of training data! Is this true?
Thanks again.


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by