给定一堆项目,通过比较它们将它们分成有意义的组

时间:2016-06-29 13:53:27

标签: algorithm math graph categorization

鉴于我有一堆'需要分组的项目,并且考虑到我可以表达这些项目的差异,相对于彼此,数字,分数,如果你愿意,我将如何将这些输入分成有意义的组?

我认识到这是一个抽象的问题,所以试着让它更清楚,这是我到目前为止所尝试的:

我尝试将输入表示为加权图形,其中每个顶点都连接到每个其他顶点,并且强度为'边缘是他们的相对分数。然后,我将获取图表的最长边,并将每个其他顶点分开“紧密度”'到最长边的末端的顶点。这样做效果相当不错,但总有一个结果是产生两组的缺点,这可能不一定合乎逻辑。

例如:说我可以用数字来表达水果的不同。然后给了一堆苹果,不同品牌的苹果会形成不同的类别,比如Elstar,Jonagold,你有什么......但是当我有一堆由苹果,梨和橘子组成的堆,那么苹果会相对类似,应该属于同一类别。

我猜测我必须删除图表的每个边缘大于平均值加上标准偏差或类似的东西,然后看看有多少脱节的子图出现,但我' d喜欢听到比我更有数学知识的人的态度。

1 个答案:

答案 0 :(得分:2)

评论时间有点长。

您指的是群集。你似乎在两个项目之间有一个“距离”矩阵,虽然这可能是“强度”度量的一些反转。距离度量是非负的,当两个事物相等时为0。值越大,物品越远。

当你有一个通用的“距离”矩阵时,典型的聚类方法是分层/凝聚聚类(“距离”在引号中,因为它可能不符合距离的所有形式质量)。开始理解这种技术的好地方是PHP read_exif_data and Adjust Orientation。层次聚类背后的思想可以应用于非完全连通的图形。

我希望几乎每个统计数据包都包含某种形式的层次结构集群。