我正在尝试在PHP中编码 adjusted cosine similarity 。
我建立了这样的数据:
$data[UserID][ItemID] = Rating
数据示例:
$data[1][1] = 5;
$data[1][2] = 3;
$data[1][3] = 4;
$data[2][1] = 3;
$data[2][2] = 2;
$data[2][4] = 3;
$data[2][5] = 3;
$data[3][1] = 4;
$data[3][3] = 3;
$data[3][5] = 5;
$data[4][1] = 1;
$data[4][2] = 4;
$data[4][4] = 2;
$data[4][5] = 1;
$data[5][3] = 4;
$data[5][4] = 3;
我想写一个函数来计算2项的调整余弦,比如
adjusted_cosine(itemID1,itemID2)
答案 0 :(得分:2)
我认为应该这样做:
sim(i,j) {
item1 = 0
item2 = 0
// calculate the sums for the ith and jth items
// minus each users' avg rating.
for (k = 0; k < length(data); k++) {
item1 += (data[k][i] - avg(data[k]))
item2 += (data[k][j] - avg(data[k]))
}
result (item1*item2)/(sqrt(item1*item1)*sqrt(item2*item2))
return result
}
你仍然需要实现平均功能,但我想一个简单的意思就是这样做。