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:
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.
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.
la source
Réponses:
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:
la source
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.
la source