Скорректированное косинусное сходство - PullRequest
0 голосов
/ 06 августа 2010

Я пытаюсь кодировать скорректированное косинусное сходство в PHP.

Я построил свои данные так:

$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)

1 Ответ

2 голосов
/ 06 августа 2010

Я думаю, что это должно быть сделано:

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
}

Вам все еще нужно будет реализовать функцию усреднения, но я предполагаю, что для этого подойдет простое среднее.

...