Choisissez l'algorithme de classification droite. Linéaire ou non linéaire? [fermé]

StackOverflow https://stackoverflow.com/questions/2414030

  •  19-09-2019
  •  | 
  •  

Question

Je trouve cette question un peu délicate. Peut-être que quelqu'un connaît une approche pour répondre à cette question. Imaginez que vous avez un ensemble de données (données de formation) que vous ne savez pas ce qu'il en est. Quelles sont les caractéristiques des données de formation voulez-vous regarder pour en déduire l'algorithme de classification pour classer ces données? Peut-on dire quoi que ce soit que nous devrions utiliser un algorithme de classification non linéaire ou linéaire?

Par ailleurs, je me sers WEKA pour analyser les données.

Toutes les suggestions? Merci.

Était-ce utile?

La solution

Wow, vous avez des données de formation et vous ne savez pas si vous êtes à la recherche des caractéristiques représentant des mots dans un document ou Genese dans une cellule et ont besoin d'accorder un classificateur. Eh bien, puisque vous n'avez pas l'information sémantique, vous allez devoir faire Soley en regardant les propriétés statistiques des ensembles de données.

Tout d'abord, de formuler le problème, ce qui est plus qu'un simple linéaire vs non-linéaire. Si vous cherchez vraiment à classer ces données, ce que vous avez vraiment besoin de faire est de sélectionner une fonction de noyau pour le classificateur qui peut être linéaire ou non-linéaire (gaussienne, polynomiale, hyperbolique, etc. En outre, chaque fonction du noyau peut prendre un ou plusieurs paramètres qui devront être réglés. la détermination d'une fonction noyau optimale et jeu de paramètres pour un problème de classification donnée n'est pas vraiment un problème résolu, il n'y a que des heuristiques utiles et si vous google « en sélectionnant une fonction noyau » ou « choisissez noyau fonction », vous serez traité à de nombreux documents de recherche proposant et tester différentes approches. bien qu'il existe de nombreuses approches, l'une des plus élémentaires et bien voyagé est de faire une descente de gradient sur la parameters-- vous essayez essentiellement une méthode de noyau et un jeu de paramètres, train sur la moitié de vos points de données et voir comment vous faites. Ensuite, vous essayez un autre ensemble de paramètres et de voir comment vous faites. vous déplacez les paramètres dans le sens de la meilleure amélioration de la précision jusqu'à ce que vous obtenez satis résultats tory.

Si vous n'avez pas besoin de passer par toute cette complexité pour trouver une bonne fonction du noyau, et que vous voulez simplement une réponse à linéaire ou non-linéaire. alors la question vient principalement à deux choses: classificateurs non linéaires ont un risque plus élevé de overfitting (undergeneralizing), car ils ont plus de dimensions de la liberté. Ils peuvent souffrir de classificateur mémoriser simplement des ensembles de bons points de données, plutôt que de venir avec une bonne généralisation. D'autre part un classificateur linéaire a moins de liberté pour adapter, et dans le cas des données qui ne sont pas linéairement séparable, ne parviendra pas à trouver une bonne fonction de décision et affichent des taux d'erreur élevés.

Malheureusement, je ne sais pas une meilleure solution mathématique pour répondre à la question « est de ces données de façon linéaire séparable » autre que de simplement essayer le classificateur lui-même et voir comment il fonctionne. Pour cela, vous allez avoir besoin d'une réponse plus intelligente que la mienne.

Edit: Ce document de recherche décrit un algorithme qui ressemble il devrait être en mesure de déterminer à quel point un ensemble de données vient d'être linéaire séparable

.

http://www2.ift.ulaval.ca/~mmarchand/ publications / wcnn93aa.pdf

Autres conseils

Ceci est en fait deux questions en une; -)

  • Sélection de caractéristiques
  • linéaire ou non

ajouter « sélection de l'algorithme », et vous avez probablement trois questions les plus fondamentales de la conception du classificateur.

Comme une note de côté, il est un bonne chose que vous n'avez pas d'expertise de domaine qui vous aurait permis de guider la sélection des caractéristiques et / ou d'affirmer la linéarité de l'espace de représentation. C'est le plaisir de l'exploration de données: pour déduire cette information sans expertise a priori. (BTW, et alors que l'expertise de domaine est bon de revérifier les résultats du classificateur, trop une idée a priori peut vous faire rater de bonnes occasions d'exploitation minière). Sans une telle connaissance a priori vous êtes obligé d'établir des méthodes de son et d'appliquer un examen minutieux des résultats.

Il est difficile de fournir spécifique conseils, en partie parce que de nombreux détails sont laissés dans la question, et aussi parce que je suis un peu BS-ing mon chemin à travers ce ;-). Jamais moins je l'espère, les conseils généraux suivants sera utile

  • Pour chaque algorithme vous essayez (ou plus précisément pour chaque ensemble de paramètres pour un algorithme donné), vous devez exécuter de nombreux tests . La théorie peut être très utile, mais il restera beaucoup de « essais et erreurs ». Vous trouverez Validation croisée une technique précieuse.
    En un mot, [et en fonction de la taille des données de formation disponibles], vous divisez au hasard les données de formation en plusieurs parties et former le classificateur sur un [ou plusieurs] de ces parties, puis évaluer le classificateur sur ses performances sur un autre parties [ou plusieurs]. Pour chaque terme, vous mesurer divers indicateurs de performance tels que l'erreur erreurs de classification (MCE) et en dehors de vous dire comment le classificateur exécute, ces mesures, ou plutôt leur variabilité fournirez des conseils quant à la pertinence des fonctions sélectionnées et / ou leur manque d'échelle ou linéarité.

  • Indépendamment de l'hypothèse de linéarité, il est utile de normaliser les valeurs de numériques caractéristiques. Cela aide avec des fonctionnalités qui ont une gamme étrange, etc.
    Dans chaque dimension, établir à l'intérieur de la gamme, par exemple, de 2,5 écarts-types de chaque côté de la médiane, et de convertir les valeurs de caractéristiques d'un pourcentage sur la base de cette gamme.

  • Convertir les attributs nominaux binaires , créer autant de dimensions, il y a des valeurs distinctes de l'attribut nominal. (Je pense que beaucoup d'optimiseurs algorithme faire pour vous)

  • Une fois que vous avez identifié un ou quelques classificateurs avec une performance relativement bonne (disons 33% MCE), effectuer la même série d'essais, avec un tel classificateur en modifiant un seul paramètre à la fois. Par exemple, supprimer certaines fonctionnalités, et voir si le résultat, classificateur dimensionnalité inférieur améliore ou se dégrade.

  • facteur de perte est un paramètre très sensible . Essayez et le bâton avec un « raisonnable » mais peut-être la valeur sous-optimale pour la majeure partie des essais, affiner la perte à la fin.

  • Apprendre à exploiter les informations « dump » fournies par les optimiseurs SVM. Ces résultats fournissent des informations très utiles à ce que l'optimiseur « pense »

  • Rappelez-vous que ce qui a fonctionné très bien wih un ensemble de données dans un domaine donné peut effectuer très mal avec les données d'un autre domaine ...

  • café est bon, pas trop. Quand tout échoue, faites-irlandais; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top