1

Is there any valid approach to generate new training data out of some existing training data. I ask this question only in regard of my learning problem not in a general context.

My learning problem is to convert the 6 dimension acceleration and gyroscope data (data is obtained from a sensor attached to the user wrist while he/she try to writ some characters in the air) to the corresponding characters A to Z.

I have only 10 sample data for each character so in total 260 training instances.For example the following images are related to 2 sample data for character "F" enter image description here enter image description here

Also I have many sample data while user do not moves his hand and waiting for the next character to write but because of hand spontaneous and random movement still we have some pattern of data although compared to my 260 training data they are flat and they can be different from one user to another you can see it in the following image. enter image description here

Also we can say that each training sample data some how is a mixture of an ideal hand movement for writing the character + these spontaneous and random movement of hand (something like noise)

I want to know if there is any way that I can generate some new training data. Maybe I can combine my current 260 training and the data from the time user do not move his hand to generate some new training data. Maybe one can say there is no need to generate new training data and I can just simply relay on my 10 sample data for each character then use for example k-NN algorithm to find the nearest neighbours (which I did and it looks promising, for example in the following image you can see the distance calculated with DTW from one unseen A character from my all 260 sample data) so then there is no need to extra training data. enter image description here

Thanks

Saman
  • 111
  • you can choose many possible models for how a character is chosen and then drawn "in the air" by the hands of the writer, and how there is some random noise added to the whole process, and finally the acceleration+gyroscope data you'd get. and because of the time dependence nature of your problem, I'd say that a neural network with some LSTM and convolutional layers is quite well adapted. what method were you think about for recognizing the characters for the acceleration+gyroscope data ? – reuns May 17 '16 at 01:18
  • What do you mean by "models for how a character is chosen and then drawn". My last image is the distance of one A character from all other training instances. The X access is the acceleration distance and the Y is the gyroscope distance. I used DTW (Dynamic Time Warping) to calculate the acceleration distance of one instance from another. – Saman May 17 '16 at 01:52
  • so you plan to perform only clustering based on DTW. why would you need a way to generate other data then ? and what I meant for how a character is drawn is obvious : for generating new data you need a model for how the data was built at first, hence a model for how, knowing the character to draw, the user moves his hand. – reuns May 17 '16 at 02:11
  • Yes, but DTW is juts one method I want to use, also I want to use as you mentioned neural network but I was concerned that maybe may data set (just 260 training sample) is not sufficient. – Saman May 17 '16 at 02:18
  • Yes I agree that for a neural network, you'll have some overfitting problems. So you can try adding directly some noise to the acceleration data, or you can use some datasets of drawn letters like those https://www.researchgate.net/profile/Olarik_Surinta/publication/280917841/figure/fig7/AS:284524366843905@1444847303082/Fig-7-Illustration-of-the-similarities-between-different-Bangla-handwritten-digits-and_small.png and generate new data (but it will be complicated) – reuns May 17 '16 at 02:21
  • Is there any way I can create this model for each character based on 10 sample data that I have for each of them. For example from my 10 sample of character 'A' I make an average pattern (taking average of each point) so I call it my 'A' model then I add some random data from the time user do not moves his hand to these model and create some new sample data. – Saman May 17 '16 at 02:23

1 Answers1

0

I dont think you need to create new data, you just need to use the data you have properly.

First trick: Using a subset of the six time series will get you higher accuracy than using all 6. This may be unintuitive, but it is true. See [a] or [b]. How do you find the best set? Greedy forward search works quite well.

Second trick: Setting the right warping window width will give you a significant improvement. Compare the second and third last columns of [c]

eamonn

[a] http://www.cs.ucr.edu/~eamonn/Multi-Dimensional_DTW_Journal.pdf [b] http://www.cs.ucr.edu/~eamonn/MultiD_ICDM_cameraReady.pdf

[c] UCR Time Series Classification Archive

eamonn
  • 1