Sinkhorn-Knopp 算法采用矩阵 A 并找到对角矩阵 D 和 E,如果 M = DAE,则 M 的每一列和每一行的总和为 1。 该方法实际上是交替地对矩阵的行和列进行归一化。 这个函数是一种高效的实现,它在迭代完成之前实际上不执行归一化,并且不使用 A 的转置。
A 必须是非负数。 如果 A 中有零,则算法可能不会收敛,具体取决于它们的分布。 如果需要,可以设置最大迭代次数和/或容错。
行和列总和为 1 的矩阵称为“双重随机”。 此类矩阵具有多种应用,包括网页排名。
参考:
Philip A. Knight (2008) Sinkhorn–Knopp 算法:收敛和应用。 SIAM 矩阵分析和应用杂志 30(1), 261-275。 doi:10.1137/060659624
2021-11-22 14:45:56
3KB
matlab
1