计算最佳路径以增加分类概率

数据挖掘 机器学习 scikit-学习 预测建模
2022-02-03 23:11:37

我已经使用 Python 的 scikit-learn 训练了几个分类器,这些分类器在应用于测试集以识别具有标准化输入特征集的不同类时相当准确。这些不同的分类器为分类提供了一定的概率。

输入特征是我正在测量的可控物理参数(例如温度、体积),它们错综复杂地影响输出,基本上可以是 1 或 0(以及在多类情况下的其他参数)。我已经可以进行基本的识别了,但是我很好奇的是:给定一个从 0 类开始的初始特征向量,是否有已知的方法可以找到改变我的输入特征的最佳方法,从而增加我进入 1 类的概率? 输入特征空间具有大量维度,并且对输入可能存在某些约束(例如,如果体积保持在特定值,则温度不能超过某个值)。

4个回答

这是一个多元优化问题。您有一个函数 f(X),它返回您想要最大化的输出 - 最大化属于类的概率。该函数 f(X) 只是您的模型。

您还提到了“约束”,这又是标准的约束优化领域。

问题本身可能很难解决,但框架似乎就是这样。

在这里查看 scipy 优化

根据您的模型选择,您可以选择 n 个标记为“0”的观察值,并从每个m 个合成新案例中创建以提供给您的最佳模型,以获得预测。

基本上,您从已有的输入向量开始蛮力模拟改变特征的新数据。

假设你有这个壮举。向量,你知道被标记为零:

x1 x2 x3 x4  x5 x6  y
20 5  1  0.5 6  10  0

从这里你可以模拟 m 个新的特征向量,使用一些关于 的先验知识x1-x6

例如,您开始更改一些具有较高值的​​输入,而另一些具有较低值的输入(如果您有一些先验知识,这也是最好的)。

在预测每个 m 新向量的概率之后,您可能会开始看到一些模式。

对我来说,这比从 RF 获得的简单重要性度量更值得一试,也更有趣。因为他们往往得不到“大”图,换句话说,特征之间的关系结合在一起。

这只是一些想法,希望对您有所帮助。

这可以通过对您的模型(白盒或黑盒)执行敏感性分析来回答。这是运筹学领域的一项众所周知的技术,它也适用于机器学习模型。这些是一些有用的参考资料:

https://ieeexplore.ieee.org/document/7600185/

https://rd.springer.com/chapter/10.1007/978-3-319-43742-2_17

http://www2.cs.uregina.ca/~jtyao/Papers/NAFIPS-E-178.pdf

您在评论中说您使用随机森林和 scikit-learn。您可能采取的第一步是确定在决定结果时具有最大权重的特征。

正如您在此处看到的,这是您的分类器的属性feature_importances_,它根据输入的重要性对输入进行排名。根据我的经验,它们的重要性通常会遵循幂律,您可以设置一个阈值来显着减少您正在查看的维度数量。

从这里开始,这取决于您更愿意采用哪种方法 - 您可以训练一个分类器,该分类器采用这些特征并输出切换结果类所需的更改(使用正则化来最小化更改),或者您可以使用优化黑盒来逐案解决问题。

具体来说,您可以使用scipy.optimize.minimize方法来最小化-(classifier confidence)with 约束。

例如,如果你想找到x¯英石samplex¯最大化分类器的信心,你可以做一些事情:

def min_func(x):
    return -cls.fit(sample*x)

x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
minimizing_xs = minimize(min_func, x0, method='SLSQP', constraints=cons)

这种优化方法自然会适用于类似的学习方法,您可以在其中尝试学习广义向量x¯.