From ccb784b9c23cc869b8f619f0310387e421f943fd Mon Sep 17 00:00:00 2001 From: feger <marc.feger@hhu.de> Date: Thu, 30 Jan 2020 17:40:58 +0100 Subject: [PATCH] Refactor --- recommender.tex | 2 +- submission.pdf | Bin 454570 -> 454556 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recommender.tex b/recommender.tex index e700851..b7079d9 100644 --- a/recommender.tex +++ b/recommender.tex @@ -29,7 +29,7 @@ In the following, the four most classical \textit{matrix-factorization} approach The first and easiest way to solve \textit{matrix-factorization} is to connect the \textit{feature vectors} of the \textit{users} and the \textit{items} using the \textit{inner product}. The result is the \textit{user-item interaction}. In addition, the \textit{error} should be as small as possible. Therefore, $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}}$ is defined as an associated \textit{minimization problem} \citep{Kor09}. \subsubsection{Regulated Matrix-Factorization}\label{subsec:rmf} -This problem extends the \textit{basic matrix-factorization} by a \textit{regulation factor} $\lambda$ in the corresponding \textit{minimization problem}. Since $\mathcal{R}$ is thinly occupied, the effect of \textit{overfitting} may occur due to learning from the few known values. The problem with \textit{overfitting} is that the generated \textit{ratings} are too tight. To counteract this, the magnitudes of the previous vectors is taken into account. High magnitudes are punished by a factor $\lambda(\lVert q_i \rVert^2 + \lVert p_u \lVert^2)$ in the \textit{minimization problem}. Overall, the \textit{minimization problem} $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}} + \lambda(\lVert q_i \lVert^2 + \lVert p_u \lVert^2)$ is to be solved. +This problem extends the \textit{basic matrix-factorization} by a \textit{regulation factor} $\lambda$ in the corresponding \textit{minimization problem}. Since $\mathcal{R}$ is thinly occupied, the effect of \textit{overfitting} may occur due to learning from the few known values. The problem with \textit{overfitting} is that the generated \textit{ratings} are too tight. To counteract this, the magnitudes of the previous vectors are taken into account. High magnitudes are punished by a factor $\lambda(\lVert q_i \rVert^2 + \lVert p_u \lVert^2)$ in the \textit{minimization problem}. Overall, the \textit{minimization problem} $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}} + \lambda(\lVert q_i \lVert^2 + \lVert p_u \lVert^2)$ is to be solved. The idea is that especially large entries in $q_i$ or $p_u$ cause $\lVert q_i \rVert, \lVert p_u \rVert$ to become larger. Accordingly, $\lVert q_i \rVert$ and $\lVert p_u \rVert$ increases the larger its entries become. This value is then additionally punished by squaring it. Small values are rewarded and large values are penalized. Additionally the influence of this value can be regulated by $\lambda$ \citep{Kor09}. \subsubsection{Weighted Regulated Matrix-Factorization} diff --git a/submission.pdf b/submission.pdf index f4217e7c28b72b733d2e0a0f70ee97151a19ed2d..3cf9ec050d0d9bc343351c26dd1ab4167b8ed524 100644 GIT binary patch delta 10131 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 delta 10170 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 -- GitLab