Skip to content

Suggest roommates group

omrihuller edited this page Apr 5, 2018 · 1 revision

One of the problems we are facing is the way in which we group the interested users for a specific apartment and how we present that information both for a specific user and for the owner(s).

The first step would be maintaining a score mechanism that can determine if a certain group is “better” than another.

Score

  • The score of a group will be increased for each trait that is common for multiple members. (e.g, if 3 out of 5 users in the group like sports we can increase the score variable by 3)
  • The score of different traits can vary according to a ranking we will create
  • There should be “Deal Breaker” traits which disqualify a group (a combination of traits that cannot exist together)
  • It should be noted that a similar score can be kept for specific pairs in a similar fashion (can be used to sort the users in a specific user’s view of the Interested list)

Now that we have a score definition for a group we can suggest ways to use it to form the best groups in regards to our scoring system.

Possible options

1 . Extensive score computation

Compute a score for each potential group as we defined above.

When a user looks for a suggested group he will see the highest scoring group he is a part of. (We can enable “scrolling” so the user will be able to see the next group with the closest score)

When an owner looks for a suggested group he will see the highest overall scoring group

  • Pros: Reliable, extensive and thorough. Will find the best group for each user.

    Finding the best group is easy, we just compare the group scores.

    No work is needed from the user (simple to use)

  • Cons: Since we try each possible group, might be computationally expensive.

2 . User ranking

Each one (interested or owner) chooses the ones he can live with from the interested list.

After this process we will present the resulting best group for each user and in general.

  • Pros: Less computationally expensive as the users do most of the work
  • Cons: More work for each user (checking users and ranking them). “Best group” is less intuitive now, as we have no comparable scores (in order to find the best group we need advanced algorithms from the “Social Choice Theory” field and things get very complicated very fast)

3 . Pair based heuristic

For each user we calculate the score for him and every other user in the interested list (all possible pairs including him)

We present the users in the list in descending order (Highest scoring paired user first)

We will take the top users on the specific user’s list and group them for his group suggestion (i.e, if we need a group of 5 we will take the user and the top 4 on his list)

When an owner looks for a group suggestion we compare scores of the suggested group of each user and show the top scoring one.

  • Pros: Less computationally expensive than #1, since we do not check all the possible groups, only the top groups according to our sort.

    The sort is already needed in order to best show the interested list to the user

    No work done by the user

  • Cons: Less accurate than #1 since we do not check all the options

Conclusion

From my review of the subject I found the best option to be #3.

The main reason is that sorting the interested list according to score is a valuable feature by itself as it better presents the data to the users. And given the sorted list, computing the best group (for each user and overall) is surprisingly easy.

Moreover, the accuracy loss form option #1 is very minor and this option satisfies all our needs.

Finally, this solution fits our goal to simplify the process for the end user since our scoring and sorting algorithms do the work.

Clone this wiki locally