Qu'est-ce que le Machine Learning en pratique réelle?


11

Je suis un nouveau venu dans l'apprentissage automatique (également des statistiques), j'apprends des connaissances (algorithmes d'apprentissage supervisés / non supervisés, méthodes d'optimisation pertinentes, régularisations, certaines philosophies (comme le compromis biais-variance?)) Depuis un certain temps. Je sais que sans aucune pratique réelle, je ne gagnerais pas une compréhension approfondie de ces trucs d'apprentissage automatique.

Je commence donc par un problème de classification avec des données réelles, par exemple la classification des chiffres manuscrits (MNIST). À ma grande surprise, sans apprentissage / ingénierie des fonctionnalités , la précision atteint 0,97 en utilisant un classificateur de forêt aléatoire avec des valeurs de pixels brutes en entrée. J'ai également essayé d'autres algorithmes d'apprentissage, tels que SVM, LR avec des paramètres ajustés.

Alors je me suis perdu, serait-ce trop facile ou est-ce que je manque quelque chose ici? Il suffit de prendre un algorithme d'apprentissage dans la boîte à outils et de régler certains paramètres?

Si cela ne concernait que l'apprentissage automatique dans la pratique, je perdrais tout intérêt pour ce domaine. J'ai pensé et lu quelques blogs pendant quelques jours, et je suis arrivé à quelques conclusions:

  1. La partie la plus importante de l'apprentissage automatique dans la pratique est l' ingénierie des fonctionnalités , c'est-à-dire, compte tenu des données, trouver une meilleure représentation des fonctionnalités.

  2. Quel algorithme d'apprentissage à utiliser est également important, également le réglage des paramètres, mais le choix final est plus sur l'expérimentation.

Je ne suis pas sûr de bien le comprendre, en espérant que n'importe qui puisse me corriger et me donner quelques suggestions sur l'apprentissage automatique dans la pratique.


1
Je ne pense pas que je pourrais répondre à votre question dans son intégralité, mais je voudrais vous rassurer qu'il y a beaucoup de problèmes où les algorithmes / outils ne sont pas satisfaisants en plus de la mauvaise qualité des fonctionnalités (selon mon expérience, les sciences sociales sont monnaie courante) avec les deux situations). Je ne pense pas que ce soit votre seule préoccupation, mais vous semblez gêné par la facilité de vos projets jusqu'à présent.

1
@Matthew, oui, je viens de me perdre sans savoir par où commencer quand je suis confronté à un vrai problème, dois-je analyser les données pour en découvrir la nature afin de pouvoir extraire des fonctionnalités utiles ou simplement prendre un algorithme d'apprentissage et exécuter?
avocat

Réponses:


12

L'apprentissage automatique (ML) dans la pratique dépend de l'objectif du ML. Dans certaines situations, un prétraitement solide et l'application d'une suite de méthodes ML prêtes à l'emploi peuvent être suffisants. Cependant, même dans ces situations, il est important de comprendre le fonctionnement des méthodes afin de pouvoir dépanner en cas de problème. Cependant, le ML dans la pratique peut être bien plus que cela, et le MNIST en est un bon exemple.

Il est trompeusement facile d'obtenir de «bonnes» performances sur l'ensemble de données MNIST. Par exemple, selon le site Web de Yann Le Cun sur les performances du MNIST , K voisins les plus proches (K-NN) avec la métrique de distance euclidienne (L2) ont également un taux d'erreur de 3%, le même que votre aléatoire prédéfini forêt. L2 K-NN est à peu près aussi simple qu'un algorithme ML. D'un autre côté, Yann, Yoshua, Leon & Patrick's best, premier coup sur ce jeu de données, LeNet-4, a un taux d'erreur de 0,7%, 0,7% est inférieur à un quart de 3%, donc si vous mettez ce système en pratiquer la lecture de chiffres manuscrits, l'algorithme naïf nécessite quatre fois plus d'efforts humains pour corriger ses erreurs.

Le réseau de neurones convolutionnels utilisé par Yann et ses collègues est adapté à la tâche, mais je n'appellerais pas cela une `` ingénierie des fonctionnalités '', autant que de faire un effort pour comprendre les données et encoder cette compréhension dans l'algorithme d'apprentissage.

Alors, quelles sont les leçons:

  1. Il est facile d'atteindre la référence de performance naïve en utilisant une méthode prête à l'emploi et un bon prétraitement. Vous devez toujours le faire, afin de savoir où se trouve la ligne de base et si ce niveau de performance est suffisant pour répondre à vos besoins. Attention cependant, les méthodes ML souvent prêtes à l'emploi sont «cassantes», c'est-à-dire étonnamment sensibles au prétraitement. Une fois que vous avez formé toutes les méthodes prêtes à l'emploi, c'est presque toujours une bonne idée d'essayer de les emballer.
  2. Les problèmes difficiles nécessitent des connaissances spécifiques au domaine ou beaucoup plus de données, ou les deux, pour être résolus. L'ingénierie des fonctionnalités signifie utiliser des connaissances spécifiques au domaine pour aider l'algorithme ML. Cependant, si vous avez suffisamment de données, un algorithme (ou une approche) qui peut tirer parti de ces données pour apprendre des fonctionnalités complexes, et un expert appliquant cet algorithme, vous pouvez parfois renoncer à ces connaissances (par exemple, le défi Kaggle Merck ). De plus, les experts du domaine se trompent parfois sur les bonnes fonctionnalités; donc plus de données et d'expertise ML est toujours utile.
  3. Tenez compte du taux d'erreur et non de la précision. Une méthode ML avec une précision de 99% fait la moitié des erreurs qu'une méthode avec une précision de 98% fait; parfois c'est important.

2
+1, merci beaucoup. En lisant votre réponse, si je n'ai pas de connaissances spécifiques au domaine pour faire de l'ingénierie des fonctionnalités, je devrais me concentrer sur l'invention de bonnes méthodes pour faire l'apprentissage des fonctionnalités en utilisant les données fournies et essayer différents algorithmes d'apprentissage.
avocat

@loganecolss Ou vous pouvez également lire ce que d'autres personnes ont fait sur des données similaires ou parler à un expert du domaine.
qdjm

7

Je pense que les exemples que vous trouvez sur un blog ou des sites Web sont des exemples où l'on sait que les méthodes courantes fonctionnent bien (même si, bien sûr, elles peuvent être améliorées).

Ma spécialisation est dans l'ingénierie des fonctionnalités et je peux vous dire que souvent les algorithmes standards ne fonctionnent pas du tout. (Je n'ai aucune connaissance du domaine mais souvent je travaille avec des gens qui le possèdent.).

Ici, il y a un vrai problème où j'ai travaillé pendant 6 mois: étant donné une matrice X avec 100 échantillons et 10000 variables représentant la valeur génétique des patients et une sortie y de taille 100 x 1 qui représente la densité des os.

Pouvez-vous me dire quels gènes influencent la densité des os?

Maintenant, je travaille sur un autre problème. J'ai un ensemble de données de production manufacturière avec 2000 échantillons et 12000 variables. Mon patron aimerait extraire de cet ensemble de données pas plus de 30 variables de manière non supervisée.
J'ai essayé quelques algorithmes mais je ne peux pas choisir moins de 600 variables car elles sont très très corrélées entre elles. (J'y travaille toujours ...)

Une autre réflexion importante à considérer est la vitesse de performance des différents algorithmes. Dans de nombreuses situations, vous ne pouvez pas attendre 20 minutes en attendant un résultat. Par exemple, vous devez savoir quand utiliser NIPALS et quand utiliser SVD pour calculer PCA.

J'espère que cela peut vous donner une idée des problèmes courants en ml.


Merci pour vos conseils, semble que je n'ai pas abordé problèmes comme ça, intéressant. n<<p
avocat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.