Fashion by you for you.

 
Artboard-1.png
IMG_9338.jpeg
 

PROJECT INFO

Client: INFO 4871: Recommender Systems
Date: May 1st, 2019
Role: Back End Developer 
View code: https://github.com/CreativeFeeling/RecommendersProject

Project Aim

Our project – Fashion by You, For you – was built off the desire to help women find clothing from Rent The Runway. More specifically, to find them clothing that will both fit them will and match the occasion they’re renting for. Different sizes fit differently from the pictures you see on the site, so we want to help ensure the the item the user rents is an item that they will actually be able to wear.

Methodology 

To achieve our project aim, we focused on finding users in the database whom are of similar to the user who is entering their information. Using data like bust and dress size to compare over the two. In doing so we can find clothing that was highly rated by other users that should fit the current user well. At start, we prompt the user enter in their bust size and dress size. This information is then stored into the cache and sent to a script that will query all the users in the database that have similar sizes. This script will return a series of pandas dataframes that match our users fit from Rent The Runway dataset, containing values like: returns the clothing Id, image, and rating. Based on the occasion that the user selected, the clothing that we show on our explore page will be items that match their specific interests. Above will be more of the available occasion so that our user can browse – and possibly rent an item for a separate event.

Technology

The technology stack we used to create our web application included pandas, BeautifulSoup, Selenium, Django, and HTML. Beautiful Soup was used to scrape the Rent the Runway website to grab images of the items in our dataset based on the item id. Selenium assisted in this process as the Rent the Runway website used lazy loading which Selenium provided a work around to, so we could still get all the images from the full HTML page. Pandas controls much of the algorithm to find user matches as well as deals with the entirety of the data set. All of the back end and front end was built on Django. The data is all stored onto a postgres server as Items, Users, and Ratings. All Items have an occasion, average rating, image url,  and clothing type associated with them. All Users have a size and bust. All ratings have a user, an item, occasion they used for, and a rating score. The data set is uploaded to the server using a dataframe to sql converter that will update the database with new information. With all this information in place, the django front end is able to display the items on the screen properly. The website can be broken down into 3 important elements, the tailor page, the explore page, and the event pages. The tailor page is where the user will be prompted with a empty form to fill out out with their own sizing data as well as what type of item they are looking for and what ocasion the are renting for. This page is waiting for the user to completely fill out the form, and once valid information has been entered into each field, the pandas script above is run on the Ratings data. Once a valid list of items has been created for our user, the explore page is called with the list of items that fit the users needs. This list contains all of the unique items with a new average score calculated, to be the average of the users in the database that matched the same sizing as our user. The explore page will show all the available occasion above, but initially show the items that they asked for in the tailor form. If the user chooses to explore the categories above, they will call a different script that looks similar to explore, but will include all items that are of the occasion selected and the clothing type selected. 

Data

Our dataset was taken from a list of datasets provided by Julian McAuleyof University of California at San Diego (http://cseweb.ucsd.edu/~jmcauley/datasets.html#clothing_fit). The dataset consists of Rent the Runway reviews that includes item id, size, bust size, rating given, review comment, occasion, category, and user id. There are 192,544 total reviews in the set from 105,508 unique users, for 5,850 unique items. The dataset didn’t come with picture links so we had to scrape the Rent the Runway website for pictures of items that matched the item id. So after scraping all the images we combined the data set and the images and created a new csv file to pull all the data from instead. We felt it would be pretty necessary to have the images included in order to know if the recommender was working well so scraping the website was a must for the data. 

Evaluation

To test if our application gave good recommendations we went around and asked random women to try out our recommender and give us feedback on the results they saw. We asked the women which occasion they felt had clothes that matched the best. The results of this is found in our results section. On top of this, we asked the women if they were happy with the number of clothing items and the clothing items themselves that were suggested. Unfortunately this evaluation revealed a lot of the limitations of our project. Some were happy but many found their results lacking in personalization or diversity.  

Project Summary

In summary, our project was a success by means of teaching our group how to implement a recommender system with the use of a website application. We all decided this on a basis of our passion for a fashion recommender. Even though we all came from different backgrounds in technology we all decided this was the proper way to direct our focus on our recommender system. Although we experienced a lot of positive results we feel we could enhance our project in a better way with more time and focus. For instance, our project can only calculate by the most “common” and “popular” items that are suggested per size. It would be way more effective if it was not only exclusive by popularity but also by genuine reviews and more experience of body types. 

Results

Since we acquired  limited amount of inputs, this affected the user response and overall experience. Depending on if the user entered in the “average” sizes that other users entered within our collected data set, it would result back in higher responses than others. In our actual presentation of the demo, a major issue we came upon that some users’ sizes were not matching with other items. We based this on the average of the user sizes within the data set, so when actually applying this to real life sizes it was a bit challenging to have their items appear. Especially when a lot of males would come and try to demo their individual sizes it would not comply with the standard sizes that were set within the data frame since it was tailored to woman body types. 

Limits

After all is said and done, our project can only do so much to really enhance the user experience with Rent the Runway shopping. When suggesting clothing items, sometimes users may just not like the clothing recommended despite being in their size range as well as appropriate for a certain occasion. People have varying tastes so we considered having the user choose a few clothing items that they liked from a random list to get an idea what kind of style they’re into. We were a bit unsure of how to go about implementing this kind of user set up but we ended up running out of time before we could really figuring out a plan anyway. Our project was also limited by the dataset. Some items we were unable to find pictures for so we had to drop those which lessened our decently sized dataset. On top of that, we were limited in the diversity of clothes since we only had Rent the Runway information. Some users may have a combination of bust size and dress size that doesn’t match any users in our dataset which was an unfortunate limit to our dataset. 

Previous
Previous

Astronomy App

Next
Next

Coco Made Me Do It