В кластере про товарную вертикаль мы по очереди разобрали офферные факторы, карточку модели, поведенческие сигналы, категоризацию и операционку магазина. Тут я собираю всё в один прикладной чек-лист: что реально крутить владельцу магазина, чтобы офферы лезли наверх в yandex.ru/products и в товарном колдунщике основного поиска. Без воды и без обещаний "сделай X - получишь +N позиций".
Как вообще устроена цепочка (на полминуты)Сразу граница. Это разбор по исходникам товарной вертикали goods (ya/extsearch/goods), а не официальная формула Маркета. Ранжирует CatBoost/MatrixNet - дерево решений, у факторов нет фиксированных процентных весов. Поэтому ниже я говорю качественно: сильный сигнал / слабый сигнал / гигиена, и помечаю где это реконструкция. Имена факторов привожу как в реестре factors_meta_gen.in.
Магазин отдаёт офферы фидом (YML). Дальше приём фида, матчинг офферов в карточки моделей и категоризация - это upstream, он живёт в дереве market/, не в goods. Готовый индекс офферов и моделей раскатывается на бекенды report примерно каждые 12 часов. Запрос идёт через apphost, бегемот по правилам market.cpp решает что интент товарный, report ранжирует. Вывод для практика простой:
Приоритизированный чек-листМежду правкой в фиде и тем, что её увидит ранжирование, лежит цикл переиндексации (порядка полусуток плюс приём фида). Не делайте выводов по горячим следам через час. Цена и сток подтягиваются быстрее остального - это отдельный быстрый контур.
Уровень 0. Фид и попадание в индекс (без этого остальное не существует)
- Фид валиден, отдаётся стабильно, обновляется регулярно. Меняющиеся цены и сток гоните чаще (минуты-десятки минут), полный фид - по расписанию.
- Каждый оффер имеет корректную категорию и атрибуты под свою категорию. От качества категоризации зависит, в какой товарной выдаче вы вообще участвуете - за это в коде отвечает целое семейство CATEGORY_CLSSFY_* (классификатор категории по тексту оффера) и CATEG_CTR / CATEGORY_QUERY_CTR_NAIVE (поведение категории на запросе).
- Оффер должен заматчиться в правильную карточку модели. Кривое название -> оффер висит сиротой или прилипает не к той модели -> теряет всю силу карточки.
Код: Выделить всё
ГИГИЕНА ФИДА (уровень 0) ЗАЧЕМ
--------------------------- ----------------------------------
валидный YML, стабильная вообще попасть в индекс офферов
отдача
свежесть цены/стока быстрый контур, обновляется
раньше основной переиндексации
корректная категория CATEGORY_CLSSFY_*, CATEG_CTR
оффера решают, в какой выдаче ты
матчинг в нужную модель иначе оффер не получает силу
карточки
В офферных факторах цена представлена не абсолютом, а позицией относительно рынка. В реестре прямо есть DIFF_TO_MIN_PRICE (отклонение от минимальной цены по модели), AVG_MODEL_PRICE (средняя по карточке), есть и нейро-вариации DSSM_AVG_PRICE / DSSM_TOP_PRICE, и грейды DJ_DOCUMENT_PRICE_GRADE_CATEGORY / DJ_DOCUMENT_PRICE_GRADE_VENDOR_CATEGORY.
Реконструкция, но устойчивая: важна не ваша цена сама по себе, а насколько вы дороже минимума по этой же модели. Сильно выше рынка - офферу тяжело, даже если магазин хороший. Демпинг ниже плинтуса тоже не панацея: цена это один вход в дерево из тысяч, она вытягивает не всё.
- Держите цену в коридоре рынка по конкретной модели, а не "среднюю по магазину".
- Следите за корректностью цены в фиде - рассинхрон с витриной бьёт по доверию и по быстрому контуру.
Большой блок офферных факторов про логистику. Доставка курьером описана целым набором COURIER_DELIVERY_*: EXISTS, FREE, EXPRESS, FROM_DAYS / TO_DAYS, PRICE, PRICE_IN_PERCENT, BY_MARKET. Есть и более старые DELIVERY_FREE, DELIVERY_PRICE, DELIVERY_LOCAL, DELIVERY_SELF. Плюс география: DIST_BETW_USER_AND_SHOP_REGIONS, SHOP_IN_USER_REGION, SHOP_DISTANCE_TO_MOSCOW.
- Реальный сток и честный срок. Off-сигналы (DELIVERY_OFF, DELIVERY_NO) - это минус по доступности оффера для пользователя.
- Бесплатная и/или быстрая доставка - явный плюсовый сигнал (FREE, EXPRESS, малые FROM_DAYS).
- Близость к региону пользователя работает: оффер из его региона при прочих равных в выигрыше.
Магазин - отдельная сущность с факторами. SHOP_RATING, SHOP_OPINION_COUNT (число отзывов), SHOP_QUALITY_RATIO, SHOP_RECOMMENDED_BY_VENDOR. Операционный рейтинг разложен на составляющие: SHOP_OPERATIONAL_RATING_TOTAL, и по частям - CANCELLATION_RATE (отмены), RETURN_RATE (возвраты), LATE_SHIP_RATE (просрочка отгрузки).
Это та часть, которую нельзя "наоптимизировать" текстом. Отмены, возвраты, срывы сроков - реальные операционные метрики, и они заведены отдельными факторами. Сначала наведите порядок в логистике и сервисе, потом крутите карточки.
Код: Выделить всё
ОПЕРАЦИОНКА МАГАЗИНА ЧТО ПОРТИТ
------------------------- ---------------------------
SHOP_OPERATIONAL_RATING_ отмены заказов
CANCELLATION_RATE
..._RETURN_RATE возвраты
..._LATE_SHIP_RATE просрочка отгрузки
SHOP_RATING / низкие/малочисленные отзывы
SHOP_OPINION_COUNT
Текстовые факторы строятся над названием и описанием. В коде это семейство BMRKT_WO_TITLE_* и BMRKT_*_DESCRIPTION_* (полное совпадение, аннотационные, взвешенные значения), а также BOCM_TITLE / BCLM_TITLE / BOCM_W_TITLE. Есть и сигнал картинки BG_IS_PICTURE.
- Название по схеме тип + бренд + модель + ключевые характеристики, человекочитаемо, без мусора и капса. В реестре не зря есть SHOP_NAME_UPPERCASE и SHOP_NAME_LATIN - аномалии в названиях замечаются.
- Описание - содержательное и про этот товар, а не копипаст карточки бренда на сто SKU. Заполняйте атрибуты: они кормят и текст, и категоризацию.
- Картинка обязательна и нормального качества (BG_IS_PICTURE). Оффер без фото проигрывает на ровном месте.
Карточка модели (TG_MODEL) - это то, во что схлопываются офферы. Её контент и медиа тоже участвуют в ранжировании, описание модели разобрано отдельными факторами BMRKT_MARKETING_DESCRIPTION_OF_MODEL_* и BMRKT_MICRO_DESCRIPTION_OF_MODEL_*. Если вы вендор или у вас эксклюзив - вкладывайтесь в полноту карточки: характеристики, фото с нескольких ракурсов, корректные атрибуты.
Уровень 6. Поведенческие - честный CTR
Поведение заведено плотно: DOCUMENT_QUERY_CTR и его наивные/нормированные варианты (QCANONICAL, QDNORM, QLOW, QSYNNORM и т.д.), на уровне магазина SHOP_CTR / SHOP_CTR_ADJ / SHOP_CLICKS / SHOP_SHOWS, на уровне категории CATEG_CTR / CATEGORY_QUERY_CTR_NAIVE. Это семейство тегируется как TG_DOCUMENT_QUERY_CTR.
Чего избегатьCTR накапливается на показах и кликах. Накрутка кликов - тупиковый путь: модель смотрит на CTR в связке с запросом и нормировками, и аномалия скорее даст шум, чем рост. Растите кликабельность честно: адекватная цена, нормальное фото, понятное название, хорошая доставка - и клики придут сами.
- Ключевой спам в названии. Текстовые факторы ловят переспам, а классификатор может уехать в чужую категорию (CATEGORY_CLSSFY_BAD_TITLE_*).
- Капс и латиница в названиях ради привлечения внимания - есть прямые сигналы на это.
- Демпинг "в ноль" как единственная стратегия. Цена сильна, но она один из тысяч входов.
- Накрутка отзывов и кликов. Операционка и CTR проверяются реальными метриками и нормировками.
- Ставка на платное продвижение вместо качества фида и сервиса. Реклама - отдельный контур; органику в товарной выдаче тянут полнота данных, цена, наличие и операционный рейтинг.
Порядок работ по убыванию отдачи: сначала фид и категоризация (иначе вас просто нет), потом цена в коридоре рынка и честный сток/доставка, потом операционный рейтинг магазина, потом тексты-фото оффера и полнота карточки модели, и только поверх всего - поведенческие, которые сами подтянутся, если предыдущее в порядке. Точных весов не ждите: дерево решений их не раздаёт, и часть факторов в реестре помечена deprecated/unused - не принимайте имя за работающий сигнал.
Это тема из кластера разборов товарной вертикали Яндекса. Соседние темы (офферные факторы, карточка модели, поведенческие, категоризация, операционка магазина) и общий хаб:
Это часть кластера
Хаб товарной выдачи: viewtopic.php?t=2052
Карта раздела: viewtopic.php?t=1856