Is it possible to add weights to the features of observations in SVM fitcecoc function?

10 vues (au cours des 30 derniers jours)
I am building a classifier with SVM and I would like to emphasize some features out of the total of them. However as far as I understood there is only a possibility for the weigths to ponderate classes but not different features within the classes. Has anyone faced this problem before? I would be really happy if someone can help me with this! Thank you in advance.
% Define the observation weights vector
weights = ones(size(TrainData,2),1); % all observations initially have equal weight
weights(indices) = 2; % increase the weight of the selected observations for each sample
SVMCModel = fitcecoc(TrainData, Responses, 'Learners', SVMModel, 'ObservationsIn', 'rows', 'Weights', weights);
Error using classreg.learning.FullClassificationRegressionModel.prepareDataCR (line 242)
W must be a vector of floating-point numbers, with the same length as Y.
Error in classreg.learning.classif.FullClassificationModel.prepareData (line 821)
classreg.learning.FullClassificationRegressionModel.prepareDataCR(...
Error in classreg.learning.FitTemplate/fit (line 233)
this.PrepareData(X,Y,this.BaseFitObjectArgs{:});
Error in ClassificationECOC.fit (line 116)
this = fit(temp,X,Y);
Error in fitcecoc (line 353)
obj = ClassificationECOC.fit(X,Y,varargin{:});

Réponses (1)

Rohit
Rohit le 15 Mai 2023
Hi Elvira,
I understand that you are looking for a way to assign weights to specific features of your dataset when using the 'fitcecoc' function. However, it is worth noting that the 'fitcecoc' function in MATLAB does not provide a direct mechanism to assign weights to individual features. Its primary purpose is to train error-correcting output code (ECOC) multiclass models using binary base learners.
The weights property in fitcecoc weighs the observations in each row of X with the corresponding value in weights, where X is predictor data. So, it is not possible to pass weights for feature vectors(columns) in this function.
If you want to emphasize certain features in your SVM classifier, one common approach is feature selection or feature engineering. Here are a few options you can consider:
  • Univariate Feature Selection: Use statistical tests like chi-square, ANOVA, or mutual information to evaluate the relevance of features with respect to the target variable. Select the top-ranked features based on their scores.
  • L1 Regularization: SVM models with L1 regularization (L1-norm SVM) tend to produce sparse solutions by setting less relevant feature weights to zero. You can tune the regularization parameter to control the sparsity and emphasize key features.
You can also look up these documentation links of some of the feature selections methods available in MATLAB.
By applying one or more of these techniques, you can select or engineer features that have a more significant impact on your SVM classifier's performance.

Community Treasure Hunt

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

Start Hunting!

Translated by