Dois-je utiliser le Kernel Trick autant que possible pour les données non linéaires?

13

J'ai récemment appris l'utilisation de l'astuce du noyau, qui mappe les données dans des espaces de dimension supérieure pour tenter de linéariser les données dans ces dimensions. Y a-t-il des cas où je devrais éviter d'utiliser cette technique? S'agit-il simplement de trouver la bonne fonction du noyau?

Pour les données linéaires, cela n'est bien sûr pas utile, mais pour les données non linéaires, cela semble toujours utile. L'utilisation de classificateurs linéaires est beaucoup plus facile que non linéaire en termes de temps de formation et d'évolutivité.

JDong
la source

Réponses:

8

Pour les données linéaires, cela n'est bien sûr pas utile, mais pour les données non linéaires, cela semble toujours utile. L'utilisation de classificateurs linéaires est beaucoup plus facile que non linéaire en termes de temps de formation et d'évolutivité.

@BartoszKP a déjà expliqué pourquoi l'astuce du noyau est utile. Pour répondre pleinement à votre question, je voudrais toutefois souligner que la noyauisation n'est pas la seule option pour traiter des données non linéairement séparables.

Il existe au moins trois bonnes alternatives communes pour la délinéarisation du modèle:

  • Méthodes basées sur le réseau Neutal, où vous ajoutez une (ou plusieurs) couches d'unités de traitement, capables de transformer vos données dans le cas séparable linéairement. Dans le cas le plus simple, il s'agit d'une couche à base de sigmoïdes, qui ajoute une non-linéarité au processus. Une fois initialisés au hasard, ils reçoivent des mises à jour lors de l'optimisation basée sur le gradient de la couche supérieure (ce qui résout en réalité le problème linéaire).
  • En particulier, des techniques d'apprentissage approfondi peuvent être utilisées ici pour préparer des données pour une classification linéaire supplémentaire. C'est une idée très similaire à la précédente, mais ici, vous entraînez d'abord vos couches de traitement afin de trouver un bon point de départ pour un réglage plus fin basé sur l'apprentissage d'un modèle linéaire.
  • Projections aléatoires - vous pouvez échantillonner des projections (non linéaires) à partir d'un espace prédéfini et former un classificateur linéaire par-dessus. Cette idée est largement exploitée dans le soi-disant apprentissage machine extrême , où des solveurs linéaires très efficaces sont utilisés pour entraîner un classificateur simple sur des projections aléatoires et obtenir de très bonnes performances (sur des problèmes non linéaires de classification et de régression, consultez par exemple l' apprentissage extrême machines ).

Pour résumer, la noyalisation est une excellente technique de délinéarisation, et vous pouvez l' utiliser lorsque le problème n'est pas linéaire, mais cela ne devrait pas être aveugle "si alors". Ce n'est là qu'une des quelques méthodes intéressantes au moins, qui peuvent conduire à divers résultats, selon le problème et les exigences. En particulier, ELM a tendance à trouver des solutions très similaires à celles fournies par SVM kernelized alors qu'en même temps peut être formé des lignes de grandeur plus rapidement (il évolue donc beaucoup mieux que SVM kernelized).

lejlot
la source
10

Le prix que vous payez pour le Kernel Trick en général, pour les méthodes linéaires, a des limites de généralisation pires. Pour un modèle linéaire, sa dimension VC est également linéaire en termes de nombre de dimensions (par exemple, la dimension VC pour un Perceptron l'est d + 1).

Maintenant, si vous effectuez une transformation non linéaire complexe vers un espace de haute dimension, la dimension VC de votre ensemble d'hypothèses est considérablement plus grande, car elle est désormais linéaire en termes de nombre de dimensions dans le nouvel espace de haute dimension. Et avec lui, la borne de généralisation monte.

Les machines vectorielles de support exploitent le Kernel Trick de la manière la plus efficace, en faisant deux choses:

BartoszKP
la source
1
"est également linéaire en termes de nombre de poids" en termes de dimension d'espace, pas de nombre de poids. Vous pouvez avoir un classificateur linéaire paramétré avec autant de poids que vous le souhaitez, mais sa dimension VC est toujours d + 1 (où d est la dimensionnalité de l'espace). "la dimension VC pour les modèles SVM est liée au nombre de vecteurs de support" Comment exactement la dimension VC est-elle affectée au nombre de SV? Je suis conscient de la limite rigide, mais dans le cas de la marge souple, il n'y a pas une telle relation. Même dans les limites de complexité de Radamacher, vous ne trouverez pas le nombre de SV comme variable.
lejlot
Aussi "donc ce n'est pas pertinent à quel point" grand "l'espace cible du noyau, vous ne perdez rien en termes de limite de généralisation" est pour autant que je sache complètement faux. Les espaces de grande dimension entraîneront une perte de capacités de généralisation, même avec un modèle fortement régularisé tel que SVM.
lejlot
1
@lejlot Merci d'avoir corrigé les deux premières erreurs. J'ai besoin de temps pour me rapporter à vos deux dernières remarques - J'essaierai d'améliorer la réponse et de fournir quelques sources, après avoir revérifié mes informations :)
BartoszKP
1
C'est maintenant presque correct, mais quelle est la raison de l'hypothèse, que la taille de l'espace du noyau n'est pas pertinente? Prenez n'importe quel ensemble de données, exécutez un SVM avec le noyau RBF et C-> inf et vous serez trop mal équipé. Ce n'est pas si simple. Le nombre de dimensions dans l'espace d' entité est pertinent , mais il peut être contrôlé avec C (comme limite supérieure des multiplicateurs de décalage). En particulier - la dimension VC pour SVM avec RBF est infinie, et la généralisation liée (celle de Vapnik) est inutile (Radamacher pourrait fonctionner mais c'est une toute autre histoire).
lejlot
1
@lejlot J'ai donné une autre référence - ils fournissent explicitement une limite pour le cas de marge souple, et cela ne dépend pas du nombre de dimensions.
BartoszKP
6

Je vais essayer de fournir une réponse non technique à votre question.

En effet, le linéaire devrait être préféré et devrait être le premier choix pour les raisons que vous mentionnez, le temps de formation, l'évolutivité, ainsi que la facilité d'interprétation du modèle final, le choix de travailler sur le primaire ou le double, plus de tolérance au sur-ajustement, etc.

Si le modèle linéaire n'aboutit pas à des performances satisfaisantes, vous pouvez essayer des solutions non linéaires. Voici quelques compromis à considérer:

  • le choix du noyau. Ce n'est pas évident, vous devez généralement tester différentes options
  • il y a danger de sur-équiper l'ensemble d'entraînement. En fait, il est assez facile d'en équiper si vous le souhaitez. Pour éviter le surajustement, vous avez besoin d'un cadre d'évaluation plus solide (vous devez mesurer la variance / stabilité des performances sur des données invisibles) et vous avez besoin de suffisamment de données pour pouvoir sélectionner correctement le modèle.
  • vous travaillez sur dual, et donc vous ne pouvez pas interpréter le modèle final, c'est-à-dire que vous ne pouvez pas prétendre que la fonctionnalité X est plus importante que la fonctionnalité Y etc.
  • le temps de formation est augmenté avec le volume de données (moins avec le nombre de fonctionnalités car il est dans le dual)
iliasfl
la source
C'est un aperçu intéressant de "travailler avec le double" conduisant à une incapacité à revendiquer des importances de fonctionnalités. Auriez-vous des références à des informations plus détaillées?
javadba