在聚类分析中,经常需要比较两组聚类结果的相似度。配对混淆矩阵(Pair Confusion Matrix)是一种衡量这种相似度的工具。它通过计算所有样本对在真实和预测聚类下的相同或不同聚类分配情况,生成一个2x2的相似度矩阵。
具体来说,首先定义一个样本对为正样本对,如果它们在聚类中被分到同一个簇中。然后,类似于二元分类问题,可以计算出真阴性(True Negatives,即C_{00}
)、假阴性(False Negatives,即C_{10}
)、真阳性(True Positives,即C_{11}
)和假阳性(False Positives,即C_{01}
)的数量。
配对混淆矩阵的计算公式如下:
C = np.array([[C_{00}, C_{01}], [C_{10}, C_{11}]])
其中,C_{00}
表示在真实和预测聚类中都被分到不同簇的样本对数量,C_{01}
表示在真实聚类中被分到不同簇但在预测聚类中被分到相同簇的样本对数量,C_{10}
表示在真实聚类中被分到相同簇但在预测聚类中被分到不同簇的样本对数量,C_{11}
表示在真实和预测聚类中都被分到相同簇的样本对数量。
配对混淆矩阵的计算结果是一个2x2的数组,其中包含了上述四个统计量。这个矩阵可以帮助评估两个聚类结果的相似度。例如,如果一个聚类结果的C_{11}
值很高,说明这个聚类结果与真实聚类结果的相似度很高。相反,如果C_{01}
或C_{10}
的值很高,则说明这个聚类结果与真实聚类结果的相似度较低。
在实际应用中,可以使用Python的scikit-learn库来计算配对混淆矩阵。以下是一个示例代码:
from sklearn.metrics.cluster import pair_confusion_matrix
pair_confusion_matrix([0, 0, 1, 1], [1, 1, 0, 0])
这段代码计算了两个聚类结果的配对混淆矩阵。第一个聚类结果中,样本0和1被分到同一个簇,样本2和3被分到另一个簇。第二个聚类结果中,样本0和1也被分到同一个簇,样本2和3也被分到另一个簇。因此,这两个聚类结果的相似度很高,配对混淆矩阵的C_{11}
值会很高。
需要注意的是,配对混淆矩阵并不总是对称的。这是因为在计算C_{01}
和C_{10}
时,考虑的是不同聚类结果之间的差异,而不是相似度。因此,即使两个聚类结果的相似度很高,它们的配对混淆矩阵也可能不是对称的。