Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm trying to build an intelligent reminder application for the mobile platform. I'm new to this and I'm kind of lost. So here's the problem...

The application must behave like a personal assistant by keeping track of reminders "important" for the user (the user need not always interact with the application which makes the application act similar to a real life assistant). The application must learn from the user. For example, It keeps track of his schedule/calendar and automatically sets reminders for meetings, deadlines(usually not mentioned in calendar). Here the calendar is integrated into the application and user need not manually set his reminders. Basically it studies and learns from the user to provide only what is needed.

Here is the design/architecture of the entire application I thought of implementing.

The Design

1> At first, we gather data and create a data set and put it into the database. 2> The learning module analyzes one piece of data at a time and accordingly changes the rules specified in analyze and dispatch section(this section contains code to attach a timestamp to the reminder and dispatch it at that time).

I need help in determining the algorithm that needs to be implemented in the learning module and also in the analyze and dispatch section.

share|improve this question

closed as too broad by MainMa, GlenH7, Doc Brown, Bart van Ingen Schenau, Kilian Foth Mar 17 at 14:59

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

5  
What do you want the learning module to learn? –  Robert Harvey Mar 16 at 15:05
    
All reasonable Machine Learning algorithms I know work on larger data sets. That's necessary both to learn general rules (this applies always) and exceptions (this doesn't apply when that). –  MSalters Mar 16 at 16:17

2 Answers 2

If you're sure you want to go with machine learning for this, it's only going to work (in the sense that users care about) if the user can give precise and immediate feedback about the usefulness of each notification.

In particular, when the user receives a notification, ideally, they should be able to immediately click "This was useful" or "This was not useful"; the latter may provide a few optional reasons to choose from like "too early", "too late", "no reminder needed", etc. And they should always have the option of overriding the machine learning with manual configuration if they feel the need to ("anything with 'dentist' should have a reminder 1 hour in advance, period").

The main problem is that on many mobile devices, you have to unlock the device before you can respond to the notification in any meaningful way, which means users aren't going to give you that feedback a lot of the time. For that reason alone, I think you should probably focus on manual configuration.

share|improve this answer

If you're talking about a user training an AI to learn what's important and what isn't based off of their calendar and some sort of feedback, then it's going to be a lot less work for them to just mark the appointment as important/not important with a flag or something when they're making it.

If you're talking about an AI trying to learn what is and isn't important based off a single calendar without any other input, you don't have enough data to learn anything.

It still isn't feasible even if you have it learn on EVERYONE's calendar without some sort of feedback. You could hand-pick a few examples you thought were important and have the system learn what you think is important, but that's awfully slow.

The most viable path I can see for meaningful machine learning is if you had an program have access to everyone's calandar and at least some of the people were anal about marking their appointments as important or not. The thing would learn based on the examples provided how to classify events as important or not.

And you've then created a spam filter for calendar events.

Check out: http://en.wikipedia.org/wiki/Naive_Bayes_spam_filtering for a method to pick out important or unimportant things. It's all about keywords. "Doctor", "Appointment", or "MUST GO" would be highlighted while "beer run", or "bill due" would be muted.

Machine learning is pretty complex though. It'd be simpler to provide the users some control of some rulesets for what appointments get reminder for when. After you've got something usable, and users entering in rulesets you can harvest, then you might have something you can learn from.

Personally, I'd like to see such an app make some guesses about WHERE the appointment is located along with my current location and distance to the target. If I'm a hour away from the dentist, getting a reminder 15 minutes before I'm supposed to be there doesn't help much.

Good luck!

share|improve this answer

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