У меня есть две независимые переменные (x1, x2), которые я использую, чтобы предсказать y (двоичное). С регрессией logisti c я мог бы просто использовать стандартные ошибки каждого оцененного коэффициента, чтобы проверить их на значимость.
Однако , у меня есть глубокая сеть, основанная на inputA (некоторые text) и inputB (числовые данные).
Это означает, что мне пришлось бы извлечь стандартные ошибки из последнего слоя, чтобы проверить значимость коэффициента inputB. В противном случае было бы невозможно проверить, действительно ли inputB значительно добавляет к модели. Как извлечь стандартные ошибки из регрессионного прогона logisti c в модели глубокого обучения (керас)?
#### Network
# define two sets of inputs
inputA = Input(shape=(32,))
inputB = Input(shape=(128,))
# the first branch operates on the first input
x = Dense(8, activation="relu")(inputA)
x = Dense(4, activation="relu")(x)
x = Model(inputs=inputA, outputs=x)
# the second branch opreates on the second input
y = Dense(64, activation="relu")(inputB)
y = Dense(32, activation="relu")(y)
y = Dense(4, activation="relu")(y)
y = Model(inputs=inputB, outputs=y)
# combine the output of the two branches
combined = concatenate([x.output, y.output])
# our model will accept the inputs of the two branches and
# then output a single value
preds = Dense(1, activation='sigmoid',name='output')(combined)
model = Model(inputs=[x.input, y.input], outputs=[preds])
model.compile(loss='binary_crossentropy',optimizer='adam', metrics=['acc'])
model.fit([x_train,numeric], y_train, epochs=40, batch_size=50)
Редактировать:
Теперь я нашел эту полезную ссылку:
https://stats.stackexchange.com/questions/89484/how-to-compute-the-standard-errors-of-a-logistic-regressions-coefficients
Итак, я предполагаю, что мог бы использовать y_pred = model.predict(inputs=[x_train,numeric], verbose=1) # gives probabilities
, а затем, Я должен ввести combined
в следующий код ... но как мне это сделать ... или мой подход ошибочен?
#### Standard Error testing
# Design matrix -- add column of 1's at the beginning of your X_train matrix
X_design = np.hstack([np.ones((combined.shape[0], 1)), combined])
# Initiate matrix of 0's, fill diagonal with each predicted observation's variance
V = np.diagflat(np.product(y_preds, axis=1))
# Covariance matrix
covLogit = np.linalg.inv(np.dot(np.dot(X_design.T, V), X_design))
Может кто-нибудь добавить несколько предложений / проверок?
Edit2
Меня смущает то, что у меня есть два входа: числовой c -вход numeric
и ненулевой c вход x_train
. Чтобы проверить коэффициенты, мне нужно создать матрицу в виде комбинированного ввода (который фактически заполнен комбинированным вводом).
Затем я могу использовать прогноз моделей, чтобы проверить значимость коэффициентов последних слоев (как описано в ссылочной ссылке для тестирования коэффициентов).
Но как мне ввести составной ввод .. или я где-то ошибаюсь?