mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-06 10:03:16 +02:00
66 lines
3.6 KiB
TeX
66 lines
3.6 KiB
TeX
\documentclass[12pt]{article}
|
|
\usepackage{listings}
|
|
\usepackage{hyperref}
|
|
\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}
|
|
\subsection{Presentation}
|
|
\subsubsection{Plots}
|
|
\subsubsection{Tables}
|
|
\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}
|
|
|
|
\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 \\
|
|
|
|
\end{document} |