Solved by verified expert:Your job is to build a simple Recommender System, similar to the one that Netflix uses to recommend movies to customers. The basic idea is to find out some movies that a user likes, and then recommend other movies that the user might also like.
20171106045742assignment_9._netflix_challenge..pdf
Unformatted Attachment Preview
CIS 1068 Assignment 9. Netflix Challenge.
about:reader?url=https://cis.temple.edu/~jfiore/2017/fall/1068/assi…
cis.temple.edu
CIS 1068 Assignment 9. Netflix
Challenge.
6-7 minutes
Due: Monday, November 13
80 points
Assignment Description
This assignment will provide you with practice using arrays.
Your job is to build a simple Recommender System, similar to
the one that Netflix uses to recommend movies to customers.
The basic idea is to find out some movies that a user likes, and
then recommend other movies that the user might also like.
On Oct. 2, 2006, Netflix announced a challenge to programmers
everywhere to come up with a better way of figuring out how to
predict what movies to recommend to users. They offered a
prize of $1 million to anyone who could beat their own technique
by 10% in prediction accuracy. A team of programmers
eventually claimed the prize in 2009. You can read about the
challenge on Wikipedia, or Netflix’s own page about it. This
assignment is a simplified version of the kinds of
recommendation techniques used by Netflix, Amazon, and
1 of 5
11/5/17, 11:55 PM
CIS 1068 Assignment 9. Netflix Challenge.
about:reader?url=https://cis.temple.edu/~jfiore/2017/fall/1068/assi…
others.
Your Task
Create a Java file called Recommender.java. Your program
should behave as follows:
18 points Load the 20 movie names and the movie ratings from
30 people into two arrays in memory. These can be read by your
program using the Scanner class. You are not required to handle
FileNotFoundException.
10 points Ask the user to enter a rating (between 1 and 5, or -1
if they haven’t seen it) for each movie.
18 points Create a method that determines for each of the 30
people a score, which represents how similar that person’s
tastes are to the taste of the user of the program. Store these
similarity scores in an array of 30 doubles. The similarity scores
should be between 0 and 1 each.
18 points Create an array that represents recommended ratings
for the user. There should be 20 numbers in this array, one for
each movie. The higher the number, the more strongly your
program thinks the user will like the movie. The number should
be the average over all 30 ratings for the movie that are greater
than 0 (only include ratings for users who have actually seen the
movie). However, it should be a weighted average: people who
are more similar to the current user should have a higher weight
than people who are less similar.
16 points Display the name of the top movie (according to the
recommended ratings from the previous step) that the user has
2 of 5
11/5/17, 11:55 PM
CIS 1068 Assignment 9. Netflix Challenge.
about:reader?url=https://cis.temple.edu/~jfiore/2017/fall/1068/assi…
not yet seen.
Suggestions and hints
Making a Recommendation
The goal is to come up with a recommendation for a movie that
the user might like. If you and I have similar preferences, and
there’s a movie that I haven’t seen that you like, chances are
good that I might like it. Suppose there’s another person, whose
tastes kind of match mine, who also happens to like the movie.
We now have even more evidence that I might like the movie
(but because my tastes only kind of match the other person’s, it
only lends a little bit of weight to the decision).
Imagine, now, that I don’t just have information of a couple of
friends upon which to base a recommendation. In this
assignment, we’ll have information from 30 people about their
preferences. We put all of that information together to form a
single score for each movie, which can be calculated as a
weighted average of all of the ratings of all the other users. We
assign more weight to the ratings of people whose preferences
are similar to ours, and a smaller weight for people whose
preferences are dissimilar.
We calculate a score for each movie, and the one we
recommend is the one with the highest score.
The mathematical formula for a weighted average, where there
are N numbers stored in an array called a, and N corresponding
weights stored in an array called w, goes like this:
3 of 5
11/5/17, 11:55 PM
CIS 1068 Assignment 9. Netflix Challenge.
about:reader?url=https://cis.temple.edu/~jfiore/2017/fall/1068/assi…
weighted_average(N, A[], w[]) = (A[0]*W[0] + A[1]*A[1] + … +
A[N-1]*A[N-1]) / (W[0] + … + W[N-1])
Calculating Similarity
Your program is going to try to decide whether or not you might
like a movie that you haven’t yet seen. It’s going to come up with
a score, which represents the likelihood that you’ll enjoy it. If
people who have tastes similar to yours seem to like it, the
program will assign that movie a higher score. You might ask,
How do you determine similarity, and how do you boil it down to
a single number?
You can come up with your own way of judging how similar two
people’s ratings are. One suggestion is to compute what’s called
cosine similarity:
for person 1, compute the square of each movie rating for
movies they have seen, and add these up and then take the
square root. Store the result in a variable called p1. For
example, if person 1 saw 3 movies and rated them 4, 4, and 2,
then p1 = sqrt(4*4 + 4*4 + 2*2) = sqrt(36) = 6.
do the same for person 2, and store the result in a variable
called p2.
for each movie that both people have seen, compute the product
of their ratings. Add up all of these products, and store the result
in a variable called both. For example, if person 1 and person 2
both saw movies 7 and 14 (out of 20), and person 1 rated them
as 4 for movie 7 and 2 for 14, and person 2 rated them as 2 for
movie 7 and 3 for movie 14, then both = 4*2 + 2*3.
4 of 5
11/5/17, 11:55 PM
CIS 1068 Assignment 9. Netflix Challenge.
about:reader?url=https://cis.temple.edu/~jfiore/2017/fall/1068/assi…
The cosine similarity score between person 1 and person 2 is
(both / (p1 * p2)).
As always, don’t try to program everything all at once. Do it in
parts, by writing some methods that accomplish part of the
whole assignment. Write some println commands that show
what’s going on in memory after you call a method that you’ve
just written, and run your program to make sure that the new
method is working correctly. Repeat this for each new method
you write.
Extra Credit +up to 20 points
Instead of recommending a single movie, recommend
NUM_RECOMMENDATIONS movies, where
NUM_RECOMMENDATIONS is some constant built into your
program which is larger than 1.
When you’re done
Send your Recommender.java file when finished. Do not send
anything besides your source code file.
5 of 5
11/5/17, 11:55 PM
…
Purchase answer to see full
attachment
You will get a plagiarism-free paper and you can get an originality report upon request.
All the personal information is confidential and we have 100% safe payment methods. We also guarantee good grades
Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.
You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.
Read moreEach paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.
Read moreThanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.
Read moreYour email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.
Read moreBy sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.
Read more