<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@soserror</title><author><name>@soserror</name></author><id>https://teletype.in/atom/soserror</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/soserror?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@soserror?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/soserror?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-10-25T02:00:54.753Z</updated><entry><id>soserror:Mlx9o6myHSk</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/Mlx9o6myHSk?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 6. Практический пример</title><published>2026-03-10T14:26:31.627Z</published><updated>2026-03-10T14:26:31.627Z</updated><summary type="html">Рекомендации есть почти везде, но наиболее универсальным примером на российском рынке мне кажется Авито.
Если посмотреть блог компании, можно увидеть следующие особенности реализации:</summary><content type="html">
  &lt;p id=&quot;4U9B&quot;&gt;Рекомендации есть почти везде, но наиболее универсальным примером на российском рынке мне кажется Авито.&lt;br /&gt;Если посмотреть блог компании, можно увидеть следующие особенности реализации:&lt;/p&gt;
  &lt;ol id=&quot;nD3z&quot;&gt;
    &lt;li id=&quot;Kx3z&quot;&gt;Явная обратная связь на Авито — это звонок или сообщение продавцу (контакт). Это самый сильный сигнал, его и стараются предсказать.&lt;/li&gt;
    &lt;li id=&quot;PT7b&quot;&gt;Неявная обратная связь — это клики, просмотры, добавления в избранное. Но есть нюанс: клик по объявлению из другого города может быть случайным, и если оптимизировать модель только под клики, она начнет показывать товары со всей России (их же много, они соблазняют кликнуть), но контактов (целевых действий) не будет. Система должна учиться именно на конверсии в контакт.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;hb5c&quot;&gt;&lt;br /&gt;На Авито используется гибридная архитектура, которая четко делится на кандидатогенерацию и ранжирование (офлайн + онлайн):&lt;/p&gt;
  &lt;ol id=&quot;X9qg&quot;&gt;
    &lt;li id=&quot;y3j2&quot;&gt;Кандидатогенерация: система по истории пользователя ищет тысячи потенциально интересных объявлений. Здесь используются нейросети, которые превращают и пользователя, и товары в вектора. Мы ищем ближайших соседей в этом векторном пространстве&lt;/li&gt;
    &lt;li id=&quot;4Kef&quot;&gt;Ранжирование: тысячи кандидатов нужно отсортировать. Тут в дело вступает модель, которая смотрит на сотни признаков: насколько объявление свежее, какая цена, есть ли фото, совпадает ли город, какой рейтинг у продавца&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;GIha&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;EQm3&quot;&gt;Для того, чтобы понять, насколько похожи между собой объявления, сравнивается их текст. Чем больше совпадений или синонимов (конечно, считаются не прямые совпадения, а совпадения, обнаруженные специальной моделью для обработки естественного языка - она знает и синонимы, и антонимы, и еще кучу всего), тем ближе объявления друг к другу. Также похожими считаются объявления, если пользователи просматривал их в рамках одной сессии&lt;/p&gt;
  &lt;h2 id=&quot;ZFul&quot;&gt;Как это использовать на практике?&lt;/h2&gt;
  &lt;p id=&quot;dpLZ&quot;&gt;Знания о внутрянке Авито могут помочь, например, продавцам товаров:&lt;/p&gt;
  &lt;ul id=&quot;iwyf&quot;&gt;
    &lt;li id=&quot;dfn7&quot;&gt;Подробно заполняйте описание товара, чтобы пробить холодный старт. Авито стремится кластеризовать товары. Чем точнее вы укажете все характеристики (бренд, модель, размер, состояние), тем быстрее система поймет, что ваш iPhone 12 — это именно тот типовой товар, который сейчас ищут. Ваше объявление попадет в правильную корзину (кластер) и будет рекомендовано тем, кто интересуется этой моделью&lt;/li&gt;
    &lt;li id=&quot;2j97&quot;&gt;Делайте качественные фото. Красивое фото заставит кликнуть даже случайного зрителя, дав системе первый неявный фидбек (клик)&lt;/li&gt;
    &lt;li id=&quot;z00z&quot;&gt;Используйте правильные слова. Если вы продаете &amp;quot;чехол для айфона&amp;quot;, а в заголовке написано &amp;quot;защитный кейс&amp;quot;, система может посчитать, что это разные товары. Используйте названия, которые используют другие продавцы и покупатели в поиске, или которыми пользуются люди на кастдеве. Тогда ваш товар будет лежать ближе в векторном пространстве к &amp;quot;iPhone 12&amp;quot;, и его с большей вероятностью порекомендуют в паре к телефону или как похожий вариант&lt;/li&gt;
    &lt;li id=&quot;h5Dp&quot;&gt;Избегайте спама. Писать &amp;quot;iPhone, чехол, пленка, наушники, зарядка&amp;quot; в одном заголовке — плохая идея. Система не поймет, что вы продаете на самом деле, и ваше объявление станет шумом, который сложно кластеризовать&lt;/li&gt;
    &lt;li id=&quot;2qiS&quot;&gt;Актуализируйте объявление. Если товар не продается, не копируйте его бесконечно. Попробуйте изменить заголовок, добавить новые фото, немного скорректировать цену. Система воспримет это как новый сигнал и даст объявлению второй шанс. Если вы обновили фотографии, чуть изменили описание — это новый сигнал. Система воспринимает это как свежее событие. Особенно это важно для товаров с &amp;quot;длинным хвостом&amp;quot; — редких, но нужных.&lt;/li&gt;
    &lt;li id=&quot;y7Yq&quot;&gt;Включите доставку. В первой части мы говорили про контекст. По умолчанию Авито показывает товары рядом с вами. Это логично: диван из соседнего района привезти проще, чем из Хабаровска. Но если вы готовы отправить товар в другой город, укажите это! Ваше объявление перестаёт быть запертым в своём регионе, его контекст расширяется. Оно попадает в рекомендации пользователям из других городов, которые ищут похожий товар. Вы резко расширяете охват и вырываетесь из географического пузыря&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;pE3b&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;sXlc&quot;&gt;Если вам интересно глубоко погрузиться в рекомендации Авито, можно нырнуть сюда:&lt;/p&gt;
  &lt;ol id=&quot;7xB0&quot;&gt;
    &lt;li id=&quot;wqQs&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/avito/articles/338470/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/avito/articles/338470/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;WmW5&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/avito/articles/417571/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/avito/articles/417571/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;lMwJ&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/avito/articles/491942/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/avito/articles/491942/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;xvqF&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/avito/articles/1004694/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/avito/articles/1004694/&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;zBVc&quot;&gt;&lt;a href=&quot;https://habr.com/ru/companies/avito/articles/974682/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/avito/articles/974682/&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;

</content></entry><entry><id>soserror:GXrsorrM7PY</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/GXrsorrM7PY?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 5. Проблемы в промышленной эксплуатации</title><published>2026-03-09T16:31:37.148Z</published><updated>2026-03-09T16:31:37.148Z</updated><summary type="html">Не существует универсального рецепта — каждая задача требует компромисса между качеством, скоростью, стоимостью и интерпретируемостью.</summary><content type="html">
  &lt;ol id=&quot;L4ow&quot;&gt;
    &lt;li id=&quot;snay&quot;&gt;&lt;strong&gt;Групповые рекомендации&lt;br /&gt;&lt;/strong&gt;Часто контент потребляется не одним человеком, а группой (семья смотрит фильм, компания выбирает ресторан, студенты ищут учебный курс). Как учесть предпочтения всех участников и предложить компромиссный вариант? Групповые рекомендательные системы агрегируют индивидуальные модели пользователей в единую групповую модель&lt;/li&gt;
    &lt;li id=&quot;XdNA&quot;&gt;&lt;strong&gt;Ранжирование&lt;/strong&gt;&lt;br /&gt;В выдаче важен порядок элементов. Просто предсказать рейтинг фильма недостаточно — нужно, чтобы самый релевантный оказался на первом месте. Для этого при обучении может использоваться попарное сравнение (pairwise) или обучение сразу на списках (listwise)&lt;/li&gt;
    &lt;li id=&quot;YA92&quot;&gt;&lt;strong&gt;Учёт социальных связей&lt;/strong&gt;&lt;br /&gt;У людей есть друзья, подписки, коллеги, и их мнение часто важнее, чем мнение незнакомых &amp;quot;похожих&amp;quot; пользователей. Поэтому добавляют специальную функцию, которая приближает вектора рекомендаций у знакомых людей (например, SocialMF, TrustSVD)&lt;/li&gt;
    &lt;li id=&quot;qEQU&quot;&gt;&lt;strong&gt;Кросс-доменные рекомендации&lt;/strong&gt;&lt;br /&gt;Часто знаний из одного &amp;quot;домена&amp;quot; не хватает для составления полной картины о пользователе. Тогда можно использовать данные другого домена (например, фильмы). Часто между разными категориями товаров/контента есть связь по атрибутам, вот ее и используем&lt;/li&gt;
    &lt;li id=&quot;uSJW&quot;&gt;&lt;strong&gt;Контекстные рекомендации&lt;/strong&gt;&lt;br /&gt;Предпочтения человека меняются в зависимости от контекста: время суток, местоположение, настроение, с кем он, какая погода. Модель учитывает контекстные переменные как дополнительные признаки. Например, утром в будний день пользователю предлагают новости и кофе, вечером в пятницу — фильмы и рестораны&lt;/li&gt;
    &lt;li id=&quot;3c7R&quot;&gt;&lt;strong&gt;Объяснимость&lt;/strong&gt;&lt;br /&gt;Пользователи чаще доверяют системе и совершают покупки, если понимают, почему им это предложили. Кроме того, объяснения помогают разработчикам отлаживать модели&lt;/li&gt;
    &lt;li id=&quot;TTZ5&quot;&gt;&lt;strong&gt;Поддержание диалога&lt;/strong&gt;&lt;br /&gt;Пассивные рекомендации не всегда эффективны, особенно когда у пользователя сложный или нечёткий запрос. Нужно уточнить предпочтения в диалоге. Система взаимодействует с пользователем на естественном языке, задаёт вопросы, уточняет требования и постепенно сужает круг рекомендаций. Сочетает обработку естественного языка (NLP) и собственно рекомендательные алгоритмы&lt;/li&gt;
    &lt;li id=&quot;qcWh&quot;&gt;&lt;strong&gt;Сессионность&lt;/strong&gt;&lt;br /&gt;Во многих сервисах (интернет-магазины, стриминговые платформы) у нас нет долгой истории пользователя — мы видим только текущую сессию (несколько последних действий). Модель предсказывает следующий элемент на основе последовательности действий внутри одной сессии, не имея доступа к долгосрочному профилю — как раз за счет sequential-based подхода из третьей части статьи&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Wn7U&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;B8SP&quot;&gt;Не существует универсального рецепта — каждая задача требует компромисса между качеством, скоростью, стоимостью и интерпретируемостью.&lt;/p&gt;
  &lt;p id=&quot;VBi7&quot;&gt;Ключевые уроки для аналитика:&lt;/p&gt;
  &lt;ul id=&quot;kNkX&quot;&gt;
    &lt;li id=&quot;VucM&quot;&gt;&lt;strong&gt;Начинайте с простого.&lt;/strong&gt; Прежде чем добавлять графы или диалоговый интерфейс, убедитесь, что базовая модель больше невозможно улучшить&lt;/li&gt;
    &lt;li id=&quot;B4T5&quot;&gt;&lt;strong&gt;Измеряйте всё.&lt;/strong&gt; Офлайн-метрики часто обманчивы, окончательное решение принимайте по онлайн-экспериментам (А/В-тесты, многорукий бандит)&lt;/li&gt;
    &lt;li id=&quot;mkeQ&quot;&gt;&lt;strong&gt;Следите за дрейфом данных.&lt;/strong&gt; Поведение пользователей и контекст меняются — автоматизируйте мониторинг качества&lt;/li&gt;
    &lt;li id=&quot;pQzA&quot;&gt;&lt;strong&gt;Думайте об инфраструктуре.&lt;/strong&gt; Самая точная модель бесполезна, если не укладывается в latency-требования или требует слишком дорогих ресурсов&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>soserror:C5QLdx0dN4m</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/C5QLdx0dN4m?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 4. Оценка систем</title><published>2026-03-08T07:21:42.848Z</published><updated>2026-03-09T17:54:00.014Z</updated><summary type="html">Как измерить, насколько хороша наша система? Ведь одно дело — построить модель, и совсем другое — доказать, что она действительно помогает пользователям находить то, что им нужно, а бизнесу — зарабатывать больше.</summary><content type="html">
  &lt;p id=&quot;8Klc&quot;&gt;Как измерить, насколько хороша наша система? Ведь одно дело — построить модель, и совсем другое — доказать, что она действительно помогает пользователям находить то, что им нужно, а бизнесу — зарабатывать больше.&lt;/p&gt;
  &lt;p id=&quot;zih8&quot;&gt;В этом нам помогают метрики и эксперименты. Глобально они делятся на несколько видов вида:&lt;/p&gt;
  &lt;ol id=&quot;zn8y&quot;&gt;
    &lt;li id=&quot;RWIL&quot;&gt;&lt;strong&gt;Оффлайн-оценка&lt;/strong&gt;: это когда мы из исторических данных убираем часть информации и смотрим, насколько хорошо система ее восстановит&lt;/li&gt;
    &lt;li id=&quot;D2uL&quot;&gt;&lt;strong&gt;Онлайн-оценка&lt;/strong&gt;: делим пользователей на две категории. У одних оставляем всё как есть сейчас, у других используем новый алгоритм рекомендаций. Если видим улучшение метрик в новом алгоритме — переводим всех пользователей на новый алгоритм&lt;/li&gt;
    &lt;li id=&quot;wtTP&quot;&gt;&lt;strong&gt;Многорукий бандит&lt;/strong&gt;: продвинутая онлайн-оценка. Название произошло от метафорического названия игровых автоматов — &amp;quot;одноруких бандитов&amp;quot;. А тут у нас задача, похожая на оптимизацию выигрыша в нескольких игровых автоматах. Игроку нужно выбрать, какой рычаг дергать, чтобы максимизировать суммарный выигрыш. При этом он не знает заранее, какой рычаг лучший, и должен пробовать разные варианты (исследование), чтобы собрать информацию, но при этом не терять слишком много, выбирая заведомо плохие варианты (эксплуатация лучших на данный момент). Бандитские алгоритмы динамически перераспределяют трафик в пользу более успешных вариантов, при этом продолжая исследовать новые или редко показываемые позиции. В рекомендательных системах:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;sUFu&quot;&gt;
    &lt;li id=&quot;V8Mw&quot;&gt;&lt;strong&gt;Рычаги&lt;/strong&gt; — это возможные рекомендации (товары, статьи, видео, музыкальные треки и т.д.)&lt;/li&gt;
    &lt;li id=&quot;FFUV&quot;&gt;&lt;strong&gt;Выигрыш&lt;/strong&gt; — это целевая метрика (клик, покупка, дочитывание, лайк, время просмотра)&lt;/li&gt;
    &lt;li id=&quot;xDm0&quot;&gt;&lt;strong&gt;Цель&lt;/strong&gt; — максимизировать суммарную пользу (например, количество кликов) за всё время взаимодействия с пользователями. Достигается за счет того, что алгоритм многрукого &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;8WC7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;gRYM&quot;&gt;При этом для каждого алгоритма важно учитывать:&lt;/p&gt;
  &lt;p id=&quot;HuL8&quot;&gt;1. &lt;strong&gt;Accuracy (точность)&lt;/strong&gt; — это способность системы верно угадывать, какие объекты понравятся пользователю, а какие — нет. Она измеряется через сравнение предсказаний с реальными действиями (кликами, покупками, оценками) в исторических данных или в онлайн-эксперименте. В зависимости от используемого алгоритма может измеряться в разнице между предсказанным и проставленным рейтингом, или в том, насколько близко к топу находился объект, который пользователь кликнул первым&lt;/p&gt;
  &lt;p id=&quot;6tFk&quot;&gt;2. &lt;strong&gt;Coverage (охват)&lt;/strong&gt; — насколько система использует весь каталог. Если из 10 000 товаров рекомендуются только 100 самых популярных — охват маленький. Хорошая система должна уметь предлагать и &amp;quot;длинный хвост&amp;quot; — редкие, но интересные позиции. Это помогает и пользователям (новые открытия), и бизнесу (продажи не только хитов)&lt;/p&gt;
  &lt;p id=&quot;lZF7&quot;&gt;3. &lt;strong&gt;Novelty (новизна)&lt;/strong&gt; — насколько рекомендации отличаются от того, что пользователь уже знает. Если вы только что посмотрели Железного человека, а вам советуют Железного человека 2 — новизна низкая. А если вдруг предлагают малоизвестный французский фильм про изобретателя — новизна высокая. Новизну часто измеряют через популярность: чем менее популярен объект, тем он новее (потому что пользователь с меньшей вероятностью уже с ним сталкивался)&lt;/p&gt;
  &lt;p id=&quot;yEMb&quot;&gt;4. &lt;strong&gt;Serendipity (Неожиданная удача)&lt;/strong&gt; — это новизна с приятным сюрпризом. Просто редкий фильм может оказаться скучным. А serendipity — это когда рекомендация удивила, но пришлась очень кстати. Это сложная метрика, её обычно оценивают вручную или через косвенные признаки (например, пользователь кликнул на неожиданный товар и высоко оценил)&lt;/p&gt;
  &lt;p id=&quot;14bp&quot;&gt;5. &lt;strong&gt;Diversity (разнообразие)&lt;/strong&gt; — насколько рекомендации внутри одного списка отличаются друг от друга. Если в топ‑10 все фильмы — боевики с одним актёром, разнообразие низкое. Если там есть и комедия, и документалка, и мелодрама — высокое. Разнообразие важно, чтобы пользователь не устал от однообразия и мог выбрать под настроение&lt;/p&gt;
  &lt;p id=&quot;6Fy1&quot;&gt;6. &lt;strong&gt;Robustness (робастность, устойчивость)&lt;/strong&gt; — способность системы не сломаться под атаками злоумышленников. Например, кто‑то может накручивать лайки своему товару, чтобы он чаще рекомендовался. Робастная система должна фильтровать такие аномалии&lt;/p&gt;
  &lt;p id=&quot;Q4mT&quot;&gt;7. &lt;strong&gt;Stability (стабильность)&lt;/strong&gt; — рекомендации не должны скакать от раза к разу без причины. Пользователю комфортно, когда система постепенно меняет выдачу, а не перетряхивает её полностью после каждого клика&lt;/p&gt;
  &lt;p id=&quot;74nX&quot;&gt;8. &lt;strong&gt;Scalability (масштабируемость)&lt;/strong&gt; — это способность системы сохранять приемлемую производительность (скорость работы, потребление памяти) при росте объёма данных: количества пользователей, товаров, взаимодействий. Никто не будет ждать, если лента рекомендаций загружается по 10 минут&lt;/p&gt;

</content></entry><entry><id>soserror:sPBjlNehDFb</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/sPBjlNehDFb?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 3. Memory-based и model-based подходы</title><published>2026-03-06T07:05:40.563Z</published><updated>2026-03-06T07:05:40.563Z</updated><summary type="html">Для любого вида фильтрации есть два варианта реализации:</summary><content type="html">
  &lt;p id=&quot;AdXe&quot;&gt;Для любого вида фильтрации есть два варианта реализации:&lt;/p&gt;
  &lt;ol id=&quot;orgo&quot;&gt;
    &lt;li id=&quot;nbab&quot;&gt;&lt;strong&gt;Memory-based&lt;/strong&gt;: смотрим историю взаимодействий пользователей с айтемами, тупо вычисляем меру сходства (в зависимости от подхода, по айтемам или по пользователям) и ищем по сходству рекомендацию (чаще всего, это метод ближайших соседей)&lt;/li&gt;
    &lt;li id=&quot;k68g&quot;&gt;&lt;strong&gt;Model-based&lt;/strong&gt;: делаем матрицы, где по строкам все пользователи, а по столбцам все айтемы. Естественно, большинство строчек будут пустые - ведь один пользователь явно не закажет все товары, не переслушает всю музыку, не пересмотрит все фильмы. То есть, матрица будет разреженная. И model-based подход заключается в том, чтобы с помощью моделей машинного обучения полностью заполнить эту матрицу &lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;D3e0&quot;&gt;Самые популярные методы для model-based подходы:&lt;/p&gt;
  &lt;ol id=&quot;zfD2&quot;&gt;
    &lt;li id=&quot;6XGF&quot;&gt;Разные вариации SVD (сингулярного разложения матриц)&lt;/li&gt;
    &lt;li id=&quot;qEeA&quot;&gt;Автоэнкодеры&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;mAAS&quot;&gt;Но в целом можно использовать любой метод машинного обучения, если придумаете, как его адаптировать к заполнению значений матрицы &lt;/p&gt;

</content></entry><entry><id>soserror:dqUVlHv_wJi</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/dqUVlHv_wJi?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 2. Контентный и коллаборативный подход</title><published>2026-03-04T22:49:30.971Z</published><updated>2026-03-06T07:07:04.400Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e3/c3/e3c3b5b4-f12c-4612-9df5-e54c897d000b.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/82/3f/823fe4c8-cd01-4cde-81cd-23e3f070a073.jpeg&quot;&gt;Все рекомендательные системы можно разделить на два больших лагеря: коллаборативная фильтрация (Collaborative Filtering) и контентная фильтрация (Content-based Filtering). Представьте, что вы ищете новый фильм:</summary><content type="html">
  &lt;p id=&quot;aq9v&quot;&gt;Все рекомендательные системы можно разделить на два больших лагеря: &lt;strong&gt;коллаборативная фильтрация&lt;/strong&gt; (Collaborative Filtering) и &lt;strong&gt;контентная фильтрация&lt;/strong&gt; (Content-based Filtering). Представьте, что вы ищете новый фильм:&lt;/p&gt;
  &lt;ul id=&quot;nzXZ&quot;&gt;
    &lt;li id=&quot;QRXS&quot;&gt;&lt;strong&gt;Контентный подход&lt;/strong&gt; смотрит на сам фильм: его жанр, актёров, режиссёра. &amp;quot;Вам понравился Джон Уик? Тогда, возможно, вам зайдёт Рейд, потому что там тоже много драк и тот же герой-одиночка&amp;quot;. Система анализирует свойства объектов (item information) и сопоставляет их с вашим профилем.&lt;/li&gt;
    &lt;li id=&quot;Mvnj&quot;&gt;&lt;strong&gt;Коллаборативный подход&lt;/strong&gt; игнорирует содержание. Он использует мудрость толпы: &amp;quot;Другие люди, которым понравился Джон Уик, также любили Дэдпул. Значит, и вы, скорее всего, оцените Дэдпула&amp;quot;. Системе всё равно, о чём эти фильмы — она видит только паттерны поведения.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;52qk&quot;&gt;Оба подхода имеют недостатки. Контентный часто предлагает однотипные вещи (вы смотрели боевик — получите ещё 100 боевиков). Коллаборативный страдает от холодного старта: как только появляется новый фильм, о котором ещё никто не выразил мнение, он никому не будет рекомендован. Поэтому на практике часто используют &lt;strong&gt;гибридные системы&lt;/strong&gt; (Hybrid RS), сочетающие обе стратегии.&lt;/p&gt;
  &lt;p id=&quot;N1jE&quot;&gt;В ходе статей я буду в основном идти по этой картинке:&lt;/p&gt;
  &lt;figure id=&quot;MOj1&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/82/3f/823fe4c8-cd01-4cde-81cd-23e3f070a073.jpeg&quot; width=&quot;1890&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VoQ4&quot;&gt;Однако существует современный подход, который здесь не указан: sequantial-based системы. Это методы, которые учитывают порядок действий пользователя. Вместо того чтобы смотреть на всю историю как на мешок, система анализирует последовательность. Например, если вы заказали на маркетплейсе корм для кошек, вам явно нужно предложить наполнитель. &lt;/p&gt;
  &lt;p id=&quot;Ehur&quot;&gt;Обычно используются нейросети, специально созданные для работы с последовательностями:&lt;/p&gt;
  &lt;ul id=&quot;lpxy&quot;&gt;
    &lt;li id=&quot;dhjF&quot;&gt;&lt;strong&gt;Рекуррентные нейросети (RNN, LSTM, GRU)&lt;/strong&gt; — они помнят предыдущие элементы и обновляют своё состояние с каждым новым действием&lt;/li&gt;
    &lt;li id=&quot;TfJ0&quot;&gt;&lt;strong&gt;Трансформеры (Transformers)&lt;/strong&gt; — современный стандарт, который с помощью механизма внимания может учитывать сразу все элементы последовательности и выявлять сложные зависимости&lt;/li&gt;
    &lt;li id=&quot;aOry&quot;&gt;&lt;strong&gt;Специализированные модели вроде GRU4Rec&lt;/strong&gt; — созданы именно для рекомендаций по сессиям (например, что вы положили в корзину за текущий визит)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;tZXn&quot;&gt;Из более классических методов используются марковские цепи. &lt;/p&gt;
  &lt;p id=&quot;deIK&quot;&gt;Sequantial-based рекомендации особенно важны для сценариев с короткими сессиями (онлайн-магазины, стриминговые сервисы, новостные ленты), где контекст последних действий критичен&lt;/p&gt;

</content></entry><entry><id>soserror:zJdPp4ajnKU</id><link rel="alternate" type="text/html" href="https://teletype.in/@soserror/zJdPp4ajnKU?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=soserror"></link><title>Рекомендательные системы для аналитиков, часть 1. Постановка задачи</title><published>2026-03-03T20:41:10.536Z</published><updated>2026-05-22T20:33:02.502Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e3/c3/e3c3b5b4-f12c-4612-9df5-e54c897d000b.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/82/3f/823fe4c8-cd01-4cde-81cd-23e3f070a073.jpeg&quot;&gt;Вы заходите в онлайн-кинотеатр, чтобы скоротать вечер. Вы не знаете, чего хотите, но спустя пару секунд на экране появляется подборка фильмов, и один из них так и манит нажать кнопку &quot;Смотреть&quot;. Это — работа сложного алгоритма рекомендаций</summary><content type="html">
  &lt;p id=&quot;ZFPY&quot;&gt;Вы заходите в онлайн-кинотеатр, чтобы скоротать вечер. Вы не знаете, чего хотите, но спустя пару секунд на экране появляется подборка фильмов, и один из них так и манит нажать кнопку &amp;quot;Смотреть&amp;quot;. Это работа сложного алгоритма рекомендаций&lt;/p&gt;
  &lt;p id=&quot;pGZP&quot;&gt;Есть два варианта того, как рекомендовать пользователю что-либо:&lt;/p&gt;
  &lt;ol id=&quot;RFSj&quot;&gt;
    &lt;li id=&quot;AA3p&quot;&gt;Предсказать, как пользователь оценит это (конкретное количество &amp;quot;звездочек&amp;quot;, которые поставит пользователь)&lt;/li&gt;
    &lt;li id=&quot;fw2j&quot;&gt;Просто отранжировать разные варианты от наилучшего к наихудшему&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;4KKH&quot;&gt;Вообще, предметная область рекомендательных систем очень интересна и обширна:&lt;/p&gt;
  &lt;figure id=&quot;dN0T&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/82/3f/823fe4c8-cd01-4cde-81cd-23e3f070a073.jpeg&quot; width=&quot;1890&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BUXz&quot;&gt;В этой части статьи мы разберем верхнюю часть картинки&lt;/p&gt;
  &lt;p id=&quot;Fydf&quot;&gt;Любая рекомендация начинается с данных. Это топливо, на котором работает система. Всю информацию можно разделить на три больших блока:&lt;/p&gt;
  &lt;p id=&quot;nRNB&quot;&gt;&lt;strong&gt;1. User (Кто ты?)&lt;/strong&gt;&lt;br /&gt;Система пытается понять своего пользователя. Она фиксирует статичные характеристики (пол, возраст, страна) и то, как вы себя ведете&lt;/p&gt;
  &lt;p id=&quot;wJrw&quot;&gt;&lt;strong&gt;2. Item (Что это за штука?)&lt;/strong&gt;&lt;br /&gt;Система должна понимать, что именно она предлагает. Для этого каждый объект (товар, видео, песня) описывается набором признаков:&lt;/p&gt;
  &lt;ul id=&quot;Yn8h&quot;&gt;
    &lt;li id=&quot;VDGL&quot;&gt;&lt;strong&gt;Название &lt;/strong&gt;— ну тут понятно&lt;/li&gt;
    &lt;li id=&quot;fg7w&quot;&gt;&lt;strong&gt;Категория &lt;/strong&gt;— например, Боевики / Комедии&lt;/li&gt;
    &lt;li id=&quot;vaRg&quot;&gt;&lt;strong&gt;Теги &lt;/strong&gt;— короткие метки: юмор, для подростков, про вампиров&lt;/li&gt;
    &lt;li id=&quot;ZuYV&quot;&gt;&lt;strong&gt;Изображение &lt;/strong&gt;— визуальная информация, которую нейросети тоже умеют смотреть&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;OYpa&quot;&gt;&lt;strong&gt;3. Context (Где и когда это происходит?)&lt;/strong&gt;&lt;br /&gt;Представьте, что вам предлагают купить теплые перчатки. Летом, в жару, это будет выглядеть глупо, а в декабре — очень кстати. Контекст — это обстоятельства, которые меняют смысл рекомендации. Это время суток, день недели, ваше местоположение (дом, работа, другой город) и даже устройство, с которого вы зашли (с телефона в метро мы листаем ленту иначе, чем с большого компьютера дома).&lt;/p&gt;
  &lt;p id=&quot;G2wL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fSPR&quot;&gt;Итак, у нас есть данные. Но просто знать, что Иван — 30-летний мужчина из Москвы, а фильм Бойцовский клуб имеет теги драма, психология, экшн — недостаточно. Нужно понять, как Иван относится к Бойцовскому клубу. Это и есть обратная связь (feedback).&lt;/p&gt;
  &lt;p id=&quot;XHtN&quot;&gt;Обратная связь бывает двух типов:&lt;/p&gt;
  &lt;ol id=&quot;Dubb&quot;&gt;
    &lt;li id=&quot;fNdS&quot;&gt;&lt;strong&gt;Явная:&lt;/strong&gt; что вы говорите системе напрямую. Например, оценка по пятибалльной шкале или дизлайк. Но люди часто ленятся оценивать, поэтому такой информации мало&lt;/li&gt;
    &lt;li id=&quot;bz90&quot;&gt;&lt;strong&gt;Неявная:&lt;/strong&gt; что вы делаете, не задумываясь. Система следит за вашими действиями:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;HOHn&quot;&gt;
    &lt;ul id=&quot;HO8D&quot;&gt;
      &lt;li id=&quot;gvyI&quot;&gt;&lt;strong&gt;Клик:&lt;/strong&gt; нажали на товар? значит интересно&lt;/li&gt;
      &lt;li id=&quot;jQr5&quot;&gt;&lt;strong&gt;Просмотр:&lt;/strong&gt; посмотрели трейлер до конца или закрыли через 5 секунд?&lt;/li&gt;
      &lt;li id=&quot;hfOe&quot;&gt;&lt;strong&gt;Покупка:&lt;/strong&gt; самый сильный сигнал — вы проголосовали рублем&lt;/li&gt;
      &lt;li id=&quot;ysvI&quot;&gt;&lt;strong&gt;Избранное:&lt;/strong&gt; отложили на потом — значит зацепило&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;tX6R&quot;&gt;Соединяя данные о пользователе, товаре и контексте с его реакцией, система учится предсказывать предпочтения&lt;/p&gt;
  &lt;p id=&quot;JHj1&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;cUh3&quot;&gt;Однако не всё так просто, у рекомендательных систем есть куча проблем:&lt;/p&gt;
  &lt;ol id=&quot;TBfY&quot;&gt;
    &lt;li id=&quot;t44b&quot;&gt;Информационные пузыри — персонализированая фильтрация информации ведет к замыканию пользователя на логически связанных между собой айтемах. Пользователь не увидит того, что не было в поле его интересов ранее&lt;/li&gt;
    &lt;li id=&quot;bPJh&quot;&gt;Приватность — защита от утечек персональных данных пользователей&lt;/li&gt;
    &lt;li id=&quot;Vm65&quot;&gt;Безопасность — защита от использования слабых мест рекомендательных систем (так называемых атак на модель). Самая популярная и простая атака: накрутка отзывов&lt;/li&gt;
    &lt;li id=&quot;wWoF&quot;&gt;Холодный старт — проблемы с новыми элементами системы:&lt;/li&gt;
    &lt;ul id=&quot;HOHn&quot;&gt;
      &lt;ul id=&quot;HO8D&quot;&gt;
        &lt;li id=&quot;brt8&quot;&gt;Новый пользователь еще не взаимодействовал с айтемами - что ему показывать?&lt;/li&gt;
        &lt;li id=&quot;2Wyy&quot;&gt;Новым айтемом еще никто не пользовался - кому его рекомендовать?&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;erzW&quot;&gt;Bias (смещение) — возникает, когда алгоритмы  отдают предпочтение определённым группам из-за искажений данных. Например, если в базе данных сервиса много данных по деловым брюкам и мало по джинсам, в общем брюки будут более популярны, и система при добавлении новой модели джинс решит, что они никому не нравятся, и будет показывать их в самом низу. До джинс никто не будет долистывать, и система таким образом получает &amp;quot;доказательство&amp;quot;, что джинсы никому не нравятся. Замкнутый круг&lt;/li&gt;
    &lt;li id=&quot;fVyZ&quot;&gt;Fairness (справедливость) — равное отношение к разным группам пользователей без дискриминации по демографии, полу или другим признакам. Проблема проявляется в демографическом смещении, когда рекомендации хуже для определённых подгрупп (например, по возрасту или нации)&lt;br /&gt;Первое, на что обращают внимание — как именно достигается справедливость. Здесь выделяют два принципиально разных подхода:&lt;/li&gt;
    &lt;ul id=&quot;pzPC&quot;&gt;
      &lt;li id=&quot;JGCs&quot;&gt;&lt;strong&gt;Справедливость процесса&lt;/strong&gt; — это про честность правил игры. Представьте, что система оценивает кандидатов на вакансию. Если алгоритм использует только релевантные признаки (образование, опыт) и игнорирует пол или расу, то сам процесс принятия решения можно считать справедливым. Неважно, кто в итоге получит работу — главное, что ко всем применялись одинаковые критерии.&lt;/li&gt;
      &lt;li id=&quot;8NWV&quot;&gt;&lt;strong&gt;Справедливость результата&lt;/strong&gt; — здесь мы смотрим на финальный расклад. Даже если процесс был идеален, результат может оказаться несправедливым. Например, рекомендательная система в интернет-магазине может показывать дорогие товары только жителям богатых районов, потому что у них выше покупательная способность. С точки зрения процесса всё честно (алгоритм просто максимизирует прибыль), но результат нас не устраивает&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;zQuC&quot;&gt;В случае, если мы ориентируемся на справедливость результата, мы должны продумать две вещи:&lt;/p&gt;
  &lt;ol id=&quot;0ZZH&quot;&gt;
    &lt;li id=&quot;7J7L&quot;&gt;Кого конкретно мы защищаем?&lt;/li&gt;
    &lt;li id=&quot;4Xaz&quot;&gt;Какие методы используем для защиты?&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;QgQl&quot;&gt;Подробности ответа на эти вопросы — прям техничная техника, поэтому в этой статье не будем их рассматривать. Если вам интересно погрузиться, можн воспользоваться этой схемой:&lt;/p&gt;
  &lt;figure id=&quot;Tc6u&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d2/7c/d27cf054-2c61-4c4c-8c2e-fae1716335c7.png&quot; width=&quot;1169&quot; /&gt;
  &lt;/figure&gt;

</content></entry></feed>