Comment aborder les problèmes d'apprentissage machine avec un espace d'entrée de grande dimension?
Comment dois je m'approche d'une situtation lorsque j'essaie d'appliquer quelques ML de l'algorithme de classification, pour être plus précis, SVM en particulier) sur certains dimensionnelle élevée d'entrée, et les résultats que j'obtiens sont pas tout à fait satisfaisante?
1, 2 ou 3 dimensions données peuvent être visualisées, avec l'algorithme de résultats, de sorte que vous pouvez obtenir le blocage de ce qu'il se passe, et avoir une idée de comment l'approche du problème. Une fois les données est de plus de 3 dimensions, autres que de façon intuitive en jouant avec les paramètres que je ne suis pas vraiment sûr de savoir comment l'attaquer?
source d'informationauteur sold
Vous devez vous connecter pour publier un commentaire.
Que faites-vous pour la données? Ma réponse: rien. Les SVMs sont conçu pour gérer des données de haute dimension. Je suis en train de travailler sur une problématique de recherche, à droite maintenant, qui implique de classification supervisée en utilisant les SVMs. Avec trouver des sources sur Internet, j'ai fait mes propres expériences sur l'impact de la réduction de dimensionnalité avant de classification. Le prétraitement à l'aide de caractéristiques PCA/LDA n'a pas significativement augmenté exactitude de la classification de la SVM.
Pour moi, c'est tout à fait compréhensible de la façon dont les SVMs travail. Soit x un m-dimensions de la fonctionnalité de vecteur. Posons y = Ax où y est dans R^n, et x dans R^m pour le n < m, c'est à dire, y est x projetées sur un espace de dimension inférieure. Si les classes Y1 et Y2 sont linéairement séparables dans R^n, alors les classes correspondantes X1 et X2 sont linéairement séparables dans R^m. Par conséquent, l'original de la sous-espaces doit être "au moins" comme séparable que leurs projections sur des dimensions inférieures, c'est à dire, de l'APC devrait pas, en théorie.
Voici une discussion que les débats de l'utilisation de l'APC avant de SVM: lien
Ce que vous peut à faire est de changer votre SVM paramètres. Par exemple, avec libsvm lienles paramètres C et gamma sont d'une importance cruciale pour la classification de succès. Le libsvm faq, en particulier, à cette entrée liencontient plus de conseils utiles. Parmi eux:
EDIT: Permettez-moi simplement d'ajouter ce "point de données." J'ai récemment fait une autre expérience à grande échelle en utilisant les SVM avec l'APC de prétraitement sur quatre exclusif des ensembles de données. L'APC n'a pas amélioré les résultats de la classification pour le choix de la réduction de la dimensionnalité. Les données d'origine par simple diagonale de mise à l'échelle (pour chaque fonctionnalité, de soustraire la moyenne et de la diviser par l'écart-type) fait mieux. Je ne fais pas de grandes conclusion -- le partage de cette seule expérience. Peut-être sur des données différentes, le PCA peut vous aider.
Quelques suggestions:
De données du projet (juste pour la visualisation) pour une baisse des dimensions de l'espace (à l'aide de l'APC ou de SDM ou tout ce qui fait sens pour vos données)
Essayer de comprendre pourquoi l'apprentissage échoue. Pensez-vous qu'il overfits? Pensez-vous que vous avez suffisamment de données? Est-il possible qu'il n'y a pas assez d'informations dans vos fonctions pour résoudre la tâche que vous essayez de résoudre? Il existe des moyens pour répondre à chacune de ces questions sans visualiser les données.
Aussi, si vous nous dites que la tâche est et ce que votre SVM sortie est, il peut y avoir des propositions plus concrètes, les gens pouvaient.
Je voudrais aborder le problème comme suit:
Qu'entendez-vous par "les résultats que j'obtiens ne sont pas tout à fait satisfaisant"?
Si le taux de classement sur le formation de données n'est pas satisfaisant, il implique que les deux
Si le taux de classement sur le test de données n'est pas satisfaisante, cela implique que votre modèle overfits les données:
Bien sûr, il peut être un mélange des éléments ci-dessus. Ce sont tous des "aveugles" méthodes d'attaquer le problème. Afin de mieux comprendre le problème, vous pouvez utiliser des méthodes de visualisation par projection des données dans des dimensions inférieures ou recherchez les modèles qui conviennent le mieux le problème de domaine comme vous le comprenez (par exemple si vous savez que les données sont distribuées normalement, vous pouvez utiliser la Mgm pour le modèle de données ...)
Vous pouvez essayer de réduire la dimensionnalité du problème par l'APC ou de la technique semblable. Attention, l'APC a deux points importants. (1) On suppose que les données qu'il est appliqué à est normalement distribués et (2) les données qui en résultent perd de son sens naturel (résultant en un blackbox). Si vous pouvez vivre avec cela, essayez-le.
Une autre option est d'essayer plusieurs paramètre d'algorithmes de sélection. Depuis SVM ont été déjà mentionné ici, vous pouvez essayer l'approche de Chang et Li (Fonction de Classement à l'Aide de SVM Linéaire) dans laquelle ils ont utilisé des SVM linéaire de pré-sélectionner "caractéristiques intéressantes" et ensuite utilisé RBF à base de SVM sur les entités sélectionnées. Si vous êtes familier avec Orange, un python d'exploration de données de la bibliothèquevous serez en mesure de code de cette méthode en moins d'une heure. Notez que c'est une approche gourmande qui, en raison de sa "gourmandise" peut échouer dans les cas où les variables sont fortement corrélées. Dans ce cas, et si vous ne pouvez pas résoudre ce problème avec l'ACP (voir ci-dessus), vous pouvez aller à des méthodes heuristiques, essayez de choisir les meilleures combinaisons possibles de facteurs prédictifs. Le principal écueil de ce genre d'approches est le potentiel élevé de surapprentissage. Assurez-vous que vous avez un tas de "vierge" de données qui n'avait pas vu pendant tout le processus de construction d'un modèle. Test de votre modèle sur les données une seule fois, après vous êtes sûr que le modèle est prêt. Si vous échouez, ne pas utiliser ces données, une fois de plus pour valider un autre modèle, vous aurez à trouver un nouveau jeu de données. Sinon vous ne serez pas sûr que vous n'avez pas overfit une fois de plus.
Liste de sélection de documents sur la sélection des paramètres:
La sélection des fonctionnalités de haute-dimensions données de puces à adn génomique
Oh, et encore une chose à propos de la SVM. SVM est une boîte noire. De vous permettre de mieux comprendre quel est le mécanisme qui génère les données et le modèle du mécanisme, et non les données. D'autre part, si cela est possible, le plus probablement, vous ne seriez pas ici de poser cette question (et je ne serais pas si amer à propos de surapprentissage).
Liste de sélection de documents sur la sélection des paramètres de
Si je ne me trompe pas, vous êtes en essayant de voir quels sont les paramètres du SVM vous donne le meilleur résultat. Votre problème est le modèle/ajustement de la courbe.
J'ai travaillé sur un problème similaire il ya quelques années. Il ya des tonnes de bibliothèques et d'algos à faire de même. J'ai utilisé Newton-Raphson'algorithme et une variation de l'algorithme génétique pour l'adapter à la courbe.
Générer/guess/obtenir le résultat que vous espérez pour, travers monde réel de l'expérience (ou si vous faites de la classification simple, il suffit de faire vous-même). Comparez cela avec la sortie de votre SVM. Les algos je l'ai mentionné plus tôt réitère ce processus jusqu'à la suite de votre modèle(SVM dans ce cas) un peu correspond à la valeur attendue (notez que ce processus peut prendre un certain temps en fonction de votre problème ou de la taille des données.. il a fallu environ 2 mois pour moi sur un 140 nœud de cluster beowulf).
Si vous choisissez d'aller avec Newton-Raphson, cette pourrait être un bon endroit pour commencer.