ot.coot

协同最优运输求解器

函数

ot.coot.co_optimal_transport(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, epsilon=0, alpha=0, M_samp=None, M_feat=None, warmstart=None, nits_bcd=100, tol_bcd=1e-07, eval_bcd=1, nits_ot=500, tol_sinkhorn=1e-07, method_sinkhorn='sinkhorn', early_stopping_tol=1e-06, log=False, verbose=False)[源]

计算两个矩阵之间的CO-最优运输。

返回样本和特征传输计划在 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\)\((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\)之间。

该函数解决以下共同最优运输(COOT)问题:

\[\begin{split}\mathbf{COOT}_{\alpha, \varepsilon} = \mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \alpha_s \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} \\ &+ \alpha_f \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} + \varepsilon_s \mathbf{KL}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_f \mathbf{KL}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]

其中:

  • \(\mathbf{X}\): 源空间中的数据矩阵

  • \(\mathbf{Y}\): 目标空间中的数据矩阵

  • \(\mathbf{M^{(s)}}\): 额外的样本矩阵

  • \(\mathbf{M^{(f)}}\): 额外的特征矩阵

  • \(\mathbf{w}_{xs}\): 源空间中样本的分布

  • \(\mathbf{w}_{xf}\): 源空间中特征的分布

  • \(\mathbf{w}_{ys}\): 目标空间中样本的分布

  • \(\mathbf{w}_{yf}\): 目标空间中特征的分布

注意

此函数允许epsilon为零。 在这种情况下,ot.lp.emd的POT求解器将被使用。

Parameters:
  • X ((n_sample_x, n_feature_x) array-like, float) – 第一个输入矩阵。

  • Y ((n_sample_y, n_feature_y) 数组类似, 浮点数) – 第二个输入矩阵。

  • wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。

  • wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。

  • wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。

  • wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。

  • epsilon (标量可索引对象 长度为 2, 浮点数整数, 可选 (默认值 = 0)) – 样本和特征耦合的熵逼近的正则化参数。 允许 epsilon 包含 0。在这种情况下,使用 EMD 求解器,而不是 Sinkhorn 求解器。如果 epsilon 是标量,则相同的 epsilon 应用于 样本和特征耦合的正则化。

  • alpha (标量可索引对象,长度为 2, 浮点数整数, 可选的默认值 = 0) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,那么相同的 alpha 将应用于两个线性项。

  • M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 关于样本耦合的线性项的样本矩阵。

  • M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合的线性项相关的特征矩阵。

  • warmstart (字典, 可选 (默认 = None)) –

    包含 4 个键:
    • ”duals_sample” 和 “duals_feature”,其值为 两个向量的元组,大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y)。 如果使用 Sinkhorn 算法,样本和特征对偶向量的初始化。 默认是零向量。

    • ”pi_sample” 和 “pi_feature”,其值为 大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的矩阵。 样本和特征耦合的初始化。 默认是均匀分布。

  • nits_bcd (int, 可选 (默认 = 100)) – 用于求解 COOT 的块坐标下降 (BCD) 迭代次数。

  • tol_bcd (float, 可选 (默认值 = 1e-7)) – BCD 方法的容忍度。如果当前样本耦合与前一个样本耦合之间的 L1 范数低于此阈值,则停止 BCD 方法。

  • eval_bcd (int, 可选的 (默认值 = 1)) – 计算COOT成本时所使用的迭代的倍数。例如,如果 eval_bcd = 8,那么成本将在迭代8、16、24等时计算……

  • nits_ot (int, 可选 (默认 = 100)) – 在每个BCD迭代中解决两个最优传输问题的迭代次数。

  • tol_sinkhorn (float, 可选 (默认 = 1e-7)) – Sinkhorn算法的容忍度,用于在每个BCD迭代中停止用于熵最优传输问题的Sinkhorn方案(如果有的话)。仅在使用Sinkhorn求解器时触发。

  • method_sinkhorn (字符串, 可选 (默认 = "sinkhorn")) – 在POT的ot.sinkhorn求解器中使用的方法。仅支持“sinkhorn”和“sinkhorn_log”。

  • early_stopping_tol (float, 可选 (默认 = 1e-6)) – 提前停止的容忍度。如果记录的最后两个COOT距离的绝对差值低于此容忍度,则停止BCD方案。

  • log (bool, optional (default = False)) – 如果为True,则记录成本和4个对偶向量,包括来自样本的2个和来自特征耦合的2个。

  • verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。

Returns:

  • pi_samp ((n_sample_x, n_sample_y) array-like, float) – 样本耦合矩阵。

  • pi_feat ((n_feature_x, n_feature_y) array-like, float) – 特征耦合矩阵。

  • log (dictionary, optional) –

    log 为 True 时返回。键为:
    duals_sample(n_sample_x, n_sample_y) tuple, float

    在解决与样本耦合相关的OT问题时,成对的对偶向量。

    duals_feature(n_feature_x, n_feature_y) tuple, float

    在解决与特征耦合相关的OT问题时,成对的对偶向量。

    distanceslist, float

    COOT距离列表。

参考文献

使用 ot.coot.co_optimal_transport

与 CO-Optimal Transport 的行列对齐

与CO-Optimal Transport的行和列对齐

通过学习样本边际分布使用共同最优运输来检测异常值,并使用不平衡共同最优运输

通过学习样本的边际分布来检测异常值,使用CO-Optimal Transport和不平衡的Co-Optimal Transport
ot.coot.co_optimal_transport2(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, epsilon=0, alpha=0, M_samp=None, M_feat=None, warmstart=None, log=False, verbose=False, early_stopping_tol=1e-06, nits_bcd=100, tol_bcd=1e-07, eval_bcd=1, nits_ot=500, tol_sinkhorn=1e-07, method_sinkhorn='sinkhorn')[源]

计算两个测度之间的CO-最优传输距离。

返回 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\)\((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\) 之间的协同最优传输距离。

该函数解决以下共同最优运输(COOT)问题:

\[\begin{split}\mathbf{COOT}_{\alpha, \varepsilon} = \mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \alpha_1 \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} \\ &+ \alpha_2 \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} + \varepsilon_1 \mathbf{KL}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_2 \mathbf{KL}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]

其中 :

  • \(\mathbf{X}\): 源空间中的数据矩阵

  • \(\mathbf{Y}\): 目标空间中的数据矩阵

  • \(\mathbf{M^{(s)}}\): 额外的样本矩阵

  • \(\mathbf{M^{(f)}}\): 额外的特征矩阵

  • \(\mathbf{w}_{xs}\): 源空间中样本的分布

  • \(\mathbf{w}_{xf}\): 源空间中特征的分布

  • \(\mathbf{w}_{ys}\): 目标空间中样本的分布

  • \(\mathbf{w}_{yf}\): 目标空间中特征的分布

注意

此函数允许epsilon为零。 在这种情况下,ot.lp.emd的POT求解器将被使用。

Parameters:
  • X ((n_sample_x, n_feature_x) array-like, float) – 第一个输入矩阵。

  • Y ((n_sample_y, n_feature_y) 数组类似, 浮点数) – 第二个输入矩阵。

  • wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。

  • wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。

  • wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。

  • wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。

  • epsilon (标量可索引对象 长度为 2, 浮点数整数, 可选 (默认值 = 0)) – 样本和特征耦合的熵逼近的正则化参数。 允许 epsilon 包含 0。在这种情况下,使用 EMD 求解器,而不是 Sinkhorn 求解器。如果 epsilon 是标量,则相同的 epsilon 应用于 样本和特征耦合的正则化。

  • alpha (标量可索引对象,长度为 2, 浮点数整数, 可选的默认值 = 0) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,那么相同的 alpha 将应用于两个线性项。

  • M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 关于样本耦合的线性项的样本矩阵。

  • M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合的线性项相关的特征矩阵。

  • warmstart (字典, 可选 (默认 = None)) –

    包含 4 个键:
    • “duals_sample”和“duals_feature”,它们的值是

    大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的 2 个向量的元组。 如果使用 Sinkhorn 算法,则初始化样本和特征对偶向量。默认是零向量。 - “pi_sample”和“pi_feature”,它们的值是大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的矩阵。 初始化样本和特征耦合。 默认是均匀分布。

  • nits_bcd (int, 可选 (默认 = 100)) – 用于求解 COOT 的块坐标下降 (BCD) 迭代次数。

  • tol_bcd (float, 可选 (默认值 = 1e-7)) – BCD 方法的容忍度。如果当前样本耦合与前一个样本耦合之间的 L1 范数低于此阈值,则停止 BCD 方法。

  • eval_bcd (int, 可选的 (默认值 = 1)) – 计算COOT成本时所使用的迭代的倍数。例如,如果 eval_bcd = 8,那么成本将在迭代8、16、24等时计算……

  • nits_ot (int, 可选 (默认 = 100)) – 在每个BCD迭代中解决两个最优传输问题的迭代次数。

  • tol_sinkhorn (float, 可选 (默认 = 1e-7)) – Sinkhorn算法的容忍度,用于在每个BCD迭代中停止用于熵最优传输问题的Sinkhorn方案(如果有的话)。仅在使用Sinkhorn求解器时触发。

  • method_sinkhorn (字符串, 可选 (默认 = "sinkhorn")) – 在POT的ot.sinkhorn求解器中使用的方法。仅支持“sinkhorn”和“sinkhorn_log”。

  • early_stopping_tol (float, 可选 (默认 = 1e-6)) – 提前停止的容忍度。如果记录的最后两个COOT距离的绝对差值低于此容忍度,则停止BCD方案。

  • log (bool, optional (default = False)) – 如果为True,则记录成本和4个对偶向量,包括来自样本的2个和来自特征耦合的2个。

  • verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。

Returns:

  • float – CO-Optimal Transport 距离。

  • dict – 包含来自 co_optimal_transport 求解器的记录信息。 仅在 log 参数为 True 时返回

参考文献

使用 ot.coot.co_optimal_transport2 的示例

与 CO-Optimal Transport 的行列对齐

与CO-Optimal Transport的行和列对齐

通过学习样本边际分布使用共同最优运输来检测异常值,并使用不平衡共同最优运输

通过学习样本的边际分布来检测异常值,使用CO-Optimal Transport和不平衡的Co-Optimal Transport
ot.coot.co_optimal_transport(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, epsilon=0, alpha=0, M_samp=None, M_feat=None, warmstart=None, nits_bcd=100, tol_bcd=1e-07, eval_bcd=1, nits_ot=500, tol_sinkhorn=1e-07, method_sinkhorn='sinkhorn', early_stopping_tol=1e-06, log=False, verbose=False)[源]

计算两个矩阵之间的CO-最优运输。

返回样本和特征传输计划在 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\)\((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\)之间。

该函数解决以下共同最优运输(COOT)问题:

\[\begin{split}\mathbf{COOT}_{\alpha, \varepsilon} = \mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \alpha_s \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} \\ &+ \alpha_f \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} + \varepsilon_s \mathbf{KL}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_f \mathbf{KL}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]

其中:

  • \(\mathbf{X}\): 源空间中的数据矩阵

  • \(\mathbf{Y}\): 目标空间中的数据矩阵

  • \(\mathbf{M^{(s)}}\): 额外的样本矩阵

  • \(\mathbf{M^{(f)}}\): 额外的特征矩阵

  • \(\mathbf{w}_{xs}\): 源空间中样本的分布

  • \(\mathbf{w}_{xf}\): 源空间中特征的分布

  • \(\mathbf{w}_{ys}\): 目标空间中样本的分布

  • \(\mathbf{w}_{yf}\): 目标空间中特征的分布

注意

此函数允许epsilon为零。 在这种情况下,ot.lp.emd的POT求解器将被使用。

Parameters:
  • X ((n_sample_x, n_feature_x) array-like, float) – 第一个输入矩阵。

  • Y ((n_sample_y, n_feature_y) 数组类似, 浮点数) – 第二个输入矩阵。

  • wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。

  • wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。

  • wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。

  • wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。

  • epsilon (标量可索引对象 长度为 2, 浮点数整数, 可选 (默认值 = 0)) – 样本和特征耦合的熵逼近的正则化参数。 允许 epsilon 包含 0。在这种情况下,使用 EMD 求解器,而不是 Sinkhorn 求解器。如果 epsilon 是标量,则相同的 epsilon 应用于 样本和特征耦合的正则化。

  • alpha (标量可索引对象,长度为 2, 浮点数整数, 可选的默认值 = 0) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,那么相同的 alpha 将应用于两个线性项。

  • M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 关于样本耦合的线性项的样本矩阵。

  • M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合的线性项相关的特征矩阵。

  • warmstart (字典, 可选 (默认 = None)) –

    包含 4 个键:
    • ”duals_sample” 和 “duals_feature”,其值为 两个向量的元组,大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y)。 如果使用 Sinkhorn 算法,样本和特征对偶向量的初始化。 默认是零向量。

    • ”pi_sample” 和 “pi_feature”,其值为 大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的矩阵。 样本和特征耦合的初始化。 默认是均匀分布。

  • nits_bcd (int, 可选 (默认 = 100)) – 用于求解 COOT 的块坐标下降 (BCD) 迭代次数。

  • tol_bcd (float, 可选 (默认值 = 1e-7)) – BCD 方法的容忍度。如果当前样本耦合与前一个样本耦合之间的 L1 范数低于此阈值,则停止 BCD 方法。

  • eval_bcd (int, 可选的 (默认值 = 1)) – 计算COOT成本时所使用的迭代的倍数。例如,如果 eval_bcd = 8,那么成本将在迭代8、16、24等时计算……

  • nits_ot (int, 可选 (默认 = 100)) – 在每个BCD迭代中解决两个最优传输问题的迭代次数。

  • tol_sinkhorn (float, 可选 (默认 = 1e-7)) – Sinkhorn算法的容忍度,用于在每个BCD迭代中停止用于熵最优传输问题的Sinkhorn方案(如果有的话)。仅在使用Sinkhorn求解器时触发。

  • method_sinkhorn (字符串, 可选 (默认 = "sinkhorn")) – 在POT的ot.sinkhorn求解器中使用的方法。仅支持“sinkhorn”和“sinkhorn_log”。

  • early_stopping_tol (float, 可选 (默认 = 1e-6)) – 提前停止的容忍度。如果记录的最后两个COOT距离的绝对差值低于此容忍度,则停止BCD方案。

  • log (bool, optional (default = False)) – 如果为True,则记录成本和4个对偶向量,包括来自样本的2个和来自特征耦合的2个。

  • verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。

Returns:

  • pi_samp ((n_sample_x, n_sample_y) array-like, float) – 样本耦合矩阵。

  • pi_feat ((n_feature_x, n_feature_y) array-like, float) – 特征耦合矩阵。

  • log (dictionary, optional) –

    如果 log 是 True,将返回。键为:
    duals_sample(n_sample_x, n_sample_y) tuple, float

    解决与样本耦合相关的 OT 问题时的对偶向量对。

    duals_feature(n_feature_x, n_feature_y) tuple, float

    解决与特征耦合相关的 OT 问题时的对偶向量对。

    distanceslist, float

    COOT 距离列表。

参考文献

ot.coot.co_optimal_transport2(X, Y, wx_samp=None, wx_feat=None, wy_samp=None, wy_feat=None, epsilon=0, alpha=0, M_samp=None, M_feat=None, warmstart=None, log=False, verbose=False, early_stopping_tol=1e-06, nits_bcd=100, tol_bcd=1e-07, eval_bcd=1, nits_ot=500, tol_sinkhorn=1e-07, method_sinkhorn='sinkhorn')[源]

计算两个测度之间的CO-最优传输距离。

返回 \((\mathbf{X}, \mathbf{w}_{xs}, \mathbf{w}_{xf})\)\((\mathbf{Y}, \mathbf{w}_{ys}, \mathbf{w}_{yf})\) 之间的协同最优传输距离。

该函数解决以下共同最优运输(COOT)问题:

\[\begin{split}\mathbf{COOT}_{\alpha, \varepsilon} = \mathop{\arg \min}_{\mathbf{P}, \mathbf{Q}} &\quad \sum_{i,j,k,l} (\mathbf{X}_{i,k} - \mathbf{Y}_{j,l})^2 \mathbf{P}_{i,j} \mathbf{Q}_{k,l} + \alpha_1 \sum_{i,j} \mathbf{P}_{i,j} \mathbf{M^{(s)}}_{i, j} \\ &+ \alpha_2 \sum_{k, l} \mathbf{Q}_{k,l} \mathbf{M^{(f)}}_{k, l} + \varepsilon_1 \mathbf{KL}(\mathbf{P} | \mathbf{w}_{xs} \mathbf{w}_{ys}^T) + \varepsilon_2 \mathbf{KL}(\mathbf{Q} | \mathbf{w}_{xf} \mathbf{w}_{yf}^T)\end{split}\]

其中 :

  • \(\mathbf{X}\): 源空间中的数据矩阵

  • \(\mathbf{Y}\): 目标空间中的数据矩阵

  • \(\mathbf{M^{(s)}}\): 额外的样本矩阵

  • \(\mathbf{M^{(f)}}\): 额外的特征矩阵

  • \(\mathbf{w}_{xs}\): 源空间中样本的分布

  • \(\mathbf{w}_{xf}\): 源空间中特征的分布

  • \(\mathbf{w}_{ys}\): 目标空间中样本的分布

  • \(\mathbf{w}_{yf}\): 目标空间中特征的分布

注意

此函数允许epsilon为零。 在这种情况下,ot.lp.emd的POT求解器将被使用。

Parameters:
  • X ((n_sample_x, n_feature_x) array-like, float) – 第一个输入矩阵。

  • Y ((n_sample_y, n_feature_y) 数组类似, 浮点数) – 第二个输入矩阵。

  • wx_samp ((n_sample_x, ) array-like, float, 可选 (默认 = None)) – 在矩阵 X 的行(样本)上分配的直方图。默认情况下是均匀分布。

  • wx_feat ((n_feature_x, ) array-like, float, optional (default = None)) – 分配给矩阵 X 的列(特征)的直方图。默认情况下为均匀分布。

  • wy_samp ((n_sample_y, ) 类数组, 浮点数, 可选 (默认 = None)) – 分配给矩阵 Y 的行(样本)的直方图。默认情况下为均匀分布。

  • wy_feat ((n_feature_y, ) array-like, float, optional (default = None)) – 指定在矩阵 Y 的列(特征)上的直方图。默认情况下为均匀分布。

  • epsilon (标量可索引对象 长度为 2, 浮点数整数, 可选 (默认值 = 0)) – 样本和特征耦合的熵逼近的正则化参数。 允许 epsilon 包含 0。在这种情况下,使用 EMD 求解器,而不是 Sinkhorn 求解器。如果 epsilon 是标量,则相同的 epsilon 应用于 样本和特征耦合的正则化。

  • alpha (标量可索引对象,长度为 2, 浮点数整数, 可选的默认值 = 0) – 与样本和特征耦合相关的线性项的系数参数。如果 alpha 是标量,那么相同的 alpha 将应用于两个线性项。

  • M_samp ((n_sample_x, n_sample_y), float, 可选 (默认 = None)) – 关于样本耦合的线性项的样本矩阵。

  • M_feat ((n_feature_x, n_feature_y), float, 可选 (默认 = None)) – 与特征耦合的线性项相关的特征矩阵。

  • warmstart (字典, 可选 (默认 = None)) –

    包含 4 个键:
    • “duals_sample”和“duals_feature”,它们的值是

    大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的 2 个向量的元组。 如果使用 Sinkhorn 算法,则初始化样本和特征对偶向量。默认是零向量。 - “pi_sample”和“pi_feature”,它们的值是大小为 (n_sample_x, n_sample_y) 和 (n_feature_x, n_feature_y) 的矩阵。 初始化样本和特征耦合。 默认是均匀分布。

  • nits_bcd (int, 可选 (默认 = 100)) – 用于求解 COOT 的块坐标下降 (BCD) 迭代次数。

  • tol_bcd (float, 可选 (默认值 = 1e-7)) – BCD 方法的容忍度。如果当前样本耦合与前一个样本耦合之间的 L1 范数低于此阈值,则停止 BCD 方法。

  • eval_bcd (int, 可选的 (默认值 = 1)) – 计算COOT成本时所使用的迭代的倍数。例如,如果 eval_bcd = 8,那么成本将在迭代8、16、24等时计算……

  • nits_ot (int, 可选 (默认 = 100)) – 在每个BCD迭代中解决两个最优传输问题的迭代次数。

  • tol_sinkhorn (float, 可选 (默认 = 1e-7)) – Sinkhorn算法的容忍度,用于在每个BCD迭代中停止用于熵最优传输问题的Sinkhorn方案(如果有的话)。仅在使用Sinkhorn求解器时触发。

  • method_sinkhorn (字符串, 可选 (默认 = "sinkhorn")) – 在POT的ot.sinkhorn求解器中使用的方法。仅支持“sinkhorn”和“sinkhorn_log”。

  • early_stopping_tol (float, 可选 (默认 = 1e-6)) – 提前停止的容忍度。如果记录的最后两个COOT距离的绝对差值低于此容忍度,则停止BCD方案。

  • log (bool, optional (default = False)) – 如果为True,则记录成本和4个对偶向量,包括来自样本的2个和来自特征耦合的2个。

  • verbose (bool, 可选 (默认 = False)) – 如果为真,则在每个 eval_bcd 的倍数迭代时打印 COOT 成本。

Returns:

  • float – CO-Optimal Transport 距离。

  • dict – 包含来自 co_optimal_transport 求解器的记录信息。 仅在 log 参数为 True 时返回

参考文献