如何找到聚类算法的成功率?

How to find the success rate of a clustering algorithm?

我已经在图像数据集上实现了几种聚类算法。 我对推导聚类的成功率很感兴趣。我必须检测肿瘤区域,在原始图像中我知道肿瘤位于何处,我想比较两个图像并获得成功百分比。 以下图片:

原图:我知道癌的位置

聚类算法后的图像

我正在使用 python 2.7.

分割准确度

这是图像分割文献中非常常见的问题,例如 here is a Whosebug post

一种常见的方法是考虑 "correct pixels" 与 "incorrect pixels," 的比率,这在安全域的 图像分割 中很常见,例如 Mask RCNN, PixelNet.

将其更多地视为一项 对象检测 任务,您可以获取对象外壳的重叠部分并仅测量 accuracy (commonly broken down into precision, recall, f-score, and other measures with various bias/skews). This allows you to produce an ROC curve 可以校准的错误positives/false 否定。

对于什么是正确的,没有与领域无关的共识。 KITTI provides both.

Mask RCNN 是最先进的开源技术,并提供了实现 在python

在您的领域(医学)中,适用标准统计规则。使用保留集。交叉验证。等等 (*)

注意: 尽管文献 space 非常庞大,但我还是提醒您看看一些与领域相关的论文,因为它们可能需要更少的时间"statistical short cuts" 比其他视觉(例如数字识别)项目接受。


Python

除了上面的 mask rcnn 链接之外,scikit-learn 还提供了一些非常用户友好的工具,并且被认为是 "stack" 用于 python 的标准科学的一部分。

在 python 中实现图像之间的差异是微不足道的(使用 numpy)。这是一个矫枉过正 SO link

pythonis easy to implement on one's own; I'd use a library like shapely if you want to measure general polygon intersection 中的边界框交集。

Scikit-learn 有一些不错的机器学习评估工具,例如,


文献检索

您可能难以搜索答案的一个原因是因为您正试图在 监督学习 领域中衡量无监督方法聚类的性能。 "Clusters" 在数学中基本上是未定义的 (**)。您想查看监督学习文献以了解准确性。

也有关于无监督learning/clustering的文献,一般都是寻找拓扑结构。 Here's a very introductory summary。我不认为那是你想要的。

一个常见的问题,尤其是在规模上,是监督方法需要标签,标签可以是 time consuming to produce accurately for dense segmentation. Object detection makes it a little easier

有一些现有的医学数据集([1], [2], e.g.) and some ongoing research in label-less metrics。如果其中 none 是您的选择,那么您可能不得不重新考虑将其视为无监督问题,但评估变得非常不同在范围和效用上。


脚注

[*] Vision 人员有时会跳过交叉验证,即使他们不应该这样做,这主要是因为模型拟合速度很慢而且他们是一群懒惰的人。 请不要跳过 train/test/validation split,否则您的结果可能毫无用处

[**] 您可以找到各种各样的 "formal" 定义,但永远不会有两个人就哪一个是正确的或最有用的定义达成一致。 Here's denser reading