VBPCA与k-NN在Reddit数据集上的对比及维基百科类别网络结构分析
1. k-NN算法介绍
1.1 k-NN基础
在k近邻(k-NN)算法中,通常会选择多个邻居数量k进行实验。为了获得更好的结果,可以通过K折交叉验证等方法来估计参数k的值。不过,简单的邻域模型没有考虑到用户投票行为的差异,有些用户可能经常投反对票,而有些用户可能只投赞成票。因此,在最终的k-NN方法中引入评分归一化是很有必要的,公式如下:
[ \hat{r} {ui} = \bar{r}_i + \frac{\sum {j \in N_u(i)} w_{ij}(r_{uj} - \bar{r} j)}{\sum {j \in N_u(i)} |w_{ij}|} ]
其中,(\bar{r} i) 表示所有用户对链接i的平均评分,称为均值中心化项。在计算i的邻居时,分子中也包含了均值中心化。分母则是相似度权重 (w {ij}) 的归一化项。
1.2 全k-NN算法
使用相似度矩阵计算链接级k-NN的算法步骤如下:
1. 使用余弦相似度从测试矩阵 (M_{test}) 计算完整的 (d×d) 相似度矩阵 (S)。对于列归一化的 (n×d) 矩阵 (M),有 (S = M^T M)。
2. 为了使用上述公式估计 (\hat{r} {ui}),在列向量 (S_i) 中找到k个相关链接j,使得 (r {uj}) 可观测且权重最高。
这个算法在实验中被称为“k-NN full”。
1.3 快速稀疏k-NN算法
对
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



