Final Year Project Document
Final Year Project Document
RECOMMENDATION SYSTEM
by
Ramapuram, Campus.
BONAFIDE CERTIFICATE
Certified further, that to the best of my knowledge the work reported here in does not
form part of any other project report on the basis of which a degree or award was conferred
on an earlier occasion on this or any other candidate.
I thank the almighty who has made this possible. Finally, I thank my
beloved family member and friend for their motivation, encouragement and
cooperation in all aspect which led me to the completion of this project.
ABSTRACT
Recommender systems employ various data mining techniques and algorithms to discern
user preferences from a vast array of available items. Unlike static systems, recommender
systems foster increased interaction to offer a more enriched experience. By analysing past
purchases, searches, and other users' behaviour, these systems can autonomously identify
recommendations for individual users. This technique leverages user history data, as well as
other users' data, to predict preferred items and make personalised recommendations. This
project paper focuses on the challenges faced by recommender systems, such as the cold
start problem, data sparsity, scalability, and accuracy. Specifically, it delves into content-
based filtering, which generates recommendations based on a user's behaviour. Similar to
collaborative filtering, content-based filtering relies on long-term user preference profiles
that can be updated to enhance performance.
I
TABLE OF CONTENTS
ABSTRACT I
ACKNOWLEDGEMENT II
LIST OF FIGURES III
LIST OF TABLES IV
1 INTRODUCTION:
2
1.1 PROJECT INTRODUCTION
WORKING ENVIRONMENT:
1. SOFTWARE REQUIREMENTS 5
2
2. HARDWARE REQUIREMENTS 5
3. SOFTWARE DESCRIPTION 6
SYTEM ANALYSIS:
1. EXISTING SYSTEM 16
3 2. DRAWBACKS OF EXISTING SYSTEM 16
3. PROPOSED SYSTEM 17
4. ADVANTAGES OF PROPOSED SYSTEM 19
II
SYSTEM DESIGN:
1. UML DIAGRAM 22
4 2. USE CASE DIAGRAM 23
3. CLASS DIAGRAM 24
4. GOALS 25
MOUDLES DESCRIPTION:
1. RECOMMENDER SYSTEM 27
5 29
2. COLLABORATIVE FILTERING
3. CONTENT-BASED FILTERING 37
4. REGULARISATION TERM 41
5. RETRIEVAL & RANKING 44
SYSTEM ARCHITECTURE:
6 1. FUNCTIONAL REQUIREMENTS 49
2. NON-FUNCTIONAL REQUIREMENTS 51
CODING:
7 1. CODING 53
2. EVALUATION OF RESULTS 66
CONCLUSION
8
1. FUTURE ENHANCEMENTS 69
2.3 NumPy 14
5.5 Prediction 42
III
LIST OF ABBREVIATIONS
TF - Tensor Flow
CF - Collaborative Filtering
DL - Deep Learning
SK - Sci-Kit Learn
OPT - Optimizer
NN - Neural Network
IV
CHAPTER 1
1
1. INTRODUCTION
One of the key challenges faced by recommender systems is the cold start
problem, where new users or items have limited or no historical data available for
recommendation. This poses a significant challenge as the system lacks sufficient
information to accurately predict user preferences and provide relevant
recommendations. Another challenge is data sparsity, where the available data for
recommendation is sparse, making it difficult to identify patterns and make
accurate predictions. Scalability is also a challenge, as recommender systems
need to handle large amounts of data and provide real-time recommendations to a
large number of users. Lastly, accuracy is crucial for recommender systems to
gain user trust and deliver relevant recommendations consistently.
2
item and user profiles, content-based filtering can make personalised
recommendations even for new users or items with limited historical data.
3
CHAPTER 2
4
2. WORKING ENVIRONMENT
Operating system : Windows 10, Mac-OS V.10 or higher.
Programming Language : Python
ML Libraries : NumPy, Pandas, SK-Learn, TensorFlow
Database : SQLite supported by SQL_Alchemy
Web Framework : Python-Flask
Web Template : HTML, CSS, Jinja Template.
System : Pentium IV 2.4 GHz.
Hard Disk : 256 GB or Higher.
RAM : 4GB or Higher.
5
2.3 SOFTWARE DESCRIPTION
PYTHON
TENSOR-FLOW INTRODUCTION
6
Fig 2.1 Tensorflow Documentation
7
TensorFlow — Installation
KERAS
INTRODUCTION
Deep learning is one of the major subfield of machine learning framework.
Machine learning is the study of design of algorithms, inspired from the model of
human brain. Deep learning is becoming more popular in data science fields like
robotics, artificial intelligence(AI), audio & video recognition and image
recognition. Artificial neural network is the core of deep learning methodologies.
Deep learning is supported by various libraries such as Theano, TensorFlow,
Caffe, Mxnet etc., Keras is one of the most powerful and easy to use python
library, which is built on top of popular deep learning libraries like TensorFlow,
Theano, etc., for creating deep learning models.
8
FEATURES
Keras leverages various optimisation techniques to make high level neural
network API easier and more performant. It supports the following features:
Consistent, simple and extensible API.
Minimal structure - easy to achieve the result without any frills.
It supports multiple platforms and backends.
It is user friendly framework which runs on both CPU and GPU.
Highly scalability of computation.
BENEFITS
Keras is highly powerful and dynamic framework and comes up with the
following advantages:
Larger community support.
Easy to test.
Keras neural networks are written in Python which makes things simpler.
Keras supports both convolution and recurrent networks.
• Deep learning models are discrete components, so that, you can combine into
many ways.
9
subsequent layer. By using this approach, we can process huge amount of
features, which makes deep learning a very powerful tool. Deep learning
algorithms are also useful for the analysis of unstructured data. Let us go through
the basics of deep learning in this chapter.
10
• Actual output represent axon and the output will be received by neuron in next
layer. Let us understand different types of artificial neural networks in this
section.
PYTHON NUMPY
Our Python NumPy Tutorial provides the basic and advanced concepts of
the NumPy. Our NumPy tutorial is designed for beginners and professionals.
NumPy stands for numeric python which is a python package for the computation
and processing of the multidimensional and single dimensional array elements.
What is NumPy?
NumPy stands for numeric python which is a python package for the
computation and processing of the multidimensional and single dimensional array
elements. Travis Oliphant created NumPy package in 2005 by injecting the
features of the ancestor module Numeric into another module Numarray.
11
Need of NumPy
With the revolution of data science, data analysis libraries like NumPy,
SciPy, Pandas, etc. have seen a lot of growth. With a much easier syntax than
other programming languages, python is the first choice language for the data
scientist.
NumPy provides a convenient and efficient way to handle the vast amount
of data. NumPy is also very convenient with Matrix multiplication and data
reshaping. NumPy is fast which makes it reasonable to work with a large set of
data.
There are the following advantages of using NumPy for data analysis.
5. NumPy provides the in-built functions for linear algebra and random
number generation.
PYTHON FLASK
12
Python Flask serves as a reliable tool that allows developers to create HTTP
endpoints for handling incoming requests and defining the logic for generating
recommendations based on user preferences, item attributes, or other relevant
data. Flask's modular design and extensive ecosystem of plugins and extensions
make it highly customisable and adaptable to different project requirements.
With Flask, developers can take advantage of its simple syntax, routing
capabilities, and templating engine to create dynamic web pages, RESTful APIs,
and interactive user interfaces for displaying recommended items. Flask's support
for various data storage options, such as SQL and NoSQL databases, allows
developers to seamlessly integrate with different data sources for retrieving and
storing recommendation data.
Additionally, Flask's built-in support for unit testing and its extensive
documentation make it easy to develop, test, and debug recommender systems
during the project development process. Its open-source nature and active
community support also provide ample resources for learning, troubleshooting,
and customisation.
DATABASE
13
abstracted manner. It provides a higher-level, Pythonic interface to interact with
SQLite, abstracting the complexities of SQL syntax and allowing developers to
work with Python objects and classes instead of raw SQL statements.
HTML
14
CHAPTER 3
15
3. SYSTEM ANALYSIS
16
diversity in the recommendations and limit the user's exposure to new or
unexpected items.
17
Traditional feature extraction techniques often rely on manually crafted
features that are specific to the item domain, such as text-based features for
textual content, audio features for music or speech, and visual features for images
or videos. However, these manually crafted features may not capture all of the
nuanced and complex features that are relevant to a user's preferences, leading to
lower accuracy and relevancy in recommendations.
18
accuracy for such items. These enhancements could potentially improve the
accuracy, diversity, and user satisfaction of the recommendations in the Content-
based recommendation system.
19
Additionally, the proposed system could consider incorporating diversity-
based ranking approaches. Techniques such as Maximal Marginal Relevance
(MMR) or Diversity Ranking could be used to rank items based on their
relevance to the user while also considering the diversity of recommended items
to avoid redundancy and provide a more diverse set of recommendations.
20
CHAPTER 4
21
4. SYSTEM DESIGN
UML is not only useful for software development but can also be applied to
business modelling and other non-software systems, making it a versatile tool for
modelling complex systems. Its ability to represent complex systems in a visual
and concise way makes it an essential tool for software developers. By using
UML, developers can create clear and concise diagrams that facilitate
communication and collaboration, leading to better understanding and more
effective software development.
22
4.2 USE CASE DIAGRAM
23
4.3 CLASS DIAGRAM
24
GOALS
•
The main objectives of UML's design are to provide users with an
expressive visual modelling language that can be used to create and
exchange meaningful models.
•
UML should provide mechanisms for extendibility and specialisation to
expand the core concepts.
•
UML should be independent of particular programming languages and
development processes.
•
UML should provide a formal basis for understanding the modelling
language.
•
UML should encourage the growth of the object-oriented tools market.
•
UML should support higher-level development concepts such as
collaborations, frameworks, patterns, and components.
•
UML should integrate best practices in software engineering.
25
CHAPTER 5
26
5. MODULES
27
online services. With the increasing volume of data and information available
daily, the problem of information overload arises, making it challenging to
identify customers' requirements. While search engines were an initial solution to
this problem, they lacked personalisation. Recommendation systems were then
introduced to utilize users' past history to understand their interests and
preferences from a large set of options. The main objective of a recommendation
system is to provide meaningful suggestions and recommendations for items of
interest, such as book recommendations on Amazon, which utilize
recommendation systems to identify users' preferences and attract them to engage
more. Various methods and algorithms are available for creating personalised
recommendations in recommendation systems.
28
5.2 COLLABORATIVE FILTERING
29
Fig 5.3 Collaborated Rating
30
yet read or subscribed to a particular blog that is popular among Users B, C, and
D, the recommendation system can suggest that blog to User A. This is based on
the assumption that users who exhibit similar preferences in the past are likely to
have similar preferences in the future. Collaborative filtering thus allows for
personalised recommendations based on the behaviour of similar users.
31
5.2.1 SIMILARTITY FACTORIZATION
A. Similarity Measure
2. Generate a prediction for the active user by taking the weighted average of
all the ratings of the user or item on a definite item or user, or employing
an easy weighted average.
32
B. Correlation-Based Similarity
In this case, similarity between two users‟ u and v, or between two items
and , is computed by computing the Pearson correlation or different correlation-
based similarities. Pearson correlation measures the extent to that two variables
linearly relate with one another [4]. For the user based algorithmic rule, the
Pearson correlation between user u and v is given in Eq.4.
Where i I summations are over the items that both the users u and v have rated
and is the average rating of the correlated items of the u th user. In item-based
algorithm, the set of users denoted by uU who rated both items i and j, then the
Pearson Correlation is given in Eq.5.
Where rui is the rating of user u on item i, is the average rating of the i th item by
those users.
33
A = {x1, y1} , vector B = {x2, y2}, the vector cosine similarity between A and B
is given in Eq.6.
So, the conclusion is, a choice is to be made among all similarity measures. The
point to remember at this step is:
ii) if data is dense i.e. (if almost all attributes have non-zero values) and the
34
When it takes other users' traits into account, collaborative filtering uses group
knowledge to form a recommendation based on like users. An automatic
collaboration of multiple users and filtered on those who exhibit similar
preferences or behaviours are basis for the recommendation. Collaborative
filtering makes the recommendations by finding correlations among users of a
recommendation system. It presents a uniform approach for finding items of
potential interest and predicting the rating that the current users would give to an
item.
To see how such a prediction could be made, consider the example in Table
2. This gives the ratings of 5 items by 5 users. A “+” indicates that the user liked
the description of the restaurant and indicates that the user did not like the item.
To predict the rating that Janu would give to D, we can look for users that
have a similar pattern of ratings with Janu. In this case, Kiran and Janu have
identical tastes and one might want to predict that Janu would like D because
Kiran does. A more general approach would be to find the degree of correlation
between Janu and other users. A weighted average of the recommendations of
several users can be found instead of relying on just the most similar user. The
weight is given to a user’s rating would be found by degree of correlation
between the two users. In the most general case, the rating could also be a
continuous number rather than just +1 . The Pearson r is a measure of correlation
that can be used in these circumstances. Let Ri,j be the rating of user i on
document j. Then the correlation between user x and user y is given by:
35
In the above example, the correlation between Janu and Kiran is 1.0,
between Janu and Arun is – 0.577, between Janu and Chander is 0.577, and
between Janu and Mala is –0.577. Therefore, the weight average of the product of
each user’s rating for D and the correlation between Janu and that user is 0.682. A
collaborative algorithm would predict that Janu would like D based on the other
users recommendations. Note that in part this recommendation makes use of the
fact that Janu and Mala have nearly opposite tastes and that Mala doesn’t like D.
Thereafter randomly deleted half of each user’s ratings and then, for each user,
the three items with whose rating had been deleted with the highest recommended
rating were found using collaborative filtering. We compared the predicted rating
of these three items with the actual rating. We repeated this process of randomly
deleting ratings 20 times for each user. On average, 67.9% of the item in the top
three items recommended via this collaborative process was actually liked by the
user.
36
interests. If there is a differences then that can be used for recommendation
applied through a filter of popularity. It is the process of evaluating or filtering
items using the opinions of other users. Collaborative filtering techniques collect
user’s profiles and the connection among the data are examined according to
similarity function. The likely categories of the data in the profiles include user
behaviour patterns, user preferences, or item properties. Collaborative filtering
technique collects large information about user behaviour, history and then
recommends the items based on his similarity with other users communally.
37
sub-problems in designing a content-based filtering system. The first is finding a
representation of documents, and the next is making recommendations for unseen
documents.
The approach described in this paper is based on using deep learning for
content-based filtering in recommendation systems. The idea is to use neural
networks to compute feature vectors for users and movies, and then use these
feature vectors to make recommendations. The neural networks, called the user
network and the movie network, take as input the features of users and movies,
38
respectively, and output feature vectors (v_u and v_m) that describe the users and
movies, respectively.
To generate feature vectors for users and movies, the input data (such as
user ratings, movie genres, and movie metadata) is fed into the corresponding
neural networks. The dense neural network layers in each network process the
input data and learn meaningful representations of users and movies in the form
of feature vectors, denoted as v_u and v_m, respectively.
Once the feature vectors are obtained, the recommendation system predicts
the rating of a user on a movie by taking the dot product of the two feature
vectors. The dot product operation captures the similarity between the learned
representations of users and movies, which is used as an estimate of the user's
39
preference for the movie. This prediction can then be used to generate movie
recommendations for users based on their predicted ratings.
The use of dense neural network layers and the dot product operation
allows the recommendation system to capture complex patterns and interactions
between users and movies, and provide personalised recommendations based on
learned representations of users and movies. The fixed size of 32 units in the
output layer of each network is a design choice that can be adjusted based on the
specific requirements of the recommendation system and the characteristics of the
input data. The architecture described in this paragraph provides a foundation for
building an effective and scalable recommendation system for movie
recommendations.
40
finding similar items in collaborative filtering methods, where similarity between
items is typically determined based on user-item interactions or item-item
associations.
Regularisation can also be added to the cost function to prevent overfitting and
encourage smaller parameter values.
41
The L2 regularisation term discourages the model from assigning too
much importance to any particular feature during training, as it penalises large
parameter values. This helps in preventing the model from becoming overly
reliant on a single feature, which can lead to overfitting. By adding a penalty for
large parameter values, L2 regularisation promotes a smoother distribution of
importance among all the features, ensuring that no single feature dominates the
model's decision-making process.
42
Fig 5.6 Several Optimisation Algorithms Efficiency
The Adam optimiser can update the model parameters in a way that
minimises the overall loss function, including the regularisation term. By
considering both the original loss function and the regularisation term, the Adam
optimiser can help in finding a set of model parameters that strike a balance
between fitting the training data and preventing overfitting. This is achieved by
adjusting the model parameters based on the gradients of the loss function, while
taking into account the regularisation term.
One of the key features of the Adam optimiser is its ability to calculate
adaptive learning rates for each parameter based on the historical gradients. This
allows the optimiser to adaptively adjust the learning rates for different
parameters, depending on their update patterns. Additionally, the Adam optimiser
includes momentum, which helps in accelerating the optimisation process by
accumulating the historical gradients and updating the parameters accordingly.
43
The adaptive learning rates and momentum of the Adam optimiser are
beneficial in optimising the model parameters while considering the
regularisation term in content-based filtering algorithms. The adaptive learning
rates ensure that the regularisation term is taken into account during parameter
updates, helping in preventing overfitting by controlling the magnitude of
parameter updates. The momentum feature of the Adam optimiser also aids in
achieving a faster convergence towards the optimal parameter values, while
accounting for the regularisation term.
44
5.5.1 RETRIEVAL
45
discover new items and explore different options based on their unique tastes and
preferences.
5.5.2 RANKING
Once the retrieval step is completed, the list of retrieved items is combined
and filtered to remove duplicates, items the user has already interacted with, or
items that may not be relevant to the user based on their history or preferences.
This filtered list of items is then passed to the ranking step, where the learned
46
model, such as a neural network, is utilised to compute predicted ratings or
relevance scores for each user-item pair. This step involves running the neural
network inference on the filtered list of items, which is typically smaller than the
original catalog of items, making it computationally feasible.
47
CHAPTER 6
48
6. SYSTEM ARCHITECTURE
1. User Management: The system should allow users to create, modify, and
delete their accounts. Users should be able to log in and log out of the
system.
49
2. Item Management: The system should allow items to be added, modified,
and deleted. Each item should have a unique identifier and a set of features
or attributes that describe it.
3. Rating Management: The system should allow users to rate items. The
ratings should be stored and used to make recommendations.
7. Search Functionality: The system should allow users to search for items
based on specific criteria or features. This will help users find items they
may be interested in but have not rated yet.
50
6.2 NON-FUNCTIONAL REQUIREMENTS
6. Usability: The system should be easy to use, with a simple and intuitive
interface that users can navigate easily.
7. Adaptability: The system should be adaptable, with the ability to learn and
improve over time based on user feedback and behaviour.
51
CHAPTER 7
52
7. CODING
7.1 CODING
# ACCESSING DATASETS
path = "/Users/thanush/Desktop/fresh_flask"
import os
os.chdir(path)
os.getcwd()
53
""" FLASK WITH DATABASE"""
app=Flask( name )
#ml=pickle.load('model.pkl','rb')
app.config['SECRET_KEY'] = 'asdf'
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///site2.db'
app.config['UPLOAD_FOLDER'] = 'static/uploads'
app.config['ALLOWED_EXTENSIONS'] = {'jpg', 'jpeg', 'png', 'gif'}
db = SQLAlchemy(app)
db.init_app(app)
DB_NAME= "database.db"
#from models import User, Post
“””——————————————————————————————“””
# LOADING DATASET
pd.set_option("display.precision", 1)
from recsysNN_utils import *
top10_df = pd.read_csv("./data/content_top10_df.csv")
bygenre_df = pd.read_csv("./data/content_bygenre_df.csv")
top10_df
#bygenre_df
54
i_s = 1 # start of columns to use in training, items
print(f"Number of training vectors: {len(item_train)}")
print(f"y_train[:5]: {y_train[:5]}”)
scalerItem = StandardScaler()
scalerItem.fit(item_train)
item_train = scalerItem.transform(item_train)
scalerUser = StandardScaler()
scalerUser.fit(user_train)
user_train = scalerUser.transform(user_train)
print(np.allclose(item_train_unscaled, scalerItem.inverse_transform(item_train)))
print(np.allclose(user_train_unscaled, scalerUser.inverse_transform(user_train)))
55
user_train, user_test = train_test_split(user_train, train_size=0.80, shuffle=True,
random_state=1)
y_train, y_test = train_test_split(y_train, train_size=0.80, shuffle=True,
random_state=1)
print(f"movie/item training data shape: {item_train.shape}")
print(f"movie/item test data shape: {item_test.shape}")
56
input_item = tf.keras.layers.Input(shape=(num_item_features))
57
vm = item_NN(input_item)
vm = tf.linalg.l2_normalize(vm, axis=1)
model.summary()
tf.random.set_seed(1)
cost_fn = tf.keras.losses.MeanSquaredError()
opt = keras.optimizers.Adam(learning_rate=0.01) #Adam Optimizer -> Advanced
level of Gradient Descent
model.compile(optimizer=opt,loss=cost_fn)
tf.random.set_seed(1)
model.fit([user_train[:, u_s:], item_train[:, i_s:]], y_train, epochs=3)
model.evaluate([user_test[:, u_s:], item_test[:, i_s:]], y_test)
58
new_fantasy = 0.0
new_horror = 0.0
new_mystery = 2.0
new_romance = 4.0
new_scifi = 5.0
new_thriller = 5.0
new_rating_count = 5
59
# Generate and replicate the user vector to match the number movies in the
data set.
user_vecs = gen_user_vecs(user_vec,len(item_vecs))
# unscale y prediction
y_pu = scalerTarget.inverse_transform(y_p)
60
y_pu = scalerTarget.inverse_transform(y_p)
def sq_dist(a,b):
"""
Returns the squared distance between two vectors
Args:
a (ndarray (n,)): vector with n features
b (ndarray (n,)): vector with n features
Returns:
d (float) : distance
"""
d = np.sum((a-b)**2)
return d
61
input_item_m = tf.keras.layers.Input(shape=(num_item_features)) # input layer
vm_m = item_NN(input_item_m) # use the trained
item_NN
vm_m = tf.linalg.l2_normalize(vm_m, axis=1) # incorporate
normalisation as was done in the original model
model_m = tf.keras.Model(input_item_m, vm_m)
model_m.summary()
scaled_item_vecs = scalerItem.transform(item_vecs)
vms = model_m.predict(scaled_item_vecs[:,i_s:])
print(f"size of all predicted movie feature vectors: {vms.shape}")
for i in range(dim):
for j in range(dim):
dist[i,j] = sq_dist(vms[i, :], vms[j, :])
62
)
table = tabulate.tabulate(disp, tablefmt='html', headers="firstrow")
“””——————————————————————————————“””
# LOGIN PAGE
@app.route('/login',methods=['GET','POST'])
def login():
if request.method=='POST':
username=request.form.get('username')
password=request.form.get('password')
print(username)
user = User.query.filter_by(username=username).first()
print(user)
passs = User.query.filter_by(password=password).first()
if user:
if check_password_hash(user.password,password):
flash('Logged in', category='right')
login_user(user, remember=True)
return redirect('/')
else:
flash('Incorrect password', category='wrong')
else:
flash('Email does not exist', category='wrong')
63
return render_template('login.html', user=current_user)
# LOGOUT PAGE
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect('/login')
def signup():
if request.method=='POST':
email=request.form.get('email')
username=request.form.get('username')
password1=request.form.get('password1')
password2=request.form.get('password2')
ema= User.query.filter_by(email=email).first()
print(ema)
user = User.query.filter_by(username=username).first()
if user:
if user and ema:
flash('Username and Email already exists', category='right')
else:
flash('Username already exists', category='right')
elif ema:
if user and ema:
64
flash('Username and Email already exists', category='right')
else:
flash('Email already exists', category='right')
elif len(email)<4:
flash('Email should be more than 4 characters', category='wrong')
elif len(username)<2:
flash('username should be more than 2 characters', category='wrong')
elif len(password1)<7:
flash('password should be more than 7 characters', category='wrong')
elif password1!=password2:
flash('passwords dont match', category='wrong')
else:
new_user=User(email=email,
username=username,password=generate_password_hash(password1,method='sha
256'))
db.session.add(new_user)
db.session.commit()
flash('Account is created', category='right')
return redirect('/login')
return render_template('signup.html', user=current_user)
# DATABASE CREATION
def create_database():
with app.app_context():
db.create_all()
login_manager=LoginManager()
login_manager.login_view= 'login'
login_manager.init_app(app)
@login_manager.user_loader
65
def load_user(id):
return User.query.get(int(id))
# MAIN FUNCTION
if name ==' main ':
app.run(debug=True)
66
7.2 EVALUATION OF RESULTS
Fig 7.1 PREDICTION FOR NEW USER BASED ON THE USER’S GENRE
RATINGS
• The algorithm has suggested a list of movies with their respective Movie ID,
Title, Release Year, Genres Associated, Average Rating, and Predicted Value,
all within the range of 5.
• The list of recommended movies is based on the user's preferred genre, and the
predicted values are determined by the algorithm's analysis of the user's ratings.
67
Fig 7.2 PREDICTION FOR EXISTING USER BASED ON THE GENRE
RATINGS AND PAST BEHAVIOUR
• The algorithm considers the user's preferred genre and past behaviour to
suggest relevant movies.
• The recommended movies share similar genres with the user's preferred genre,
ensuring a high degree of relevance.
• The recommendation includes both the movie name and associated genres,
allowing users to make informed decisions about their movie choices.
68
CHAPTER 8
69
8. CONCLUSION
70
8.1 FUTURE ENHANCEMENTS
71
CHAPTER 9
72
9. BIBILOGRAPHY & REFERENCES
73
8. Wang, H., Wang, N., Yeung, D.-Y., & Wong, W.-K. (2015). Collaborative
filtering and deep learning based recommendation system for cold start
items. Proceedings of the 2015 IEEE International Conference on Data
Mining Workshop, 1115-1120.
10. Y. Liu, J. Wang, W. Zhang, and Y. Xue, "An enhanced content-based movie
recommendation algorithm using neural network," in Proceedings of the
2018 IEEE International Conference on Smart Computing
(SMARTCOMP), Taormina, Italy, pp. 1-6, 2018.
74