[PYTHON] Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn

La dernière fois, dans Histoire de l'analyse des données chronologiques des stocks, j'ai parlé un peu de l'apprentissage automatique dans la seconde moitié. Aujourd'hui, nous aborderons la bibliothèque d'apprentissage automatique scikit-learn.

En parlant de scikit-learn, j'ai mentionné Simple clustering example et Support vector machine. items / 33231bf23d40d1c1f344), Résoudre les problèmes de clustering, Calculer TF-IDF ), Visualisation du modèle de régression, Clustering by DBSCAN Cependant, je vais réorganiser les fonctions de la bibliothèque.

L'apprentissage automatique a l'image de tirer pleinement parti des mathématiques difficiles, mais si vous utilisez une bibliothèque très complète, vous pouvez l'utiliser sans implémenter la méthode d'apprentissage automatique elle-même. Bien sûr, il est nécessaire de comprendre le contenu de la méthode, mais comme il existe une bibliothèque appelée scikit-learn dont on peut dire qu'elle est de facto, je pense qu'il vaut mieux commencer par l'utiliser.

J'ai écrit cette histoire dans précédent, mais le plus grand mérite d'utiliser Python est lié au calcul scientifique et à l'analyse de données telles que les statistiques et l'apprentissage automatique. La bibliothèque est extrêmement riche. Il existe de très bonnes bibliothèques appelées NumPy et SciPy pour les calculs numériques en général, pandas pour la gestion des trames de données et matplotlib pour la visualisation. Essayer de faire la même chose dans une autre langue (comme Ruby ou Scala) peut être une tâche intimidante ou presque impossible, donc ce n'est probablement pas une option. Il existe un autre langage pour les statistiques, R, mais je pense que Python est plus complet en tant que langage car c'est aussi un langage général, et R se caractérise par avoir plus d'actifs existants. ..

Procédure de base de l'apprentissage automatique

Commençons par organiser la procédure.

  1. Obtention de données
  2. Prétraitement des données (création d'identité par traitement, mise en forme, conversion d'échelle, etc.)
  3. Sélection de la méthode
  4. Sélection des paramètres
  5. Formation sur modèle
  6. Évaluation du modèle
  7. Accord (répétez les étapes 3 à 6)

La procédure de base est comme ci-dessus.

Sélection de méthode

La meilleure chose que vous puissiez faire avec scikit-learn est de regarder la feuille de triche.

ml_map.png

L'original est dans la famille principale.

Choosing the right estimator http://scikit-learn.org/stable/tutorial/machine_learning_map/

C'est utile car vous pouvez passer à l'explication de chaque méthode à partir d'ici.

Voici un résumé de ce que vous pouvez faire.

Suivons les fonctionnalités une par une.

Classification

SVM (Machine à vecteur de support, Machine à vecteur de support linéaire)

Il a des performances de généralisation élevées et peut gérer diverses données car il peut sélectionner des fonctions du noyau.

Méthode de voisinage K

Il bénéficie d'une grande précision malgré sa simplicité.

Forêt aléatoire

Il a les caractéristiques qu'il n'est pas nécessaire de considérer le surapprentissage et il est facile d'effectuer des calculs parallèles.

Régression

Revenir

C'est une régression linéaire normale.

Retour au lasso

Construisez un modèle avec peu de variables, mais supposez que certaines variables ne sont pas utilisées.

Retour de crête

Elle n'est pas facilement affectée par la colinéarité multiple et a une capacité de sélection de variable plus faible que la régression Lasso.

SVR

Vous pouvez capturer la non-linéarité dans le noyau.

Clustering

Méthode de la moyenne K (K moyennes)

Il s'agit d'une méthode de clustering typique dans laquelle le nombre de clusters est spécifié à l'avance comme k. C'est simple et rapide.

Distribution gaussienne mixte (GMM)

Vous pouvez trouver la probabilité d'appartenir au cluster. Supposons une distribution normale.

Changement moyen

Une méthode robuste et non paramétrique qui utilise l'estimation de la densité du noyau. La largeur du noyau (rayon h) que vous définissez détermine automatiquement le nombre de clusters. Le coût a tendance à être élevé car le point central est calculé en considérant un cercle de rayon h en utilisant le principe de la méthode de descente la plus raide pour tous les points d'entrée.

Cette méthode est également appliquée à des situations telles que la segmentation d'image et le lissage d'image de préservation des bords.

L'analyse de cluster Meanshift avec une largeur de noyau infinie h peut également être interprétée comme la méthode de calcul de la moyenne k.

Réduction dimensionnelle

Analyse en composantes principales (ACP)

Il a l'avantage d'être rapide à manipuler des matrices clairsemées. Supposons une distribution normale.

Décomposition du facteur matriciel non négatif (NMF)

Seules des matrices non négatives peuvent être utilisées, mais il peut être plus facile d'extraire des entités.

Vous pouvez également utiliser la discrimination linéaire (LDA) et le Deep Learning.

BLAS et LAPACK

La bibliothèque dont dépend scikit-learn. Cela dépend non seulement de scikit-learn mais aussi de BLAS et LAPACK pour divers logiciels de calcul numérique tels que SciPy et des programmes dans d'autres langues comme C et Fortran. Principalement fourni sous forme de package dans la distribution GNU / Linux. Puisqu'il peut être utilisé à partir de divers langages et qu'il a une longue histoire, il s'agit d'un standard de facto pour effectuer des opérations algébriques linéaires sur un ordinateur.

LAPACK est spécifiquement pour les équations linéaires simultanées, la méthode des moindres carrés, le problème des valeurs propres, le problème des valeurs singulières, la décomposition matricielle (LU), la décomposition choleskey, la décomposition QR, la décomposition de valeurs singulières, la décomposition de Schur, la décomposition de Schur généralisée et le nombre de conditions. Il fournit des routines d'estimation, des calculs de matrice inverse et divers sous-programmes.

Il existe différentes implémentations de BLAS, mais les plus typiques sont les suivantes.

Si vous ne vous souciez pas tellement de la vitesse, je pense que vous utiliserez probablement OpenBLAS pour le moment.

Sélection des paramètres

Une méthode appelée validation croisée ou recherche de grille est une méthode pour exécuter efficacement de bons paramètres. Nous les utiliserons pleinement pour répéter l'apprentissage et l'évaluation du modèle, mais nous y reviendrons plus tard.

Résumé

Cette fois, nous avons résumé les méthodes d'apprentissage automatique typiques du point de vue des méthodes implémentées dans la bibliothèque d'apprentissage automatique scikit-learn. scikit-learn est une bibliothèque très riche et de haute qualité, donc je pense que vous pouvez la comprendre en maintenant ici.

Recommended Posts

Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn
Apprentissage automatique à partir de zéro (apprentissage automatique appris avec Kaggle)
[Français] scikit-learn 0.18 Introduction de l'apprentissage automatique par le didacticiel scikit-learn
[Apprentissage automatique] Comprendre la SVM à la fois à partir de scikit-learn et des mathématiques
Installation de TensorFlow, une bibliothèque d'apprentissage automatique de Google
L'apprentissage automatique appris avec Pokemon
Techniques liées à l'apprentissage automatique / à la classification
Bases de l'apprentissage automatique (mémoire)
Importance des ensembles de données d'apprentissage automatique
[Apprentissage automatique] Comprendre les arbres de décision de scikit-learn et des mathématiques
[Apprentissage automatique] Comprendre la régression logistique à partir de scikit-learn et des mathématiques
Apprentissage automatique ③ Résumé de l'arbre de décision
SVM essayant l'apprentissage automatique avec scikit-learn
Python: prétraitement dans l'apprentissage automatique: présentation
[Apprentissage automatique] Comprendre la régression multiple linéaire à partir de scikit-learn et des mathématiques
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
[Apprentissage automatique] Classification des sujets LDA à l'aide de scikit-learn
Notes d'apprentissage depuis le début de Python 1
Comment utiliser l'apprentissage automatique pour le travail? 02_Aperçu du projet de développement AI
[python] Techniques souvent utilisées dans l'apprentissage automatique
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python
[Apprentissage automatique] Liste des packages fréquemment utilisés
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
Notes d'apprentissage depuis le début de Python 2
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Un mémorandum de méthode souvent utilisé dans l'apprentissage automatique utilisant scikit-learn (pour les débutants)
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
Classification des images de guitare par apprentissage automatique Partie 1
Début de l'apprentissage automatique (matériel didactique / informations recommandés)
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Apprentissage automatique du sport-Analyse de la J-League à titre d'exemple-②
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 1
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Divulgation complète des méthodes utilisées dans l'apprentissage automatique
Notes sur l'apprentissage automatique (mises à jour de temps en temps)
Algorithme d'apprentissage automatique (de la classification à 2 classes à la classification à plusieurs classes)
Apprendre de ABC163C Les bases de l'amélioration de la quantité de calcul
Liste des liens que les débutants en apprentissage automatique apprennent
À propos du contenu de développement de l'apprentissage automatique (exemple)
Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique
Analyse de l'utilisation de l'espace partagé par l'apprentissage automatique
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 2
Estimation raisonnable du prix de Mercari par apprentissage automatique
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 2
Classification des images de guitare par apprentissage automatique, partie 2
Touchons une partie de l'apprentissage automatique avec Python
Apprentissage profond appris par mise en œuvre (segmentation) ~ Mise en œuvre de SegNet ~
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
Disposition des éléments auto-mentionnés liés à l'apprentissage automatique
Raisonnement causal utilisant l'apprentissage automatique (organisation des méthodes de raisonnement causal)
Techniques de visualisation de base apprises à partir des données de Kaggle Titanic
Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur