我正在尝试使用聚类来自动化组查找过程,目的是能够自动检测看不见数据中的组。数据是任何给定网页中的 html 元素,这包括许多功能,包括从 Web 浏览器呈现的空间和视觉信息。检测到的组通常在语义上是有意义的,例如一组导航链接或主要内容区域中的项目列表。
我已经实现了一个微妙的距离测量来捕捉这些元素的相似或不同,我将这些值传递给 DBSCAN 进行聚类。到目前为止它工作得很好,但我正在努力想办法改进它。
距离函数实际上是 10 个不同距离度量的加权和,这些度量捕获不同类型的相似性和差异。我对更可靠和果断的措施的权重高于其他措施。从理论上讲,权重较低的指标只有在它们一致时才会产生效果,否则会被权重较高的指标压倒。此外,每个测量函数本身都可以放大或减弱其对给定项目对的权重,例如,如果不确定并想要弃权,则将其权重设置为零,或者如果发现特别相似/不同,则将其设置为更高显着或可靠。
尽管它广泛运行得很好,但我注意到通常应该进一步拆分一两个最大的集群。为此,我考虑了两种方法:(a)减弱在集群内主要给出低距离值的度量的权重(从而放大具有更高方差的其他度量),然后重新运行 DBSCAN 或(b)在集群中搜索子集大量同时出现的特征(例如,父元素中的某些 css 类和特定的字体大小),或者基于这些拆分集群,或者调整距离度量以反映这种明显的分组,然后使用调整值。
目前这一切都在无人监督的情况下工作,但我愿意手动创建一组真实数据来改进它。也许然后这可以用来优化权重,以最小化集群内距离并最大化集群间距离?我也喜欢多次运行集群的想法,根据集群内每个度量的方差重复调整权重。
我正在寻找有关如何优化它的更多想法,我将不胜感激。我在其他地方看到了一些评论,即无监督聚类仅适用于探索数据而不是自动化决策,但我无法找到更好的方法来找到这些组,因为我有限的 ML/数据科学经验。考虑到我花了这么多时间来构建它,理想的做法是找出一种聪明的方法,以更智能的方式自适应地调整这些权重。