本题需要根据目标用户向量 T、权重向量 W 和每个商品的特征向量,计算商品与目标用户之间的加权欧氏距离平方:
Score=j=1∑DWj×(tj−ij)2Score 越小,表示商品与目标用户越匹配。
在个性化推荐系统中,不同用户对商品各个特征的重视程度并不相同。系统使用一个特征权重向量来刻画这种偏好:某个维度的权重越大,说明用户在决策时越在意该维度。
现在给定目标用户的特征向量 T=[t1,t2,…,tD] 和特征权重向量 W=[w1,w2,…,wD],并且候选商品库中有 N 个商品。每个商品具有唯一的商品编号 ID 以及一个特征向量 I=[i1,i2,…,iD]。
对于每个候选商品,需要计算它与目标用户之间的加权欧氏距离平方:
Score=j=1∑DWj×(tj−ij)2即:先求目标用户特征与商品特征在第 j 个维度上的差值,再取平方,然后乘以该维度对应的权重 Wj,最后将所有维度累加。
要求从所有候选商品中选出最匹配的 K 个商品,排序规则如下:
Score 越小,表示该商品与目标用户越匹配,排名越靠前;Score 相同,则按商品 ID 从小到大排序。第一行包含三个正整数 N、D、K,分别表示商品数量、特征维度数和需要推荐的个数。
第二行包含 D 个整数,依次表示特征权重向量 W 的各个分量。
第三行包含 D 个整数,依次表示目标用户向量 T 的各个分量。
接下来 N 行,每行包含一个整数 ID,表示商品编号,随后包含 D 个整数,依次表示该商品的特征向量。
输出一行,包含 K 个整数,表示排名前 K 的商品 ID,用空格分隔。
输入
1 1 1
5
7
101 7
输出
101
说明
目标用户向量与商品 101 的特征向量相同,第 1 维的差值均为 0。
因此该商品的加权平方距离为 Score=5×(7−7)2=0。
候选商品只有 1 个,因此最终输出编号 101。
输入
4 2 3
1 4
0 0
10 0 0
20 2 0
30 0 1
40 1 0
输出
10 40 20
说明
目标用户向量为 (0,0),两个维度的权重分别为 1 和 4。
商品 10 的分数为
Score=1×(0−0)2+4×(0−0)2=0。
商品 40 的分数为
Score=1×(0−1)2+4×(0−0)2=1。
商品 20 的分数为
Score=1×(0−2)2+4×(0−0)2=4。
商品 30 的分数为
Score=1×(0−0)2+4×(0−1)2=4。
分数最小的商品是 10,其分数为 0。其次是商品 40,分数为 1。商品 20 和商品 30 的分数相同,都为 4,此时按商品 ID 从小到大排列,先取 20。
因此排名前 3 的商品编号依次为 10、40、20。
输入
5 3 3
4 2 1
5 6 7
101 5 6 7
102 5 7 7
103 4 6 7
104 5 6 8
105 7 6 7
输出
101 104 102
说明
三个维度的权重分别为 4、2、1,目标用户向量为 (5,6,7)。
商品 101:
Score=4×(5−5)2+2×(6−6)2+1×(7−7)2=0。
商品 102:
Score=4×(5−5)2+2×(6−7)2+1×(7−7)2=2。
商品 103:
Score=4×(5−4)2+2×(6−6)2+1×(7−7)2=4。
商品 104:
Score=4×(5−5)2+2×(6−6)2+1×(7−8)2=1。
商品 105:
Score=4×(5−7)2+2×(6−6)2+1×(7−7)2=16。
按照 Score 从小到大排序为:101(0)、104(1)、102(2)、103(4)、105(16)。
因此排名前 3 的商品编号依次为 101、104、102。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册