1
$\begingroup$

I am using the bank marketing dataset from the UCI ML repo to build an example of a big data storage system along with ETL workflows and Machine Learning models. I would like to create more data so I can feed it to the storage solution pretending it is new "fresh" data from different time periods.

I know there are techniques to create more data by adding noise while at the same time maintaining the same underlying structure. Could anybody suggest some that would apply to this dataset and add a motivation?

I am dealing with just numeric features of type categorical, continuous and binary (no image or text data). I don't think this matters but in case it does, this is a binary classification problem.

Thanks for all your inputs!

$\endgroup$
3
  • $\begingroup$ You could use SMOTE to oversample your data. $\endgroup$ Dec 21, 2018 at 9:05
  • $\begingroup$ Could you provide a link to an example? I have been researching SMOTE but found very few sites where it is being used for data augmentation $\endgroup$
    – Odisseo
    Dec 22, 2018 at 21:33
  • $\begingroup$ I don't have such a source, I don't know whether other people use it for this purpose. However SMOTE is used for under / oversampling, so in your case you could oversample your data to generate more data that is similar to your existing data (and maintain your structure). If you are looking for something more complex (that has more variability) then consider permutations. For each class copy all the observations, but permute all the values for each variable. I also don't have a source for this, but this is a common strategy used for assessing variable importances. $\endgroup$ Dec 23, 2018 at 20:10

2 Answers 2

0
$\begingroup$

When the variables are all continuous, I've seen this be done by adding a vector of values from some normal distribution with mean 0. The problem comes with the categorical data, where you have to change some of the categorical values intelligently enough that the new data point is different but realistic. This could be done by switching each category with a small probability. If that's not reasonable, you could also just add random noise at the continuous variables and leave the rest of them alone.

$\endgroup$
1
  • $\begingroup$ Could you please describe in more detail how you would go about augmenting categorical and binary variables? $\endgroup$
    – Odisseo
    Dec 22, 2018 at 22:47
0
$\begingroup$

You should divide your categorical features into 2 groups; ones you are completely separate feature and interchanging them causes inaccuracy. For example when you are selling goods by your people and suppose women are only sell women's underwear ( you think that's strange but it is actually the case in Islamic countries) and men only sell men's. In this case there is no reason to add noise (perturbation) to this feature as you see you do not have control on that and it is given as a parameter ( I used this term in contrast to variable not method input).

On the other hand when you are trying to model a categorical feature which are somehow interchangeable, then you can apply noise to that. For example, In one of my models I had several categories of services (such as house_cleaning and office_cleaning) and in this case it is logical to apply noise to this categorical feature ( though even it is also a parameter of the model). After all you see that there is no silver bullet answer to this question. But I found the following post super useful. Augmenting categorical datasets

$\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.