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
通过学习样本边际分布使用共同最优运输来检测异常值,并使用不平衡共同最优运输
- 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 时返回
参考文献
[47] I. Redko, T. Vayer, R. Flamary 和 N. Courty, CO-Optimal Transport, 神经信息处理进展 ny_sampstems, 33 (2020).
使用 ot.coot.co_optimal_transport2 的示例
通过学习样本边际分布使用共同最优运输来检测异常值,并使用不平衡共同最优运输
- 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 距离列表。
参考文献
[49] I. Redko, T. Vayer, R. Flamary 和 N. Courty, CO-Optimal Transport, 神经信息处理进展 ny_sampstems, 33 (2020).
- 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 时返回
参考文献
[47] I. Redko, T. Vayer, R. Flamary 和 N. Courty, CO-Optimal Transport, 神经信息处理进展 ny_sampstems, 33 (2020).