Quel noyau SVM utiliser pour un problème de classification binaire?

9

Je suis un débutant en matière de prise en charge des machines vectorielles. Existe-t-il des directives qui indiquent quel noyau (par exemple linéaire, polynomial) est le mieux adapté à un problème spécifique? Dans mon cas, je dois classer les pages Web selon qu'elles contiennent ou non des informations spécifiques, c'est-à-dire que j'ai un problème de classification binaire.

Pouvez-vous dire en général quel noyau est le mieux adapté à cette tâche? Ou dois-je en essayer plusieurs sur mon jeu de données spécifique pour trouver le meilleur? Soit dit en passant, j'utilise la bibliothèque Python scikit-learn qui utilise la bibliothèque libSVM.

pemistahl
la source
comment représentez-vous vos pages Web? sac de mots? Le choix du noyau dépend de la mesure de similitude que vous souhaitez dans votre espace d'entrée.
Memming
@Memming Oui, j'utilise une représentation par sac de mots. Qu'entendez-vous exactement par mesure de similitude? J'examine si une page Web contient ou non des informations spécifiques.
pemistahl
Vous pouvez trouver ce tutoriel utile si vous ne l'avez pas déjà vérifié ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm a un schéma de validation croisée intégré pour choisir entre les modèles et les paramètres du modèle.
Zoran
@PeterStahl Cela dépend également du type de limites de classe que vous attendez. Je n'ai pas d'expérience avec l'espace sac de mots, donc je ne peux pas vous aider beaucoup.
Memming

Réponses:

10

Vous avez en fait abordé quelque chose d'une question ouverte dans la littérature. Comme vous le dites, il existe une variété de noyaux (par exemple, fonction de base linéaire, radiale, sigmoïde, polynomiale), et effectuera votre tâche de classification dans un espace défini par leurs équations respectives. À ma connaissance, personne n'a définitivement démontré qu'un noyau fonctionne toujours mieux sur un type de tâche de classification de texte que sur un autre.

Une chose à considérer est que chaque fonction du noyau a un ou plusieurs paramètres qui devront être optimisés pour votre ensemble de données, ce qui signifie que si vous le faites correctement, vous devriez avoir une deuxième collection de formation sur laquelle vous pouvez rechercher les meilleures valeurs pour ces paramètres. (Je dis une deuxième collection d'exclusion, parce que vous devriez déjà en avoir une que vous utilisez pour trouver les meilleures fonctionnalités d'entrée pour votre classificateur.) J'ai fait un essai il y a quelque temps dans lequel j'ai fait une optimisation à grande échelle de chacun ces paramètres pour une tâche de classification textuelle simple et ont constaté que chaque noyau semblait fonctionner raisonnablement bien, mais le faisait à différentes configurations. Si je me souviens bien de mes résultats, sigmoid a donné les meilleurs résultats, mais l'a fait avec des réglages de paramètres très spécifiques - ceux qui m'ont pris plus d'un mois pour que ma machine les trouve.

Kyle.
la source
Merci beaucoup pour vos pensées. Désolé pour ma réaction tardive. J'écris actuellement ma thèse de master pour laquelle j'ai besoin d'évaluer les résultats de plusieurs classificateurs, pas seulement SVM. Malheureusement, je n'ai pas le temps de tester de nombreuses combinaisons de paramètres. C'est pourquoi je m'en tiendrai probablement au noyau linéaire.
pemistahl
Bonne chance! Je pense que c'est un bon appel.
Kyle.
7

Essayez le noyau gaussien.

Le noyau gaussien est souvent essayé en premier et s'avère être le meilleur noyau dans de nombreuses applications (avec vos fonctionnalités de sac de mots aussi). Vous devriez également essayer le noyau linéaire. Ne vous attendez pas à ce qu'il donne de bons résultats, les problèmes de classification de texte ont tendance à être non linéaires. Mais cela vous donne une idée de vos données et vous pouvez être satisfait de la mesure dans laquelle la non-linéarité améliore vos résultats.

Assurez-vous d'avoir correctement validé la largeur de votre noyau et réfléchissez à la façon dont vous souhaitez normaliser vos fonctionnalités (tf-idf, etc.).

Je dirais que vous pouvez améliorer vos résultats avec une meilleure normalisation des fonctionnalités plus qu'en choisissant un noyau différent (c'est-à-dire pas le gaussien).

flxb
la source