我对机器学习/数据科学中的逆预测有疑问。以下举个例子来说明我的问题: 我有20个输入特征X =(x0,x1,... x19)和3个输出变量Y =(y0,y1,y2)。训练/测试数据的数量通常很小,如训练集中的<1000个项目或甚至<100个项目。
通常情况下,通过使用机器学习工具箱(如scikit-learn),可以从X训练出模型(如随机森林、线性/多项式回归和神经网络)来处理Y。但实际上我想知道的是,比如说我应该如何设置X值,以便我可以在特定范围内获得y1值(例如y1> 100)。
有谁知道如何解决这种“逆预测”问题?我脑海中有两种方法:
1. 以正常方式训练模型:X-->Y,然后在高维度X空间中设置一个密集网格。在这个例子中,它有20个维度。然后将网格中的所有点作为输入数据并将其投入训练好的模型。选择所有预测的y1> 100的输入点。最后,使用一些方法(如聚类)来查找所选数据点中的某些模式。
2. 直接从Y学习模型。然后,在高维度Y空间中设置一个密集网格,使y1> 100。然后使用训练好的模型来计算X数据点。
当Y也有高维度时,第二种方法可能是可行的。但通常情况下,我的应用程序中Y的维度很低而X的维度很高,这使我认为第二种方法不太实用。
有没有人有新的想法呢?我认为这在工业中应该很常见,也许有些人之前遇到过类似的情况。
谢谢!
通常情况下,通过使用机器学习工具箱(如scikit-learn),可以从X训练出模型(如随机森林、线性/多项式回归和神经网络)来处理Y。但实际上我想知道的是,比如说我应该如何设置X值,以便我可以在特定范围内获得y1值(例如y1> 100)。
有谁知道如何解决这种“逆预测”问题?我脑海中有两种方法:
1. 以正常方式训练模型:X-->Y,然后在高维度X空间中设置一个密集网格。在这个例子中,它有20个维度。然后将网格中的所有点作为输入数据并将其投入训练好的模型。选择所有预测的y1> 100的输入点。最后,使用一些方法(如聚类)来查找所选数据点中的某些模式。
2. 直接从Y学习模型。然后,在高维度Y空间中设置一个密集网格,使y1> 100。然后使用训练好的模型来计算X数据点。
当Y也有高维度时,第二种方法可能是可行的。但通常情况下,我的应用程序中Y的维度很低而X的维度很高,这使我认为第二种方法不太实用。
有没有人有新的想法呢?我认为这在工业中应该很常见,也许有些人之前遇到过类似的情况。
谢谢!
m
映射到较少维度n
的F。如果F是可微的,我相信这意味着X中维数为m-n
的集合映射到Y中的点。也就是说,X中所有这些点都映射到Y中的同一点。因此,任何这些点都是您反问题的解。您可以寻找满足某些标准(如最小范数标准)的点。 - Robert Dodier