web-dev-qa-db-fra.com

Que fait sklearn "RidgeClassifier"?

J'essaie de comprendre la différence entre RidgeClassifier et LogisticRegression in sklearn.linear_model. Je ne l'ai pas trouvé dans la documentation.

Je pense que je comprends assez bien ce que fait la LogisticRegression. Elle calcule les coefficients et intercepte pour minimiser half of sum of squares of the coefficients + C times the binary cross-entropy loss, où C est le paramètre de régularisation. J'ai vérifié contre une implémentation naïve à partir de zéro, et les résultats coïncident.

Les résultats de RidgeClassifier diffèrent et je n'ai pas pu comprendre comment les coefficients et l'ordonnée à l'origine y sont calculés? En regardant le code Github, je n'ai pas assez d'expérience pour le démêler.

La raison pour laquelle je demande est que j'aime les résultats de RidgeClassifier - cela se généralise un peu mieux à mon problème. Mais avant de l'utiliser, je voudrais au moins avoir une idée d'où ça vient.

Merci pour l'aide possible.

9
Peter Franek

RidgeClassifier() fonctionne différemment de LogisticRegression() avec pénalité l2. La fonction de perte pour RidgeClassifier() n'est pas une entropie croisée.

RidgeClassifier() utilise Ridge() modèle de régression de la manière suivante pour créer un classificateur:

Considérons la classification binaire pour plus de simplicité.

  1. Générez une variable cible avec une valeur comme +1 Ou -1 En fonction de la classe à laquelle elle appartient.

  2. Construisez un modèle de régression Ridge() (qui est un modèle de régression) pour prédire notre variable cible. La fonction de perte est RMSE + l2 penality

  3. Si la valeur de prédiction de la régression Ridge() (calculée sur la base de decision_function() fonction) est supérieur à 0, alors prédisez comme classe positive sinon classe négative.

Pour classification multi-classes :

  1. Utilisez LabelBinarizer() pour créer un scénario de régression à sorties multiples, puis entraînez une fonction indépendante Ridge() modèles de régression, un pour chaque classe (modélisation One-Vs-Rest).

  2. Obtenez la prédiction à partir du modèle de régression Ridge() de chaque classe (un nombre réel pour chaque classe), puis utilisez argmax pour prédire la classe.

6
Venkatachalam