机器学习模型的敏感性分析

数据挖掘 机器学习 scikit-学习 xgboost
2021-09-26 19:23:30

假设我有一组输入变量(A和),并且我使用机器学习模型(在我的例子中)预测目标( ) B并具有合理的性能(测试集的相对误差为 5%)。CDyXGBRegressor

from sklearn.datasets import make_regression
import pandas as pd
from xgboost import XGBRegressor

X, y = make_regression(n_samples=500, n_features=4, n_informative=2, noise=0.3)
X = pd.DataFrame(X, columns=['A', 'B', 'C', 'D'])

model = XGBRegressor()
model.fit(X, y)

现在,我想通过回答两个问题来对此模型进行某种敏感性分析:

  1. A变量和(不是)独立增加 5%对目标变量有什么B影响?CD

  2. 变量A,BC; D的值的组合A不接触)将目标值增加10,最小化 和总和BCDyABC

我已经回答了问题一(请参阅此要点)。但是,如何对问题 2 进行编码?我想这意味着一个优化问题。

1个回答

如果没有对该领域的进一步了解,就没有简单的答案。

  • 预测变量是离散的还是连续的?如果它们是离散的,则可以搜索总和为 0 的所有组合,然后搜索总和为 1 的所有组合,等等,直到找到将 y 增加 10 的组合。如果它们是连续的,则:
  • 目标变量是否随每个预测变量单调增加?换句话说,给定 A、B、C 和 D,当增加 A、B 或 C 时,y 总是增加还是保持不变?如果预测变量是连续的并且目标变量是单调增加的,您可以通过将每个变量增加一小步直到 y 增加超过 10 来进行类似于上面的搜索,这会给您一个想法,在范围内那个小常数,你的问题的答案在哪里。然后,您可以减小步长以在该范围内找到更精确的答案。
  • 如果目标变量是连续的并且不随预测变量单调增加,这将变得更加复杂。假设您发现两个点 (A1, B1, C1, D) 和 (A2, B2, C2, D)不会将 y 增加 10:没有什么可以保证两者之间没有点, (A3, B3 , C3, D), 确实如此。那么你最好的选择可能是探索这个模型。根据您的整体中树的数量,这可能会也可能不会(计算上)。我认为您必须找到所有可能的叶子组合,其中 D 不变且 y 增加超过 10,然后找到其中的最小值。