Modelli Surrogati

Con i modelli surrogati globali si intende l’addestramento di un modello White-Box con previsioni del modello Black-Box da interpretare. Il termine “modello surrogato” è un termine utilizzato in ingegneria, statistica, economia e fisica, solo per citarne alcuni, spesso nel contesto di metamodels, ottimizzazioni matematiche o simulazioni.
Nel contesto dei metodi di interpretazione del machine learning, il modello surrogato di solito si riferisce a un modello interpretabile (white-box) che si allena con le previsioni dei modelli black-box. Facciamo questo per estrarre informazioni dai parametri intrinseci del modello white-box. Esiste anche un altro modo per utilizzare i modelli surrogati: utilizzare un modello black-box per approssimare e valutare un altro modello a cui non si ha accesso, ma di cui si hanno le previsioni.
Non è necessario utilizzare librerie sofisticate per creare un modello surrogato a visibilità globale.

Si possono utilizzare tutti i modelli white-box. Detto ciò, ci sono alcuni modelli che sono stati progettati per essere utilizzati come sostituti, come TREPAN. La libreria Skater ha un’implementazione che si può utilizzare e una per il classificatore di Bayesian Rule List (BRLC), che è molto simile a RuleFit, tranne che funziona solo con compiti di classificazione.

L’obiettivo è quello di estrarre alcune regole e una gerarchia dai modelli di rete neurale. Pertanto, ha senso utilizzare alberi decisionali e RuleFit. Gli alberi decisionali ci aiutano a capire la gerarchia e RuleFit ci aiuta a capire le regole.

Come creare dei modelli surrogati globali

Il primo passo è adattare i surrogati; l’unica differenza è che i dati di addestramento hanno le previsioni del modello di rete neurale come y. Una volta adattato il DecisionTreeRegressor, eseguiamo predict per ottenere le previsioni per il train e il test:

fitted_dt_surrogate =
tree.DecisionTreeRegressor(max_depth=7, random_state=rand).
fit(X_train, y_train_nn_pred)
y_train_dt_pred = fitted_dt_surrogate.predict(X_train)
y_test_dt_pred = fitted_dt_surrogate.predict(X_test)

Possiamo fare lo stesso per RuleFit. Si noti che la funzione fit di RuleFit richiede i dati in formato float NumPy:

fitted_rf_surrogate = RuleFit(max_rules=150,
rfmode='regress', random_state=rand, tree_size=8).
fit(X_train.astype(float).values,
np.array(y_train_nn_pred).squeeze(), X_train.columns)
y_train_rf_pred =
fitted_rf_surrogate.predict(X_train.astype(float).values)
y_test_rf_pred =
fitted_rf_surrogate.predict(X_test.astype(float).values)

Per vedere dei tutorial di Explainable Artificial Intelligence cerca nella sezione XAI del nostro sito.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *