【发布时间】:2020-06-14 05:06:49
【问题描述】:
目前我正在实现一个高斯回归过程模型,并且在尝试将其应用于我的问题范围时遇到了一些问题。我的问题是我的模型有三个变量作为输入,其中一个值 (theta) 比其他两个值 (alpha1 和 alpha2) 具有更大的影响。输入和输出具有以下值(只是几个值以便更好地理解):
# X (theta, alpha1, alpha2)
array([[ 9.07660169, 0.61485493, 1.70396493],
[ 9.51498486, -5.49212002, -0.68659511],
[10.45737558, -2.2739529 , -2.03918961],
[10.46857663, -0.4587848 , 0.54434441],
[ 9.10133699, 8.38066374, 0.66538822],
[ 9.17279647, 0.36327109, -0.30558115],
[10.36532505, 0.87099676, -7.73775872],
[10.13681026, -1.64084098, -0.09169159],
[10.38549264, 1.80633583, 1.3453195 ],
[ 9.72533357, 0.55861224, 0.74180309])
# y
array([4.93483686, 5.66226844, 7.51133372, 7.54435854, 4.92758927,
5.0955348 , 7.26606153, 6.86027353, 7.36488184, 6.06864003])
可以看出,theta 显着改变了 y 的值,而 alpha1 和 alpha2 的变化比 y 更微妙。
我面临的情况是,我正在将模型应用于我的数据,并且在该模型之外,我正在使用 Scipy 对模型进行最小化,将其中一个输入变量固定为该最小化。下面的代码可能会更好地说明:
# model fitting
kernel = C(1.0, (1e-3, 1e3))*RBF(10,(1e-2,1e2))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 9,optimizer='fmin_l_bfgs_b')
model.fit(X,y)
# minimization
bnds = np.array([(theta,theta),
(alpha1.min(),
alpha1.max()),
(alpha2.min(),
alpha2.max())])
x0 = [theta,alpha1.min(),alpha2.min()]
residual_plant = minimize(lambda x: -model.predict(np.array([x])),
x0, method='SLSQP',bounds=bnds,
options = {'eps': np.radians(5)})
我的目标是我想将第一个变量 value 设置为固定值,并且我想研究其他两个变量 alpha1 和 alpha2 对输出 y 的影响对于那个特定的theta 值。最小化背后的具体原因是,我想找到alpha t1 和alpha2 的组合,它们为我返回这个固定theta 的最佳y。因此,我想知道我该怎么做,因为我相信theta 一定会极大地影响我的其他两个变量对我的输出的影响,然后它可能会对我的模型对我的任务产生负面影响手,因为它的重量较重,并且会隐藏 alpha1 和 alpha2 对我的模型的影响,但是,我不能真正忽略它或不将它输入到我的模型中,因为我想找到最佳的 y 值对于这个固定的theta,因此我仍然需要使用theta 作为输入。
我的问题是,如何处理这样的问题?是否有任何统计技巧可以消除或至少减少这种影响,而不必从我的模型中消除theta?有没有更好的方法来处理我的问题?
【问题讨论】:
-
您可以探索具有正则化的模型。通过增加正则化,变量的影响可能会扩散。当然,这将取决于数据。
-
你能提供你的数据集吗?
标签: python machine-learning scikit-learn scipy