icyc0re / bd914

Big Data Project 2014 - Foursquare project
6 stars 1 forks source link

Basic recommender - similarity #15

Closed gavra0 closed 10 years ago

gavra0 commented 10 years ago

Implement the basic version of the similarity calculation between two feature vectors. This component should be able to work with similarity between venue-venue, user-user and venue-user, so making it generic enough is desirable.

sprlye commented 10 years ago

I can try that if noone is on it yet :)

ElSeidy commented 10 years ago

:+1:

sprlye commented 10 years ago
gavra0 commented 10 years ago

Basic recommender system implementation now consists of three subtasks: #15 @sprlye, #2 @mpagli and #17 me.

sprlye commented 10 years ago

Hi,

I just wanted to add something here, as we talked with @mpagli and @gavra0.

When a user will arrive on our website, he will complete a form about what he is looking for (I want a bar, i have no money, i like punk-rock, etc <= those pertinent features will be defined by the guys studying the venues).

From that, we have a vector of features per user (according to what he wants to do now, at time t).

We also can also build three matrices and thus, possibilities for the recommender:

1/ a matrix of venues vs features => Thus we can compute the similarity between the features of a venue and the features the user is looking for. We will preprocess the matrix to get rid of what is anyway not interesting for the user (for example, if the user wants a bar, he wants a bar and nothing else, we can't send him to a museum about art in the 80s). So we can just delete all the venues that are not bars. But if he wants something cheap, we can send him to a place that is a little bit more expensive for example, but that is really awesome regarding the other features he requested. Thus, we can look at a range of venues according to their prices: this is where similarity will be useful.

2/ a matrix of users vs features => as we have a vector of features for each user, we can check the users that are really similar to our current user (according to what they look for), and advise him to go to the places where they go. We are not really found of this method for now, because the features change everytime a user makes a new request: computing a "global" (ie time independent) profile of the user is not trivial.

3/ a matrix of users vs venues => this matrix shows for each user the venues where he goes. Thus, we can check the similarities between where our current user goes and where other guys go, and advise our user to go to the places the similar users like.

For now, we will focus on the first approach because we don't have that much data about the users.

I'll push some code about that in the week :)

See ya!

sprlye commented 10 years ago

Ok, little update on that: @ardy15jan will do the pre-filtering while i do the post-filtering.

recommender

sprlye commented 10 years ago

(related: https://github.com/icyc0re/bd914/blob/master/RecommenderSystem/context.md)

gavra0 commented 10 years ago

Good job with this issue, things are no much more modular, and every person can focus on his/her own part. I split this into smaller subtasks, so it is easier to track everything.