2010-03-25 19 views

Répondre

7

Ce dont vous avez besoin est un méta-classificateur sensible aux coûts (un méta-classificateur fonctionne avec n'importe quel classificateur arbitraire, que ce soit ANN, SVM ou autre).

Cela peut se faire de deux façons:

  • instances de formation de re-pondération selon une matrice de coût. Ceci est fait en rééchantillonnant les données afin qu'une classe particulière soit surreprésentée, ainsi le modèle construit est plus sensible à cette classe particulière par opposition aux autres classes.
  • prédire la classe avec coût de classification erroné minimum attendu (plutôt que la classe la plus probable). L'idée ici est de minimiser les coûts totaux attendus en faisant des erreurs bon marché plus souvent et des erreurs coûteuses moins souvent.

Un algorithme qui implémente la première approche d'apprentissage est SECOC, qui utilise des codes de correction d'erreur; tandis qu'un exemple de la deuxième approche est le MetaCost qui utilise ensachage pour améliorer les estimations de probabilité du classificateur.

2

Vous pouvez utiliser une fonction de coût personnalisé. C'est ce que j'ai fait récemment:

cost(true negative) = 0 
cost(true positive) = 0 
cost(false positive) = infinity 
cost(true negative) = L 

Cela peut être accompli par ex. par cette formule:

cost(y, t) = (1 - t) log (1 - y) - L * t * (1 - y) 

Cela implique la mise en œuvre et certaines dérivées du cours et ne sont pas hors de la boîte à outils Matlab.