.. blogpost:: :title: Plan des séances :keywords: plan :date: 2021-01-28 :categories: session Voici le plan prévu pour les cinq séances du cours de machine learning pour l'économie et la finance. **Séance 1** * `Python `_, `Anaconda `_, :epkg:`pandas`, :epkg:`numpy`, :epkg:`jupyter`, :epkg:`matplotlib` * Ressource `www.xavierdupre.fr `_ * `Source de données `_ * :epkg:`scikit-learn` * :ref:`l-regclass`, multi-classification * `métriques `_ * `Imbalanced problem `_ * Courbe ROC, AUC, voir :ref:`winescolorrocrst`, `Courbe ROC `_, `graphe erreur ROC `_ * `Ridge, Lasso `_ * Decision Tree, `Arbres de décision / Random Forest `_, `Prédiction d'une durée `_ **Séance 2** * `Valeurs manquantes (cheatsheet) `_, `Valeurs manquantes (notebooks) `_ * `Réseaux de neurones `_ (inférence, gradient) * Apprentissage à base de gradients, différences avec les arbres * `Deep learning `_ * :epkg:`tensorflow`, :epkg:`pytorch`, :epkg:`paddlepaddle`, :epkg:`chainer` * GPU ? * Zoo de modèles, `paddlepaddle `_, `TensorFlow Hub `_, `PyTorch Zoo `_ * `Transfer Learning `_ * Mise en production... `ONNX `_ ? **Séance 3** * `Série temporelles `_ * :epkg:`statsmodels`, modèles AR, :epkg:`fbprophet` * Prédiction * Série liées au COVID * Réalisation de cartes * Modèles épidémiologiques SIRD **Séance 4** * Webscrapping * JSON, xml * Clustering * Traitement du texte * Catégories (encoding, dirtycat) * Texte libre, (tokenisation, encoder, tf-idf, deep learning) **Séance 5** * Pipeline scikit-learn * Étendre scikit-learn avec ses propres modèles * Créer un module python * Test unitaires * Interprétabilité des modèles * Modèles éthiques * Machine learning crypté * Survival analysis **Un peu plus de détails sur la séance 1** Projet de machine learning * Récupérer les données --> dataframe (pandas.read_csv("...", sep=";")) * Features = X + cible y : objectif prédire y * Séparer entre données apprentissage (train) et données test (test) * Estimer le modèle sur la base train * Evaluer sur la base test * Validation croisée pour vérifier la robustesse du modèle * La classification multiclasse est construire à partir de classifications binaires selon deux stratégies : une contre toute (One Versus Rest) ou les unes contre les autres (One Versus One) Un peu plus en détail : * `Courbe ROC `_ * Pour la régression Lasso est utilisée pour sélectionner les variables en annulant les coefficients : :ref:`Lasso <2020-02-07sklapirst>`. **Un peu plus de détails sur la séance 2** * `Valeurs manquantes (cheatsheet) `_, `Valeurs manquantes (notebooks) `_ : * méthode naïve * corrélations * `KNNImputer `_ * `Réseaux de neurones `_ (inférence, gradient) * `un neurone `_ * `réseau de neurones `_ * propagation (évaluation) * `densité `_ * `apprentissage à base de gradient `_ * `rétropropagation `_ * `gradient stochastique `_, `implémentation `_ * `régression `_ * `classification `_ * normalisation * Réseau de neurones ou arbres ? * `Gradient Boosting `_ * `Deep learning `_ * `Réseaux à convolution `_ * :epkg:`tensorflow`, :epkg:`pytorch`, :epkg:`paddlepaddle`, :epkg:`chainer` * `exemple `_ * `Yolo `_, `Yolo explanations `_ * `Parler avec les mains à une machine `_ * GPU ? * Zoo de modèles, `paddlepaddle `_, `TensorFlow Hub `_, `PyTorch Zoo `_ * `Transfer Learning `_ * Mise en production... `docker `_, `ONNX `_ ? * attention, transformers **Un peu plus de détails sur la séance 3** * :ref:`tscovidrst` * :ref:`tspredrst` * `Single Spectrum Analysis (SSA) `_ * `aftercovid `_ * `Algo - simulation COVID `_ * `Evolution d'un voisinage, d'une population `_ Les données du jour : `Chiffres-clés concernant l'épidémie de COVID19 en France `_. **Un peu plus de détails sur la séance 4** Covid ? *scraping* * `JSON `_, `xml `_ * `Web-Scraping `_, `Web-Scraping (correction) `_, `Scraping, récupérer une image depuis LeMonde `_ * cache, javascript * blacklist * `TOR `_ * `wikipedia dump `_ * `expression régulière `_ *API REST* * `API REST `_, `API REST SNCF `_, `API REST SNCF (corrigé) `_ * `Créer sa propre API REST `_ *Catégories* * `OneHotEncoder `_ * `category_encoders `_ * 1 colonne par catégorie ça fait beaucoup de colonne * pourquoi encoder --> ordre des catégories * `dirty_cat `_ *Texte libre* * `Introduction au text mining `_ * `Analyse de sentiments `_, `Analyse de sentiments - correction `_ * bag of words (sac de mots), tokenisation, stop-words, TD-IDF, n-grammes * word embedding (word2vec, gloves) * `auto-encoders `_ * `HuggingFace `_, `hugging face transformers `_, `huggingface github `_ * `spacy `_, `nltk `_, `gensim `_ *topics* * `LDA `_ *devinette* Un chalutier mesure la taille de tous les poissons pris. Comment estimer la proportion de mâles et femelles sachant qu'ils n'ont en moyenne pas la même taille ? **Un peu plus de détails sur la séance 5** *scikit-learn API* Construire un modèle qui effectue une rotation des features avant un arbre de décision, voir `API de sciki-learn et modèles customisés `_, `FunctionTransformer `_. *Analyse de survie* `Analyse de survie `_ *Interprétabilité* (voir `Interpretable Machine Learning `_) * `Partial Dependence and Individual Conditional Expectation plots `_, `SOME GENERAL THOUGHTS ON PARTIAL DEPENDENCE PLOTS WITH CORRELATED COVARIATES `_ * `LIME (Local Interpretable Model-Agnostic Explanations) `_ * Approximer localement la prédiction d'un modèle par un modèle interprétable (comme une régression Lasso), cela revient en quelque sorte à calculer le gradient du modèle en chaque feature pour un point donnée. * .. image:: lime.png * Simplifier l'analyse en groupant les variables (pixels) si trop de variables * `SHAP (SHapley Additive exPlanations) `_ * Value d'une variable : on calcule l'espérance de la prédiction en tirant aléatoirement des valeurs pour cette variable (loi marginal), on fait la différence avec la prédiction moyenne. * Lire `Shapley Values `_ * .. image:: shap.png * .. image:: shap2.png * `CounterFactual `_ * Dérivées partielles * La prédiction est *Y*, on souhaite *Z*, quelle est le plus petit changement dans *X* pour avoir *Z* ? * Cas des variables corrélées *Ethique* * `Machine Learning éthique `_ * `fairlearn `_ * variable de contrôle