2
$\begingroup$

I am trying to add more data points in my (almost) balanced dataset for training my neural network. I have come across techniques such as SMOTE or Random Over Sampling, but they work best for imbalanced data (as they balance the dataset). How can I do this and is it even worth it?

P.S. I know copying the same data points and appending them at the end doesn't add much value, but can we do it, and can it help to increase the prediction accuracy?

$\endgroup$
0
0
$\begingroup$

Random over sampling creates duplicates of existing examples, so applying this to your training data would be the same as increasing the weight of the oversampled examples. If it's done to all of the examples uniformly then the effects will probably cancel out. SMOTE, on the other hand, creates synthetic examples that are linear combinations of existing examples. Thus it can be thought of as a type of data augmentation, and in some situations this might improve your model's predictions.

$\endgroup$
0
$\begingroup$

I presume you are attempting to solve a classification problem.

IMO, there's no decision-making template you could follow to know whether to use over sampling or not.I would typically compare results (ROC AUC, PRC curves) across datasets (Original vs Undersampled vs Oversampled) to decide.

You can consider some additional variants of SMOTE like SMOTE NC (SMOTE does not work if any of your predictors is categorical , SMOTE NC does), Borderline SMOTE, K-means SMOTE, as well as ADASYN. Alternately, you can also choose to undersample your majority class using techniques such as ENN, Tomek Links, Instance Hardness, CNN, One sided Selection etc. They usually generate better results than random over/under sampling.

Do note that over/under sampling methods are generally used for imbalanced datasets.

$\endgroup$
1
  • $\begingroup$ Hey, yeah I know they(all the aforementioned methods) are generally used for imbalanced datasets but I'm trying to add more data points in my balanced dataset. $\endgroup$ – Sourabh Yadav Apr 27 at 11:38
0
$\begingroup$

Does your question pertain to general data augmentation? That is already in heavy use- using transformations while training is very common, and over several epochs the network benefits from learning the new representations. The transformations are applied to all classes, with a probability of transformation ( horizontal flip, for example) specified by the user. If you want to make your almost balanced dataset a balanced one, you can look into specific augmentations that you perform to the (almost) minority class before feeding it to the model. You could look into preprocessing methods that libraries like Keras have made open-source.

$\endgroup$
-1
$\begingroup$

Gretel is a good tool for processing data. Facets is good for the visualizations.

Is it worth it? most learners will exhibit bias towards the majority class, and in extreme cases, may ignore the minority class altogether.

It really depends on the goal and requirements of your project. Not because it's desirable it's better for your particular project, if your dataset is almost balanced probably you should continue with something else and consider balancing your data later in the project.

$\endgroup$
1
  • 1
    $\begingroup$ I meant is it worth adding more data points in a balanced dataset. $\endgroup$ – Sourabh Yadav Apr 27 at 11:34
-1
$\begingroup$

If your data is well balanced but small, I would recommend using a simpler algorithm to classify your data.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.