调整后的余弦相似 [英] Adjusted cosine similarity

查看:154
本文介绍了调整后的余弦相似的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想code 调整余弦相似 在PHP。

我建我的数据是这样的:

  $数据[用户名] [项目编号] =评级

数据例如:

  $数据[1] [1] = 5;
$数据[1] [2] = 3;
$数据[1] [3] = 4;$数据[2] [1] = 3;
$数据[2] [2] = 2;
$数据[2] [4] = 3;
$数据[2] [5] = 3;$数据[3] [1] = 4;
$数据[3] [3] = 3;
$数据[3] [5] = 5;$数据[4] [1] = 1;
$数据[4] [2] = 4;
$数据[4] [4] = 2;
$数据[4] [5] = 1;$数据[5] [3] = 4;
$数据[5] [4] = 3;

我想编写一个函数来计算的2项,调整后的余弦像

  adjusted_cosine(itemID1,itemID2)


解决方案

我觉得这应该做到这一点:

  SIM卡(I,J){
    ITEM1 = 0
    ITEM2 = 0    //计算第i个第j项目的款项
    //减去每个用户的平均评级。
    对于(K = 0; K<长度(数据); K ++){
        ITEM1 + =(数据[k]的[I] - 平均(数据[K]))
        ITEM2 + =(数据[K] [J] - AVG(数据[K]))
    }    结果(ITEM1 * ITEM2)/(开方(ITEM1 * ITEM1)* SQRT(ITEM2 * ITEM2))
    返回结果
}

您仍需要实现平均的功能,但我想一个简单的平均值将为这一点。

I'm trying to code adjusted cosine similarity in PHP.

I built my data like this :

$data[UserID][ItemID] = Rating

data example :

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

I want to write a function to calculate the adjusted cosine of 2 items, like

adjusted_cosine(itemID1,itemID2)

解决方案

I think this ought to do it:

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
}

You'll still need to implement the average function but I suppose a simple mean will do for that.

这篇关于调整后的余弦相似的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆