From b4741ff4bb1586a6822fab8e4852a29ff11381be Mon Sep 17 00:00:00 2001 From: feger <marc.feger@hhu.de> Date: Thu, 30 Jan 2020 17:29:28 +0100 Subject: [PATCH] Refactor --- recommender.tex | 2 +- submission.pdf | Bin 454535 -> 454570 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recommender.tex b/recommender.tex index ff1817d..e700851 100644 --- a/recommender.tex +++ b/recommender.tex @@ -14,7 +14,7 @@ In the following, the two main approaches of \textit{collaborative-filtering} an 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} $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$ and who have evaluated the unknown \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}. +$\mathcal{N}_i(u)$ denotes the subset of the \textit{neighborhood} of all \textit{users} who have a similar manner of evaluation to $u$ and who have rated the unknown \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} which were rated by \textit{user} $u$ and who are similar to $i$. 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}. Figure \ref{fig:cf} shows a sketch of the general operation of \textit{collaborative-filtering} \textit{recommender}. diff --git a/submission.pdf b/submission.pdf index cfb857bf1b55bab025994394090bcfaf3b1aeef4..f4217e7c28b72b733d2e0a0f70ee97151a19ed2d 100644 GIT binary patch delta 9230 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 delta 9192 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 -- GitLab