From dc594e358c95882a2006637addbe12401d97ef1d Mon Sep 17 00:00:00 2001 From: feger <marc.feger@hhu.de> Date: Thu, 30 Jan 2020 17:10:02 +0100 Subject: [PATCH] Refactor --- recommender.tex | 2 +- submission.pdf | Bin 454477 -> 454495 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recommender.tex b/recommender.tex index 98106d8..5de986c 100644 --- a/recommender.tex +++ b/recommender.tex @@ -12,7 +12,7 @@ In the following, the two main approaches of \textit{collaborative-filtering} an \subsection{Collaborative-Filtering} Unlike the \textit{content-based recommender}, the \textit{collaborative-filtering recommender (CF)} not only considers individual \textit{users} and \textit{feature vectors}, but rather a \textit{like-minded neighborhood} of each \textit{user}. -Missing \textit{user ratings} can be extracted by this \textit{neighbourhood} and \textit{networked} to form a whole. It is assumed that a \textit{missing rating} of the considered \textit{user} for an unknown \textit{item} $i$ will be similar to the \textit{rating} of a \textit{user} $v$ as soon as $u$ and $v$ have rated some \textit{items} similarly. The similarity of the \textit{users} is determined by the \textit{community ratings}. This type of \textit{recommender system} is also known by the term \textit{neighborhood-based recommender} \citep{DeKa11}. The main focus of \textit{neighbourhood-based methods} is on the application of iterative methods such as \textit{k-nearest-neighbours} or \textit{k-means}. +Missing \textit{user ratings} can be extracted by this \textit{neighbourhood} and \textit{networked} to form a whole. It is assumed that a \textit{missing rating} of the considered \textit{user} $u$ for an unknown \textit{item} $i$ will be similar to the \textit{rating} of a \textit{user} $v$ as soon as $u$ and $v$ have rated some \textit{items} similarly. The similarity of the \textit{users} is determined by the \textit{community ratings}. This type of \textit{recommender system} is also known by the term \textit{neighborhood-based recommender} \citep{DeKa11}. The main focus of \textit{neighbourhood-based methods} is on the application of iterative methods such as \textit{k-nearest-neighbours} or \textit{k-means}. A \textit{neighborhood-based recommender} can be viewed from two perspetives: The first and best known problem is the so-called \textit{user-based prediction}. Here, the \textit{missing ratings} of a considered \textit{user} $u$ are to be determined from his \textit{neighborhood} $\mathcal{N}_i(u)$. $\mathcal{N}_i(u)$ denotes the subset of the \textit{neighborhood} of all \textit{users} who have a similar manner of evaluation to $u$ via the \textit{item} $i$. The second problem is that of \textit{item-based prediction}. Analogously, the similarity of the \textit{items} are determined by their received \textit{ratings}. This kind of problem consideres the \textit{neighborhood} $\mathcal{N}_u(i)$ of all \textit{items} $i$ which were similar rated via the \textit{user} $u$. The similarity between the objects of a \textit{neighborhood} is determined by \textit{distance functions} such as \textit{mean-squared-difference}, \textit{pearson-correlation} or \textit{cosine-similarity}. diff --git a/submission.pdf b/submission.pdf index e3a9f7e83c782b37d3f6273c2f239b125407ab8d..41951d3b57bb2a2e9eed65a0a38c714a1f3bf085 100644 GIT binary patch delta 6785 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 W*@e?p-m@ui8XIz{s=E5SaRC6OCnO#K delta 6820 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 H{oS|#{qh<i -- GitLab