4
votes

I am about to embark on development of a mobile app that uses the accelerometer to detect motion type, whether it's jumping, running, walking, etc. Now I have done a lot of online searching recently and somewhat understand that using machine learning is possible to detect patterns in sample data collected from accelerometer. I am totally new to machine learning but if I understand correctly (based on the hints other experts have given online) I can use either Support Vector Machines or Neural Networks to recognize the patterns in the collected samples and map it to a specific movement type. I also know OpenCV library provides both methods.

Can someone with expertise in the field tell me which method is better to use and also guide me through the steps required from data collection down to result presentation?

1
OpenCV comes with a machine learning library as well which you can use for pattern recognition, you can find it here docs.opencv.org/modules/ml/doc/ml.htmlAli
Adn yes, opencv has ports to both iOS and AndroidAli

1 Answers

5
votes

There is no solid evidence that shows SVM or NN is better for the general case, and performance depends greatly on the application and how you set up both algorithms. So the only way to find out for any new applications is to try both of them using the same data and see which one performs better.

Also, NN is generally computationally faster for classification, but slow for training. SVM is faster for training, but slower for classification.

For your case, what the input parameters to your algorithm will be the bigger issue. I would not feed in the raw accelerometer data to the SVM or NN. Instead I would preprocess and get basic information such as the the overall power, standard deviation, maybe some coefficients in the frequency domain to determine how fast it is. Doing it this way gives you a better intuition for improving and tuning your classifier. If you have the right input parameters, you may not even need NN or SVM to determine basic movements, just simple nearest distance identifier might work. Good luck.