在回归模型中减少一个变量对输出的影响

fna*_*aos 6 python machine-learning scipy scikit-learn

目前我正在实施一个高斯回归过程模型,并且在尝试将其应用于我的问题范围时遇到了一些问题。我的问题是我将三个变量作为模型的输入,其中一个值 ( theta) 的影响比其他两个值大得多,alpha1alpha2. 输入和输出具有以下值(为了更好地理解,只有几个值):

# 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])
Run Code Online (Sandbox Code Playgroud)

可以看出,thetay 的值显着改变,而alpha1和 的变化在alpha2y 上更为微妙。

我面临的情况是,我正在将模型应用于我的数据,并且在此模型之外,我正在将 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)})

Run Code Online (Sandbox Code Playgroud)

我的目标是我想将第一个变量设置value为固定值,并且我想研究其他两个变量对输出的影响,alpha1以及对特定值alpha2的输出。最小化背后的具体理由是,我想找到的组合,并返回我的最佳此固定。因此,我想知道我该怎么做,因为我认为这肯定会极大地影响我的其他两个变量对我的输出的影响,然后它可能会对我手头的任务的模型产生负面影响,如它有更重的重量,会隐藏的影响ythetaalpha t1alpha2ythetathetaalpha1alpha2然而,在我的模型上,我不能真正忽略它或不将它输入到我的模型中,因为我想找到y这个固定值的最佳值theta,因此我仍然需要theta用作输入。

我的问题是,如何处理这样的问题?是否有任何统计技巧可以消除或至少减少这种影响而不必theta从我的模型中消除?有没有更好的方法来处理我的问题?

小智 2

首先,你在训练之前对数据进行标准化了吗?

\n\n

其次,听起来您想查看 x 和 y 之间与常数 theta 之间的关系。

\n\n

如果您获取数据集并按 theta 进行排序,您可以尝试找到一组 theta 相同或非常相似、方差较低且变化不大的记录。您可以获取该组数据并形成一个新的数据框,然后删除 theta 列(因为我们选择了数据集中 theta 方差较低的部分,因此它\xe2\x80\x99t 非常有用)。然后,您可以训练模型或仅对 alpha1 和 alpha2 数据进行一些数据可视化。

\n