2015-09-11 27 views
5

Qualcuno ha avuto fortuna con la scrittura di una funzione di perdita di AUC personalizzata per Keras utilizzando Theano?Aggiungi AUC come funzione di perdita per keras

La documentazione è qui: http://keras.io/objectives/

codice di esempio è qui: https://github.com/fchollet/keras/blob/master/keras/objectives.py

ho visto c'è un'implementazione in pylearn2, (che in realtà è un wrapper sklearn), ma era in grado di porto questa opzione per utilizzare in Keras

https://github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py

Quindi credo che la mia domanda è, qualcuno ha potuto scrivere questa funzione? e saresti disposto a condividere?

+0

È possibile avvolgere facilmente il RocAUCOp definito nella libreria pylearn2. In linea con le firme di keras, sembrerebbe qualcosa di simile (non verificato) 'def roc_auc (y_true, y_hat): return RocAucScoreOp() (y_true, y_hat)' – user2805751

+2

Ho provato a implementare il loro suggerimento di wrapping [il RocAucScoreOp da pylearn2.] (Https : //github.com/lisa-lab/pylearn2/blob/master/pylearn2/train_extensions/roc_auc.py) Quando si tenta di passare questo come funzione di perdita a model.compile ho ricevuto il seguente errore:> AttributeError: 'RocAucScoreOp' l'oggetto non ha attributo 'grad' La documentazione del codice sorgente attorno a RocAucScoreOp in pylearn2 suggerisce che è inteso solo per essere usato sul canale di monitoraggio, piuttosto che come funzione obiettivo/perdita per l'ottimizzazione. Sembra che a meno che non ci sia un modo per definire un gradiente, Keras non può usarlo a – kwarnick

+1

La versione pylearn2 è fondamentalmente una callback per calcolare l'AUC. Non sarai in grado di utilizzare l'AUC come obiettivo di modellazione della rete (in Keras o altrove) perché non è differenziabile. – DanB

risposta

5

AUC non è differenziabile, quindi non è possibile utilizzarlo come una funzione di perdita senza alcune modifiche. C'è stato some work su algoritmi per massimizzare l'AUC, ma io raccomanderei semplicemente di usare la normale probabilità di cross-entropy/log verosimiglianza.

Problemi correlati