我正在学习学习排名,但不确定我是否了解火车样本和最终标签(相关性分数)是如何构建的。
假设我们在网上销售家具。我们记录了客户的查询、客户购买、点击的产品。
示例:
用户 A 搜索“红色沙发”,点击 Pa(r=1)、Pb(r=5)、Pc(r=10) 并购买了 Pc。
用户B搜索“红色沙发”,点击Pa(r=1)、Pd(r=2)、Pe(r=6),购买了Pd。
用户C搜索“blue chair”,点击Pu(r=1)、Po(r=2)、Ps(r=6)并购买了Pu。
(r 代表产品从上到下的绝对位置)。(假设点击我们将添加 1,对于购买我们将添加 2)
案例1: 没有任何个性化,我只想根据产品和查询的文本数据对产品进行排名。如何构建我的训练数据?
两个用户搜索“红色沙发”,我是否将它们分开处理,例如每个用户每个查询?
user query product relevance some_features
A "red sofa" Pc 2
A "red sofa" Pa 1
A "red sofa" Pb 1
A "red sofa" other products 0
B "red sofa" Pd 2
B "red sofa" Pa 1
B "red sofa" Pe 1
B "red sofa" other products 0
C "blue chair" Pu 2
C "blue chair" Po 1
C "blue chair" Ps 1
C "blue chair" other products 0
这在我看来有点奇怪,因为算法应该如何理解产品 Pc 或 Pd(由用户 A 和用户 B 购买)应该如何相互比较?
或者我是否将同一查询的日志一起处理,例如每个查询汇总?(因为用户 A 和 B 都点击了 Pa,所以它的相关性是 2=1+1)
query product relevance some_features
"red sofa" Pc 2
"red sofa" Pa 2
"red sofa" Pb 1
"red sofa" Pd 2
"red sofa" Pe 1
"red sofa" other products 0
"blue chair" Pu 2
"blue chair" Po 1
"blue chair" Ps 1
"blue chair" other products 0
这对我来说也很奇怪,因为如果用户点击相同的产品但购买不同的产品,点击产品的相关性会更高。
问题1:在这种情况下我应该如何表示标签和训练样本?
案例2:个性化。如果我想提供用户的“点击前”、“放入收藏夹”等功能,我确实会为每个用户构建一个培训记录,查询。
问题2:这样做是否正确?