Inspired by Chris Smith's project this application does classification differently, logs classifications in a local database and maintains an online repository of activities.
Currently past activities are used for estimating the current activity based on the current classification and previous activities. The algorithm is bespoke and uses historical information.
Activity classification is a Markov Process can be described by a hidden Markov model http://en.wikipedia.org/wiki/Hidden_Markov_model where the activities are the hidden states and the classifier outputs are the visible outputs, dependent on the state. Therefore inference techniques applicable to Hidden Markov models can be used.
Activity classification could be improved by recalculating classifications using later classifier outputs and updating history. This is computationally intensive so could be done on a server to reduce battery consumption on the device. The Android application would display its best estimate of an activity. The list of activities are periodically uploaded to the server. When this occurs the server can re analyse activities and improve the activity classifications. Next time data is uploaded to the server the improved activity classifications can be passed back to the handset for display to the user. This means a user would see a best guess for the current activity on the handset but the history may show something different occurring at that time.
Currently past activities are used for estimating the current activity based on the current classification and previous activities. The algorithm is bespoke and uses historical information.
Activity classification is a Markov Process can be described by a hidden Markov model http://en.wikipedia.org/wiki/Hidden_Markov_model where the activities are the hidden states and the classifier outputs are the visible outputs, dependent on the state. Therefore inference techniques applicable to Hidden Markov models can be used.
Activity classification could be improved by recalculating classifications using later classifier outputs and updating history. This is computationally intensive so could be done on a server to reduce battery consumption on the device. The Android application would display its best estimate of an activity. The list of activities are periodically uploaded to the server. When this occurs the server can re analyse activities and improve the activity classifications. Next time data is uploaded to the server the improved activity classifications can be passed back to the handset for display to the user. This means a user would see a best guess for the current activity on the handset but the history may show something different occurring at that time.
The forward-backward algorithm can be used to find the most likely state for any point in time http://en.wikipedia.org/wiki/Forward-backward_algorithm. The Viterbi algorithm can be used to find the most likely sequence of states http://en.wikipedia.org/wiki/Viterbi_algorithm.
Also see https://github.com/kentaylor/ContextApi/issues/47 for discussion of server based use of location from Latitude to improve travelling estimation.