首页 > 解决方案 > 从相似度矩阵中识别异常值

问题描述

我有一个维度为 nxn 的 numpy 矩阵,其中 [i,j] 元素是两个对象之间的相似度得分(0-1,1 相同,0 相对)(在这种情况下,我正在分析调色板,所以它是调色板 i 和调色板 j 之间的相似度得分)。我想确定哪些对象是“异常值”(在这里使用松散的定义)。我能想到的最接近的是使用 DBSCAN 之类的东西并确定哪些对象似乎不适合。有没有更好的方法来解决这个问题?

标签: pythonsimilarityoutliers

解决方案


我会选择Markov clustering

本质上,该算法是在图上进行随机游走。

如果您有邻近矩阵,则随机游走非常容易实现。算法大致是:

  1. 标准化矩阵。
  2. 将其提高到大幂 ( M**n)。
  3. 查看节点之间的连接强度。

推荐阅读