余弦相似度量:多个结果

时间:2010-04-15 17:42:35

标签: cluster-analysis distance similarity cosine measure

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

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

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

谢谢,

AS


我想要实现的基本描述是,是否有可能确定来自社交书签webservice Delicious.com的两个用户与他们的书签和标签的相似程度。

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

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

,另一个用户可能会使用其代码生成类似的群集:

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

该数字表示在已保存的书签中标签共同出现的次数,在此示例中标签为“fruit”。

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

我很可能不正确地使用余弦相似性,

2 个答案:

答案 0 :(得分:2)

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

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

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

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


为了帮助改进这个问题,这是我通常理解的问题,请补充并更正问题,以便为您想要实现的目标以及系统的特征提供更好的“感觉”,以便您可以得到更好的建议 我们有,我们假设它们是类似矢量的对象,并分配给 cluster 。子集关键字暗示每个项目可能属于一个且只有一个集群(或者根本不属于任何集群),但最好确认是这种情况。
此外,最好还是了解一下这个事实,即向量的维度在某种程度上被归一化(以免项目的相对不重要的特征,但具有相对较大的价值范围会扭曲余弦相似度或其他距离测量)
我们有 用户 ,可以“拥有”多个群集。最好知道(在主线中)给定用户如何“拥有”集群以及他们的集群是否只是一个布尔属性(拥有或不具有)或者是否存在某些分类甚至数字度量“拥有”(用户X的集群1的系数为.3,集群8的系数为.2等...)
测量两个星团之间的余弦相似度的方式也可以更好地定义(它是群集的两个“中心”之间的相似性还是其他东西......

答案 1 :(得分:1)

有许多方法可以比较集合和集群。配对计数F-度量,Rand指数,...其中大多数已经解决了将个体相似性概括为单一整体相似性的问题。

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

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

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