You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多属性约束样本选择问题的求解工具问询(类多属性背包问题)

多属性约束样本选择问题的求解工具问询(类多属性背包问题)

问题描述

我手头有$N$个机器学习模型的训练样本,但只能从中选出数量远小于$N$的$n$个样本(即$n \ll N$)。这些样本都带有$K$个已测量的属性${a_1, a_2, \cdots, a_k}$。我想要选出这$n$个样本,同时满足两个核心目标:

  • 让这$K$个属性列的总和尽可能大
  • 各属性的权重分布尽可能均匀

我的尝试

我觉得这个问题有点像多属性版本的背包问题,但直接谷歌搜索下来,没找到太多能直接用来解决这个问题(或者它的松弛版本)的现成软件包,所以来社区问问大家有没有合适的工具推荐。

数值示例

给大家举个具体的小例子:我要从$N=5$个样本里选$n=3$个,样本有$K=4$个属性,原始数据如下:

序号ABCD
00.70.40.80.5
10.71.00.30.7
20.80.50.40.8
30.80.30.60.5
40.20.80.60.2

生成这份数据的代码如下:

import string
import itertools
import numpy as np
import pandas as pd

np.random.seed(42)
N = 5
n = 3
K = 4
measures = np.linspace(0.1, 1, 10)

df = pd.DataFrame(
    data=np.random.choice(measures, size=(N, K)),
    columns=list(string.ascii_uppercase)[:K],
)

我枚举了所有可能的选法,得到如下结果:

序号选中样本索引ABCD
0(0, 1, 2)2.21.91.52
1(0, 1, 3)2.21.71.71.7
2(0, 1, 4)1.62.21.71.4
3(0, 2, 3)2.31.21.81.8
4(0, 2, 4)1.71.71.81.5
5(0, 3, 4)1.71.521.2
6(1, 2, 3)2.31.81.32
7(1, 2, 4)1.72.31.31.7
8(1, 3, 4)1.72.11.51.4
9(2, 3, 4)1.81.61.61.5

权衡选择

我需要在两个约束之间找到最佳平衡点:一方面所有$K$列的总和要足够大,另一方面权重的熵要足够大(也就是分布越均匀越好)。根据对应的分析图,我应该选择样本索引组合(0, 1, 2)或者(0, 2, 4)。

备注:内容来源于stack exchange,提问作者Mr.Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:48:08