Но как же оптимизировать money_precision@5?



На самом деле из поста выше можно получить, что:



money_precision@5 = precision@5 - 0.28/p



Если мы прогнозируем вероятность покупки товара (~precision@5), то нам просто нужно завысить вес ошибки для дорогих товаров пропорционально 0.28/р. Для этого можно взять вес ошибки, например как е^(alpha * p)



Кстати, в рекомендательных системах часто точно также взвешивают наблюдения по давности взаимодействия. Чтобы давнее взаимодействие юзера с товаром имело меньший вес, чем новое



Вывод

Приближение loss функции к реальности можно добиться за счёт взвешивания наблюдений (sample_weight)