Saltar al contenido

¿Hay alguna forma de obtener importancia variable con Keras?

Bienvenido a nuestra comunidad, aquí vas a encontrar la solucíon de lo que andabas buscando.

Solución:

ya que todo sera mixed a lo largo de la red, la primera capa por sí sola no puede informarle sobre la importancia de cada variable. Las siguientes capas también pueden aumentar o disminuir su importancia, e incluso hacer que una variable afecte la importancia de otra variable. Cada neurona en la primera capa también le dará a cada variable una importancia diferente, por lo que no es algo tan sencillo.

te sugiero que lo hagas model.predict(inputs) usando entradas que contienen matrices de ceros, haciendo que solo la variable que desea estudiar sea 1 en la entrada.

De esa manera, verá el resultado de cada variable por separado. Aunque, esto todavía no le ayudará con los casos en que una variable aumenta la importancia de otra variable.

*Editado para incluir código relevante para implementar la importancia de la permutación.

Respondí una pregunta similar en el Cuadro de importancia de características en la red neuronal usando Keras en Python. Implementa lo que Teque5 mencionó anteriormente, es decir, mezclar la variable entre su muestra o la importancia de la permutación utilizando el paquete ELI5.

from keras.wrappers.scikit_learn import KerasClassifier, KerasRegressor
import eli5
from eli5.sklearn import PermutationImportance

def base_model():
    model = Sequential()        
    ...
    return model

X = ...
y = ...

my_model = KerasRegressor(build_fn=basemodel, **sk_params)    
my_model.fit(X,y)

perm = PermutationImportance(my_model, random_state=1).fit(X,y)
eli5.show_weights(perm, feature_names = X.columns.tolist())

No es tan simple. Por ejemplo, en etapas posteriores la variable podría reducirse a 0.

Echaría un vistazo a LIME (Explicaciones agnósticas del modelo local interpretable). La idea básica es establecer algunas entradas en cero, pasarlas por el modelo y ver si el resultado es similar. Si es así, entonces esa variable podría no ser tan importante. Pero hay más al respecto y si quieres saberlo, entonces deberías leer el periódico.

Consulte marcotcr/lime en GitHub.

Si entiendes que ha sido provechoso este artículo, sería de mucha ayuda si lo compartieras con más desarrolladores de esta forma contrubuyes a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *