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.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
la source
la source
Réponses:
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.
la source
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).
la source