I have a basic understanding of how machine learning works, but my knowledge isn't enough in order to develop a personal project I would like to start.

I want to develop a system based on online machine learning, aimed to binary classification:

  • The inputs/features I should consider are only categorical (but I may as well introduce also numerical inputs in the future, I cannot exclude the possibility as I'm still not sure about the features of the samples I will consider).
  • I would like to have some decay notion for older samples, in order to enhance the responsiveness of the system to changes.
  • I'm searching for something more like a compromise between complexity and correctness of the results.

This is the context. I want to write a software for writing down lists of things to do. Each list will be associated to a category by the user itself (the categories are not fixed, the user will be able to edit them). By relying on the history of previous lists, I want to predict what the user will put in the next one. Thus, basically, given a particular todo written in the past few lists, I want to classify it as "insert in list" or "do not insert in list".

Could you give me some pointers, please? I need your help in order to focus towards the most fitting algorithms and techniques for my needs. Many thanks in advance.

  • 1
    $\begingroup$ can you narrow down or give some idea what you want to classify? something on the web? images? pages? text? etc $\endgroup$ – vzn Sep 6 '12 at 18:21
  • $\begingroup$ True, I should. I added some more details in the question, thanks a lot. $\endgroup$ – Riccardo T. Sep 7 '12 at 17:04
  • $\begingroup$ its a start but what kind of list? unless there is some relationship between list $L_i$ and $L_j$, what patterns can be recognized? or is there a relationship between $L_i$ and the time it is entered? etc $\endgroup$ – vzn Sep 8 '12 at 19:50
  • $\begingroup$ Well, I'm going to assume that, most likely, the list the user is gonna insert will have a (large) subset of elements in common with the majority of the more recent ones. Otherwise said, the lists made by the user will change in the time, but not too much. If the user, e.g., puts the todo Y in most of the recent other lists, I want to classify Y as to be inserted in the next one also. If he put an item X only in the last one, but not once previously, I want to classify it as not to be automatically inserted in the next list. $\endgroup$ – Riccardo T. Sep 9 '12 at 12:33
  • $\begingroup$ Also, I wanted to develop a classifier in order to be able to decide to automatically insert also items not inserted recently in the latest few lists of the same type of the next one (the type of the next one is known), but that have been always inserted in the majority of lists of the other types lately. $\endgroup$ – Riccardo T. Sep 9 '12 at 12:38

At first, if you're going to create binary classifiers as you say, you need one classifier per category.

You should determine the features you going to use, and then, if you need to improve the accuracy or whatever, you think in adding others. But every classifier will suffer with it.

I always think that decision trees are the simplest and most powerful classifiers when dealing with categorical data. You can start with it. The best part is that the resulting model is completely readable by everyone, and you can understand the logical rules that makes an instance to be accepted or not in a list.

The decay you want to create is something hard to do. Because the supervised classifiers do not care with the age of the instance. One way is to add a new feature "timestamp" and so you can simulate the decay behavior in the train dataset.

| cite | improve this answer | |

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.