Comment savoir si les données sont séparables linéairement?


21

Les données ont de nombreuses fonctionnalités (par exemple 100) et le nombre d'instances est comme 100 000. Les données sont rares. Je veux ajuster les données en utilisant une régression logistique ou svm. Comment savoir si les fonctionnalités sont linéaires ou non linéaires afin de pouvoir utiliser l'astuce du noyau si elle n'est pas linéaire?

Réponses:


22

Il existe plusieurs méthodes pour déterminer si les données sont linéairement séparables, certaines d'entre elles sont mises en évidence dans cet article (1). Avec l'hypothèse de deux classes dans l'ensemble de données, voici quelques méthodes pour déterminer si elles sont linéairement séparables:

  1. Programmation linéaire: définit une fonction objective soumise à des contraintes qui satisfont la séparabilité linéaire. Vous pouvez trouver des détails sur la mise en œuvre ici .
  2. Méthode Perceptron: Un perceptron est garanti de converger si les données sont linéairement séparables.
  3. Programmation quadratique: La fonction objectif d'optimisation de la programmation quadratique peut être définie avec une contrainte comme dans SVM.
  4. Géométrie de calcul: si l'on peut trouver deux coques convexes disjointes, les données sont séparables linéairement
  5. Méthode de clustering: Si l'on peut trouver deux clusters avec une pureté de cluster de 100% en utilisant certaines méthodes de clustering telles que k-means, alors les données sont linéairement séparables.

    (1): Elizondo, D., «The linear separability problem: some testing methods», dans Neural Networks, IEEE Transactions on, vol.17, no.2, pp.330-344, mars 2006 doi: 10.1109 / TNN. 2005.860871


1
Veuillez donner une référence (les liens peuvent pourrir) et au moins une petite explication des méthodes couvertes.
Scortchi - Réintégrer Monica

2
Merci. Bonne réponse (+1). Le package R safeBinaryRegressionimplémente également l'approche de programmation linéaire.
Scortchi - Réintégrer Monica

Laquelle (l'approche LP) est facilement interprétée géométriquement, efficace sur le plan des calculs et généralement disponible (tout comme les routines LP).
user603

3

Je suppose que vous parlez d'un problème de classification à 2 classes. Dans ce cas, il y a une ligne qui sépare vos deux classes et tout algorithme classique devrait pouvoir le trouver lorsqu'il converge.

En pratique, vous devez vous entraîner et tester sur les mêmes données. S'il y a une telle ligne, vous devriez obtenir une précision proche de 100% ou 100% AUC. S'il n'y a pas une telle ligne, la formation et les tests sur les mêmes données entraîneront au moins quelques erreurs. En fonction du volume des erreurs, il peut être utile ou non d'essayer un classificateur non linéaire.


1

mjenw,b ||w||2
s.t je,(wXje+b)yje1

mjens,b s
s.t je,(wXje+b)yje1-s
s0

ssje


+1 c'est l'intuition géométrique derrière la méthode implémentée dans le package RsafeBinaryRegression
user603

-2

Vous essayez la régression logistique et voyez comment cela fonctionne. Si cela ne fonctionne pas, il existe une infinité de noyaux que vous pouvez essayer, et cela pourrait ne pas fonctionner.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.