Serait-ce à partir des données elles-mêmes? Ou est-ce parce que le modèle ne peut pas détecter efficacement les similitudes entre les données, ou y a-t-il d'autres raisons de mauvaise classification?
Serait-ce à partir des données elles-mêmes? Ou est-ce parce que le modèle ne peut pas détecter efficacement les similitudes entre les données, ou y a-t-il d'autres raisons de mauvaise classification?
Réponses:
Supposons que vous parliez d'une mauvaise classification des données d'entraînement, c'est-à-dire qu'il est difficile de minimiser la perte sur l'ensemble de données d'entraînement, aucun problème de sur-ajustement des données de test n'est impliqué.
Vous avez raison de dire que, dans la plupart des cas, la mauvaise classification peut provenir de «le modèle est trop simple» ou «les données sont trop bruyantes». Je voudrais donner deux exemples pour illustrer davantage.
Le modèle est "trop simple" pour saisir les "modèles de données".
L'exemple est illustré dans la figure de gauche. Supposons que nous voulons utiliser une régression logistique / une ligne pour séparer deux classes, mais les deux classes ne sont pas linéairement séparables.
Dans ce cas, il existe toujours des «schémas notables dans les données» et si nous modifions le modèle, nous pourrions nous améliorer. Par exemple, si nous utilisons le classificateur KNN, au lieu de la régression logistique, nous pouvons avoir de très bonnes performances.
Les données ont trop de bruit, il est très difficile de faire la tâche de classification.
Notez que les deux exemples sont triviaux, car nous pouvons visualiser les données et le classificateur. Dans le monde réel, ce n'est pas le cas, lorsque nous avons des millions de points de données et des classificateurs super compliqués.
Code:
library(mlbench)
set.seed(0)
par(mfrow=c(1,2))
d=mlbench.spirals(500)
plot(d)
lg_fit=glm(d$classes~d$x[,1]+d$x[,2]-1,family=binomial())
abline(0,-lg_fit$coefficients[1]/lg_fit$coefficients[2])
d2=mlbench.2dnormals(500,r=0.01)
plot(d2)
En plus de @ hxd1011 (+1).