实习笔记Day3(2022.8.10)

一.总结 

1.再次回顾并深入了解了谱聚类算法的基本流程中的(稀疏)相似矩阵构建一环

2.对稀疏相似矩阵的并行构建有了初步了解

二.学习笔记

1.对相似矩阵构建的进一步理解

(1)对相似度函数选取的理解

相似度函数选取的原则是,理想情况下,如果样本点 x_i 和 x_j 属于不同的类,那么 S_i_j=0;因此选择高斯核函数是合理的,因为 x_i 和 x_j 距离越大,S_i_j 越小,距离无限大时相似度趋于0,距离趋于0时相似度趋于1。其中参数 \sigma 用于控制相似度随距离缩放速度的快慢(本文中是两个参数 \sigma_i 和 \sigma_j

(2)稀疏相似矩阵的构建

文中提到的是t近邻法。构建稀疏相似矩阵的目的是减少相似矩阵的内存占用,如果有n个样本点,那么存储传统的相似矩阵需要n*n的空间,当样本点很多时,这是不实际的

k近邻法的原理:
给定一个参数t(t远小于n),计算某一个特定样本点和其他所有样本点的相似度时,先确定该样本点的t个近邻(即与该样本点距离前t小的t个样本点),如果是近邻,用高斯核函数计算相似度,如果不是,直接令相似度为0。这样得到的相似矩阵可能是不对称的,解决办法是:对称的两个元素中如果一个为0一个非0,则令它们都为非0值。这样的稀疏相似矩阵最多占用空间为n*2t,大大节省了空间

2.对稀疏相似矩阵并行框架的初步理解

(1)MPI和MapReduce

1)MapReduce提供了一种容错机制,也就是说,如果一个节点出现故障,会启动另一个节点的任务,MPI缺乏这一功能,因此MPI用户需要手动添加检查点来实现容错

2)一般而言,MapReduce适用于节点间数据交换很少的非迭代算法,MPI适用于节点间数据交换频繁的迭代算法

3)稀疏相似矩阵的并行构建是一个非迭代和独立的过程,并且十分耗时,拥有一个容错机制是必不可少的,因此选择MapReduce;拉普拉斯矩阵特征向量的并行求解和k-means并行算法则选择MPI

(2)稀疏相似矩阵的并行构建

稀疏相似矩阵的构建分为三步:

1)对于每个数据点,计算它到其他所有数据点的距离,并找出它的t个邻近点

2)修改1)得到的n*n矩阵,使其对称

3)计算相似度

分步并行构建:

1)将n*n矩阵划分为p份,每份是一个 \frac{n}{p}*n 矩阵,将这p份分别放在p个节点中,要求每个节点在内存中能保存 \frac{n}{p} 个数据点。Map阶段创建中间键值对,使得每份n/p数据点都有相同的键,Reduce阶段,遍历整个数据集,对于给定的数据点 x_i ,每个节点都计算它所保存的数据点到 x_i 的距离,并记录前 t 个最小距离,p个节点间并行计算,计算完毕后再找出全局的前t个最小距离。

另外,使用SSTable使得我们能够轻松访问数据集文件中的任意数据点,因此读取n/p数据点不需要扫描整个输入文件(不太理解)

2)Map阶段,对于稀疏距离矩阵中的每一个非零元素,生成两个键值对:第一个键值对的键是行号,值是列号和距离,第二个键值对的键是列号,值是行号和距离。Reduce阶段,具有相同键(指两个键都相同)的元素,应具有相同的值(即把零值改为非零值)。

3)如果 \sigma_i 和 \sigma_j 都是常值将十分简单,但文中在计算一个 S_i_j 时,\sigma_i 取的是 x_i 与其所有邻近点距离的均值,因此计算相似度也可以使用MapReduce,Map阶段计算稀疏距离矩阵每一行的均值(即每个数据点的 \sigma_i),每一个Reduce函数计算稀疏距离矩阵一行的相似度

三.工作记录 

暂无

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值