Как улучшить CTR-фичи
Рассмотрим самый стандартный пример — CTR документа. Он вычисляется как число кликов (clicks), деленное на число показов (impressions). Как обсудили в прошлом посте, вместо обычного числа кликов и показов лучше использовать экспоненциально затухающие. Кроме того, и числитель, и знаменатель стоит сглаживать. Но сейчас не об этом, а о том, как снизить влияние разных смещений.
CTR сильно подвержен разным смещениям, в частности — position bias. Представьте себе документ, который получил 10 показов на самом видном месте и из них — 3 клика, и другой документ, получивший 10 показов внизу или сбоку страницы, да ещё и меньших размеров, и из них — 2 клика. Какой из документов лучше априори?
Таким образом, показы бывают «плохие» и «хорошие», и хочется их учитывать с разным весом. В information retrieval для этого давным-давно придумали CoEC — clicks over expected clicks. Как и следует из названия, дробь clicks / impressions заменяется на clicks / (expected clicks). Expected clicks — это сумма по всем показам документа априорной (т.е. независящей от документа) вероятности клика. Если документ получил больше кликов, чем ожидалось по этим показам, то это хороший документ, если меньше — то плохой. Средний документ имеет CoEC = 1.
Как оценивать эту априорную вероятность? Есть разные варианты. Скажем, если не учитывать ничего, а просто взять глобальный средний CTR, то знаменатель будет просто пропорционален числу показов, т.е. итог будет эквивалентен обычному CTR документов. Но если учесть позицию, то станет уже заметно лучше. Для этого нужно посчитать click curve — априорную вероятность клика при показе на каждой позиции. (Как это сделать несмещенно — оставим до следующих постов.)
Это и есть самый популярный вариант CoEC. Он позволяет бороться с position bias для таких фичей. В качестве позиции, конечно, можно брать не просто номер, но и обобщённое понятие: положение на странице, размеры, что за страница, на каком устройстве, и т.д. Главное — уметь посчитать click curve. Но можно пойти и ещё дальше: кроме позиционной информации, учитывать и другие фичи. Например, бывают активные пользователи (clickers) и пассивные (non-clickers). Какому пользователю показали документ — сильно влияет на expected clicks. Можно доводить эту идею до конца и использовать вообще все фичи, независящие от документа. Но насколько это практично — я не знаю, ведь для этого нужно поддерживать отдельную модель вероятности клика.
Технический нюанс состоит ещё в том, что информацию про вероятность клика нужно донести до системы процессинга, которая вычисляет счетчики. Для позиционных фичей эту информацию нужно брать из фронтовых логов. Про остальные фичи — наоборот, из логов бэкенда (либо протаскивать с бэкенда на фронт).
CTR документа — это был лишь один пример. То же самое применимо ко всем другим категориальным фичам и к другим типам действий, в том числе небинарных. Учитывая, что в сумме такие фичи обычно одни из самых информативных, то это улучшение может быть довольно значимым.
Post #12
3.51K
- 👍 26
- 🔥 12