0

我的程序使用聚类来生成相似项目的子集,然后使用余弦相似度度量作为确定聚类相似程度的方法。例如,如果用户 1 有 3 个集群,用户 2 有 3 个集群,则每个集群相互比较,将产生 9 个使用余弦相似度度量的结果,例如 [0.3, 0.1, 0.4, 0.12, 0.0, 0.6, 0.8, 1.0, 0.22]

我的问题是,基于这些结果,我如何将这些值转化为有形的结果,以显示这两个用户的相似程度?

我制作的一个简单方法是将所有值除以比较次数,然后将它们加在一起得到 1 个值,但这是一种非常简单的方法。

谢谢,

作为


我试图实现的基本描述是,是否有可能从社交书签网络服务 Delicious.com 中确定两个用户的书签和标签有多相似。

到目前为止,我已经根据用户书签的标签和每个标签的共现创建了集群,例如一个集群可以是:

fruit: (apple, 15), (orange, 9), (kiwi, 2)

另一个用户可能有一个从他们的标签产生的类似集群:

fruit: (apple, 12), (strawberry, 7), (orange, 3)

该数字表示标签在保存的书签中与此示例中的标签“水果”共同出现的次数。

我已经使用余弦相似度度量来比较这些集群以确定它们的相似程度,并且从我最初的问题来看,有许多集群比较结果(将每个用户集群与另一个用户集群进行比较)我不确定如何聚合结果以产生有意义的结果。

很有可能我一直不正确地使用余弦相似度,

4

2 回答 2

3

问题定义不明确......有了更多细节,可以提供关于该方法有效性的评论,一般来说(使用余弦相似度,计算方式等)以及该方法的有效性用于汇总最终结果的方法。

本质上,您正在平均为每对集群 (Ca, Cb) 计算的余弦相似度值,其中 Ca 是用户 A“拥有”的集群,而 Cb 是用户 B“拥有”的集群。

我猜这可以通过使用加权平均来大大改善,该加权平均会考虑到用户可以展示的集群的“拥有”数量
也许这种“拥有”关系纯粹是布尔关系:用户拥有或没有特定的集群,但很有可能他/她的“拥有”可以用[有序]分类属性甚至数值来限定(无论是相对的:说给定用户拥有的给定集群的百分比,与他/她拥有的其他集群相比,或者是绝对的)。
因为每个余弦相似度都基于用户“A”拥有的集群和用户“B”拥有的集群,如果正确规范化,则可以将相应“具有”度量的乘积作为应用于平均计算中相应余弦相似度项的系数。以这种方式,如果两个用户实际上是相似的,但其中一个恰好有一个或两个额外的集群,并且“拥有”因素非常低,那么聚合结果不会因此受到太大影响。

通常距离计算(例如使用余弦相似度)以及聚合公式(例如平均值或加权平均值)对各个维度的规模(以及它们的相对“重要性”)非常敏感。出于这个原因,通常很难提供诸如上述的通用建议。理论对分类问题非常重要,但需要注意不要“盲目地”应用公式:为树而松森林很容易;-)


为了帮助改进问题,这里是我的一般理解,请补充和纠正问题,以提供更好的“感觉”你想要达到什么以及系统的特点是什么,以便你收到更好的建议.
我们有一些项目 ,我们假设它们是类似向量的对象,并且分配给了clusters。子集关键字暗示每个项目可能属于一个且仅属于一个集群(或可能根本不属于任何集群),但最好确认是这种情况。
此外,最好了解向量的维度以某种方式归一化(以免项目的相对不重要的特征,但具有相对较大的值范围会扭曲余弦相似度或其他距离测量)
我们有可以“拥有”多个集群的用户。最好知道(在主线中)给定用户如何“拥有”集群,以及他们拥有的集群是否只是一个布尔属性(拥有或不拥有),或者是否有一些分类甚至数字度量“拥有”(用户 X 的集群 1 的系数为 0.3,集群 8 的系数为 0.2 等)
测量两个集群之间的余弦相似度的方式也可以更好地定义(是集群的两个“中心”之间的相似性还是别的什么......

于 2010-04-15T19:45:00.297 回答
1

有很多方法可以比较集合和集群。Pair-counting F-Measures, Rand index, ... 其中大多数都解决了将个体相似性总结为单个整体相似性的问题。

请参阅此以获取一些指示:

http://en.wikipedia.org/wiki/Cluster_analysis#Evaluation_of_Clustering_Results

您必须了解,虽然人类希望将所有内容总结为一个分数,但这并不总是足够的。这就是为什么有这么多指标的原因。他们都有自己的优点和缺点。

于 2011-12-29T15:34:33.460 回答