p-society / goals

An ambitious bucket list of things we want to achieve as a community.
MIT License
20 stars 1 forks source link

Partner recommendation system #40

Closed ayush1999 closed 6 years ago

ayush1999 commented 6 years ago

Seeing the growing need among students (and professors maybe, sighting a recent case) to find a partner , I propose to implement a partner recommendation system, which will search a partner for you from the college itself, based on the information you input. So you could describe the characteristics of the partner you're looking for, and the system will search one for you. Think of it as Intra-IIIT-Tinder.

This is not a joke, I'm dead serious.

Currently students travel vast distances just to catch up with their tinder dates. This leads to various complications, such as not being allowed inside the gate (after 10 p.m), seeing your name on Hibiscus, being forced to meet some faculty investigating the reason for the delay. We've witnessed several such cases in the college. As a result of this, the students aren't able to spend quality time with their dates. This app could avoid this hustle, and make the process of dating much more simple, effective (and help you save money, maybe) and hopefully long-term.

Tech Stack: ML, App Development (apps are always better).

palash25 commented 6 years ago

which will search a partner for you from the college itself, based on the information you input.

So you want something like an OkCupid but for our college only.

and professors maybe, sighting a recent case

Are you talking about that recent incident that traumatized us all :laughing: ?

Just to be sure this app will be a secret amongst students right? Because if the faculties get to know then TT will be furious and might ban us or some shizz

(apps are always better)

Maybe in this case (and I don't wanna start a war) but CLI tools are always better

Since it is ML I hope that @knrt10 wouldn't mind if we write the API in python.

@ayush1999 you can build the recommendor system that will integrate with a Flask API which @knrt10 can query in his app written in JS

knrt10 commented 6 years ago

Are you talking about that recent incident that traumatized us all laughing?

@palash25 dude that was unscripted and out of the box.

TT will be furious

Kamleshhhhhhhh.

Since it is ML I hope that @knrt10 wouldn't mind if we write the API in python.

I got no problem. Like sapat. Haich nahi.. Although most work @ayush1999 will do. So I am cool.

ankitjha97 commented 6 years ago

Finally, some work required ML. Count me in too. @ayush1999 what are you thinking of applying.

ayush1999 commented 6 years ago

@ankitjha97 First of all, I think we'd need to come up with a set of features that a person might look for in his/her date. Such as personality, appearance, and similar attributes. Depending on these, we could decide the architecture to implement . What do you think?

arijeetsat commented 6 years ago

Great idea to work upon, well we have to keep it little secretive else there will be no less than a DC (saying this by experience with college people).😂😂

Once done on our college level, it can definitely be expanded to a larger domain. So, Cool👌

palash25 commented 6 years ago

I love the new label @knrt10 but I am not sure whether this is appropriate or not.

hdidwania commented 6 years ago

We need to think on some points- 1) How does tool get to collect information/features. 2) How to avoid fake information, which may lead to bad predictions. 3) Dataset. 4) Use of NLP/CV maybe to extract some features and many more.. Well this will be awesome. Let's put Tinder out of business.

shivank01 commented 6 years ago

@ayush1999 Count me in too.

ankitjha97 commented 6 years ago

@ayush1999 , the idea on which the Recommender System works goes like this: 1) There a matrix containing ratings of all the users to the items(movies, songs). 2) From this matrix we apply ways to find the recommendation.These ways include: a) User Based: In this we group users of similar types b) Item based: In this we group items of same types The moral of this story is somehow, in these cases we didn't have direct data like for Movies, we didn't have Action, Adventure, Fantasy, Comedy, etc. as a separate column for data but these algos are able to find out these latent factors themselves.The point I want to say is that we can two things.First, we can give them and let them swipe and from these images, identify the latent factors.Or Second, We can give them preferences and ensemble both the latent factors and preferences to assign a match.

How's it for an idea @ayush1999 @shivank01 @hdidwania

ankitjha97 commented 6 years ago

@hdidwania , yes we should aim big and replacing them is not a big task. There is one site called betterhalf.ai which uses AI to predict matches. It's still in its development phase and so figuring out the algos is tough for the present moment.

hdidwania commented 6 years ago

The biggest drawback of Tinder, I feel, is it works around pretension and presentation. Before swiping, one only has access to some photos and a little bio. These things can easily be made up by anyone and faked. We can try to match features which are better than images, features like interests. Since we are starting with the domain of college, everyone in the domain has quite a lot of common features, age group, career path, etc. We can focus more on interests of every user: Music Taste, Favorite Series, Books read recently, etc. We need to have some thought over it though, but if we can implement this, I believe we will have a real good model for matches.

ayush1999 commented 6 years ago

I was thinking that maybe we could take natural language as input in the later stages. For now, suppose we have the feature of Movie Taste (similar to what @hdidwania just said). For starters, we could map the various sub-categories inside this to different numbers. So the app would ask you your movie taste, with different options, such as:

  1. Action
  2. Comedy
  3. Thriller
  4. Romance . . . And we could map the user's choice to the corresponding index. This could be an naive yet simple start to the network. (The user should also be able to input more that one category, ofcourse). The same could be done to various other features like Music, Sports, (Ronaldo/Messi should certainly be asked :laughing: ) and so on. What do you think?
ayush1999 commented 6 years ago

So at the end, the input we'd have for the network would be just a set of numbers (depending on the users inputs). We can then build the model on this basis. Any ideas? @ankitjha97 @shivank01 @hdidwania

ankitjha97 commented 6 years ago

I think we should migrate to some other group for the confidentiality of the model.

hdidwania commented 6 years ago

So at the end, the input we'd have for the network would be just a set of numbers (depending on the users inputs). We can then build the model on this basis.

So we would have many variables as inputs, all of type discrete numbers. We also need to think whether to keep it as a classification problem, outputting 1/0 or a regression problem, outputting maybe a similarity score between 0 to 1.

arijeetsat commented 6 years ago

I think we should migrate to some other group for the confidentiality of the model.

Yup, its really a great idea, and much more can be planned by you people, so don't keep it open for now, better discuss it in a private group. Later keep adding up people, who show their interest over here.

banerjee29r commented 6 years ago

I think if we are talking the input as integer value for the variables like people mentioned above regression is highly suited for it.We can also have a personality based partner recommendation app for which we need to take inputs for a personality test and on the basis of that test inputs we can run a classification algorithm to match. We can also merge the two algorithms like first we classify on the basis of traits and inside the traits we can run the regression model which will help the model accuracy.

ankitjha97 commented 6 years ago

@ayush1999, not necessarily integers. They should be one one-hot encoded so that each separate category falls into a different dimension. Assigning only integer values can lead to errors and building of a false relationship between categories based on the closeness of integers in case of regression.

ankitjha97 commented 6 years ago

@ayush1999 @hdidwania @shivank01, this is where we can exploit unsupervised learning.

ankitjha97 commented 6 years ago

Someone create a group on telegram and add me in.

shivank01 commented 6 years ago

not necessarily integers. They should be one one-hot encoded so that each separate category falls into a different dimension. Assigning only integer values can lead to errors and building of a false relationship between categories based on the closeness of integers in case of regression.

I agree we should keep it one hot encoded.

this is where we can exploit unsupervised learning.

Yeah, I think unsupervised learning will work well here.

Ajita15 commented 6 years ago

Yeah in this case KNN can be used to group users based on similar interests. A group of neighborhood models will be useful.

hdidwania commented 6 years ago

I like the KNN idea. This may work.

shivank01 commented 6 years ago

As the conversation is moved to the telegram group.I am closing this issue. Anyone who wants to join it can join it through this link - https://t.me/joinchat/ImdqDBHmLgpvglhae6kElA .

Telegram
Partner Recommendation System