{"id":490987,"date":"2026-08-14T16:07:42","date_gmt":"2026-08-14T16:07:42","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=490987"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2026-08-14T16:07:42","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=490987","title":{"rendered":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 SVD \u0432 .NET: \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0441 \u043d\u0443\u043b\u044f"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442-\u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 C# &#8212; \u043e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 MovieLens. \u0418\u0437\u043b\u043e\u0436\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u043e \u0432 \u043c\u0435\u0441\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u0438\u044f, \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e<\/p>\n<p><strong>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c: \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435\u0442<\/strong><\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430: \u0441\u0442\u0440\u043e\u043a\u0438 &#8212; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0441\u0442\u043e\u043b\u0431\u0446\u044b &#8212; \u0444\u0438\u043b\u044c\u043c\u044b, \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 &#8212; \u043e\u0446\u0435\u043d\u043a\u0438 (1-5).<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0420\u044d\u043c\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u043d\u044f<\/p>\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0411\u043e\u0440\u0438\u0441<\/p>\n<\/td>\n<td>\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0438\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0413\u0435\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<td>\n<p align=\"center\">?<\/p>\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a <strong>\u043f\u0443\u0441\u0442\u044b\u0435<\/strong> &#8212; \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432\u0441\u0451. \u0417\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b: <strong>\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0443\u0441\u0442\u044b\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445<\/strong>. \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e \u0411\u043e\u0440\u0438\u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 &#171;\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b\u0443&#187; 2 &#8212; \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c; \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0436\u0435\u043c 5 &#8212; \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c<\/p>\n<p><strong>\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0434\u043e\u0433\u0430\u0434\u043a\u0430:<\/strong> \u0437\u0430 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u0442 <em>\u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b<\/em> (latent factors) &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#171;\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u0438\u043b\u044c\u043c\u0435 \u044d\u043a\u0448\u043d\u0430&#187; \u0438 &#171;\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438&#187;. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u043c\u0430 \u0435\u0441\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f &#8212; \u0432\u043a\u0443\u0441 \u043f\u043e \u0442\u0435\u043c \u0436\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c. \u0422\u043e\u0433\u0434\u0430:<\/p>\n<pre><code class=\"cs\">\u043e\u0446\u0435\u043d\u043a\u0430(\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0444\u0438\u043b\u044c\u043c) \u2248 \u0432\u043a\u0443\u0441_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2022 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438_\u0444\u0438\u043b\u044c\u043c\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a> \u0434\u0432\u0443\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u041d\u0430 \u043d\u0451\u043c \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u0441\u0451.<\/p>\n<p><strong>\u0412\u0435\u043a\u0442\u043e\u0440<\/strong> \u0437\u0434\u0435\u0441\u044c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0447\u0438\u0441\u0435\u043b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c. \u0412\u043e\u0437\u044c\u043c\u0451\u043c 2 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430: [\u044d\u043a\u0448\u043d, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430]<\/p>\n<pre><code class=\"cs\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [1, 5]   (\u043c\u0430\u043b\u043e \u044d\u043a\u0448\u043d\u0430, \u043c\u043d\u043e\u0433\u043e \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438)\u0420\u044d\u043c\u0431\u043e   = [5, 0]   (\u043c\u043d\u043e\u0433\u043e \u044d\u043a\u0448\u043d\u0430, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u043d\u0435\u0442)\u0410\u043d\u044f   = [1, 5]     (\u043b\u044e\u0431\u0438\u0442 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443)\u0411\u043e\u0440\u0438\u0441 = [5, 1]     (\u043b\u044e\u0431\u0438\u0442 \u044d\u043a\u0448\u043d)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u0438\u043b\u044c\u043c\u044b \u0438 \u043b\u044e\u0434\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b <strong>\u0432 \u043e\u0434\u043d\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445<\/strong> &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b.<\/p>\n<p><strong>\u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (dot product)<\/strong> = \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043f\u0430\u0440\u043d\u043e \u0438 \u0441\u043b\u043e\u0436\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cs\">\u0410\u043d\u044f \u2022 \u0422\u0438\u0442\u0430\u043d\u0438\u043a = 1\u20221 + 5\u20225 = 26   - \u0431\u043e\u043b\u044c\u0448\u043e\u0435\u0410\u043d\u044f \u2022 \u0420\u044d\u043c\u0431\u043e   = 1\u20225 + 5\u20220 = 5    - \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0411\u043e\u043b\u044c\u0448\u0435 = \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.<\/strong> \u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u043a\u0443\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0444\u0438\u043b\u044c\u043c\u0430<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e62\/494\/2e9\/e624942e9d56d204af6cdd13f99caead.gif\" alt=\"\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443\" title=\"\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443\" width=\"800\" height=\"420\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e62\/494\/2e9\/e624942e9d56d204af6cdd13f99caead.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e62\/494\/2e9\/e624942e9d56d204af6cdd13f99caead.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043b\u0438\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0443 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438 \u0443 \u0444\u0438\u043b\u044c\u043c\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0410\u043d\u044f \u043b\u044e\u0431\u0438\u0442 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443 (5), &#171;\u0422\u0438\u0442\u0430\u043d\u0438\u043a&#187; \u043f\u043e\u043b\u043e\u043d \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 (5), \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 &#8212; \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c    <\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f71\/cea\/cf9\/f71ceacf9fb696feec45ee3b13265d55.gif\" alt=\"\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b\" title=\"\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b\" width=\"800\" height=\"420\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f71\/cea\/cf9\/f71ceacf9fb696feec45ee3b13265d55.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f71\/cea\/cf9\/f71ceacf9fb696feec45ee3b13265d55.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b<\/figcaption><\/div>\n<\/figure>\n<p>\u0410\u043d\u044f \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u044d\u043a\u0448\u043d, &#171;\u0420\u044d\u043c\u0431\u043e&#187; &#8212; \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u044d\u043a\u0448\u043d &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f &#8212; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e &#8212; \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u043e \u043b\u044e\u0431\u0443\u044e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u0442\u0430\u043b\u0438: \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u0441\u0451 \u0442\u043e\u0447\u043d\u0435\u0435<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<pre><code class=\"cs\">static double DotProduct(double[] a, double[] b){    double result = 0;    for (int k = 0; k &lt; a.Length; k++)        result += a[k] * b[k];    return result;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441: \u0447\u0438\u0441\u043b\u0430 \u0432\u0440\u043e\u0434\u0435 26 &#8212; \u044d\u0442\u043e \u043d\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e \u0448\u043a\u0430\u043b\u0435 1-5. \u041c\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0443\u0435\u0445\u0430\u043b. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0441\u0451 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u0443 \u043d\u0430\u0441 <strong>\u0435\u0441\u0442\u044c<\/strong> \u043e\u0446\u0435\u043d\u043a\u0438 1-5, \u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u044d\u0442\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c<\/p>\n<p><strong>\u041f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043e\u0446\u0435\u043d\u043e\u043a<\/strong><\/p>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u043a\u0443\u0441\u043e\u0432 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 &#8212; \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0446\u0435\u043d\u043e\u043a. \u0418 \u043e\u043d\u0430 \u043f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u0430\u044f: \u0432 \u043e\u043d\u043b\u0430\u0439\u043d \u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0446\u0435\u043d\u0438\u043b \u0441\u043e\u0442\u044b\u0435 \u0434\u043e\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f (\u043d\u0430 99%+ \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u044b\u0440\u043e\u043a).<\/p>\n<p><strong>\u041a\u0430\u043a \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u044b\u0440\u043a\u0438?<\/strong> \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0434\u044b\u0440\u043e\u043a \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 0 \u043a\u0430\u043a \u043c\u0430\u0440\u043a\u0435\u0440 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u0438, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e &#171;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0444\u0438\u043b\u044c\u043c&#187; \u043e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 0. <\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 &#8212; \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0441 <code>null<\/code>, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 99%+ \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 <code>null<\/code>. <\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 &#8212; \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a: \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b \u0444\u0438\u043b\u044c\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434: <strong>\u0434\u044b\u0440\u043a\u0430 \u2260 \u043d\u043e\u043b\u044c<\/strong>. \u0414\u044b\u0440\u043a\u0430 &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u043c<\/p>\n<blockquote>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u0443\u0441\u0442\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0443\u043b\u0438: \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0435\u0440\u043f\u0435\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 (\u043e\u0446\u0435\u043d\u043a\u0430 0). \u0410 \u043e\u043d \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b! &#171;\u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b&#187; \u0438 &#171;\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u0442&#187; &#8212; \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u0438 \u043f\u0443\u0442\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f. \u0414\u044b\u0440\u043a\u0430 &#8212; \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442 &#171;0&#187;.    <\/p>\n<\/blockquote>\n<pre><code class=\"cs\">record Rating(int UserId, int MovieId, double Score);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b \u0444\u0438\u043b\u044c\u043c, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 &#171;\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430&#187; \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0434\u043e\u043b\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u0446\u0435\u043d\u043e\u043a:<\/p>\n<pre><code class=\"cs\">(\u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u2212 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438) \/ \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c <code>null<\/code> \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d<\/p>\n<h2>\u041a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b<\/h2>\n<p>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c &#171;\u044d\u043a\u0448\u043d=5&#187; \u0434\u043b\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f SVD-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439: <strong>\u043d\u0430\u0439\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/strong> &#8212; \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 &#171;\u044d\u043a\u0448\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187; \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u044d\u0442\u0438 <code>[1, 5]. <\/code>\u041c\u044b <strong>\u043d\u0435 \u0437\u043d\u0430\u0435\u043c<\/strong>, \u0447\u0442\u043e:<\/p>\n<pre><code class=\"cs\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [\u044d\u043a\u0448\u043d=1, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430=5]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0443 \u043d\u0430\u0441 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438: [\u044d\u043a\u0448\u043d, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430, \u2026]<\/p>\n<p>SVD \u0433\u043e\u0432\u043e\u0440\u0438\u0442:<\/p>\n<blockquote>\n<p>\u0414\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0444\u0438\u043b\u044c\u043c\u0430\u043c. \u042f \u0441\u0430\u043c \u043d\u0430\u0439\u0434\u0443 \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438    <\/p>\n<\/blockquote>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e:<\/p>\n<pre><code class=\"cs\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [1, 5]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435:<\/p>\n<pre><code class=\"cs\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [0.73, 0.41]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u044d\u043a\u0448\u0435\u043d\u043e\u043c, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u0441 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439.<\/p>\n<p><strong>\u041d\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e &#171;\u044d\u043a\u0448\u0435\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187;.<\/strong><\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 (\u044d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442):<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0424\u0438\u043b\u044c\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0411\u043e\u0440\u0438\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0410\u043d\u044f<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442:<\/p>\n<blockquote>\n<p>\u0425\u043c. \u0415\u0441\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u0411\u043e\u0440\u0438\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u0434\u043d\u0438\u043c \u0444\u0438\u043b\u044c\u043c\u0430\u043c, \u0430 \u0410\u043d\u044f &#8212; \u0434\u0440\u0443\u0433\u0438\u043c<\/p>\n<\/blockquote>\n<p>\u041e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0441\u043a\u0440\u044b\u0442\u043e\u043c\u0443 \u0444\u0430\u043a\u0442\u043e\u0440\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u044b\u0439\u0442\u0438 \u0442\u0430\u043a\u0438\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041a\u0442\u043e \/ \u0447\u0442\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>factor 1<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0411\u043e\u0440\u0438\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u043d\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cs\">DotProduct(\u0411\u043e\u0440\u0438\u0441, \u041c\u0430\u0442\u0440\u0438\u0446\u0430) \u2248 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043eDotProduct (\u0410\u043d\u044f, \u041c\u0430\u0442\u0440\u0438\u0446\u0430) \u2248 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0410 \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043e\u0446\u0435\u043d\u043e\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0424\u0438\u043b\u044c\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041e\u0446\u0435\u043d\u043a\u0430 \u0410\u043d\u0438<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041a\u0442\u043e \/ \u0447\u0442\u043e<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>factor 2<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u043d\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0411\u043e\u0440\u0438\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0424\u0438\u043b\u044c\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0444\u0430\u043a\u0442\u043e\u0440 1<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0444\u0430\u043a\u0442\u043e\u0440 2<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.1<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.05<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.9<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0425\u043e\u0442\u044f \u043d\u0438\u043a\u0442\u043e <strong>\u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b<\/strong>:<\/p>\n<pre><code class=\"cs\">\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [\u044d\u043a\u0448\u0435\u043d=1, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430=5]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441. \u042f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0441\u043a\u0430\u0437\u0430\u0432: \u0444\u0430\u043a\u0442\u043e\u0440 1 = \u044d\u043a\u0448\u0435\u043d, \u0444\u0430\u043a\u0442\u043e\u0440 2 = \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 <strong>\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/strong>.<strong> \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f &#171;\u044d\u043a\u0448\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187;<\/strong>. \u042f \u0442\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u043b \u0438\u0445 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f. SVD \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cs\">\u0444\u0430\u043a\u0442\u043e\u0440 1 = \u0441\u043c\u0435\u0441\u044c \u044d\u043a\u0448\u0435\u043d\u0430 + \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0438,\u0444\u0430\u043a\u0442\u043e\u0440 2 = \u0441\u043c\u0435\u0441\u044c \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 + \u0434\u0440\u0430\u043c\u044b<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435:<\/p>\n<pre><code class=\"cs\">factor 1 = \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0436\u0430\u043d\u0440\u043e\u0432factor 2 = \u0434\u0440\u0443\u0433\u0430\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043c\u043e\u0433 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0444\u0430\u043a\u0442\u043e\u0440.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435:<\/p>\n<pre><code class=\"cs\">DotProduct(user, film)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0434\u043e\u043b\u0436\u0435\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0443.<\/p>\n<p>\u0418 \u0432\u043e\u043e\u0431\u0449\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435 50, \u0430 \u043d\u0435 2. \u041d\u043e \u043f\u043e\u043a\u0430, \u0432 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 2 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u0430<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0438 \u0435\u0441\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c SVD:<\/p>\n<blockquote>\n<p>\u041c\u044b \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u043c\u044b \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438. \u041c\u044b \u0434\u0430\u0451\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c <strong>\u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b<\/strong> \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e \u044d\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438.<\/p>\n<\/blockquote>\n<p><strong>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c (Funk SVD):<\/strong><\/p>\n<p><strong>\u0420\u0430\u0437\u0434\u0430\u0451\u043c \u0432\u0441\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b.<\/strong> \u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 k \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (p), \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u0438\u043b\u044c\u043c\u0443 &#8212; \u0442\u043e\u0436\u0435 (q). k &#8212; \u0447\u0438\u0441\u043b\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0430\u043c\u0438.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443.<\/strong> \u0414\u043b\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438: \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 = Dot(p, q), \u043e\u0448\u0438\u0431\u043a\u0430 = \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u2212 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435.<\/p>\n<p><strong>\u0427\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0434\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u044b<\/strong>, \u0447\u0442\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0430\u0441\u044c (\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a).<\/p>\n<p><strong>\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437<\/strong> (\u044d\u043f\u043e\u0445).<\/p>\n<p>\u0424\u043e\u0440\u043c\u0443\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u0430 f:<\/p>\n<pre><code class=\"cs\">oldP = p[f]                          -\u0421\u041d\u0410\u0427\u0410\u041b\u0410 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043cp[f] += lr \u2022 error \u2022 q[f]q[f] += lr \u2022 error \u2022 oldP<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0433\u0434\u0435 <\/p>\n<ul>\n<li>\n<p><code><strong>lr<\/strong><\/code>&#8212; learning rate (\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0448\u0430\u0433, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 0.01).<\/p>\n<\/li>\n<li>\n<p><code><strong>p<\/strong><\/code> &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 <strong>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/strong> (\u043e\u0442 <em>person \/ preferences<\/em>). \u0415\u0433\u043e \u0432\u043a\u0443\u0441 \u043f\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p><code><strong>q<\/strong><\/code> &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 <strong>\u0444\u0438\u043b\u044c\u043c\u0430<\/strong>. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u0445 \u0436\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432 \u0444\u0438\u043b\u044c\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><code><strong>f<\/strong><\/code> &#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 (0, 1, \u2026, k\u22121).<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/cd5\/d02\/480cd5d02cee8764fc43b41396b736c4.gif\" width=\"1200\" height=\"760\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/cd5\/d02\/480cd5d02cee8764fc43b41396b736c4.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/cd5\/d02\/480cd5d02cee8764fc43b41396b736c4.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u0432\u0438\u0433\u0430\u0435\u043c <strong>\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0444\u0438\u043b\u044c\u043c\u0430<\/strong> (\u00b7 q[f]), \u0430 \u0444\u0438\u043b\u044c\u043c &#8212; <strong>\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/strong> (\u00b7 oldP). \u041e\u0434\u0438\u043d \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c error \u043d\u0430 \u043e\u0431\u0430 &#8212; \u043e\u043d \u0437\u0430\u0434\u0430\u0451\u0442 \u0441\u0438\u043b\u0443 \u0438 \u0437\u043d\u0430\u043a \u0442\u043e\u043b\u0447\u043a\u0430: \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 &#8212; \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0448\u0430\u0433, \u043f\u043e\u0447\u0442\u0438 \u0443\u0433\u0430\u0434\u0430\u043b\u0438 &#8212; \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c <\/strong><code><strong>oldP<\/strong><\/code><strong>?<\/strong> \u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 p[f]. \u0422\u0440\u0435\u0442\u044c\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0443\u0436\u043d\u043e <em>\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435<\/em> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 p[f], \u0430 \u043d\u0435 \u0443\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u0435 &#8212; \u0438\u043d\u0430\u0447\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0443\u0442\u044c \u043a\u0440\u0438\u0432\u043e\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u044f\u0447\u0435\u043c \u0432 oldP.<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438:<\/strong><\/p>\n<pre><code class=\"cs\">class MfModel{    public double Mu;                                    \/\/ \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043e\u0446\u0435\u043d\u043e\u043a    public Dictionary&lt;int, double[]&gt; UserVectors = new();    public Dictionary&lt;int, double[]&gt; MovieVectors = new();    public Dictionary&lt;int, double&gt; UserBias = new();    public Dictionary&lt;int, double&gt; MovieBias = new();    public double Predict(int user, int movie)    {        double dot = 0;        if (UserVectors.TryGetValue(user, out var p) &amp;&amp; MovieVectors.TryGetValue(movie, out var q))            for (int f = 0; f &lt; p.Length; f++)                dot += p[f] * q[f];        return Mu + UserBias.GetValueOrDefault(user)                  + MovieBias.GetValueOrDefault(movie) + dot;    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043b\u044e\u0447 &#8212; id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0444\u0438\u043b\u044c\u043c\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 factorCount \u0447\u0438\u0441\u0435\u043b. \u0414\u043b\u044f \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 id (cold start) \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0432\u043d\u043e 0, \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p><strong>\u041c\u0435\u0442\u0440\u0438\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 &#8212; RMSE<\/strong> (\u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430):<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"RMSE = \\sqrt{(\u03a3(\u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u2212 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435)^2\/N)}\" alt=\"RMSE = \\sqrt{(\u03a3(\u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u2212 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435)^2\/N)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9ca\/9cada65ea1d2b4df222b709dbe0b6206.svg\" width=\"416\" height=\"34\" data-width=\"51.994\" data-height=\"4.208\" data-vertical-align=\"-1.538\" style=\"width: 51.994ex; height: 4.208ex; vertical-align: -1.538ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9ca\/9cada65ea1d2b4df222b709dbe0b6206.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9ca\/9cada65ea1d2b4df222b709dbe0b6206.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438. \u041d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 (\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b) RMSE \u0431\u043e\u043b\u044c\u0448\u043e\u0439; \u043f\u043e \u043c\u0435\u0440\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p><strong>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/strong> RMSE \u043b\u0435\u0433\u043a\u043e \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432 \u043d\u043e\u043b\u044c &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e <em>\u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442<\/em> \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438. \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u0434\u044b\u0440\u043a\u0430\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u044b. \u042d\u0442\u043e <strong>\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/strong>, \u0438 \u043b\u0435\u0447\u0438\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<blockquote>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430-\u0437\u0443\u0431\u0440\u0438\u043b\u0443: \u043e\u043d \u0432\u044b\u0443\u0447\u0438\u043b \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0438\u0437 \u0437\u0430\u0434\u0430\u0447\u043d\u0438\u043a\u0430 \u0438 \u0449\u0451\u043b\u043a\u0430\u0435\u0442 \u0438\u0445 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0443\u0442\u044c \u0438\u043d\u0430\u0447\u0435 &#8212; \u0438 \u043e\u043d \u043f\u043b\u044b\u0432\u0451\u0442. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435: \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u043d\u0430 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e \u043d\u0443\u043b\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u0432 \u043d\u043e\u0432\u044b\u0445, \u043d\u0435\u0432\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0443\u0433\u0430\u0434. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<\/blockquote>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ee\/85c\/b79\/6ee85cb79783b6f4084892b3a3f9e949.png\" alt=\"\u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b (\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435)\" title=\"\u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b (\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435)\" width=\"617\" height=\"511\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ee\/85c\/b79\/6ee85cb79783b6f4084892b3a3f9e949.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ee\/85c\/b79\/6ee85cb79783b6f4084892b3a3f9e949.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b (\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435)<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043d\u0435\u044f\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430: \u043e\u0442\u043a\u0443\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u044f\u043b\u0441\u044f \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c error \u0438 \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442<\/p>\n<p><strong>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438: \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c<\/strong><\/p>\n<p>\u042d\u0442\u043e \u044f\u0434\u0440\u043e \u0432\u0441\u0435\u0433\u043e, \u0438 \u0437\u0434\u0435\u0441\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c.<\/p>\n<p><strong>\u0427\u043b\u0435\u043d &#171;\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c&#187;<\/strong><\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0443\u043c\u043c\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c = \u03a3 (r \u2212 r\u0302)^2\" alt=\"\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c = \u03a3 (r \u2212 r\u0302)^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/deb\/deb6af1693755c5e07eea5684c4ce452.svg\" width=\"186\" height=\"21\" data-width=\"23.255\" data-height=\"2.565\" data-vertical-align=\"-0.566\" style=\"width: 23.255ex; height: 2.565ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/deb\/deb6af1693755c5e07eea5684c4ce452.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/deb\/deb6af1693755c5e07eea5684c4ce452.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p>r &#8212; <strong>\u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f<\/strong> \u043e\u0446\u0435\u043d\u043a\u0430 (\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445);<\/p>\n<\/li>\n<li>\n<p>r\u0302 &#8212; <strong>\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435<\/strong> \u043c\u043e\u0434\u0435\u043b\u0438;<\/p>\n<\/li>\n<li>\n<p>r \u2212 r\u0302 &#8212; <strong>\u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0435<\/strong>: \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043c\u0430\u0445\u043d\u0443\u043b\u0438\u0441\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f r<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 r\u0302<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043e\u0448\u0438\u0431\u043a\u0430 r\u2212r\u0302<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043a\u0432\u0430\u0434\u0440\u0430\u0442 (r\u2212r\u0302)\u00b2<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u043d\u044f &#8212; \u0422\u0438\u0442\u0430\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,2<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0,8<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,64<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u043d\u044f &#8212; \u0420\u044d\u043c\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,5<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22121,5<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,25<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u03a3 (\u0441\u0438\u0433\u043c\u0430) &#8212; &#171;\u0441\u043b\u043e\u0436\u0438 \u043f\u043e \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c&#187;. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e: \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0441\u0443\u043c\u043c\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0430<\/p>\n<p><strong>\u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u0432\u043e\u0434\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442?<\/strong><\/p>\n<p>\u0422\u0443\u0442 \u0434\u0432\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:<\/p>\n<p><strong>\u0423\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u043a.<\/strong> \u041f\u0440\u043e\u043c\u0430\u0445 +0,8 \u0438 \u22120,8 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043f\u043b\u043e\u0445\u0438. \u0411\u0435\u0437 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b \u0432\u0437\u0430\u0438\u043c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u0431\u044b, \u0438 \u043a\u0440\u0443\u043f\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043b\u0430\u0441\u044c \u0431\u044b. \u041a\u0432\u0430\u0434\u0440\u0430\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u2265 0.<\/p>\n<p><strong>\u0421\u0438\u043b\u044c\u043d\u0435\u0435 \u043d\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438.<\/strong> \u041e\u0448\u0438\u0431\u043a\u0430 2 \u0434\u0430\u0451\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 4, \u0430 \u043e\u0448\u0438\u0431\u043a\u0430 1 &#8212; \u0442\u043e\u043b\u044c\u043a\u043e 1. \u041e\u0434\u0438\u043d \u0436\u0438\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0430\u0445 \u0431\u043e\u043b\u0438\u0442 \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e, \u0430 \u043d\u0435 \u0432\u0434\u0432\u043e\u0435. \u041c\u043e\u0434\u0435\u043b\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0433\u0440\u0443\u0431\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \ud83d\udd0d \u0420\u0430\u0437\u0431\u043e\u0440: \u0441\u0432\u044f\u0437\u044c &#171;\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438&#187;, RMSE \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<p><strong>\u041c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c &#171;error&#187; \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0448\u0451\u043b \u0438\u0437 &#171;\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438&#187;.<\/strong> \u041c\u044b \u043d\u0438\u0433\u0434\u0435 \u044f\u0432\u043d\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u03a3(r \u2212 r\u0302)\u00b2, \u043d\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0430 p[f] += lr \u00b7 error \u00b7 q[f] &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0448\u0430\u0433 \u0432\u043d\u0438\u0437 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0447\u043b\u0435\u043d\u0443. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f (r \u2212 r\u0302)\u00b2 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u0434\u0430\u0451\u0442 \u22122\u00b7error\u00b7(\u0447\u0442\u043e-\u0442\u043e). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 error \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u0438\u0442 <strong>\u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e<\/strong> &#8212; \u043e\u043d \u0438 \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u041f\u043e\u043b\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 (\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439)<\/strong><\/p>\n<pre><code class=\"cs\">L =  \u03a3 (r \u2212 r\u0302)\u00b2                       \u2190 \u0422\u041e\u0427\u041d\u041e\u0421\u0422\u042c: \u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0430 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435   + \u03bb \u2022 \u03a3 \u2016p\u2016\u00b2                        \u2510   + \u03bb \u2022 \u03a3 \u2016q\u2016\u00b2                        \u2502  \u0428\u0422\u0420\u0410\u0424: \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c   + \u03bb \u2022 \u03a3 (b_user)\u00b2                   \u2502  \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f)   + \u03bb \u2022 \u03a3 (b_film)\u00b2                   \u2518<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0430 \u0447\u043b\u0435\u043d\u0430 \u0442\u044f\u043d\u0443\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: &#171;\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c&#187; &#8212; \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435, &#171;\u0448\u0442\u0440\u0430\u0444&#187; &#8212; \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438<\/p>\n<p><strong>\u0424\u043e\u0440\u043c\u0443\u043b\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/strong><\/p>\n<p>\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a: <\/p>\n<pre><code class=\"cs\">\u041f\u043e p[f]:  \u2202(e\u00b2)\/\u2202p[f] = \u22122\u2022e\u2022q[f]      \u2202(\u03bb\u2022p[f]\u00b2)\/\u2202p[f] = +2\u2022\u03bb\u2022p[f]          -  p[f] += lr \u2022 ( e\u2022q[f] \u2212 \u03bb\u2022p[f] )\u041f\u043e q[f]:  -  q[f] += lr \u2022 ( e\u2022p[f] \u2212 \u03bb\u2022q[f] )       (p[f] \u0431\u0435\u0440\u0451\u043c \u0441\u0442\u0430\u0440\u043e\u0435)\u041f\u043e b_user: \u2202(e\u00b2)\/\u2202b_user = \u22122\u2022e         -  b_user += lr \u2022 ( e \u2212 \u03bb\u2022b_user )\u041f\u043e b_film:                              -  b_film += lr \u2022 ( e \u2212 \u03bb\u2022b_film )<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0432\u043e\u0439\u043a\u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0432 lr &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u043e\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 &#8212; \u0441\u0432\u043e\u0439 \u0448\u0442\u0440\u0430\u0444\u043d\u043e\u0439 \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u2212 \u03bb \u00b7 \u044d\u0442\u043e\u0442_\u0436\u0435_\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>\u0412\u0441\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443:<\/p>\n<pre><code class=\"cs\">\/\/ \u0177 = \u03bc + b_user + b_film + p \u2022 qdouble prediction = globalAverage + userBias + movieBias;for (int f = 0; f &lt; factorsCount; f++){    prediction += p[f] * q[f];}\/\/ e = r - \u0177double error = rating - prediction;\/\/ SGD updatefor (int f = 0; f &lt; factorsCount; f++){    double oldP = p[f];    p[f] += learningRate * (error * q[f] - lambda * p[f]);    q[f] += learningRate * (error * oldP - lambda * q[f]);}userBias += learningRate * (error - lambda * userBias);movieBias += learningRate * (error - lambda * movieBias);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0435\u0441\u0442\u044c \u0448\u0442\u0440\u0430\u0444\u043d\u043e\u0439 \u0447\u043b\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b\u0438, \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u044c: \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f, \u0430 \u043d\u0435 \u043e\u043a\u043e\u043b\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e. \u041e\u0431\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0431\u0438\u0430\u0441\u044b \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f.<\/p>\n<h2>\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0437\u0443\u0431\u0440\u0451\u0436\u043a\u0438<\/h2>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f <\/strong><\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u044b p \u0438 q \u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f \u2014 \u0438 \u0443\u0436\u0435 \u043e\u0442\u0442\u0443\u0434\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 \u201c\u0440\u0430\u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u201d. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f, \u0430 \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u043e\u043a\u043e\u043b\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u0438? \u0412\u043e\u043f\u0440\u043e\u0441 \u0440\u0435\u0437\u043e\u043d\u043d\u044b\u0439, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c.<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0446\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0432 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u043e\u0446\u0435\u043d\u043a\u0443? <\/strong><\/p>\n<p>\u041b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c: \u0440\u0430\u0437 \u0432\u0441\u0435 \u0441\u0442\u0430\u0432\u044f\u0442 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c ~3,5, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u043e\u043a\u043e\u043b\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e, \u0430 \u043d\u0435 \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f?<\/p>\n<p><strong>\u0426\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 &#8212; \u043f\u043b\u043e\u0445\u043e.<\/strong> \u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 &#8212; \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b: \u0447\u0442\u043e\u0431\u044b p\u00b7q \u0434\u0430\u0432\u0430\u043b\u043e ~3,5 \u0434\u043b\u044f <strong>\u043a\u0430\u0436\u0434\u043e\u0439 <\/strong>\u043f\u0430\u0440\u044b, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0442\u0430\u043a \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442. \u041f\u043b\u044e\u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0434\u0430\u0451\u0442 &#171;\u0434\u0451\u0440\u0433\u0430\u043d\u044b\u0435&#187; \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b.<\/p>\n<blockquote>\n<p>\u0417\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 &#8212; \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0447\u0442\u043e \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u0433\u0432\u043e\u0437\u0434\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c: \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. &#171;\u041e\u0431\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c&#187; \u043f\u0440\u043e\u0449\u0435 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u03bc, \u0430 p\u00b7q \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u0435\u0442, &#8212; \u0442\u043e\u043d\u043a\u0438\u0445 \u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439.    <\/p>\n<\/blockquote>\n<p><strong>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u043c.<\/strong> \u0420\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 &#171;\u0443\u0440\u043e\u0432\u0435\u043d\u044c&#187; \u0438 &#171;\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435&#187;:<\/p>\n<pre><code class=\"cs\">r\u0302 =      \u03bc + b_user + b_film              + p\u2022q     \u2514\u2500\u2500\u2500\u2500 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u2500\u2500\u2500\u2500\u2518   \u2514\u2500 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u2500\u2518<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ul>\n<li>\n<p><strong>\u03bc<\/strong> &#8212; \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0441\u0435\u0445 \u043e\u0446\u0435\u043d\u043e\u043a (\u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u043d\u0435 \u043e\u0431\u0443\u0447\u0430\u0435\u0442\u0441\u044f);<\/p>\n<\/li>\n<li>\n<p><strong>b_user<\/strong> &#8212; \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u043e\u0431\u0440\u0435\u0435\/\u0441\u0442\u0440\u043e\u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p><strong>b_film<\/strong> &#8212; \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u043c \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>p\u00b7q<\/strong> &#8212; \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 <em>\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435<\/em>: \u043b\u044e\u0431\u0438\u0442 \u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u043c \u0441\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c p\u00b7q \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <strong>\u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435<\/strong> \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0430 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u043d\u043e\u043b\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <strong>\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c<\/strong>. \u0410 \u03bc \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 &#8212; \u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u043c ~3,5, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u0447\u0438\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 SVD \u0432 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<blockquote>\n<p>\u041d\u0430 \u0436\u0438\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u0410\u043d\u044f \u043e\u0431\u043e\u0436\u0430\u0435\u0442 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u0438 \u043d\u0435 \u0432\u044b\u043d\u043e\u0441\u0438\u0442 \u044d\u043a\u0448\u043d, \u043d\u043e \u0431\u043e\u0435\u0432\u0438\u043a &#171;\u041c\u0430\u0442\u0440\u0438\u0446\u0443&#187; \u0435\u0449\u0451 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0430. \u0427\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0436\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c? \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0443\u0436\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439: \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u03bc \u043f\u043b\u044e\u0441 \u0434\u043e\u0431\u0430\u0432\u043a\u0430 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e &#171;\u041c\u0430\u0442\u0440\u0438\u0446\u0443&#187; \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043b\u044e\u0431\u044f\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u2014 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043e\u043a\u043e\u043b\u043e 4. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u043b\u0435\u043d p\u00b7q \u043e\u0431\u044f\u0437\u0430\u043d &#171;\u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c&#187;, \u0447\u0442\u043e \u0410\u043d\u044f-\u0442\u043e \u044d\u043a\u0448\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442, \u0438 \u0443\u0442\u044f\u043d\u0443\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0443 \u0432\u043d\u0438\u0437. \u0411\u0438\u0430\u0441\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 &#171;\u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u043e \u0431\u043e\u043b\u044c\u043d\u0438\u0446\u0435&#187;, \u0430 p\u00b7q \u2014 \u0437\u0430 &#171;\u0430 \u0432\u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443&#187;.    <\/p>\n<\/blockquote>\n<h2>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p><strong>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430:<\/strong> \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u0442\u044c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, &#8212; \u044d\u0442\u043e \u0437\u0443\u0431\u0440\u0451\u0436\u043a\u0430 (\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435).<\/p>\n<p><strong>\u0418\u0434\u0435\u044f:<\/strong> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 <strong>\u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b<\/strong> (\u03bb \u00b7 \u2016p\u2016\u00b2 \u0438 \u0442.\u0434.). \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0432\u044b\u0433\u043e\u0434\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u043b\u0430\u0442\u0438\u0442 \u0448\u0442\u0440\u0430\u0444. \u0428\u0443\u043c \u0433\u0430\u0441\u0438\u0442\u0441\u044f, \u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<p>\u041d\u0430 \u043f\u0430\u043b\u044c\u0446\u0430\u0445: \u0448\u0442\u0440\u0430\u0444 \u03bb\u00b7p\u00b2 \u043f\u0440\u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u0451\u0442 \u0442\u044f\u0433\u0443 \u2212\u03bb\u00b7p &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0443\u0436\u0438\u043d\u043a\u0430, \u0442\u044f\u043d\u0443\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a \u043d\u0443\u043b\u044e. \u041e\u0442\u0441\u044e\u0434\u0430 \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u2212 \u03bb \u00b7 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 (\u0441\u043c. \u0432\u044b\u0432\u043e\u0434 \u0444\u043e\u0440\u043c\u0443\u043b \u0432\u044b\u0448\u0435).<\/p>\n<p><strong>\u0427\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435: \u0431\u044b\u043b\u043e &#8212; \u0441\u0442\u0430\u043b\u043e<\/strong><\/p>\n<p>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0434\u0438\u043d &#171;\u0445\u0432\u043e\u0441\u0442\u0438\u043a&#187; \u2212 \u03bb\u00b7\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u043e\u043d \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0447\u0443\u0442\u044c \u0442\u044f\u043d\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043a \u043d\u0443\u043b\u044e. \u0421\u0440\u0430\u0432\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043d\u0435\u0451 \u0438 \u0441 \u043d\u0435\u0439:<\/p>\n<pre><code class=\"cs\">\/\/ \u0431\u044b\u043b\u043e \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0430 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435:p[f]     += lr *  error * q[f];userBias += lr *  error;\/\/ \u0441\u0442\u0430\u043b\u043e \u2014 \u043f\u043b\u044e\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f:p[f]     += lr * (error * q[f] - lambda * p[f]);userBias += lr * (error        - lambda * userBias);\/\/                              \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\/\/                            \u043f\u0440\u0443\u0436\u0438\u043d\u043a\u0430 \u043a \u043d\u0443\u043b\u044e<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u03bb (\u043b\u044f\u043c\u0431\u0434\u0430) &#8212; \u0441\u0438\u043b\u0430 \u0448\u0442\u0440\u0430\u0444\u0430. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f &#8212; \u0432\u0441\u0451 \u0437\u0430\u043d\u0443\u043b\u0438\u0442\u0441\u044f (\u043d\u0435\u0434\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435); \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f &#8212; \u0437\u0443\u0431\u0440\u0451\u0436\u043a\u0430. \u0422\u0438\u043f\u0438\u0447\u043d\u043e \u03bb \u2248 0.05-0.1.<\/p>\n<p><strong>\u0427\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0446\u0438\u0444\u0440\u0430\u0445:<\/strong> \u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 RMSE \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 <strong>\u043d\u0435<\/strong> \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043d\u043e\u043b\u044c, \u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0448\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 0,1 \u0432\u043c\u0435\u0441\u0442\u043e 0,01). \u0418 \u044d\u0442\u043e <strong>\u0445\u043e\u0440\u043e\u0448\u043e<\/strong> &#8212; \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0437\u0443\u0431\u0440\u0438\u0442\u044c.<\/p>\n<p><strong>\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u0431\u0438\u0430\u0441\u0430\u043c\u0438 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 (C#):<\/strong><\/p>\n<pre><code class=\"cs\">double error = r.Score - model.Predict(r.UserId, r.MovieId);model.UserBias[r.UserId]  += lr * (error - lambda * model.UserBias[r.UserId]);model.MovieBias[r.MovieId] += lr * (error - lambda * model.MovieBias[r.MovieId]);for (int f = 0; f &lt; factorCount; f++){    double oldP = p[f];    p[f] += lr * (error * q[f] - lambda * p[f]);    q[f] += lr * (error * oldP - lambda * q[f]);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u041a\u0430\u043a \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c: train \u0438 test<\/h2>\n<p>RMSE \u043d\u0430 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 <strong>\u0432\u0440\u0451\u0442<\/strong>: \u043c\u0435\u0440\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0443\u0447\u0438\u043b\u0441\u044f, &#8212; \u043a\u0430\u043a \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0430\u043c, \u043e\u0442\u0432\u0435\u0442\u044b \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043b.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435: \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 RMSE \u0443\u043f\u0430\u043b \u043f\u043e\u0447\u0442\u0438 \u0434\u043e \u043d\u0443\u043b\u044f, \u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2014 \u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0432\u044b\u0443\u0447\u0438\u043b\u0430 \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0435\u0451 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a \u043d\u0435 \u0438\u0437\u043c\u0435\u0440\u0438\u0448\u044c.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong> \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a.<\/p>\n<pre><code class=\"cs\">\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438        \u251c\u2500\u2500\u25ba  TRAIN (~80%)  - \u043d\u0430 \u043d\u0435\u0439 \u0423\u0427\u0418\u041c\u0421\u042f        \u2514\u2500\u2500\u25ba  TEST  (~20%)  - \u0435\u0451 \u041f\u0420\u042f\u0427\u0415\u041c, \u043d\u0430 \u043d\u0435\u0439 \u041f\u0420\u041e\u0412\u0415\u0420\u042f\u0415\u041c<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ul>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0430\u0435\u0442\u0441\u044f <strong>\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 train<\/strong> \u0438 \u043d\u0435 \u0432\u0438\u0434\u0438\u0442 test.<\/p>\n<\/li>\n<li>\n<p><strong>Test RMSE<\/strong> &#8212; \u0447\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430: \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 = \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 train RMSE \u0438 test RMSE.<\/strong><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 .NET: \u043a\u0430\u043a \u0434\u0435\u043b\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/strong><\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044c: \u0435\u0441\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0432 test \u0432\u0441\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432 train \u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u2014 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0447\u0435\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043b\u0430\u0434\u0451\u043c \u0432 train \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0435 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0434\u043e 80%:<\/p>\n<pre><code class=\"cs\">var random = new Random(42);   \/\/ \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 seed \u2014 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\/\/ \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0435 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \"\u043e\u0441\u0438\u0440\u043e\u0442\u0438\u0442\u044c\"var trainSet = ratings.GroupBy(r =&gt; r.UserId)    .Select(g =&gt; g.OrderBy(_ =&gt; random.Next()).First()).ToList();int target = (int)(ratings.Count * 0.8);var chosen = trainSet.ToHashSet();trainSet.AddRange(ratings.Where(r =&gt; !chosen.Contains(r))    .OrderBy(_ =&gt; random.Next()).Take(target - trainSet.Count));var testSet = ratings.Where(r =&gt; !trainSet.Contains(r)).ToList();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0417\u043e\u043b\u043e\u0442\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#8212; \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0442\u0435\u0447\u0435\u043a (no leakage):<\/strong> test \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438, <strong>\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u03bc \u0438 \u0431\u0438\u0430\u0441\u044b<\/strong>. \u03bc \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043f\u043e train, \u0430 \u043d\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c.<\/p>\n<p><strong>Cold start:<\/strong> \u0435\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0444\u0438\u043b\u044c\u043c\u0430 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u0432 train, \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u0447\u0435\u043c. \u0422\u0430\u043a\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u0432 test <strong>\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c<\/strong> (\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438). \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043b\u044e\u0431\u043e\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0448\u043a\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\/\u0442\u043e\u0432\u0430\u0440\u043e\u0432.<\/p>\n<p>RMSE \u043d\u0430 test \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0447\u0442\u043e \u0438 \u043d\u0430 train, \u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438, \u0447\u044c\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0444\u0438\u043b\u044c\u043c\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0430 \u2014 \u0438\u043d\u0430\u0447\u0435 Predict \u043d\u0435 \u043d\u0430 \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0435\u0442\u044c\u0441\u044f (\u0430 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e):<\/p>\n<pre><code class=\"cs\">static double Rmse(List&lt;MlRating&gt; ratings, MfModel model){    double sumSq = 0; int used = 0;    foreach (var r in ratings)    {        if (!model.UserVectors.ContainsKey(r.UserId) ||            !model.MovieVectors.ContainsKey(r.MovieId))            continue;                      \/\/ cold start \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c        double e = r.Score - model.Predict(r.UserId, r.MovieId);        sumSq += e * e; used++;    }    return used == 0 ? 0 : Math.Sqrt(sumSq \/ used);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0427\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0446\u0438\u0444\u0440\u044b (\u043d\u0430 \u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u044b\u0445 10 \u043e\u0446\u0435\u043d\u043a\u0430\u0445):<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u043e\u0434\u0435\u043b\u044c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Train RMSE<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Test RMSE<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0431\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u03bb=0)<\/p>\n<\/td>\n<td>\n<p align=\"left\">~0<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,26<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 (\u03bb=0.1)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,09<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,25<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 train \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043d\u043e\u043b\u044c (\u0437\u0443\u0431\u0440\u0451\u0436\u043a\u0430), \u0430 test \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 &#8212; \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u043d\u043e \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 test (3,26 &#8212; 2,25). \u0412\u044b\u0432\u043e\u0434: <strong>\u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0430\u044e\u0442<\/strong> &#8212; \u043d\u0430 10 \u043e\u0446\u0435\u043d\u043a\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u044c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430, \u0438 \u043b\u0438\u0448\u044c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0451 \u0437\u0430\u0438\u0433\u0440\u0430\u0435\u0442.<\/p>\n<blockquote>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0430\u0445 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e? \u042d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043a\u0440\u0438\u0432\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u043c \u0441 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c\u044e \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438: \u0441\u043a\u0432\u043e\u0437\u044c \u0441\u0430\u043c\u0438 \u0442\u043e\u0447\u043a\u0438 \u043f\u0440\u043e\u0439\u0434\u0451\u0448\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043a\u0440\u0438\u0432\u0430\u044f \u0443\u0439\u0434\u0451\u0442 \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442, \u0430 \u043d\u0435 \u043e\u0431\u043e\u0431\u0449\u0430\u0435\u0442. \u0421\u043f\u0430\u0441\u0430\u0435\u0442 \u043b\u0438\u0431\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043b\u0438\u0431\u043e \u0431\u043e\u043b\u0435\u0435 \u0436\u0451\u0441\u0442\u043a\u0430\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f.    <\/p>\n<\/blockquote>\n<p>\u041d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0435 \u043e\u0446\u0435\u043d\u043e\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u0436\u0435 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 &#171;\u0441\u0442\u0430\u0432\u044c \u0432\u0441\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0435&#187;: \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e. \u041f\u043e\u0440\u0430 \u0432\u044b\u0439\u0442\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0436\u0438\u0432\u044b\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438<\/h2>\n<p>\u041d\u0430 <strong>MovieLens<\/strong> (~100 000 \u043e\u0446\u0435\u043d\u043e\u043a, 610 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, ~9700 \u0444\u0438\u043b\u044c\u043c\u043e\u0432) \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e: \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043a\u0443\u0441\u043e\u0432. Test RMSE \u0432\u044b\u0445\u043e\u0434\u0438\u0442 ~0,85 \u043f\u0440\u043e\u0442\u0438\u0432 baseline &#171;\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0439 \u0441\u0440\u0435\u0434\u043d\u0435\u0435&#187; ~1,04 &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e <strong>\u043f\u043e\u0431\u0435\u0436\u0434\u0430\u0435\u0442<\/strong>. \u0418 k \u0440\u0430\u0441\u0442\u0451\u0442 \u0441 2 \u0434\u043e 20-50.<\/p>\n<h3>\u041e\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043a \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e<\/h3>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f &#8212; \u044d\u0442\u043e <strong>\u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a<\/strong>, \u0430 \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f = \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e:<\/p>\n<ol>\n<li>\n<p> \u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b = \u0444\u0438\u043b\u044c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041d\u0415 \u0441\u043c\u043e\u0442\u0440\u0435\u043b.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440 \u043a\u0430\u0436\u0434\u043e\u0433\u043e = model.Predict(user, movie).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0423\u0411\u042b\u0412\u0410\u041d\u0418\u042e, \u0432\u0437\u044f\u0442\u044c \u0442\u043e\u043f-N.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u043f-10 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441\u0432\u044f\u0437\u043d\u044b\u043c: &#171;Casablanca&#187;, &#171;Seven Samurai&#187;, &#171;Rear Window&#187; &#8212; \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430\/\u0434\u0440\u0430\u043c\u044b. \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u043b\u043e\u0432\u0438\u043b\u0430 \u0432\u043a\u0443\u0441 \u0438 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0430 \u043f\u043e\u0445\u043e\u0436\u0435\u0435.<\/p>\n<p><strong>Popularity bias:<\/strong> \u0442\u043e\u043f \u0447\u0430\u0441\u0442\u043e \u0441\u043c\u0435\u0449\u0451\u043d \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 &#171;\u0432\u0441\u0435\u043c\u0438 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0438&#187; &#8212; \u0443 \u0442\u0430\u043a\u0438\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 b_film, \u0438 \u043e\u043d \u0442\u044f\u043d\u0435\u0442 \u0438\u0445 \u043d\u0430\u0432\u0435\u0440\u0445 \u0443 \u043c\u043d\u043e\u0433\u0438\u0445. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043c\u0435\u0441\u0442\u0430\u043c\u0438 &#171;\u043e\u0431\u0449\u0435\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0435&#187;, \u0430 \u043d\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043b\u0438\u0447\u043d\u044b\u0435. \u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e MF, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 RMSE.<\/p>\n<p><strong>\u041a\u043e\u0434: \u0442\u043e\u043f-N \u043f\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044e \u0441\u0440\u0435\u0434\u0438 \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e:<\/strong><\/p>\n<pre><code class=\"cs\">var seen = ratings.Where(r =&gt; r.UserId == targetUser).Select(r =&gt; r.MovieId).ToHashSet();foreach (var film in ratings.GroupBy(p =&gt; p.MovieId)             .Where(p =&gt; !seen.Contains(p.Key) &amp;&amp; p.Count() &gt;= 20).Select(r =&gt; r.Key)){    films.Add((film, model.Predict(targetUser, film)));}var top = films.OrderByDescending(p =&gt; p.Value).Select(p =&gt; p.Film).Take(topN);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f targetUser:<\/strong><\/p>\n<blockquote>\n<p> Lawrence of Arabia (1962)<br \/> Streetcar Named Desire, A (1951)<br \/> Philadelphia Story, The (1940)<br \/> Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1964)<br \/> There Will Be Blood (2007)<br \/> Rear Window (1954)<br \/> Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)<br \/> Cool Hand Luke (1967)<br \/> Seven Samurai (Shichinin no samurai) (1954)<br \/> Casablanca (1942)<\/p>\n<\/blockquote>\n<p><strong>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445:<\/strong><\/p>\n<pre><code class=\"cs\">Train RMSE 0,7685Test RMSE  0,8497\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e \u0432 test (cold start): 831<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0433\u043e\u0442\u043e\u0432 \u2014 \u043d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0445\u043e\u0440\u043e\u0448? RMSE \u043c\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0438, \u0430 \u043d\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0445\u0443\u0448\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u0430. \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0441\u0430\u043c\u0438\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439.<\/p>\n<h2>\u0425\u043e\u0440\u043e\u0448 \u043b\u0438 \u043d\u0430\u0448 \u0442\u043e\u043f: \u043c\u0435\u0442\u0440\u0438\u043a\u0430 Precision@K<\/h2>\n<p>RMSE \u043c\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u0447\u0435\u0447\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0438 \u0432\u0430\u0436\u0435\u043d <strong>\u0432\u0435\u0440\u0445 \u0441\u043f\u0438\u0441\u043a\u0430<\/strong>. Precision@K \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442: <strong>\u0438\u0437 K \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0448\u043b\u0438?<\/strong><\/p>\n<pre><code class=\"cs\">Precision@K = |Hits| \/ K<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0440\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430:<\/p>\n<ul>\n<li>\n<p><strong>Recommended (\u0442\u043e\u043f-K)<\/strong> &#8212; \u0447\u0442\u043e \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>Relevant<\/strong> &#8212; \u0444\u0438\u043b\u044c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0446\u0435\u043d\u0438\u043b \u0432\u044b\u0441\u043e\u043a\u043e \u0432 <strong>test<\/strong>;<\/p>\n<\/li>\n<li>\n<p><strong>Hits<\/strong> &#8212; \u0438\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>Precision@K \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u044e\u0442 \u043f\u043e \u0432\u0441\u0435\u043c. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e 0,0 \/ 0,1 \/ 0,2\u2026 &#8212; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u0440\u0443\u0431\u043e \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0443\u0434\u0438\u0442\u044c \u043e \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043f\u043e \u0441\u043e\u0442\u043d\u044f\u043c \u043b\u044e\u0434\u0435\u0439 \u0434\u0430\u0451\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0443\u044e \u0446\u0438\u0444\u0440\u0443. \u041f\u043e\u043a\u0430\u0437 \u0442\u043e\u043f\u0430 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0440\u0438\u0442\u0435\u043b\u044f &#8212; \u044d\u0442\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0430\u044f \u0432\u0438\u0442\u0440\u0438\u043d\u0430, \u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0430 &#8212; \u043f\u0440\u043e \u0432\u0441\u044e \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044e \u0441\u0440\u0430\u0437\u0443.    <\/p>\n<\/blockquote>\n<p>Precision \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f, \u0430 &#171;\u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435&#187; &#8212; \u044d\u0442\u043e \u0434\u0430\/\u043d\u0435\u0442. \u0417\u043d\u0430\u0447\u0438\u0442 \u043e\u0446\u0435\u043d\u043a\u0438 (0,5-5,0) \u043d\u0430\u0434\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u043c\u0435\u0442\u043a\u0443 <strong>\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 \/ \u043d\u0435\u0442<\/strong>. \u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0447\u0435\u0440\u0442\u0443 \u043d\u0430 4,0:<\/p>\n<pre><code class=\"cs\">\u043e\u0446\u0435\u043d\u043a\u0430 &gt;= 4.0  -  \u0420\u0415\u041b\u0415\u0412\u0410\u041d\u0422\u041d\u042b\u0419   (\u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f)\u043e\u0446\u0435\u043d\u043a\u0430 &lt;  4.0  -  \u043d\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 (\u0442\u0430\u043a \u0441\u0435\u0431\u0435)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u0447\u0435\u043c: Precision \u043c\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u043b\u044e <em>\u0445\u043e\u0440\u043e\u0448\u0438\u0445<\/em> \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u043c \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u043c, \u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u0430 \u0441 \u043e\u0446\u0435\u043d\u043a\u043e\u0439 2 \u0437\u0430\u0441\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u0431\u044b \u043a\u0430\u043a \u0443\u0441\u043f\u0435\u0445 &#8212; \u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0435\u0440\u0451\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u044e (4-5 \u0437\u0432\u0451\u0437\u0434). \u0422\u0440\u043e\u0439\u043a\u0430 &#8212; &#171;\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0435 \u0442\u043e&#187;, \u043d\u0435 \u0432 \u0441\u0447\u0451\u0442. \u0421\u0430\u043c\u043e \u0447\u0438\u0441\u043b\u043e 4,0 &#8212; \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435; \u043c\u043e\u0436\u043d\u043e 3,5 (\u043c\u044f\u0433\u0447\u0435) \u0438\u043b\u0438 4,5 (\u0441\u0442\u0440\u043e\u0436\u0435).<\/p>\n<h4>\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 &#8212; \u0447\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0437 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432<\/h4>\n<p>\u0418\u0437 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b \u0432 <strong>train<\/strong>. \u0424\u0438\u043b\u044c\u043c\u044b \u0438\u0437 <strong>test<\/strong> \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e test \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u043f\u0440\u043e\u0441\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438\u0437 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043f\u043e\u043f\u0430\u043b\u0438 \u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b \u0432 Top-K.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u0441\u043e\u043a\u043e \u043e\u0446\u0435\u043d\u0438\u043b &#171;\u041c\u0430\u0442\u0440\u0438\u0446\u0443&#187;, \u043d\u043e \u044d\u0442\u0430 \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 test, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f &#171;\u041c\u0430\u0442\u0440\u0438\u0446\u0430&#187; \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043f\u0435\u0440\u0432\u044b\u0435 10 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439, \u044d\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c test \u0438\u0437 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0438\u043b\u044c\u043c\u044b, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p><strong>\u041a\u043e\u0434: \u0441\u0440\u0435\u0434\u043d\u0438\u0439 Precision@K \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c:<\/strong><\/p>\n<pre><code class=\"cs\">foreach (var (userId, relevant) in relevantMoviesByUser){    var alreadySeen = seenMoviesByUser.GetValueOrDefault(userId, new());    var candidates  = model.MovieVectors.Keys.Where(m =&gt; !alreadySeen.Contains(m)).ToList();    var topK = candidates.OrderByDescending(m =&gt; model.Predict(userId, m)).Take(topN);    int hits = topK.Count(m =&gt; relevant.Contains(m));    sumPrecision += (double)hits \/ topN;    sumRandom    += (double)relevant.Count \/ candidates.Count;    evaluated++;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/strong><\/p>\n<pre><code class=\"cs\">Precision@10: 0,0161 (\u043f\u043e 591 \u044e\u0437\u0435\u0440\u0430\u043c)\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 baseline: 0,0019   (\u043c\u043e\u0434\u0435\u043b\u044c ~8,5x \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0443\u0447\u0430\u044f)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c<\/p>\n<p>\u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e baseline \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u0430:<\/p>\n<p><code>|Relevant| \/ |Candidates|<\/code><\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435:<\/p>\n<p><code>Precision_random \u2248 0,0019<\/code><\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430:<\/p>\n<p><code>Precision@10 \u2248 0,0161<\/code><\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c:<\/p>\n<p><code>0,0161 \/ 0,0019 \u2248 8,5<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 <strong>8,5 \u0440\u0430\u0437\u0430 \u0447\u0430\u0449\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430<\/strong>.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 SVD \u2014 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0448 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435<\/h2>\n<p>Funk SVD \u043d\u0430\u0437\u0432\u0430\u043d\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 &#8212; <strong>Simon Funk<\/strong> (\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0411\u0440\u044d\u043d\u0434\u0438\u043d\u0430 \u0423\u044d\u0431\u0431\u0430). \u0412 2006 \u0433\u043e\u0434\u0443 \u043d\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0435 <strong>Netflix Prize<\/strong> ($1 \u043c\u043b\u043d \u0437\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043d\u0430 10%) \u043e\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 &#8212; \u0440\u043e\u0432\u043d\u043e \u0442\u0443 \u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u043c \u0441\u043f\u0443\u0441\u043a\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0438.<\/p>\n<p>\u041e\u043d \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e &#171;SVD&#187; \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0444\u043e\u0440\u043c\u0435 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e SVD (\u0434\u0432\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432). \u041d\u043e \u044d\u0442\u043e <strong>\u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 SVD<\/strong> &#8212; \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0438 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0435\u0451 \u0442\u043e\u0447\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0430\u043b\u0433\u0435\u0431\u0440\u0443, \u0430 \u043c\u0435\u0442\u043e\u0434 \u0424\u0443\u043d\u043a\u0430 \u043e\u0431\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044f \u0434\u044b\u0440\u043a\u0438. \u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 &#171;Funk SVD&#187; \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<p><strong>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SVD<\/strong> \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 A = U\u00b7\u03a3\u00b7V\u1d40. Truncated SVD \u0440\u0430\u043d\u0433\u0430 k (\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 top-k \u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b) \u0434\u0430\u0451\u0442 \u043b\u0443\u0447\u0448\u0435\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u043d\u0433\u043e\u043c k.<\/p>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439:<\/strong> \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 SVD \u043d\u0443\u0436\u043d\u0430 <strong>\u043f\u043e\u043b\u043d\u0430\u044f<\/strong> \u043c\u0430\u0442\u0440\u0438\u0446\u0430. \u0423 \u043d\u0430\u0441 98% \u043f\u0443\u0441\u0442\u043e &#8212; \u0434\u044b\u0440\u043a\u0438 \u043d\u0430\u0434\u043e <strong>\u0432\u044b\u0434\u0443\u043c\u0430\u0442\u044c<\/strong> (\u0438\u043c\u043f\u0443\u0442\u0430\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u043d\u0438\u043c). \u0418 \u0432\u043e\u0442 \u0440\u0430\u0441\u043f\u043b\u0430\u0442\u0430:<\/p>\n<p>SVD \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e <strong>\u0432\u0441\u0435\u043c<\/strong> \u044f\u0447\u0435\u0439\u043a\u0430\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0435. \u041e\u043d \u0442\u0440\u0430\u0442\u0438\u0442 \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u043d\u043a\u0443 \u043f\u043e\u0434 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0435 &#171;\u0441\u0440\u0435\u0434\u043d\u0438\u0435&#187;. Funk SVD \u0443\u0447\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p><strong>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0446\u0438\u0444\u0440\u0430\u0445<\/strong> (\u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0434\u043d\u0430\u0431\u043e\u0440\u0435 test &#8212; \u0438\u043d\u0430\u0447\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0447\u0435\u0441\u0442\u043d\u043e\u0435):<\/p>\n<pre><code class=\"cs\">\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SVD RMSE:        0,8741Funk SVD RMSE (\u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440):  0,8265<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 Funk SVD \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0442\u043e\u0447\u043d\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e SVD.<\/p>\n<p><em>\u041c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043a\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SVD \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442. \u041d\u043e \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 SVD \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 &#171;\u0443\u0441\u0435\u0447\u044c \u0440\u0430\u043d\u0433&#187;, \u043e\u0442\u0432\u043b\u0435\u0447\u0451\u043c\u0441\u044f \u043d\u0430 \u0447\u0438\u0441\u0442\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u043f\u043e\u043b\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0431\u0435\u0437 \u0434\u044b\u0440\u043e\u043a.<\/em><\/p>\n<p><strong>\u0411\u043e\u043d\u0443\u0441 &#8212; \u0442\u0435\u043e\u0440\u0435\u043c\u0430 \u042d\u043a\u043a\u0430\u0440\u0442\u0430-\u042f\u043d\u0433\u0430 \u0432\u0436\u0438\u0432\u0443\u044e.<\/strong> \u041d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 4\u00d74 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u043d\u0433\u043e\u043c k \u0440\u0430\u0432\u043d\u0430 \u043a\u043e\u0440\u043d\u044e \u0438\u0437 \u0441\u0443\u043c\u043c\u044b \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 <em>\u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445<\/em> \u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<pre><code class=\"cs\">\u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430: 10,63,  8,04,  1,56,  0,06\u0440\u0430\u043d\u0433 2: \u043e\u0448\u0438\u0431\u043a\u0430 = \u221a(1,56\u00b2 + 0,06\u00b2) = 1,56   \u2190 \u0440\u043e\u0432\u043d\u043e \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e &#171;\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b&#187; \u0442\u0435\u0440\u044f\u0435\u0448\u044c, \u043e\u0431\u0440\u0435\u0437\u0430\u044f \u0440\u0430\u043d\u0433.<\/p>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 .NET:<\/h3>\n<p>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 SVD \u0432 .NET \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u2014 \u0441\u0442\u0430\u0432\u044f\u0442 \u043f\u0430\u043a\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: dotnet add package MathNet.Numerics. \u0414\u0430\u043b\u044c\u0448\u0435 M.Svd() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 U, S (\u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430) \u0438 V\u1d40, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 (\u0441\u043c. \u043a\u043e\u0434 \u043d\u0438\u0436\u0435).<\/p>\n<p><strong>\u041a\u043e\u0434: \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u0443\u0441\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e SVD (MathNet.Numerics):<\/strong><\/p>\n<pre><code class=\"cs\">static Matrix&lt;double&gt; Reconstruct(Svd&lt;double&gt; svd, int rank, int rows, int cols){    var uk = svd.U.SubMatrix(0, rows, 0, rank);                                    \/\/ m\u00d7k    var sk = Matrix&lt;double&gt;.Build.DiagonalOfDiagonalVector(svd.S.SubVector(0, rank)); \/\/ k\u00d7k    var vk = svd.VT.SubMatrix(0, rank, 0, cols);                                   \/\/ k\u00d7n    return uk * sk * vk;                                                           \/\/ \u00c2 = m\u00d7n}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0440\u0430\u0437\u043c\u0438\u043d\u043a\u0430 4\u00d74 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 MovieLens:<\/strong><\/p>\n<pre><code class=\"cs\">--- G1: SVD \u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b 4\u00d74 ---\u0421\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430: 10,63, 8,04, 1,56, 0,06\u0440\u0430\u043d\u0433 1: \u043e\u0448\u0438\u0431\u043a\u0430 (Frobenius) 8,188\u0440\u0430\u043d\u0433 2: \u043e\u0448\u0438\u0431\u043a\u0430 (Frobenius) 1,563\u0440\u0430\u043d\u0433 3: \u043e\u0448\u0438\u0431\u043a\u0430 (Frobenius) 0,06--- G2: \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SVD vs Funk SVD ---\u041f\u043b\u043e\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430: 610 \u044e\u0437\u0435\u0440\u043e\u0432 \u00d7 321 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SVD RMSE:        0,8741Funk SVD RMSE (\u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440): 0,8265  (\u043f\u043e 6826 \u043e\u0446\u0435\u043d\u043a\u0430\u043c)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u0413\u0434\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u0445?<\/h2>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0440\u0430\u0434\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432. \u0422\u0435 \u0436\u0435 \u0442\u0440\u0438 \u043a\u0438\u0442\u0430 \u2014 SVD\/\u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u0447\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0432\u043d\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u043b\u0435\u0436\u0430\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0440\u0438\u0441\u043a-\u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430 \u0438 \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430<\/p>\n<h4>\u0421\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b<\/h4>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0442\u0443 \u0436\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u0443, \u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435: \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0430 \u0430\u043a\u0442\u0438\u0432\u044b; \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043d\u0435 \u0444\u0438\u043b\u044c\u043c\u044b, \u0430 \u0434\u043d\u0438; \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043d\u0435 \u043e\u0446\u0435\u043d\u043a\u0438, \u0430 \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0438. \u0420\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0442\u0435\u043c \u0436\u0435 SVD \u0438 \u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438: \u043f\u0435\u0440\u0432\u0430\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u043b\u043e\u0432\u0438\u0442 &#171;\u0440\u044b\u043d\u043e\u043a \u0432 \u0446\u0435\u043b\u043e\u043c&#187; (\u0432\u0441\u0435 \u0430\u043a\u0446\u0438\u0438 \u0434\u0432\u0438\u0436\u0443\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435), \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 &#8212; \u0441\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438 \u0441\u0442\u0438\u043b\u0435\u0432\u044b\u0435<\/p>\n<p>\u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u043b\u0430\u043b\u0430 \u0441 \u0436\u0430\u043d\u0440\u0430\u043c\u0438: \u0441\u0430\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b. \u041d\u0430 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u044f\u0442 \u0444\u0430\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 (Fama\u2013French, APT, \u0440\u0438\u0441\u043a-\u043c\u043e\u0434\u0435\u043b\u0438 Barra) \u2014 &#171;\u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430 \u2248 \u0435\u0451 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c&#187;, \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0448\u0430 \u043e\u0446\u0435\u043d\u043a\u0430 \u2248 p \u00b7 q<\/p>\n<h4>\u041f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 (\u0441\u0430\u043c\u044b\u0439 \u0446\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u043a \u0434\u043b\u044f \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430)<\/h4>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c: RMSE \u043d\u0430 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0440\u0451\u0442, \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0443\u0431\u0440\u0438\u0442 \u0438 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u0432\u0438\u0434\u0430\u043d\u043d\u043e\u043c? \u0412 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u0445 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0430 &#8212; \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0448\u0438\u043a\u0430\u0440\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0442\u0435\u0440\u044f\u0435\u0442 \u0434\u0435\u043d\u044c\u0433\u0438 \u0432\u0436\u0438\u0432\u0443\u044e. \u0412 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u0445 \u0442\u0435-\u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b: \u043e\u0431\u0443\u0447\u0438\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043d\u0430 &#171;\u0431\u0443\u0434\u0443\u0449\u0435\u043c&#187; \u0438 \u043d\u0435 \u043f\u043e\u0434\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 (look-ahead bias)<\/p>\n<p>\u041d\u0430\u0432\u044b\u043a &#171;\u043d\u0435 \u0432\u0435\u0440\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439 \u0446\u0438\u0444\u0440\u0435 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u2014 \u043c\u0435\u0440\u044f\u0439 \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u043d\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438&#187; \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u0435\u0435 \u043b\u044e\u0431\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u044b.<\/p>\n<p>\u0418 \u043f\u043e \u043c\u0435\u043b\u043e\u0447\u0438 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043e\u0434\u0438\u043d-\u0432-\u043e\u0434\u0438\u043d: \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a &#8212; \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044f; \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438\/\u0444\u0440\u043e\u0434 &#8212; \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0438\u0437\u043a\u043e\u0440\u0430\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432\u044b\u0434\u0430\u0451\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e; \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 &#8212; \u043f\u043e\u0434\u0431\u043e\u0440 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0443<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f Funk SVD \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430. \u041c\u044b \u0431\u0435\u0440\u0451\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443, \u0441\u0447\u0438\u0442\u0430\u0435\u043c prediction, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0444\u0438\u043b\u044c\u043c\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u0438 \u0437\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u043d\u0438\u043c &#8212; \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u0430\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 learningRate \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u044b &#171;\u0441\u043a\u0430\u043a\u0430\u0442\u044c&#187; \u0438 \u043c\u0435\u0448\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 &#8212; \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u043f\u043e\u0445: \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u043d\u043e, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0443\u0441\u043f\u0435\u0435\u0442 \u0432\u044b\u0443\u0447\u0438\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u0430 \u0435\u0441\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e \u0431\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1070664\/\">https:\/\/habr.com\/ru\/articles\/1070664\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442-\u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 C# &#8212; \u043e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 MovieLens. \u0418\u0437\u043b\u043e\u0436\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u043e \u0432 \u043c\u0435\u0441\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u0438\u044f, \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c: \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435\u0442\u0415\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430: \u0441\u0442\u0440\u043e\u043a\u0438 &#8212; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0441\u0442\u043e\u043b\u0431\u0446\u044b &#8212; \u0444\u0438\u043b\u044c\u043c\u044b, \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 &#8212; \u043e\u0446\u0435\u043d\u043a\u0438 (1-5).\u0422\u0438\u0442\u0430\u043d\u0438\u043a\u0420\u044d\u043c\u0431\u043e\u041c\u0430\u0442\u0440\u0438\u0446\u0430\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b\u0410\u043d\u044f51?5\u0411\u043e\u0440\u0438\u0441154?\u0412\u0438\u043a\u0430?45?\u0413\u0435\u043d\u04304??4\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u0443\u0441\u0442\u044b\u0435 &#8212; \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432\u0441\u0451. \u0417\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0443\u0441\u0442\u044b\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445. \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e \u0411\u043e\u0440\u0438\u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 &#171;\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b\u0443&#187; 2 &#8212; \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c; \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0436\u0435\u043c 5 &#8212; \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0434\u043e\u0433\u0430\u0434\u043a\u0430: \u0437\u0430 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b (latent factors) &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#171;\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u0438\u043b\u044c\u043c\u0435 \u044d\u043a\u0448\u043d\u0430&#187; \u0438 &#171;\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438&#187;. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u043c\u0430 \u0435\u0441\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f &#8212; \u0432\u043a\u0443\u0441 \u043f\u043e \u0442\u0435\u043c \u0436\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c. \u0422\u043e\u0433\u0434\u0430:\u043e\u0446\u0435\u043d\u043a\u0430(\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0444\u0438\u043b\u044c\u043c) \u2248 \u0432\u043a\u0443\u0441_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2022 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438_\u0444\u0438\u043b\u044c\u043c\u0430\u042d\u0442\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u041d\u0430 \u043d\u0451\u043c \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u0441\u0451.\u0412\u0435\u043a\u0442\u043e\u0440 \u0437\u0434\u0435\u0441\u044c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0447\u0438\u0441\u0435\u043b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c. \u0412\u043e\u0437\u044c\u043c\u0451\u043c 2 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430: [\u044d\u043a\u0448\u043d, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430]\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [1, 5]   (\u043c\u0430\u043b\u043e \u044d\u043a\u0448\u043d\u0430, \u043c\u043d\u043e\u0433\u043e \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438)\u0420\u044d\u043c\u0431\u043e   = [5, 0]   (\u043c\u043d\u043e\u0433\u043e \u044d\u043a\u0448\u043d\u0430, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u043d\u0435\u0442)\u0410\u043d\u044f   = [1, 5]     (\u043b\u044e\u0431\u0438\u0442 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443)\u0411\u043e\u0440\u0438\u0441 = [5, 1]     (\u043b\u044e\u0431\u0438\u0442 \u044d\u043a\u0448\u043d)\u0424\u0438\u043b\u044c\u043c\u044b \u0438 \u043b\u044e\u0434\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043e\u0434\u043d\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b.\u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (dot product) = \u043f\u0435\u0440\u0435\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043f\u0430\u0440\u043d\u043e \u0438 \u0441\u043b\u043e\u0436\u0438\u0442\u044c:\u0410\u043d\u044f \u2022 \u0422\u0438\u0442\u0430\u043d\u0438\u043a = 1\u20221 + 5\u20225 = 26   &#8212; \u0431\u043e\u043b\u044c\u0448\u043e\u0435\u0410\u043d\u044f \u2022 \u0420\u044d\u043c\u0431\u043e   = 1\u20225 + 5\u20220 = 5    &#8212; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435\u0411\u043e\u043b\u044c\u0448\u0435 = \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u043a\u0443\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0444\u0438\u043b\u044c\u043c\u0430\u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443\u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043b\u0438\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0443 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438 \u0443 \u0444\u0438\u043b\u044c\u043c\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0410\u043d\u044f \u043b\u044e\u0431\u0438\u0442 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443 (5), &#171;\u0422\u0438\u0442\u0430\u043d\u0438\u043a&#187; \u043f\u043e\u043b\u043e\u043d \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 (5), \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 &#8212; \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c    \u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b\u0410\u043d\u044f \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u044d\u043a\u0448\u043d, &#171;\u0420\u044d\u043c\u0431\u043e&#187; &#8212; \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u044d\u043a\u0448\u043d &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f &#8212; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e &#8212; \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u043e \u043b\u044e\u0431\u0443\u044e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u0442\u0430\u043b\u0438: \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u0441\u0451 \u0442\u043e\u0447\u043d\u0435\u0435\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f:static double DotProduct(double[] a, double[] b){    double result = 0;    for (int k = 0; k &lt; a.Length; k++)        result += a[k] * b[k];    return result;}\u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441: \u0447\u0438\u0441\u043b\u0430 \u0432\u0440\u043e\u0434\u0435 26 &#8212; \u044d\u0442\u043e \u043d\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e \u0448\u043a\u0430\u043b\u0435 1-5. \u041c\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0443\u0435\u0445\u0430\u043b. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0441\u0451 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0438 1-5, \u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u044d\u0442\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u041f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043e\u0446\u0435\u043d\u043e\u043a\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u043a\u0443\u0441\u043e\u0432 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 &#8212; \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0446\u0435\u043d\u043e\u043a. \u0418 \u043e\u043d\u0430 \u043f\u043e\u0447\u0442\u0438 \u043f\u0443\u0441\u0442\u0430\u044f: \u0432 \u043e\u043d\u043b\u0430\u0439\u043d \u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0446\u0435\u043d\u0438\u043b \u0441\u043e\u0442\u044b\u0435 \u0434\u043e\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f (\u043d\u0430 99%+ \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u044b\u0440\u043e\u043a).\u041a\u0430\u043a \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u044b\u0440\u043a\u0438? \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0434\u044b\u0440\u043e\u043a \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435:\u041f\u0435\u0440\u0432\u044b\u0439 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 0 \u043a\u0430\u043a \u043c\u0430\u0440\u043a\u0435\u0440 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u0438, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e &#171;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0444\u0438\u043b\u044c\u043c&#187; \u043e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 0. \u0412\u0442\u043e\u0440\u043e\u0439 &#8212; \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0441 null, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 99%+ \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 null. \u0422\u0440\u0435\u0442\u0438\u0439 &#8212; \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043e\u0446\u0435\u043d\u043e\u043a: \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b \u0444\u0438\u043b\u044c\u043c.\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434: \u0434\u044b\u0440\u043a\u0430 \u2260 \u043d\u043e\u043b\u044c. \u0414\u044b\u0440\u043a\u0430 &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u043c\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u0443\u0441\u0442\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0443\u043b\u0438: \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0435\u0440\u043f\u0435\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 (\u043e\u0446\u0435\u043d\u043a\u0430 0). \u0410 \u043e\u043d \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b! &#171;\u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b&#187; \u0438 &#171;\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u0442&#187; &#8212; \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u0438 \u043f\u0443\u0442\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f. \u0414\u044b\u0440\u043a\u0430 &#8212; \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442 &#171;0&#187;.    record Rating(int UserId, int MovieId, double Score);\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b \u0444\u0438\u043b\u044c\u043c, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 &#171;\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430&#187; \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0434\u043e\u043b\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u0446\u0435\u043d\u043e\u043a:(\u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u2212 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438) \/ \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438\u041f\u0440\u0438 \u044d\u0442\u043e\u043c null \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d\u041a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c &#171;\u044d\u043a\u0448\u043d=5&#187; \u0434\u043b\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f SVD-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439: \u043d\u0430\u0439\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 &#8212; \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0446\u0435\u043d\u043a\u0430\u043c\u0438.\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 &#171;\u044d\u043a\u0448\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187; \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u044d\u0442\u0438 [1, 5]. \u041c\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e:\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [\u044d\u043a\u0448\u043d=1, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430=5]\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438.\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0443 \u043d\u0430\u0441 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438: [\u044d\u043a\u0448\u043d, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430, \u2026]SVD \u0433\u043e\u0432\u043e\u0440\u0438\u0442:\u0414\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0444\u0438\u043b\u044c\u043c\u0430\u043c. \u042f \u0441\u0430\u043c \u043d\u0430\u0439\u0434\u0443 \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438    \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e:\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [1, 5]\u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435:\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [0.73, 0.41]\u0410 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u044d\u043a\u0448\u0435\u043d\u043e\u043c, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u0441 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439.\u041d\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e &#171;\u044d\u043a\u0448\u0435\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187;.\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 (\u044d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442):\u0424\u0438\u043b\u044c\u043c\u0411\u043e\u0440\u0438\u0441\u0410\u043d\u044f\u041c\u0430\u0442\u0440\u0438\u0446\u043052\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u044051\u0422\u0438\u0442\u0430\u043d\u0438\u043a25\u041c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442:\u0425\u043c. \u0415\u0441\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u0411\u043e\u0440\u0438\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u0434\u043d\u0438\u043c \u0444\u0438\u043b\u044c\u043c\u0430\u043c, \u0430 \u0410\u043d\u044f &#8212; \u0434\u0440\u0443\u0433\u0438\u043c\u041e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0441\u043a\u0440\u044b\u0442\u043e\u043c\u0443 \u0444\u0430\u043a\u0442\u043e\u0440\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u044b\u0439\u0442\u0438 \u0442\u0430\u043a\u0438\u043c\u0438:\u041a\u0442\u043e \/ \u0447\u0442\u043efactor 1\u0411\u043e\u0440\u0438\u04410.9\u0410\u043d\u044f0.1\u041c\u0430\u0442\u0440\u0438\u0446\u04300.9\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u04401.0\u0422\u0438\u0442\u0430\u043d\u0438\u043a0.1\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:DotProduct(\u0411\u043e\u0440\u0438\u0441, \u041c\u0430\u0442\u0440\u0438\u0446\u0430) \u2248 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043eDotProduct (\u0410\u043d\u044f, \u041c\u0430\u0442\u0440\u0438\u0446\u0430) \u2248 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e\u0410 \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0443\u0415\u0441\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043e\u0446\u0435\u043d\u043e\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442:\u0424\u0438\u043b\u044c\u043c\u041e\u0446\u0435\u043d\u043a\u0430 \u0410\u043d\u0438\u0422\u0438\u0442\u0430\u043d\u0438\u043a5\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b5\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u04401\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435:\u041a\u0442\u043e \/ \u0447\u0442\u043efactor 2\u0410\u043d\u044f0.9\u0411\u043e\u0440\u0438\u04410.1\u0422\u0438\u0442\u0430\u043d\u0438\u043a1.0\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b0.9\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u04400.1\u0418 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430:\u0424\u0438\u043b\u044c\u043c\u0444\u0430\u043a\u0442\u043e\u0440 1\u0444\u0430\u043a\u0442\u043e\u0440 2\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u0442\u043e\u04401.00.1\u041c\u0430\u0442\u0440\u0438\u0446\u04300.90.2\u0422\u0438\u0442\u0430\u043d\u0438\u043a0.11.0\u041d\u043e\u0442\u0442\u0438\u043d\u0433-\u0425\u0438\u043b\u043b0.050.9\u0425\u043e\u0442\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b:\u0422\u0438\u0442\u0430\u043d\u0438\u043a = [\u044d\u043a\u0448\u0435\u043d=1, \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430=5]\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441. \u042f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0441\u043a\u0430\u0437\u0430\u0432: \u0444\u0430\u043a\u0442\u043e\u0440 1 = \u044d\u043a\u0448\u0435\u043d, \u0444\u0430\u043a\u0442\u043e\u0440 2 = \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f &#171;\u044d\u043a\u0448\u043d&#187; \u0438 &#171;\u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0430&#187;. \u042f \u0442\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u043b \u0438\u0445 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f. SVD \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:\u0444\u0430\u043a\u0442\u043e\u0440 1 = \u0441\u043c\u0435\u0441\u044c \u044d\u043a\u0448\u0435\u043d\u0430 + \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0438,\u0444\u0430\u043a\u0442\u043e\u0440 2 = \u0441\u043c\u0435\u0441\u044c \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u043a\u0438 + \u0434\u0440\u0430\u043c\u044b\u0418\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435:factor 1 = \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0436\u0430\u043d\u0440\u043e\u0432factor 2 = \u0434\u0440\u0443\u0433\u0430\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043c\u043e\u0433 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0444\u0430\u043a\u0442\u043e\u0440.\u0413\u043b\u0430\u0432\u043d\u043e\u0435:DotProduct(user, film)\u0434\u043e\u043b\u0436\u0435\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0443.\u0418 \u0432\u043e\u043e\u0431\u0449\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435 50, \u0430 \u043d\u0435 2. \u041d\u043e \u043f\u043e\u043a\u0430, \u0432 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 2 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u0412 \u044d\u0442\u043e\u043c \u0438 \u0435\u0441\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c SVD:\u041c\u044b \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u043c \u0444\u0438\u043b\u044c\u043c\u044b \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c\u0438. \u041c\u044b \u0434\u0430\u0451\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0433\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e \u044d\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438.\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c (Funk SVD):\u0420\u0430\u0437\u0434\u0430\u0451\u043c \u0432\u0441\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b. \u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 k \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (p), \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u0438\u043b\u044c\u043c\u0443 &#8212; \u0442\u043e\u0436\u0435 (q). k &#8212; \u0447\u0438\u0441\u043b\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0430\u043c\u0438.\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443. \u0414\u043b\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438: \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 = Dot(p, q), \u043e\u0448\u0438\u0431\u043a\u0430 = \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u2212 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435.\u0427\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0434\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0430\u0441\u044c (\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a).\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043e\u0446\u0435\u043d\u043a\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 (\u044d\u043f\u043e\u0445).\u0424\u043e\u0440\u043c\u0443\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u0430 f:oldP = p[f]                          -\u0421\u041d\u0410\u0427\u0410\u041b\u0410 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043cp[f] += lr \u2022 error \u2022 q[f]q[f] += lr \u2022 error \u2022 oldP\u0433\u0434\u0435 lr- learning rate (\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0448\u0430\u0433, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 0.01).p &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u043e\u0442 person \/ preferences). \u0415\u0433\u043e \u0432\u043a\u0443\u0441 \u043f\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c.q &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u0444\u0438\u043b\u044c\u043c\u0430. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u0445 \u0436\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432 \u0444\u0438\u043b\u044c\u043c\u0435.f &#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0430\u043a\u0442\u043e\u0440\u0430 (0, 1, \u2026, k\u22121).\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0444\u0438\u043b\u044c\u043c\u0430 (\u00b7 q[f]), \u0430 \u0444\u0438\u043b\u044c\u043c &#8212; \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u00b7 oldP). \u041e\u0434\u0438\u043d \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c error \u043d\u0430 \u043e\u0431\u0430 &#8212; \u043e\u043d \u0437\u0430\u0434\u0430\u0451\u0442 \u0441\u0438\u043b\u0443 \u0438 \u0437\u043d\u0430\u043a \u0442\u043e\u043b\u0447\u043a\u0430: \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 &#8212; \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0448\u0430\u0433, \u043f\u043e\u0447\u0442\u0438 \u0443\u0433\u0430\u0434\u0430\u043b\u0438 &#8212; \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c.\u0417\u0430\u0447\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c oldP? \u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 p[f]. \u0422\u0440\u0435\u0442\u044c\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 p[f], \u0430 \u043d\u0435 \u0443\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u0435 &#8212; \u0438\u043d\u0430\u0447\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0443\u0442\u044c \u043a\u0440\u0438\u0432\u043e\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u044f\u0447\u0435\u043c \u0432 oldP.\u041f\u0440\u0438\u043c\u0435\u0440 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438:class MfModel{    public double Mu;                                    \/\/ \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043e\u0446\u0435\u043d\u043e\u043a    public Dictionary&lt;int, double[]&gt; UserVectors = new();    public Dictionary&lt;int, double[]&gt; MovieVectors = new();    public Dictionary&lt;int, double&gt; UserBias = new();    public Dictionary&lt;int, double&gt; MovieBias = new();    public double Predict(int user, int movie)    {        double dot = 0;        if (UserVectors.TryGetValue(user, out var p) &amp;&amp; MovieVectors.TryGetValue(movie, out var q))            for (int f = 0; f &lt; p.Length; f++)                dot += p[f] * q[f];        return Mu + UserBias.GetValueOrDefault(user)                  + MovieBias.GetValueOrDefault(movie) + dot;    }}\u041a\u043b\u044e\u0447 &#8212; id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0444\u0438\u043b\u044c\u043c\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 factorCount \u0447\u0438\u0441\u0435\u043b. \u0414\u043b\u044f \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 id (cold start) \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0432\u043d\u043e 0, \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442.\u041c\u0435\u0442\u0440\u0438\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 &#8212; RMSE (\u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430):\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438. \u041d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 (\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b) RMSE \u0431\u043e\u043b\u044c\u0448\u043e\u0439; \u043f\u043e \u043c\u0435\u0440\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0434\u0430\u0435\u0442.\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445: RMSE \u043b\u0435\u0433\u043a\u043e \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432 \u043d\u043e\u043b\u044c &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438. \u041d\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u0434\u044b\u0440\u043a\u0430\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u044b. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0438 \u043b\u0435\u0447\u0438\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430-\u0437\u0443\u0431\u0440\u0438\u043b\u0443: \u043e\u043d \u0432\u044b\u0443\u0447\u0438\u043b \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0438\u0437 \u0437\u0430\u0434\u0430\u0447\u043d\u0438\u043a\u0430 \u0438 \u0449\u0451\u043b\u043a\u0430\u0435\u0442 \u0438\u0445 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0443\u0442\u044c \u0438\u043d\u0430\u0447\u0435 &#8212; \u0438 \u043e\u043d \u043f\u043b\u044b\u0432\u0451\u0442. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435: \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u043d\u0430 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e \u043d\u0443\u043b\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u0432 \u043d\u043e\u0432\u044b\u0445, \u043d\u0435\u0432\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0443\u0433\u0430\u0434. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.\u043f\u043e\u0447\u0442\u0438 \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u043b (\u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435)\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043d\u0435\u044f\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430: \u043e\u0442\u043a\u0443\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u044f\u043b\u0441\u044f \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c error \u0438 \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438: \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u042d\u0442\u043e \u044f\u0434\u0440\u043e \u0432\u0441\u0435\u0433\u043e, \u0438 \u0437\u0434\u0435\u0441\u044c \u043b\u0435\u0433\u043a\u043e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-490987","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=490987"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490987\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}