From 5b817e9e9223067eba048ab6410ec96a1ac3e22e Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Thu, 8 Jun 2023 14:41:24 +0200 Subject: [PATCH] feat: created "final" folder, added tex gitignore --- .gitignore | 304 +++++++++++++++++- final/code/main.py | 244 ++++++++++++++ final/code/requirements.txt | 4 + .../report/KLISZKO_RUDNICKI_MIDTERM_EARIN.pdf | Bin 0 -> 75199 bytes final/report/execution_time.png | Bin 0 -> 38367 bytes final/report/report.tex | 97 ++++++ final/report/user_rating.png | Bin 0 -> 16441 bytes 7 files changed, 648 insertions(+), 1 deletion(-) create mode 100644 final/code/main.py create mode 100644 final/code/requirements.txt create mode 100644 final/report/KLISZKO_RUDNICKI_MIDTERM_EARIN.pdf create mode 100644 final/report/execution_time.png create mode 100644 final/report/report.tex create mode 100644 final/report/user_rating.png diff --git a/.gitignore b/.gitignore index d6ffe6a6..5bc6c4f6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,306 @@ anime_with_synopsis.csv anime.csv animelist.csv rating_complete.csv -watching_status.csv \ No newline at end of file +watching_status.csv + +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib \ No newline at end of file diff --git a/final/code/main.py b/final/code/main.py new file mode 100644 index 00000000..cc9b662a --- /dev/null +++ b/final/code/main.py @@ -0,0 +1,244 @@ +""" +Code for preprocessing data and creating model that predicts and +recomends anime based on another anime entered by user +""" +import pandas as pd + +import numpy as np +import argparse + +import sklearn +from sklearn.neighbors import NearestNeighbors +from scipy.sparse import csr_matrix + + +def get_data(limit_data=-1, data_folder_path="database"): + """ + Reads anime from csv database + """ + if limit_data > -1: + # User can limit number of data taken into consideration, + # model seems to work with limit_data value as low as 500,000 + rating_data = pd.read_csv( + data_folder_path + "/animelist.csv", nrows=limit_data) + else: + rating_data = pd.read_csv(data_folder_path + "/animelist.csv") + anime_data = pd.read_csv(data_folder_path + "/anime.csv") + + # used to fetch anime_id(MAL_ID) + anime_data = anime_data.rename(columns={"MAL_ID": "anime_id"}) + anime_contact_data = anime_data[["anime_id", "Name"]] + return rating_data, anime_contact_data + + +def merge_rating_anime_data(rating_data, anime_contact_data, debug=False): + """ + Preprocesses the data used for rating + """ + rating_data = rating_data.merge( + anime_contact_data, left_on="anime_id", right_on="anime_id", how="left" + ) + rating_data = rating_data[ + ["user_id", "Name", "anime_id", "rating", + "watching_status", "watched_episodes"] + ] + rating_head = rating_data.head() + if debug: + print(rating_head) + rating_shape_complete = rating_data.shape + if debug: + print(rating_shape_complete) + return rating_data + + +def split_data_below_thresholds(rating_data, data_name, threshold=-1, debug=False): + """ + Removes data with data_name which is below given threshold + """ + if threshold != -1: + count = rating_data[data_name].value_counts() + rating_data = rating_data[ + rating_data[data_name].isin(count[count >= threshold].index) + ].copy() + rating_shape_cut = rating_data.shape + if debug: + print(rating_shape_cut) + return rating_data + + +def combine_name_and_ratings(rating_data, debug=False): + """ + Create table which holds name of the anime and number of its reviews + then we merge this with rating_data + """ + combine_movie_rating = rating_data.dropna(axis=0, subset=["Name"]) + movie_rating_count = ( + combine_movie_rating.groupby(by=["Name"])["rating"] + .count() + .reset_index()[["Name", "rating"]] + ) + rating_head = movie_rating_count.head() + if debug: + print(rating_head) + rating_data = combine_movie_rating.merge( + movie_rating_count, left_on="Name", right_on="Name", how="left" + ) + return rating_data + + +def get_length_of_data(rating_data, data_name): + """ + We get amount of data in the database with a given column data_name + """ + # Encoding categorical data + column_ids = rating_data[data_name + "_id"].unique().tolist() + column_to_column = {x: i for i, x in enumerate(column_ids)} + rating_data[data_name] = rating_data[data_name + + "_id"].map(column_to_column) + users_number = len(column_to_column) + return users_number + + +def get_top_ranked(rating_data, data_name, join_table=None, top_data_taken=20): + """ + Get anime with highest ranking + """ + if join_table is None: + join_table = rating_data + group_data_by_rating = rating_data.groupby( + data_name + "_id")["rating"].count() + top_users = group_data_by_rating.dropna().sort_values(ascending=False)[ + :top_data_taken] + top_rated = join_table.join(top_users, rsuffix="_r", + how="inner", on=data_name + "_id") + return top_rated + + +def get_data_info(rating_data, debug=False): + """ + Get some informations about data + """ + users_number = get_length_of_data(rating_data, "user") + animes_number = get_length_of_data(rating_data, "anime") + + top_rated = get_top_ranked(rating_data, "user") + top_rated = get_top_ranked(rating_data, "anime", top_rated) + + pivot = pd.crosstab(top_rated.user_id, top_rated.anime_id, + top_rated.rating, aggfunc=np.sum) + + pivot.fillna(0, inplace=True) + smallest_rating = min(rating_data["rating"]) + highest_rating = max(rating_data["rating"]) + if debug: + print(pivot) + if debug: + print(f"Num of users: {users_number}, Num of animes: {animes_number}") + print( + f"Min total rating: {smallest_rating}, Max total rating: {highest_rating}") + + +def preprocessing(rating_data, anime_contact_data, debug=False, user_threshold=500, anime_threshold=200): + """ + Preprocesses data for making model more accurate and/or faster + """ + rating_data = merge_rating_anime_data(rating_data, anime_contact_data) + rating_data = split_data_below_thresholds( + rating_data, "user_id", user_threshold) + rating_data = split_data_below_thresholds( + rating_data, "anime_id", anime_threshold) + rating_data = combine_name_and_ratings(rating_data) + + rating_data = rating_data.drop(columns="rating_x") + rating_data = rating_data.rename(columns={"rating_y": "rating"}) + if debug: + print(rating_data) + get_data_info(rating_data) + + pivot_table = rating_data.pivot_table( + index="Name", columns="user_id", values="rating" + ).fillna(0) + if debug: + print(pivot_table) + return pivot_table + + +def predict(prediction_model, pivot_table, seed=42, anime="RANDOM", recommendation_number=6): + """ + This will choose a random anime name and our prediction_model will predict similar anime. + """ + np.random.seed(seed) + print(pivot_table) + if anime == "RANDOM": + chosen_anime = np.random.choice(pivot_table.shape[0]) + query = pivot_table.iloc[chosen_anime, :].values.reshape(1, -1) + chosen_anime_name = pivot_table.index[chosen_anime] + else: + query = pivot_table.loc[anime].values.reshape(1, -1) + chosen_anime_name = anime + + distance, suggestions = prediction_model.kneighbors( + query, n_neighbors=recommendation_number) + for i in range(0, len(distance.flatten())): + if i == 0: + print(f"Recommendations for {chosen_anime_name}:\n") + else: + print( + f"{i}: {pivot_table.index[suggestions.flatten()[i]]}, with distance of {distance.flatten()[i]}:" + ) + + +def create_model(pivot_table, metric="cosine", algorithm="brute", neighbors=5): + """ + Creates model based on neaarest neighbor for anime prediction + """ + pivot_table_matrix = csr_matrix(pivot_table.values) + model = NearestNeighbors(n_neighbors=neighbors, + metric=metric, algorithm=algorithm) + model.fit(pivot_table_matrix) + return model + + +def handle_arguments(): + parser = argparse.ArgumentParser(description='Example script with pyargs') + parser.add_argument('--data_limit', '-dl', + help='Specify data limit, Recommended at least 500k, set to -1 for no limit', required=False, type=int, default=-1) + parser.add_argument('--seed', '-s', help='Specify seed', + type=int, required=False, default=42) + parser.add_argument('--debug', '-d', help='Use debug (more information) prints', + type=bool, required=False, default=False) + parser.add_argument('--database', '-db', help='Specify database path', + required=False, default="database") + + allowed_metric = ["cosine", "mahalanobis", "euclidean"] + parser.add_argument('--metric', '-m', help='Specify metric for NearestNeighbor learner', + required=False, default="cosine", choices=allowed_metric) + allowed_algorithms = ['auto', 'ball_tree', 'kd_tree', 'brute'] + parser.add_argument('--algorithm', '-a', help='Specify algorithm for Nearest Neighbor learner', + required=False, default="brute", choices=allowed_algorithms) + parser.add_argument('--anime', '-an', help='Specify anime to choose', + required=False, default="RANDOM") + parser.add_argument('--neighbors', '-n', help='Specify number of nearest neighbors', + required=False, default=5) + parser.add_argument('--user_threshold', '-ut', help='Specify minimal number of votes required for user to be included in the data, set to -1 for no threshold', + required=False, type=int, default=500) + parser.add_argument('--anime_threshold', '-at', help='Specify minimal number of votes required for anime to be included in the data, set to -1 for no threshold', + required=False, type=int, default=200) + parser.add_argument('--recommendation_amount', '-ra', help='Specify how much anime should be recommended', + required=False, type=int, default=5) + + # Parse the command-line arguments + args = parser.parse_args() + args.recommendation_amount = args.recommendation_amount + 1 + # Access the values of the arguments + return args.seed, args.debug, args.data_limit, args.database, args.metric, args.algorithm, args.anime, args.neighbors, args.user_threshold, args.anime_threshold, args.recommendation_amount + + +if __name__ == "__main__": + seed, debug, data_limit, db, metric, algorithm, anime, neighbors, user_threshold, anime_threshold, recommendation_amount = handle_arguments() + + RATING_DATA, ANIME_CONTACT_DATA = get_data(data_limit, db) + PIVOT_TABLE = preprocessing( + RATING_DATA, ANIME_CONTACT_DATA, debug, user_threshold, anime_threshold) + MODEL = create_model(PIVOT_TABLE, metric, algorithm, neighbors) + predict(MODEL, PIVOT_TABLE, seed, anime, recommendation_amount) diff --git a/final/code/requirements.txt b/final/code/requirements.txt new file mode 100644 index 00000000..b0c17db6 --- /dev/null +++ b/final/code/requirements.txt @@ -0,0 +1,4 @@ +pandas +numpy +seaborn +matplotlib \ No newline at end of file diff --git a/final/report/KLISZKO_RUDNICKI_MIDTERM_EARIN.pdf b/final/report/KLISZKO_RUDNICKI_MIDTERM_EARIN.pdf new file mode 100644 index 0000000000000000000000000000000000000000..17f7465b1bdd49cc2accaff721ca774c57711b5d GIT binary patch literal 75199 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®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 literal 0 HcmV?d00001 diff --git a/final/report/execution_time.png b/final/report/execution_time.png new file mode 100644 index 0000000000000000000000000000000000000000..9604f3c04d7d0a457aee8eb21bc46faa25b30ad9 GIT binary patch literal 38367 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

?xOk(zU;9R+pqq79Ku*jU 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 literal 0 HcmV?d00001 diff --git a/final/report/report.tex b/final/report/report.tex new file mode 100644 index 00000000..237ec86f --- /dev/null +++ b/final/report/report.tex @@ -0,0 +1,97 @@ +\documentclass[12pt]{article} +\usepackage{listings} +\usepackage{hyperref} +\usepackage{graphicx} +\title{EARIN project Midterm report} +\author{Krzysztof Rudnicki \\ Jakub Kliszko} +\begin{document} +\maketitle +\section{Progress} +We have implemented reading data from csv files, preprocessing them with optional showing of some of the information about the data and used model/learner for implementing neighbour searches \\ +Program is very flexible and allows for a lot of modification from command line arguments \\ +Full list here: +\begin{lstlisting}[language=bash] +options: +-h, --help show this help message and exit +--data_limit DATA_LIMIT, -dl DATA_LIMIT + Specify data limit, Recommended at least 500k, + set to -1 for no limit +--seed SEED, -s SEED Specify seed +--debug DEBUG, -d DEBUG + Use debug (more information) prints +--database DATABASE, -db DATABASE + Specify database path +--metric {cosine,mahalanobis,euclidean} +-m {cosine,mahalanobis,euclidean} + Specify metric for NearestNeighbor learner +--algorithm {auto,ball_tree,kd_tree,brute} +-a {auto,ball_tree,kd_tree,brute} + Specify algorithm for Nearest Neighbor learner +--anime ANIME, -an ANIME + Specify anime to choose +--neighbors NEIGHBORS, -n NEIGHBORS + Specify number of nearest neighbors +--user_threshold USER_THRESHOLD, -ut USER_THRESHOLD + Specify minimal number of votes + required for user to be included in + the data, set to -1 for no threshold +--anime_threshold ANIME_THRESHOLD, -at ANIME_THRESHOLD + Specify minimal number of votes + required for anime to be included + in the data, set to -1 for no threshold +\end{lstlisting} +\section{Results} +Currently recommendations are displayed in a following way: +\begin{lstlisting}[language=bash] +Recommendations for Kill la Kill: + +1: Shingeki no Kyojin, with distance of 0.11106648055176693: +2: Steins;Gate, with distance of 0.12104265014640536: +3: Toradora!, with distance of 0.12112848901274798: +4: Sword Art Online, with distance of 0.13046005032340824: +5: No Game No Life, with distance of 0.1306815843129835: +6: One Punch Man, with distance of 0.14848484728234945: +7: Angel Beats!, with distance of 0.15175709939974935: +8: Hataraku Maou-sama!, with distance of 0.15244674042590045: +9: Psycho-Pass, with distance of 0.15288022814590008: + \end{lstlisting} + Where we are given name of the anime for which we create recommendation and list of animes recommended with distance to original anime (lower is better) + \subsection{Data size and execution time} + \begin{figure} + \caption{Chart showing how size of data taken impacts execution time } + \includegraphics[width=\textwidth]{execution_time.png} + \end{figure} +This data was taken using default parameters execpt for increasing data size, each of three runs uses different seed + + +\paragraph{Seed} We added seed in predict function for choosing random anime, using the same seed always returns same recommendations and choosing random anime is the only random part of our code \\ +User can specify their own seed by using -s or --seed flag by entering in command line: +\begin{lstlisting} +python -s 42 +\end{lstlisting} +\section{Challenges} +\subsection{Failed attempts} +Biggest challenge was realizing how overcomplicated and unnecessary difficult to implement is the first code we based on: \href{https://www.kaggle.com/code/chaitanya99/recommendation-system-cf-anime}{Kaggle code with tensorflow} \\ +This solutions runs for almost 10 minutes on kaggle and implementing it to run on our local devices was a real chore that took us a good day and a half to implement \\ +This implementation is based around very powerful Tensor Processing Unit from google and while it is possible to change it to run on local graphics card it requires downloading both cuda and cudnn to a downgraded version supported by tensorflow (11.8) and downgrading graphics card drivers \\ +Running it with CPU results in the model training for over 3 hours +\subsection{Corrections} +Suprisingly even though we based our preliminary report around different example code we managed to not make any corrections to preliminary report \\ +All of functionality that we want to implement is available in sklearn and scipy +\subsection{Results and findings} +We can see that the rating is skewed towards higher values, users tend to give ratings of 7, 8 or 9 which inflates average rating to be well above 5 +\begin{figure} + \caption{User rating count} + \includegraphics[width=\textwidth]{user_rating.png} +\end{figure} +\section{Finishing project} +\subsection{Embedding more data in user and anime} +Currently we are only embedding pure rating values of users, we do not take into consideration, popularity, "controversy", studio which created the anime, length of anime (number of episodes and length of episodes), and when it was aired \\ +\subsection{Evaluating our model accuracy} +We need to introduce some way to evaluate accuracy of our model, we will try to introduce at least some of the measures mentioned in preliminary report: precision, recall, F1 score and MAP +\subsection{More results representation} +We still need to introduce more representation for our model results. Mainly how well it predicts similarity based on different parameter values (different modes, arguments and so on) \\ +We already can modify those values easily from the code itself and as argument, we just need to run those values and collect results + + +\end{document} \ No newline at end of file diff --git a/final/report/user_rating.png b/final/report/user_rating.png new file mode 100644 index 0000000000000000000000000000000000000000..da5493c47e470ef3fa4b503d864d1303fe5d00d5 GIT binary patch literal 16441 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 NaZdeg#%YuL{|D_%2zvkk literal 0 HcmV?d00001