Условие:
В Авито на карточке объявления (айтема) в самом низу есть раздел с похожими айтемами. Эти айтемы ранжируются относительно вероятности просмотра.
Предположим, что текущий алгоритм определения вероятности (
p
c
o
s
i
n
e
p
cosine
) работает как косинусное расстояние между вектором, который описывает числено представление наименования айтема (эмбедингом) и векторами, которые описывают числено представление других наименований айтемов.
Косинусное расстояние (Cosine Distance) определяется следующим образом:
p
c
o
s
i
n
e
:
=
1
−
A
⋅
B
∥
A
∥
⋅
∥
B
∥
p
cosine
:=1−
∥A∥⋅∥B∥
A⋅B
, где
A
A,
B
B – вектора;
A
⋅
B
A⋅B – скалярное произведение векторов;
∣
∣
A
∣
∣
и
∣
∣
B
∣
∣
∣∣A∣∣ и ∣∣B∣∣ – евклидовы нормы (длины) векторов.
Нужно найти
max
(
p
c
o
s
i
n
e
)
max(p
cosine
), если эмбединг нашего айтема – [1.2, 0.8, -0.5, 0.3, 1.0], а эмбединги других айтемов имеют следующий вид:
«Продавщица в Туле» | эмбединг – [0.7, 1.0, -0.3, 0.5, 0.8];
«Уборщица в Москве подработка» | эмбединг – [0.5, 0.6, 0.1, 0.9, 0.4];
«Разнорабочий подработка дорого» | эмбединг – [0.9, 0.7, 0.2, 1.0, 0.6];
«подработка» | эмбединг – [0.3, 0.2, 0.8, 0.1, 0.5]
Решение:
Шаг 1. Вычислим евклидову норму (длину) эмбединга нашего айтема A = [1.2, 0.8, -0.5, 0.3, 1.0]. Норма A = √(1.2² + 0.8² + (–0.5)² + 0.3² + 1.0²) = √(1.44 + 0.64 + 0.25 + 0.09 + 1.0) = √3.42 ≈ 1.85. Шаг 2. Для каждого кандидата вычислим скалярное произведение A ⋅ B, норму вектора кандидата и затем косинусное расстояние pcosine = 1 – (A ⋅ B)⁄(||A|| ⋅ ||B||). 1. Кандидат «Продавщица в Туле» с эмбедингом B1 = [0.7, 1.0, –0.3, 0.5, 0.8]. • Скалярное произведение A ⋅ B1 = 1.2×0.7 + 0.8×1.0 + (–0.5)×(–0.3) + 0.3×0.5 + 1.0×0.8. 1.2×0.7 = 0.84; 0.8×1.0 = 0.8; (–0.5)×(–0.3) = 0.15; 0.3×0.5 =...
![Дано косинусное расстояние между векторами A и B:
p_cosine := 1 - (A ⋅ B) / (∥A∥ ⋅ ∥B∥)
где A ⋅ B – скалярное произведение векторов,
∥A∥ и ∥B∥ – евклидовы нормы векторов.
Эмбединг текущего айтема (вектор A) равен [1.2, 0.8, -0.5, 0.3, 1.0].
Эмбединги](/public/images/library/external/library-detail-hero-book.png)