从哪里开始使用 ML 解决多变量优化问题?
Where to start for multi-variable optimization problem with ML?
我正在寻找一个开始解决 ML 优化问题的地方。
假设我有一大堆砖头,我需要从这堆砖头中挑出 50 块砖头来拼砌一堵墙。我的砖块类型各不相同:有些砖块比其他砖块更结实,有些更重,所以每次我 select 一套砖块,我都需要进行(相对较慢的)结构计算以确保墙不会掉下来。我的堆里有太多的砖块,无法通过蛮力尝试每一种排列,所以我想使用 ML 来帮助我找到可能有效的砖块排列,因为我知道之前有几百套是好的。
这堵墙还有一些主观标准需要满足——如果我的青砖太多,可能会很难看。我很清楚哪些标准是主观的(例如,我知道建筑师关心有多少绿砖),但我想用以前的数据训练一个 ML 模型,以了解为这些标准赋予什么样的权重,因为我对绿砖的数量没有任何硬性限制——我只有一个数据集显示建筑师不喜欢过去有很多绿砖的墙。
这是ML可以帮我解决的问题吗? frameworks/models 我应该调查什么来解决这种问题?我很难确定起点!
答案在一定程度上取决于您是否需要帮助想出(生成)新颖的组合,或者您是否想了解影响 success/acceptance 的可能性的变量。
如果是后者,您可以将其视为分类任务。根据您的描述,您可能会想出一些描述您 tested/will 测试的砖块的特征,例如:绿色砖块的数量、砖块的总重量、砖块的平均重量、底排砖块的重量。
然后您会得到一个 table,其中每一行都是积木的配置,每一列都是上面生成的特征。如果配置成功,您有额外的目标列 true/false。
+---------+------------+-------------+---------------+----------------+
| n_green | weight_sum | weight_mean | weight_br_sum | target_success |
+---------+------------+-------------+---------------+----------------+
| 10 | 102 | 0.6 | 15 | true |
| 2 | 60 | 0.5 | 30 | false |
| 40 | 250 | 1.1 | 15 | true |
+---------+------------+-------------+---------------+----------------+
您可以使用线性模型(例如 Logistic Regression) with X the array of values from columns n_green:target_success and y being the target column. You can then look at the coefficients of the fitted model to understand what features have the largest effect on success (although you should scale your features first)。
然后您可以生成新组合,并通过拟合模型运行它们以获得成功的概率。
如果 arrangement/configuration 积木很重要,您可能想要研究神经网络,特别是卷积神经网络(CNN). You would have to use a library like ELI5 or Shap 以研究特征重要性。
如果是前者你应该调查 GANs。
我正在寻找一个开始解决 ML 优化问题的地方。
假设我有一大堆砖头,我需要从这堆砖头中挑出 50 块砖头来拼砌一堵墙。我的砖块类型各不相同:有些砖块比其他砖块更结实,有些更重,所以每次我 select 一套砖块,我都需要进行(相对较慢的)结构计算以确保墙不会掉下来。我的堆里有太多的砖块,无法通过蛮力尝试每一种排列,所以我想使用 ML 来帮助我找到可能有效的砖块排列,因为我知道之前有几百套是好的。
这堵墙还有一些主观标准需要满足——如果我的青砖太多,可能会很难看。我很清楚哪些标准是主观的(例如,我知道建筑师关心有多少绿砖),但我想用以前的数据训练一个 ML 模型,以了解为这些标准赋予什么样的权重,因为我对绿砖的数量没有任何硬性限制——我只有一个数据集显示建筑师不喜欢过去有很多绿砖的墙。
这是ML可以帮我解决的问题吗? frameworks/models 我应该调查什么来解决这种问题?我很难确定起点!
答案在一定程度上取决于您是否需要帮助想出(生成)新颖的组合,或者您是否想了解影响 success/acceptance 的可能性的变量。
如果是后者,您可以将其视为分类任务。根据您的描述,您可能会想出一些描述您 tested/will 测试的砖块的特征,例如:绿色砖块的数量、砖块的总重量、砖块的平均重量、底排砖块的重量。
然后您会得到一个 table,其中每一行都是积木的配置,每一列都是上面生成的特征。如果配置成功,您有额外的目标列 true/false。
+---------+------------+-------------+---------------+----------------+
| n_green | weight_sum | weight_mean | weight_br_sum | target_success |
+---------+------------+-------------+---------------+----------------+
| 10 | 102 | 0.6 | 15 | true |
| 2 | 60 | 0.5 | 30 | false |
| 40 | 250 | 1.1 | 15 | true |
+---------+------------+-------------+---------------+----------------+
您可以使用线性模型(例如 Logistic Regression) with X the array of values from columns n_green:target_success and y being the target column. You can then look at the coefficients of the fitted model to understand what features have the largest effect on success (although you should scale your features first)。
然后您可以生成新组合,并通过拟合模型运行它们以获得成功的概率。
如果 arrangement/configuration 积木很重要,您可能想要研究神经网络,特别是卷积神经网络(CNN). You would have to use a library like ELI5 or Shap 以研究特征重要性。
如果是前者你应该调查 GANs。