Python dans le Trading Algorithmique - page 21

 

Testez facilement votre stratégie de coût moyen en dollars en Python



Testez facilement votre stratégie de coût moyen en dollars en Python

Dans les 20 prochaines minutes environ, nous mettrons en œuvre une stratégie de moyenne des coûts en dollars en Python. Cette stratégie vous permettra d'évaluer la performance de la moyenne d'achat pour un actif ou un indice spécifique sur une certaine période de temps. Nous utiliserons un outil appelé backtesting.py pour mettre en œuvre cette stratégie. Backtesting.py est un framework convivial en Python qui est moins intimidant que d'autres bibliothèques comme Vectorbt ou Backtrader. Si vous débutez avec Python, ce sera une excellente option pour vous.

La stratégie d'achats périodiques par sommes fixes que nous mettrons en œuvre est relativement simple, mais je vais également vous montrer comment l'étendre. Notre stratégie consiste à acheter un montant fixe en dollars d'un actif particulier tous les lundis ou mardis et à répéter ce processus jusqu'à ce que nous manquions de données. Pour commencer, ouvrez un terminal et configurez un nouvel environnement virtuel pour garantir un environnement propre pour notre implémentation. Une fois que vous avez configuré l'environnement virtuel, installez le package de backtesting à l'aide de pip :

backtest d'installation de pip

Après avoir installé le package, nous pouvons continuer avec notre fichier Python. Nous devrons importer certains modules et données nécessaires. Depuis le backtesting, importez les modules de backtest et de stratégie. De plus, importez des données factices à partir de backtesting.test, en particulier les données Google. Nous aurons également besoin du module pandas pour la manipulation des données.

Maintenant, définissons notre classe de stratégie. Créez une classe appelée DCA (Dollar Cost Average) qui hérite de la classe de stratégie. À l'intérieur de cette classe, nous allons définir une variable de classe appelée amount_to_invest, qui représente le montant fixe en dollars que nous voulons investir. Initialement, réglez-le sur 10.

Ensuite, nous devons définir deux fonctions dans cette classe : __init__ et next. La fonction __init__ est appelée lors de l'initialisation et est utilisée pour pré-calculer toutes les valeurs dont nous pourrions avoir besoin plus tard. Dans notre cas, nous allons créer un indicateur qui nous donne le jour de la semaine. Pour ce faire, nous allons utiliser la méthode self.indicator fournie par backtesting.py. Nous pouvons définir notre indicateur comme self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek). Cet indicateur renverra un tableau des valeurs du jour de la semaine (0-6, où lundi est 0 et dimanche est 6) pour nos données.

Passons maintenant à la fonction suivante, où nous implémentons notre logique de trading. Cette fonction est appelée pour chaque barre de données et nous permet de prendre des décisions en fonction des données actuelles. Dans notre cas, nous allons vérifier si le jour de la semaine est égal à 1 (mardi) en utilisant if self.day_of_week == 1:. Si c'est mardi, nous déclencherons un signal d'achat. Pour exécuter l'ordre d'achat, nous utiliserons la fonction self.buy fournie par backtesting.py. Nous pouvons calculer la taille de l'ordre d'achat en divisant le montant à investir par le cours de clôture actuel de l'actif. Pour nous assurer que nous achetons un nombre entier d'actions, nous pouvons utiliser math.floor pour arrondir le résultat.

Pour gérer les fractions d'actions, nous pouvons fractionner les actions en multipliant l'actif par un petit nombre, tel que 10 ** -6. Cela divisera les actions en microparts, qui pourront ensuite être reconverties en nombre réel d'actions achetées en divisant par le même petit nombre.

Enfin, nous devons exécuter le backtest et extraire les statistiques. Pour ce faire, nous pouvons utiliser bt.run() et affecter le résultat à une variable appelée stats. Nous pouvons également tracer les résultats en utilisant bt.plot().

Puisque nous n'avons pas encore implémenté la logique de vente, l'intrigue apparaît comme une ligne continue sans aucun argument de vente. Nous réglerons cela bientôt. Mais avant de le faire, extrayons quelques statistiques des résultats du backtest.

Pour ce faire, nous utiliserons la variable stats que nous avons définie précédemment. Nous pouvons imprimer diverses statistiques telles que le rendement total, le rendement annualisé, le prélèvement maximal, etc.

N'hésitez pas à ajouter plus de statistiques si vous souhaitez explorer des mesures de performances supplémentaires.

Passons maintenant à la mise en œuvre de la logique de vente. Comme nous utilisons une stratégie d'achats périodiques par sommes fixes, nous vendrons le même montant fixe chaque semaine. Dans notre cas, nous vendrons le vendredi.

Ici, nous vérifions si le jour de la semaine est 4 (vendredi) en utilisant l'indicateur day_of_week que nous avons créé précédemment. Si c'est vendredi, nous vendons le même montant en dollars que nous avons acheté plus tôt en divisant le montant_à_investir par le cours de clôture actuel. Cela garantit que nous vendons le nombre approprié d'actions correspondant au montant de notre investissement.

Maintenant, lorsque nous exécutons le backtest, nous devrions voir des points de vente sur le tracé, indiquant les vendredis où nous vendons notre position.

N'hésitez pas à expérimenter différentes variantes de cette stratégie, telles que l'ajustement des jours d'achat/vente ou la mise en place de conditions supplémentaires en fonction des mouvements de prix. Ce cadre vous permet d'étendre et de personnaliser facilement votre stratégie en fonction de vos besoins.

N'oubliez pas d'ajuster la variable amount_to_invest et d'explorer différentes données d'actifs pour voir comment la stratégie fonctionne.

J'espère que cela vous aidera à mettre en œuvre et à explorer la stratégie de moyenne des coûts en dollars à l'aide de la bibliothèque backtesting.py en Python. Dis moi si tu as d'autres questions!

Backtest Your Dollar Cost Average Strategy easily in Python
Backtest Your Dollar Cost Average Strategy easily in Python
  • 2022.06.29
  • www.youtube.com
We backtest a simple dollar cost averaging strategy in backtesting.py. Backtesting.py is a super easy to use framework for beginners to python or to backtest...
 

Indicateurs personnalisés dans Backtesting.py - Python Deep Dive



Indicateurs personnalisés dans Backtesting.py - Python Deep Dive

Dans cette vidéo, nous allons explorer le processus de création d'indicateurs personnalisés dans la bibliothèque backtesting.py. Cette fonctionnalité nous permettra de tester facilement toute stratégie de trading en créant des indicateurs et en traduisant les fonctions Python dans un format compatible avec l'écosystème backtesting.py.

Avant de nous plonger dans les détails de la création d'indicateurs, il est recommandé de consulter un cours disponible gratuitement sur YouTube qui couvre la plupart des aspects de backtesting.py. Ce cours fournira une compréhension de haut niveau de la bibliothèque, ce qui sera utile lors de l'exploration de la création d'indicateurs dans cette vidéo.

Dans cette vidéo, nous allons nous concentrer sur trois exemples différents pour couvrir diverses idées d'indicateurs. Le premier exemple consiste à utiliser des signaux générés dans un programme Python externe et à les intégrer dans backtesting.py. Cette approche est utile lorsque vous avez déjà des signaux d'achat et de vente provenant d'une source externe et que vous souhaitez les incorporer dans votre processus de backtesting.

Le deuxième exemple démontrera l'utilisation de la bibliothèque pandas-ta pour renvoyer plusieurs valeurs pour chaque indicateur. Plus précisément, nous travaillerons avec l'indicateur des bandes de Bollinger et montrerons comment renvoyer une trame de données contenant à la fois les bandes inférieure et supérieure, au lieu d'un simple tableau numpy. Cet exemple mettra en évidence la polyvalence de la création d'indicateurs à valeurs multiples.

Enfin, nous allons coder une stratégie de momentum pour démontrer comment des indicateurs personnalisés peuvent être créés en utilisant Python pur. Cet exemple montrera la flexibilité de la création d'indicateurs à l'aide de la programmation Python, permettant des possibilités illimitées dans la conception d'indicateurs.

Pour suivre les exemples, assurez-vous que les bibliothèques nécessaires sont installées, y compris backtesting, pandas et pandas-ta. Une fois que vous avez installé ces bibliothèques, créez un fichier Python pour les exemples de code.

La partie initiale du code configure le passe-partout nécessaire lors de l'utilisation de backtesting.py. Il importe les classes requises, "backtest" et "stratégie", et importe des exemples de données pour le stock Google à partir de backtesting.py. Les données importées sont une trame de données pandas contenant des données de prix quotidiennes, y compris l'ouverture, le haut, le bas, la clôture et le volume, avec un index datetime.

Pour le premier exemple, nous supposons que vous avez déjà généré des signaux dans un programme externe et que vous souhaitez les transférer vers backtesting.py. Pour le démontrer, nous créons des signaux aléatoires à l'aide de numpy et les ajoutons à la trame de données Google. Ces signaux peuvent représenter n'importe quel indicateur que vous avez programmé en Python, où -1 indique un signal de vente, 0 indique aucune action et 1 représente un signal d'achat.

Ensuite, nous définissons une classe de stratégie appelée "SignalStrategy" qui hérite de la classe "Strategy" importée précédemment. Cette classe sera responsable de la mise en œuvre de la logique d'achat et de vente basée sur les signaux. La classe comprend la fonction d'initialisation " init " et la fonction "next".

Dans la fonction " init ", nous n'avons pas grand-chose à faire dans cet exemple particulier, mais il est de bonne pratique de l'inclure. La fonction "suivante" est l'endroit où la logique d'achat et de vente sera implémentée en fonction des signaux.

Pour exécuter le backtest, nous créons une instance de la classe backtest, en passant le data frame Google et la classe "SignalStrategy". Nous avons également défini la valeur du cache sur 10 000. Ensuite, nous exécutons le backtest et stockons les résultats dans la variable "stats". Enfin, nous imprimons les statistiques pour voir les performances de la stratégie.

L'exécution du code à ce stade ne donnera aucun échange car nous n'avons pas encore implémenté la logique d'achat et de vente. Cependant, nous pouvons accéder aux valeurs de signal en utilisant "self.data.signal" dans la fonction "next", qui nous donnera la dernière valeur de signal.

Pour mettre en œuvre la logique d'achat et de vente, nous vérifions la valeur actuelle du signal et la position actuelle. Si le signal est 1 (signal d'achat) et qu'il n'y a pas de position existante, nous exécutons un ordre d'achat en utilisant "self.buy". Si le signal est -1 (signal de vente) et qu'il existe une position longue, nous exécutons un ordre de vente en utilisant "self.sell".

  1. Stratégie de signal externe :

    • Générez des signaux aléatoires ou obtenez des signaux d'un programme externe.
    • Définissez une classe SignalStrategy héritant de Strategy.
    • Mettez en œuvre la méthode suivante pour exécuter des ordres d'achat ou de vente en fonction des signaux.
    • Utilisez les méthodes self.buy() et self.sell() pour exécuter les commandes.
    • Instanciez un objet Backtest avec les données, la stratégie, le capital initial et la commission.
    • Exécutez le backtest en utilisant bt.run() et analysez les résultats.

  2. Utilisation de pandas-ta pour les indicateurs personnalisés :

    • Importez la bibliothèque pandas_ta (installez-la avec pip install pandas_ta).
    • Utilisez la fonction d'indicateur souhaitée de pandas_ta pour calculer l'indicateur.
    • Ajoutez l'indicateur calculé au bloc de données.
    • Définissez une classe de stratégie héritant de Strategy.
    • Implémentez la méthode suivante pour exécuter des ordres d'achat ou de vente en fonction des valeurs de l'indicateur.
    • Utilisez les conditions souhaitées pour déterminer quand acheter ou vendre.
    • Instanciez un objet Backtest avec les données, la stratégie, le capital initial et la commission.
    • Exécutez le backtest en utilisant bt.run() et analysez les résultats.

N'oubliez pas de remplacer les espaces réservés comme GOOG par vos données réelles et de personnaliser les stratégies en fonction de vos besoins spécifiques.

Custom Indicators In Backtesting.py - Python Deep Dive
Custom Indicators In Backtesting.py - Python Deep Dive
  • 2022.07.30
  • www.youtube.com
Learn how to make your own custom indicators in backtesting.py. We show how you can integrate libraries like pandas-ta, ta-lib, etc. as well as write your ow...
 

Arrêter les pertes dans Backtesting.py



Arrêter les pertes dans Backtesting.py

Dans cette vidéo, nous allons explorer le concept de stop loss dans la bibliothèque "backtesting.py". La vidéo couvrira trois exemples de complexité et de profondeur croissantes, offrant une compréhension complète des pertes d'arrêt dans "backtesting.py". Le présentateur suppose une certaine connaissance préalable de "backtesting.py" et recommande de regarder un cours gratuit sur YouTube pour les débutants avant de plonger dans ce sujet avancé.

Pour commencer, ouvrez un terminal et assurez-vous que "backtesting.py" est installé en exécutant la commande "pip install backtesting". Cela installera tous les packages nécessaires. Ensuite, créez un nouveau fichier Python, appelons-le "example.py", et importons les modules requis : "backtest" et "strategy" de "backtesting", et "googledale" de "backtesting.test". "googledale" est un ensemble de données de test fourni avec "backtesting.py".

Ensuite, définissez la classe de stratégie en créant une classe appelée "Strats" qui hérite de la classe "strategy". Implémentez les deux fonctions requises : « init » et « next ». À ce stade, nous sommes prêts à exécuter notre backtest. Initialisez un nouvel objet backtest, "bt", en utilisant la fonction "backtest". Transmettez les données "googledale" et la classe de stratégie que nous venons de définir. Fixez la valeur de rachat initiale à 10 000 $. Enfin, exécutez le backtest en utilisant la méthode "bt.run" et tracez les résultats en utilisant "bt.plot".

Initialement, la classe de stratégie n'effectue aucune action de trading. Pour illustrer un exemple simple de stop-loss, nous ajouterons une logique d'achat et de vente de base. Si nous avons un poste existant, nous ne prendrons aucune mesure. Cependant, si nous n'avons pas de position, nous passerons un ordre d'achat en utilisant la méthode "self.to_buy", en spécifiant la taille de la position (par exemple, 1 action). De plus, nous ajouterons un stop loss et un take profit. Le stop loss sera fixé à 10 unités en dessous du cours de clôture actuel, tandis que le take profit sera fixé à 20 unités au-dessus du cours de clôture actuel.

L'exécution du backtest générera un grand nombre de transactions. Dès qu'un trade est clôturé, un nouveau trade sera ouvert sur la barre suivante à moins que le stop loss ou le take profit ne soit déclenché. Il est important de comprendre comment "backtesting.py" gère les stop loss et les take profits. Dans les cas où le stop loss et le take profit sont déclenchés dans la même barre, la bibliothèque suppose que le stop loss est déclenché en premier. Ce comportement peut entraîner des résultats inattendus, en particulier lorsqu'il s'agit de données quotidiennes qui peuvent présenter des lacunes importantes.

Pour gérer plus efficacement les stop loss, on peut étendre la classe de stratégie et utiliser la "trailing strategy" fournie par "backtesting.py". Importez les modules nécessaires, y compris "crossover" et "trailing strategy" depuis "backtesting.lib". Dans la nouvelle classe de stratégie, héritez de "trailing strategy" au lieu de la classe de base "strategy". Redéfinissez la fonction « init » pour appeler la fonction « init » de la classe parente en utilisant « super ». Ensuite, utilisez la fonction « set_trailing_stop_loss » de la classe parente pour définir une valeur de stop loss suiveur.

Dans la section suivante de la vidéo, le présentateur explique plus en détail le fonctionnement de la "stratégie de suivi" et comment la personnaliser pour des besoins spécifiques. Cependant, dans cette section, l'accent est mis sur l'utilisation de la "stratégie de fin" dans notre code. En appelant la fonction " init " de la classe parente et en utilisant la fonction "set_trailing_stop_loss", nous pouvons tirer parti de la fonctionnalité trailing stop loss dans notre backtest.

Dans l'ensemble, la vidéo fournit une explication étape par étape de la mise en œuvre des stop loss dans "backtesting.py". Il couvre des exemples simples ainsi que des concepts plus avancés comme le suivre d'une valeur de 10, ce qui signifie que notre stop loss suivra le prix de 10 unités.

Maintenant que nous avons configuré notre fonction d'initialisation, passons à la fonction suivante. C'est là que l'essentiel de notre logique de trading sera implémenté. Dans la fonction suivante, nous appellerons d'abord la fonction suivante de la classe parent en utilisant super().next(). Cela garantit que la fonctionnalité de stop loss suiveur est exécutée avec l'autre logique de trading.

Ensuite, nous allons ajouter du code pour ajuster notre trailing stop loss. Nous utiliserons une instruction conditionnelle pour vérifier si nous avons une position ouverte (self.position n'est pas None). Si nous avons une position, nous mettrons à jour le trailing stop loss en utilisant la méthode update_trailing_sl fournie par la classe trailing_strategy. Cette méthode prend le prix actuel comme argument et met à jour le stop loss en conséquence.

Stop Losses in Backtesting.py
Stop Losses in Backtesting.py
  • 2022.08.19
  • www.youtube.com
In this video we go in-depth on how to use stop-losses in backtesting.py. We cover both static and trailing stop losses and how backtesting.py executes them ...
 

Validation Backtest en Python (Fooled By Randomness)



Validation Backtest en Python (Fooled By Randomness)

Nous avons tous été dans cette situation où nous créons une stratégie de trading, la testons par la suite, et lorsque nous la mettons enfin en œuvre, elle ne fonctionne pas comme prévu. L'une des principales raisons de cette déception est le surajustement de la stratégie à un ensemble spécifique de données historiques utilisées dans le backtest. Dans cette vidéo, je vais démontrer une stratégie pour lutter contre le surajustement et m'assurer que vous ne vous fiez pas à des stratégies qui manquent de bases solides ou qui vous laissent berner par le hasard.

Plongeons-nous dans un exemple précis. J'ai effectué un backtest sur une stratégie simple basée sur le RSI en utilisant Bitcoin comme actif. La stratégie consiste à vendre lorsque le RSI est élevé et à acheter lorsque le RSI est bas. Les résultats du backtest ont montré un rendement modeste d'environ 3 %, malgré une baisse de 15 % de Bitcoin au cours de la période testée. À première vue, cela peut sembler une stratégie prometteuse pour les marchés baissiers.

Cependant, il est crucial d'examiner les performances de la stratégie sur différentes périodes pour déterminer si elle identifie systématiquement des opportunités rentables ou si elle a simplement eu de la chance avec les valeurs de paramètres choisies lors du backtest. Pour y parvenir, j'ai effectué plusieurs backtests de 30 jours, couvrant différentes périodes tout au long de l'année.

En traçant la distribution des rendements de ces backtests, nous pouvons avoir un aperçu de l'efficacité de la stratégie. Le graphique montre chaque fenêtre de 30 jours sous la forme d'un point, représentant les rendements obtenus au cours de cette période. La boîte à moustaches qui l'accompagne affiche le rendement médian, les quartiles, les valeurs maximales et minimales. En analysant le graphique, il devient évident que le rendement médian sur une période de 30 jours est de -8,5 %. De plus, la distribution des rendements semble être aléatoire, semblable aux résultats auxquels on pourrait s'attendre d'un ensemble de générateurs de nombres aléatoires entre -35 et 15. Ces résultats indiquent fortement que la stratégie n'est pas unique ou efficace au-delà des données historiques spécifiques utilisées dans le back-test.

Pour valider la stratégie et atténuer l'influence du surajustement, nous devons effectuer des backtests sur un plus large éventail de données. À cette fin, j'ai téléchargé plusieurs fichiers de données couvrant toute l'année, du début de 2022 à la fin de 2022. J'ai combiné ces fichiers dans un fichier CSV principal contenant des données de bougie d'une minute pour toute la période.

Dans le code de validation, j'ai fait quelques ajustements mineurs pour tenir compte de l'ensemble de données étendu. La stratégie de base reste la même, se concentrant sur la logique de trading basée sur le RSI. Cependant, j'ai introduit une boucle pour effectuer des backtests sur des fenêtres de 30 jours à travers les données. Chaque backtest calcule les retours, qui sont ensuite ajoutés à une liste pour une analyse plus approfondie.

En générant une boîte à moustaches à l'aide des rendements collectés, nous pouvons visualiser la distribution des performances de la stratégie sur différentes fenêtres de 30 jours. Ce graphique révèle la variabilité des rendements et fournit une image plus claire de la performance de la stratégie sur différents intervalles de temps. Dans cet exemple spécifique, le graphique indique des rendements principalement négatifs pour presque tous les mois, ce qui suggère que la stratégie manque de rentabilité constante.

Ces techniques de validation et de vérification des stratégies de trading peuvent être appliquées à n'importe quel cadre de backtesting de votre choix. Le code fourni utilise la bibliothèque backtesting.py, mais vous pouvez l'adapter à d'autres bibliothèques comme vectorbt ou backtrader. L'idée clé est de s'assurer que votre stratégie démontre sa robustesse sur diverses périodes de temps et n'est pas simplement le produit d'un surajustement à un ensemble spécifique de données historiques.

En suivant ces étapes de validation, vous pouvez réduire le risque de vous fier à des stratégies qui ne sont pas fondées sur la réalité ou d'être victime de résultats aléatoires. Il est essentiel d'aller au-delà des performances du backtest et de considérer l'efficacité de la stratégie dans différentes conditions de marché pour prendre des décisions éclairées lors de la mise en œuvre de stratégies de trading.

Après avoir analysé les résultats du backtest et la distribution des rendements sur différentes périodes, nous avons découvert que la performance de la stratégie était essentiellement aléatoire. Il n'a pas fourni de rentabilité constante en dehors de la période spécifique utilisée pour le backtesting. Cela indique que la stratégie souffrait de surajustement et manquait de robustesse.

Pour éviter de tomber dans le piège du surajustement et augmenter les chances de développer des stratégies de trading fiables, voici quelques recommandations :

  1. Utilisez des données suffisantes et diversifiées : assurez-vous que votre backtest intègre une quantité importante de données historiques pour couvrir diverses conditions de marché. Cela permet de saisir un plus large éventail de scénarios et réduit la probabilité de surajustement à des conditions de marché spécifiques.

  2. Validez sur plusieurs périodes : au lieu de vous fier uniquement à une seule période pour le backtesting, testez votre stratégie sur différentes périodes. Cela donne un aperçu de sa performance dans diverses conditions de marché et aide à déterminer si la stratégie a une rentabilité constante ou si les résultats observés étaient dus au hasard.

  3. Mettre en œuvre des tests hors échantillon : réservez une partie de vos données historiques pour les tests hors échantillon. Après avoir effectué votre backtest principal sur le jeu de données initial, validez la stratégie sur les données réservées que le modèle n'a pas vues auparavant. Cela permet d'évaluer la capacité de la stratégie à s'adapter à des conditions de marché inédites et fournit une évaluation plus réaliste de ses performances.

  4. Méfiez-vous de l'ajustement de la courbe : évitez une optimisation excessive ou un réglage des paramètres pour ajuster trop étroitement la stratégie aux données historiques. Les stratégies trop adaptées à des modèles de données spécifiques sont plus susceptibles d'échouer dans le commerce réel. Visez la robustesse plutôt que de rechercher des performances exceptionnelles uniquement sur des données historiques.

  5. Envisagez l'analyse en aval : Au lieu de vous fier uniquement aux backtests statiques, envisagez d'utiliser l'analyse en aval. Cela implique de ré-optimiser et de retester périodiquement votre stratégie à mesure que de nouvelles données deviennent disponibles. Il vous permet d'adapter et d'affiner votre stratégie en continu, en améliorant ses performances dans des conditions de marché changeantes.

  6. Utilisez des tests de signification statistique : appliquez des tests statistiques pour évaluer la signification des performances de votre stratégie. Cela aide à déterminer si les résultats observés sont statistiquement significatifs ou simplement dus au hasard. Les tests statistiques courants utilisés dans le backtesting comprennent les tests t, les tests bootstrap et les simulations de Monte Carlo.

En suivant ces directives, vous pouvez réduire le risque de développer des stratégies trop adaptées aux données historiques et augmenter la probabilité de créer des approches de trading robustes et fiables.

N'oubliez pas que l'objectif est de développer des stratégies de trading qui démontrent une rentabilité constante dans différentes conditions de marché, plutôt que des stratégies qui se contentent de bien performer sur des données historiques.

Backtest Validation in Python (Fooled By Randomness)
Backtest Validation in Python (Fooled By Randomness)
  • 2022.09.14
  • www.youtube.com
In this video we go through a method that I've found helpful for validating my backtests before I go live with a strategy. Looking at the distribution of ret...
 

Une introduction accélérée à Python pour les ingénieurs en apprentissage automatique



Une introduction accélérée à Python pour les ingénieurs en apprentissage automatique

L'instructeur du cours commence par présenter le concept de modélisation prédictive et son importance dans l'industrie. La modélisation prédictive se concentre sur le développement de modèles capables de faire des prédictions précises, même s'ils ne fournissent pas d'explication sur la raison pour laquelle ces prédictions sont faites. L'instructeur souligne que le cours se concentrera spécifiquement sur les données tabulaires, telles que les feuilles de calcul ou les bases de données. L'objectif est de guider les étudiants qui ne sont plus des développeurs intéressés par l'apprentissage automatique en Python pour devenir compétents dans l'utilisation de nouveaux ensembles de données, le développement de modèles prédictifs de bout en bout et l'utilisation de Python et de la bibliothèque SCIPy pour les tâches d'apprentissage automatique.

Pour commencer, l'instructeur propose un cours accéléré sur la syntaxe Python. Ils couvrent des concepts fondamentaux tels que les variables et les affectations, clarifiant la distinction entre le signe "égal" utilisé pour l'affectation et le signe "double égal" utilisé pour les comparaisons d'égalité. L'instructeur montre comment utiliser Jupyter Notebook pour le codage Python et fournit des conseils de navigation, tels que la création d'un nouveau bloc-notes, l'utilisation d'alias pour les bibliothèques, l'exécution de cellules et la copie ou le déplacement de cellules. Ils expliquent également la fonction d'enregistrement automatique et l'enregistrement manuel des blocs-notes. Enfin, la vidéo aborde brièvement l'arrêt de l'exécution du noyau.

Ensuite, l'instructeur explique comment utiliser la barre d'outils dans Jupyter Notebook pour la navigation du moteur Python et comment annoter des blocs-notes à l'aide de Markdown. La vidéo couvre les principales instructions de contrôle de flux, y compris les conditions if-then-else, les boucles for et les boucles while. Ces instructions permettent la prise de décision et la répétition dans le code Python. L'instructeur présente ensuite trois structures de données cruciales pour l'apprentissage automatique : les tuples, les listes et les dictionnaires. Ces structures de données offrent des moyens efficaces de stocker et de manipuler des données. De plus, la vidéo comprend un cours accéléré sur NumPy, une bibliothèque qui permet des opérations numériques en Python. Il couvre la création de tableaux, l'accès aux données et l'exécution d'opérations arithmétiques avec des tableaux.

La vidéo aborde ensuite deux bibliothèques essentielles, Matplotlib et Pandas, qui sont couramment utilisées dans l'apprentissage automatique pour l'analyse et la visualisation des données. Matplotlib permet aux utilisateurs de créer divers tracés et graphiques, facilitant la visualisation des données. Pandas, d'autre part, fournit des structures de données et des fonctions pour la manipulation et l'analyse des données, en particulier par le biais de structures de séries et de trames de données. La vidéo met en évidence l'importance de la fonction read_csv de Pandas pour le chargement de fichiers CSV, le format le plus courant dans les applications d'apprentissage automatique. Il met également l'accent sur l'utilité des fonctions Pandas pour résumer et tracer les données afin d'obtenir des informations et de préparer les données pour les tâches d'apprentissage automatique. Les statistiques descriptives en Python sont mentionnées comme un outil crucial pour comprendre les caractéristiques et la nature des données.

La vidéo plonge dans des techniques de visualisation de données spécifiques qui peuvent faciliter l'analyse des données avant d'appliquer des techniques d'apprentissage automatique. Les histogrammes, les diagrammes de densité et les diagrammes en boîte sont présentés comme des moyens d'observer la distribution des attributs et d'identifier les valeurs aberrantes potentielles. Les matrices de corrélation et les matrices de nuages de points sont présentées comme des méthodes pour identifier les relations entre les paires d'attributs. La vidéo souligne l'importance de la mise à l'échelle, de la standardisation, de la normalisation et de la binarisation des données en tant qu'étapes de prétraitement nécessaires pour préparer les données pour les algorithmes d'apprentissage automatique. La méthode d'ajustement et de transformation est expliquée comme une approche courante pour le prétraitement des données.

Le prochain sujet abordé concerne les techniques de prétraitement des données dans l'apprentissage automatique. La vidéo couvre la normalisation et la standardisation comme deux techniques importantes. La normalisation implique la remise à l'échelle des attributs pour qu'ils aient la même échelle, tandis que la normalisation implique la transformation des attributs pour avoir une moyenne de zéro et un écart type de un. La binarisation, qui limite les données pour créer des attributs binaires ou des valeurs nettes, est également expliquée. L'importance de la sélection des fonctionnalités est soulignée, car des fonctionnalités non pertinentes ou partiellement non pertinentes peuvent avoir un impact négatif sur les performances du modèle. La vidéo présente la sélection univariée comme une approche statistique de la sélection des caractéristiques et met en évidence l'utilisation de méthodes récursives d'élimination des caractéristiques et d'importance des caractéristiques qui utilisent des ensembles d'arbres de décision comme une forêt aléatoire ou des arbres supplémentaires. L'analyse en composantes principales (ACP) est également discutée en tant que technique de réduction des données qui peut compresser l'ensemble de données en un plus petit nombre de dimensions à l'aide de l'algèbre linéaire.

La vidéo souligne l'importance des méthodes de rééchantillonnage pour évaluer les performances des algorithmes d'apprentissage automatique sur des données invisibles. Il met en garde contre l'évaluation des algorithmes sur le même ensemble de données utilisé pour la formation, car cela peut conduire à un surajustement et à une mauvaise généralisation à de nouvelles données. Des techniques telles que les ensembles de fractionnement de test de train, la validation croisée k-fold, la validation croisée sans un et les fractionnements de test aléatoires répétés sont expliquées comme des moyens d'obtenir des estimations fiables des performances de l'algorithme. La vidéo se termine par une discussion sur diverses mesures de performance pour les algorithmes d'apprentissage automatique, telles que la précision de la classification, la perte logarithmique, l'aire sous la courbe, la matrice de confusion et le rapport de classification.

La vidéo se penche sur les mesures de performance utilisées pour évaluer les prédictions faites par les modèles d'apprentissage automatique. Il couvre la précision de la classification, la perte de log (pour évaluer les probabilités), l'aire sous la courbe des caractéristiques de fonctionnement du récepteur (ROC) (pour les problèmes de classification binaire), la matrice de confusion (pour évaluer la précision du modèle avec plusieurs classes) et le rapport de classification (qui fournit une précision , rappel, score F1 et support pour chaque classe). De plus, la vidéo explique trois métriques de régression courantes : l'erreur absolue moyenne, l'erreur quadratique moyenne et le R au carré. Des exemples pratiques sont présentés pour illustrer comment calculer ces métriques à l'aide de Python.

L'orateur introduit le concept de vérification ponctuelle pour déterminer quels algorithmes d'apprentissage automatique fonctionnent bien pour un problème spécifique. La vérification ponctuelle consiste à évaluer plusieurs algorithmes et à comparer leurs performances. La vidéo montre la vérification ponctuelle de six modèles d'apprentissage automatique différents, y compris des algorithmes linéaires et non linéaires, en utilisant Python avec la bibliothèque scikit-learn. Le conférencier souligne que les résultats peuvent varier en raison de la nature stochastique des modèles. La section se termine par une introduction aux modèles d'apprentissage automatique de régression, préparant les téléspectateurs pour la prochaine section sur la vérification ponctuelle de ces modèles.

Ensuite, l'orateur présente des modèles d'apprentissage automatique linéaires et non linéaires en utilisant l'ensemble de données sur le prix des maisons de Boston comme exemple. Un harnais de test avec validation croisée 10 fois est utilisé pour démontrer comment vérifier chaque modèle, et l'erreur quadratique moyenne est utilisée comme indicateur de performance (inversée en raison d'une bizarrerie dans la fonction de score croisé). Le modèle de régression linéaire, en supposant une distribution gaussienne pour les variables d'entrée et leur pertinence par rapport à la variable de sortie, est discuté. La régression Ridge, une modification de la régression linéaire qui minimise la complexité du modèle, est également expliquée. L'orateur souligne l'importance de comprendre le pipeline ou le processus plutôt que de se laisser entraîner dans la mise en œuvre spécifique du code à ce stade.

La vidéo explore le processus de compréhension et de visualisation des variables d'entrée pour un problème d'apprentissage automatique. Il suggère d'utiliser des diagrammes univariés tels que des diagrammes en boîte et moustaches et des histogrammes pour comprendre la distribution des variables d'entrée. Pour l'analyse multivariée, les diagrammes de dispersion peuvent aider à identifier les relations structurelles entre les variables d'entrée et révéler des corrélations élevées entre des paires d'attributs spécifiques. La vidéo aborde également le processus d'évaluation, à l'aide d'un harnais de test avec validation croisée 10 fois pour évaluer les performances du modèle. L'importance de créer un ensemble de données de validation pour évaluer indépendamment la précision du meilleur modèle est soulignée. Six modèles d'apprentissage automatique différents sont évalués, et le plus précis est sélectionné pour faire des prédictions. Le rapport de classification, la matrice de confusion et l'estimation de la précision sont utilisés pour évaluer les prédictions. Enfin, la vidéo aborde la régression de régularisation, mettant en évidence la construction de modèles Lasso et Elastic Net pour réduire la complexité des modèles de régression.

La vidéo présente un problème de classification binaire dans l'apprentissage automatique, visant à prédire le métal à partir de la roche à l'aide de l'ensemble de données Sonar Mines versus Rocks. Le jeu de données contient 208 instances avec 61 attributs, y compris l'attribut de classe. Des statistiques descriptives sont analysées, indiquant que bien que les données soient dans la même fourchette, des moyens différents suggèrent que la normalisation des données pourrait être bénéfique. Les visualisations de données unimodales et multimodales, telles que les histogrammes, les diagrammes de densité et les visualisations de corrélation, sont explorées pour mieux comprendre les données. Un ensemble de données de validation est créé et une base de référence pour les performances du modèle est établie en testant divers modèles, y compris la régression linéaire, la régression logistique, l'analyse discriminante linéaire, les arbres de régression de classification, les machines à vecteurs de support (SVM), Bayes naïf et les k-plus proches voisins ( KNN). La précision de chaque algorithme est calculée à l'aide d'une validation croisée de 10 fois et comparée.

Dans le segment suivant, la vidéo explique comment évaluer différents algorithmes d'apprentissage automatique à l'aide de données et de réglages standardisés. La normalisation consiste à transformer les données, de sorte que chaque attribut a une moyenne de 0 et un écart type de 1, ce qui peut améliorer les performances de certains modèles. Pour éviter les fuites de données pendant le processus de transformation, un pipeline qui normalise les données et construit le modèle pour chaque pli dans le harnais de test de validation croisée est recommandé. La vidéo montre des techniques de réglage pour les k-plus proches voisins (KNN) et les machines à vecteurs de support (SVM) à l'aide d'une recherche de grille avec validation croisée de 10 fois sur la copie standardisée de l'ensemble de données de formation. Les configurations optimales pour KNN et SVM sont identifiées et la précision des modèles est évaluée. Enfin, la vidéo traite brièvement de KNN, de la régression par arbre de décision et de SVM en tant que modèles d'apprentissage automatique non linéaires.

  • 00:00:00 L'instructeur du cours présente le concept de modélisation prédictive et sa pertinence pour l'industrie. Contrairement à la modélisation statistique qui tente de comprendre les données, la modélisation prédictive se concentre sur le développement de modèles qui font des prédictions plus précises au détriment d'expliquer pourquoi les prédictions sont faites. Le cours se concentre sur les données tabulaires, telles que les feuilles de calcul ou les bases de données. L'instructeur amène les étudiants à passer du statut de développeurs intéressés par l'apprentissage automatique en python à celui d'avoir les ressources et les capacités nécessaires pour travailler sur de nouveaux ensembles de données de bout en bout à l'aide de python et développer des modèles prédictifs précis. Les étudiants apprennent à accomplir toutes les sous-tâches d'un problème de modélisation prédictive avec python, à intégrer des techniques nouvelles et différentes dans python et SCIPy, à apprendre python et à obtenir de l'aide pour l'apprentissage automatique. La conférence couvre également un cours accéléré en python mettant en évidence des détails clés sur la syntaxe du langage, y compris l'affectation, le contrôle de flux, les structures de données et les fonctions.

  • 00:05:00 La vidéo couvre la syntaxe de base de Python, y compris les variables et les affectations, et explique la différence entre "égal" pour l'affectation et "double égal" pour l'égalité. Le conférencier montre ensuite comment utiliser Jupyter Notebook pour le codage Python et explique quelques conseils de navigation de base, tels que la création d'un nouveau bloc-notes, l'utilisation d'alias pour les bibliothèques, l'exécution de cellules et le déplacement ou la copie de cellules. Le conférencier explique également la fonction d'enregistrement automatique et comment enregistrer le bloc-notes manuellement. La vidéo se termine par une brève explication sur la façon d'arrêter l'exécution du noyau.

  • 00:10:00 L'instructeur explique comment utiliser la barre d'outils pour naviguer dans le moteur Python et comment annoter des blocs-notes avec Markdown. Ensuite, la vidéo couvre les instructions de contrôle de flux telles que les conditions if-then-else, les boucles for et les boucles while. Ensuite, l'instructeur explique les trois principales structures de données nécessaires à l'apprentissage automatique : les tuples, les listes et les dictionnaires. Enfin, la vidéo propose un cours accéléré sur NumPy, qui comprend la création de tableaux, l'accès aux données et l'utilisation de tableaux en arithmétique.

  • 00:15:00 Le cours intensif sur Matplotlib et Pandas pour l'apprentissage automatique est discuté. Matplotlib est une bibliothèque qui peut être utilisée pour créer des tracés et des graphiques. Les pandas fournissent des structures de données et des fonctionnalités pour manipuler et analyser les données à l'aide de structures de données de séries et de trames de données. Ceux-ci sont importants pour charger les fichiers csv, qui est le format le plus couramment utilisé pour les applications d'apprentissage automatique. De plus, des fonctions flexibles telles que Pandas read_csv peuvent aider à charger des données et à renvoyer une trame de données Pandas pour résumer et tracer des données afin d'obtenir des informations et de semer des idées pour le prétraitement et la gestion des données dans les tâches d'apprentissage automatique. Enfin, l'obtention d'un aperçu des données grâce à des statistiques descriptives en python ne peut pas être remplacée et peut aider à mieux comprendre les caractéristiques et la nature des données.

  • 00:20:00 Pandas DataFrame facilite la création d'histogrammes avec la fonction hist(). Une autre façon de visualiser les données consiste à utiliser des diagrammes de densité, qui peuvent être créés avec la fonction plot(). Les diagrammes de densité montrent la fonction de densité de probabilité des données et peuvent donner un aperçu de la forme de la distribution. Les diagrammes en boîte et moustaches sont également utiles pour visualiser la distribution des données et identifier les valeurs aberrantes. Dans l'ensemble, la visualisation des données est une étape clé dans la compréhension des caractéristiques d'un ensemble de données et peut aider à sélectionner les algorithmes d'apprentissage automatique appropriés.

  • 00:25:00 La vidéo explique divers tracés et diagrammes qui peuvent être utiles pour l'analyse des données avant d'appliquer les techniques d'apprentissage automatique. Les histogrammes, les diagrammes de densité et les diagrammes en boîte sont utilisés pour observer la distribution des attributs, tandis que les matrices de corrélation et les matrices de diagramme de dispersion sont utilisées pour identifier la relation entre les paires d'attributs. La remise à l'échelle, la normalisation, la normalisation et la binarisation des données sont également abordées en tant qu'étapes de prétraitement nécessaires pour préparer les données pour les algorithmes d'apprentissage automatique, et la vidéo explique la méthode d'ajustement et de transformation en tant qu'approche courante pour le prétraitement des données.

  • 00:30:00 La vidéo traite des techniques de prétraitement des données dans l'apprentissage automatique. Dans un premier temps, les techniques de normalisation et de standardisation sont expliquées. La normalisation implique la remise à l'échelle des attributs pour qu'ils aient la même échelle, et la normalisation implique la modification des attributs pour avoir une moyenne de zéro et un écart type de un. La binarisation, ou données de seuillage, est une autre technique discutée, qui peut être utile pour ajouter de nouveaux attributs binaires ou transformer des probabilités en valeurs nettes. Ensuite, l'importance de la sélection des fonctionnalités est expliquée, car des fonctionnalités non pertinentes ou partiellement non pertinentes peuvent avoir un impact négatif sur les performances du modèle. La sélection univariée est une approche statistique de la sélection des caractéristiques, utilisant les scores des tests statistiques. Les méthodes récursives d'élimination des caractéristiques et d'importance des caractéristiques qui utilisent des ensembles d'arbres de décision comme la forêt aléatoire ou des arbres supplémentaires peuvent également être utiles pour la sélection des caractéristiques. Enfin, l'analyse en composantes principales (ACP) est une technique de réduction des données utilisant l'algèbre linéaire pour transformer l'ensemble de données sous une forme compressée avec un plus petit nombre de dimensions.

  • 00:35:00 L'importance des méthodes de rééchantillonnage pour évaluer les performances des algorithmes d'apprentissage automatique sur des données invisibles est expliquée. Il est souligné que l'évaluation de l'algorithme sur le même ensemble de données utilisé pour la formation peut conduire à un surajustement, entraînant un score parfait sur l'ensemble de données de formation mais de mauvaises prédictions sur les nouvelles données. Des techniques telles que les ensembles divisés de tests d'entraînement, la validation croisée k-fold, la validation croisée sans un et les fractionnements de tests aléatoires répétés sont ensuite présentées comme des moyens de créer des estimations utiles des performances de l'algorithme. La section se termine par une discussion sur diverses mesures de performances d'algorithmes d'apprentissage automatique, telles que la précision de la classification, la perte logarithmique, l'aire sous la courbe, la matrice de confusion et le rapport de classification.

  • 00:40:00 La vidéo couvre plusieurs mesures de performance pour évaluer les prédictions faites par un modèle d'apprentissage automatique. Il s'agit notamment de la précision de la classification, de la perte de log pour évaluer les probabilités, de l'aire sous la courbe ROC pour les problèmes de classification binaire, de la matrice de confusion pour évaluer la précision du modèle avec deux classes ou plus et du rapport de classification pour évaluer la précision, le rappel, le score F1 et le support. pour chaque classe. En outre, la vidéo couvre trois métriques de régression courantes : l'erreur absolue moyenne, l'erreur quadratique moyenne et le R au carré, et montre des exemples de calcul de ces métriques à l'aide de Python.

  • 00:45:00 L'orateur explique le concept d'utilisation de la vérification ponctuelle pour découvrir quels algorithmes d'apprentissage automatique fonctionnent bien pour un problème donné. Il démontre la vérification ponctuelle de six modèles d'apprentissage automatique différents, y compris des algorithmes linéaires et non linéaires, en utilisant python avec la bibliothèque scikit-learn. Il souligne également que les résultats peuvent varier en raison de la nature stochastique du modèle. Enfin, l'orateur présente les modèles d'apprentissage automatique de régression et prépare les téléspectateurs pour la section à venir sur la façon de vérifier ces modèles.

  • 00: 50: 00 L'orateur présente des modèles d'apprentissage automatique linéaires et non linéaires utilisant l'ensemble de données sur le prix des maisons de Boston. Un faisceau de test avec validation croisée 10 fois est utilisé pour démontrer comment bloquer la vérification de chaque modèle, et les nombres d'erreurs quadratiques moyennes sont utilisés pour indiquer les performances, qui sont inversées en raison d'une bizarrerie dans la fonction de score croisé. Le modèle de régression linéaire suppose une distribution gaussienne pour les variables d'entrée et qu'elles sont pertinentes pour la variable de sortie et peu corrélées entre elles. La régression Ridge, une modification de la régression linéaire, minimise la complexité du modèle mesurée par la somme des carrés des valeurs des coefficients ou norme L2. L'orateur met l'accent sur la compréhension du pipeline ou du processus et sur le fait de ne pas se laisser entraîner dans la compréhension du code à ce stade.

  • 00: 55: 00 La vidéo traite du processus de compréhension et de visualisation des variables d'entrée pour un problème d'apprentissage automatique. La vidéo suggère d'utiliser des graphiques univariés tels que des diagrammes en boîte et moustaches et des histogrammes pour comprendre la distribution des variables d'entrée. Pour les diagrammes multivariés, les diagrammes de dispersion peuvent aider à repérer les relations structurelles entre les variables d'entrée et à identifier une corrélation élevée entre certaines paires d'attributs. La vidéo aborde ensuite le processus d'évaluation des modèles via un harnais de test utilisant une validation croisée 10 fois, où l'ensemble de données est divisé en 10 parties et formé et testé sur différentes divisions. La vidéo souligne l'importance de créer un ensemble de données de validation pour avoir une seconde idée indépendante de la précision du meilleur modèle. La vidéo évalue six modèles d'apprentissage automatique différents et sélectionne le plus précis pour faire des prédictions, en évaluant les prédictions via le rapport de classification, la matrice de confusion et l'estimation de la précision. La section se termine par une discussion sur la régression de régularisation et la construction de modèles Lasso et Elastic Net pour minimiser la complexité du modèle de régression.

  • 01:00:00 On nous présente un problème de classification binaire dans l'apprentissage automatique où l'objectif est de prédire le métal de la roche en utilisant l'ensemble de données sonar des mines par rapport aux roches. Le jeu de données contient 208 instances avec 61 attributs, y compris l'attribut de classe. Après avoir analysé les données et examiné les statistiques descriptives, nous constatons que les données se situent dans la même fourchette, mais que des moyens différents indiquent que la normalisation des données peut être bénéfique. Nous examinons également les visualisations de données unimodales et multimodales, y compris les histogrammes, les diagrammes de densité et les visualisations de corrélation entre les attributs. Nous préparons ensuite un ensemble de données de validation et créons une base de référence pour les performances de différents modèles, y compris la régression linéaire, la régression logistique, l'analyse discriminante linéaire, les arbres de régression de classification, les SVM, Bayes naïfs et les k plus proches voisins. Nous comparons la précision de chaque algorithme calculé par validation croisée 10 fois.

  • 01:05:00 La vidéo explique comment évaluer différents algorithmes d'apprentissage automatique à l'aide de données et de réglages standardisés. La standardisation transforme les données de sorte que chaque attribut ait une moyenne de 0 et un écart type de 1, ce qui peut améliorer la compétence de certains modèles. Pour éviter les fuites de données pendant le processus de transformation, un pipeline qui normalise les données et construit le modèle pour chaque pli dans le harnais de test de validation croisée est recommandé. La vidéo montre comment régler les k-plus proches voisins (KNN) et les machines à vecteurs de support (SVM) à l'aide d'une recherche de grille avec une validation croisée de 10 fois sur la copie standardisée de l'ensemble de données de formation. Les configurations optimales pour KNN et SVM sont identifiées et la précision des modèles est évaluée. Enfin, la vidéo traite brièvement de KNN, de la régression par arbre de décision et de SVM en tant que modèles d'apprentissage automatique non linéaires.
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

Statistiques appliquées pour les ingénieurs en apprentissage automatique


Statistiques appliquées pour les ingénieurs en apprentissage automatique

L'instructeur de la vidéo présente le domaine des statistiques et souligne son importance dans le travail avec des problèmes de modélisation prédictive dans l'apprentissage automatique. Ils expliquent que les statistiques offrent une gamme de techniques, allant des simples statistiques récapitulatives aux tests d'hypothèses et aux statistiques d'estimation. Le cours est conçu pour fournir une base étape par étape dans les méthodes statistiques, avec des exemples pratiques en Python. Il couvre six aspects fondamentaux des statistiques pour l'apprentissage automatique et se concentre sur les applications du monde réel, ce qui le rend adapté aux ingénieurs en apprentissage automatique.

L'instructeur met l'accent sur la relation étroite entre l'apprentissage automatique et les statistiques et suggère que les programmeurs peuvent bénéficier de l'amélioration de leurs compétences statistiques grâce à ce cours. Ils classent le domaine des statistiques en deux catégories : les statistiques descriptives et les statistiques inférentielles. Les statistiques descriptives impliquent de résumer et de décrire des données à l'aide de mesures telles que des moyennes et des représentations graphiques. Les statistiques inférentielles, en revanche, sont utilisées pour faire des inférences sur une population plus large sur la base de données d'échantillon.

L'importance d'un traitement approprié des données est également soulignée, y compris la gestion de la perte de données, de la corruption et des erreurs. La vidéo se penche ensuite sur les différentes étapes impliquées dans la préparation des données pour les modèles d'apprentissage automatique. Cela comprend le nettoyage des données, la sélection des données, l'échantillonnage des données et la transformation des données à l'aide de méthodes statistiques telles que la standardisation et la normalisation. L'évaluation des données est également soulignée et la vidéo traite de la conception expérimentale, du rééchantillonnage des données et de la sélection de modèles pour estimer la compétence d'un modèle. Pour prédire de nouvelles données, la vidéo recommande d'utiliser des statistiques d'estimation.

La vidéo explique les différentes échelles de mesure utilisées en statistique, à savoir les échelles nominale, ordinale, d'intervalle et de rapport. Il aborde les techniques statistiques applicables à chaque échelle et comment elles peuvent être mises en œuvre dans l'apprentissage automatique. L'importance de comprendre et de signaler l'incertitude dans la modélisation est soulignée, en particulier lorsque l'on travaille avec des ensembles d'échantillons. La vidéo se concentre ensuite sur la distribution normale, qui est couramment observée dans divers ensembles de données. Il montre comment générer des exemples de données et évaluer visuellement leur adéquation à une distribution gaussienne à l'aide d'un histogramme. Bien que la plupart des ensembles de données n'aient pas une distribution gaussienne parfaite, ils présentent souvent des propriétés de type gaussienne.

L'importance de sélectionner une méthode granulaire de fractionnement des données pour exposer la distribution gaussienne sous-jacente est mise en évidence. Les mesures de la tendance centrale, telles que la moyenne et la médiane, sont explorées, ainsi que la variance et l'écart type en tant que mesures de la propagation de la distribution. Le caractère aléatoire est considéré comme un outil essentiel de l'apprentissage automatique, aidant les algorithmes à devenir plus robustes et précis. Diverses sources d'aléa, y compris les erreurs de données et le bruit, sont expliquées.

La vidéo explique que les algorithmes d'apprentissage automatique exploitent souvent le caractère aléatoire pour obtenir de meilleures performances et générer des modèles plus optimaux. Le caractère aléatoire permet aux algorithmes d'explorer différentes possibilités et de trouver de meilleurs mappages de données. Les sources contrôlables et incontrôlables d'aléa sont discutées, et l'utilisation de la fonction de départ pour rendre l'aléatoire cohérent dans un modèle est expliquée. La vidéo fournit un exemple utilisant le module aléatoire Python pour générer des nombres aléatoires et met en évidence la différence entre le générateur de nombres pseudo-aléatoires de la bibliothèque numpy et le générateur de nombres pseudo-aléatoires de la bibliothèque standard. Deux cas pour savoir quand amorcer le générateur de nombres aléatoires sont également discutés, à savoir lors de la préparation des données et des fractionnements de données.

L'accent est mis sur le fractionnement constant des données et l'utilisation de générateurs de nombres pseudo-aléatoires lors de l'évaluation d'un algorithme. La vidéo recommande d'évaluer le modèle d'une manière qui intègre l'incertitude mesurée et les performances de l'algorithme. L'évaluation d'un algorithme sur plusieurs fractionnements de données donne un aperçu de la façon dont ses performances varient avec différentes données d'entraînement et de test. L'évaluation d'un algorithme plusieurs fois sur les mêmes fractionnements de données aide à comprendre comment ses performances varient d'elles-mêmes. La vidéo présente également la loi des grands nombres et le théorème central limite, soulignant qu'avoir plus de données améliore les performances du modèle et qu'à mesure que la taille de l'échantillon augmente, la distribution de la moyenne se rapproche d'une distribution gaussienne.

La vidéo illustre le théorème central limite à l'aide de lancers de dés et de code, montrant comment les moyennes d'échantillon se rapprochent d'une distribution gaussienne à mesure que la taille de l'échantillon augmente.

La vidéo souligne l'importance d'évaluer les modèles d'apprentissage automatique et de comprendre l'incertitude impliquée dans leurs prédictions. Il introduit des mesures d'évaluation telles que l'exactitude, la précision, le rappel et le score F1, qui sont couramment utilisés pour évaluer les performances des modèles de classification. La vidéo explique que la précision mesure l'exactitude globale des prédictions, la précision mesure la proportion de véritables prédictions positives sur toutes les prédictions positives, le rappel mesure la proportion de véritables prédictions positives sur toutes les instances positives réelles, et le score F1 combine la précision et le rappel dans une seule métrique. Il aborde également le concept de matrice de confusion, qui fournit une vue plus détaillée des performances d'un modèle de classification en indiquant le nombre de prédictions vraies positives, vraies négatives, fausses positives et fausses négatives.

L'orateur montre comment calculer ces métriques d'évaluation à l'aide de la bibliothèque scikit-learn de Python. Il montre comment importer les modules nécessaires, diviser les données en ensembles d'entraînement et de test, former un modèle de classification, faire des prédictions sur l'ensemble de test et évaluer les performances du modèle en utilisant l'exactitude, la précision, le rappel et le score F1. La vidéo souligne l'importance d'évaluer les modèles sur des données inédites pour garantir leurs capacités de généralisation.

En outre, la vidéo présente le concept des courbes de caractéristique de fonctionnement du récepteur (ROC) et de l'aire sous la courbe (AUC) comme mesures d'évaluation pour les modèles de classification binaires. Les courbes ROC tracent le taux de vrais positifs par rapport au taux de faux positifs à divers seuils de classification, fournissant une représentation visuelle des performances du modèle sur différentes valeurs de seuil. L'AUC représente l'aire sous la courbe ROC et fournit une mesure unique pour comparer les performances de différents modèles. La vidéo explique comment tracer une courbe ROC et calculer l'AUC à l'aide de la bibliothèque scikit-learn de Python.

Le concept de surajustement est discuté comme un problème courant dans l'apprentissage automatique, où un modèle fonctionne bien sur les données de formation mais ne parvient pas à se généraliser à de nouvelles données invisibles. La vidéo explique que le surajustement se produit lorsqu'un modèle devient trop complexe et apprend des modèles spécifiques aux données de formation qui ne tiennent pas dans la population générale. La vidéo montre comment le surajustement peut être visualisé en comparant les performances d'entraînement et de test d'un modèle. Cela explique qu'un modèle de surajustement aura une faible erreur d'apprentissage mais une erreur de test élevée, ce qui indique une mauvaise généralisation. La vidéo suggère des techniques de régularisation telles que la régression ridge et la régression Lasso comme moyens d'atténuer le surajustement en ajoutant un terme de pénalité à la fonction objectif du modèle.

Le concept de validation croisée est présenté comme une technique pour évaluer les performances et la généralisation des modèles d'apprentissage automatique. La vidéo explique que la validation croisée consiste à diviser les données en plusieurs sous-ensembles, à former le modèle sur une partie des données et à évaluer ses performances sur la partie restante. Ce processus est répété plusieurs fois, avec différents sous-ensembles utilisés pour la formation et les tests, et les résultats sont moyennés pour fournir une estimation des performances du modèle. La vidéo montre comment effectuer une validation croisée à l'aide de la bibliothèque scikit-learn de Python, en particulier la méthode de validation croisée K-fold.

Ensuite, la vidéo aborde le concept de sélection de fonctionnalités et son importance dans l'apprentissage automatique. Il explique que la sélection des caractéristiques consiste à identifier les caractéristiques ou les variables les plus pertinentes qui contribuent aux performances du modèle. La vidéo souligne l'importance de sélectionner des caractéristiques informatives pour améliorer la précision du modèle, réduire le surajustement et améliorer l'interprétabilité. Il présente différentes techniques de sélection de caractéristiques, telles que la sélection univariée, l'élimination récursive des caractéristiques et les scores d'importance des caractéristiques. La vidéo montre comment implémenter la sélection de fonctionnalités à l'aide de la bibliothèque scikit-learn de Python.

Le concept de réduction de la dimensionnalité est également discuté en tant que technique pour lutter contre la malédiction de la dimensionnalité dans l'apprentissage automatique. La vidéo explique que la réduction de la dimensionnalité implique de réduire le nombre de caractéristiques ou de variables dans un ensemble de données tout en préservant la plupart des informations pertinentes. Il présente l'analyse en composantes principales (ACP) comme technique de réduction de la dimensionnalité couramment utilisée. L'ACP vise à transformer les données dans un espace de dimension inférieure en identifiant les directions de variance maximale dans les données. La vidéo explique que l'ACP crée de nouvelles fonctionnalités, appelées composants principaux, qui sont des combinaisons linéaires des fonctionnalités d'origine. Ces composants principaux capturent les informations les plus importantes dans les données et peuvent être utilisés comme entrées pour les modèles d'apprentissage automatique.

La vidéo montre comment effectuer une PCA à l'aide de la bibliothèque scikit-learn de Python. Il montre comment importer les modules nécessaires, normaliser les données, initialiser un objet PCA, adapter le modèle PCA aux données et transformer les données dans l'espace de dimension inférieure. La vidéo explique également comment déterminer le nombre optimal de composantes principales à retenir en fonction du ratio de variance expliqué.

Le concept d'apprentissage d'ensemble est présenté comme une technique pour améliorer les performances des modèles d'apprentissage automatique en combinant plusieurs modèles individuels. La vidéo explique que l'apprentissage d'ensemble tire parti de la sagesse des foules, où chaque modèle individuel apporte ses propres prédictions, et la prédiction finale est déterminée sur la base d'un mécanisme de vote ou de moyenne. La vidéo traite de deux méthodes d'apprentissage d'ensemble populaires : le bagging et le boosting. Le bagging implique la formation de plusieurs modèles sur différents sous-ensembles de données et l'agrégation de leurs prédictions, tout en se concentrant sur les modèles de formation de manière séquentielle, chaque modèle accordant plus d'importance aux instances qui ont été mal classées par les modèles précédents.

La vidéo montre comment implémenter l'apprentissage d'ensemble à l'aide de la bibliothèque scikit-learn de Python. Il montre comment importer les modules nécessaires pour le bagging et le boosting, initialiser les modèles d'ensemble, les adapter aux données et faire des prédictions à l'aide des modèles d'ensemble. La vidéo souligne que l'apprentissage d'ensemble peut souvent améliorer les performances globales et la robustesse des modèles d'apprentissage automatique.

Enfin, la vidéo aborde brièvement des sujets avancés en apprentissage automatique, tels que l'apprentissage en profondeur et le traitement du langage naturel (TAL). Il mentionne que l'apprentissage en profondeur implique la formation de réseaux de neurones profonds à plusieurs couches pour apprendre des modèles complexes de données. La PNL se concentre sur le développement de modèles et de techniques pour comprendre et traiter le langage humain, permettant des applications telles que la classification de texte, l'analyse des sentiments et la traduction automatique. La vidéo se termine en soulignant que l'apprentissage automatique est un domaine vaste et en évolution rapide avec de nombreuses applications et opportunités d'exploration et d'apprentissage supplémentaires.

La vidéo fournit un aperçu complet des concepts et techniques essentiels de l'apprentissage automatique, y compris l'évaluation des modèles, le surajustement, la régularisation, la validation croisée, la sélection des caractéristiques, la réduction de la dimensionnalité, l'apprentissage d'ensemble et une introduction à l'apprentissage en profondeur et à la PNL. Il présente des implémentations pratiques à l'aide de Python et de la bibliothèque scikit-learn, ce qui en fait une ressource précieuse pour les débutants et ceux qui cherchent à améliorer leur compréhension de l'apprentissage automatique.

  • 00:00:00 L'instructeur présente le domaine des statistiques et son importance dans la résolution de problèmes de modélisation prédictive avec l'apprentissage automatique. Il explique l'éventail des techniques statistiques disponibles, des simples statistiques sommaires aux tests d'hypothèses et aux statistiques d'estimation. Le cours est conçu pour fournir une base étape par étape pour les méthodes statistiques avec des exemples exécutables en Python, couvrant six aspects fondamentaux des statistiques pour l'apprentissage automatique. L'instructeur souligne également que le cours est axé sur les applications et fournit des exemples d'utilisation réels, ce qui le rend adapté aux ingénieurs en apprentissage automatique.

  • 00:05:00 Il est souligné que l'apprentissage automatique est étroitement lié aux statistiques, et le cours est présenté comme une bonne option pour les programmeurs qui souhaitent améliorer leurs compétences statistiques. Le domaine des statistiques est classé en 2 catégories, la première étant les statistiques descriptives et la seconde les statistiques inférentielles. Les statistiques descriptives sont utilisées pour décrire des données à l'aide de mesures telles que des moyennes et des représentations graphiques, tandis que les statistiques inférentielles sont utilisées pour faire des inférences à partir de données pour une population plus large. Enfin, l'importance du traitement des données, y compris la perte de données, la corruption et les erreurs, est soulignée.

  • 00:10:00 La vidéo présente les différentes étapes de la préparation des données pour les modèles d'apprentissage automatique. Cela comprend le nettoyage des données, la sélection des données, l'échantillonnage des données et la transformation des données à l'aide de méthodes statistiques telles que la standardisation et la normalisation. L'évaluation des données est également importante, et la conception expérimentale, y compris le rééchantillonnage des données et la sélection du modèle, doit être effectuée pour estimer la compétence d'un modèle. Pour prédire de nouvelles données, la vidéo recommande l'approche des statistiques d'estimation. De plus, la vidéo explique les différentes échelles de mesure utilisées dans les statistiques et les caractéristiques de la distribution normale.

  • 00:15:00 L'orateur explique les différentes échelles de mesure : nominale, ordinale, intervalle et rapport. Ils discutent ensuite des statistiques applicables à chaque échelle et de la manière dont elles peuvent être mises en œuvre dans l'apprentissage automatique. Étant donné que nous travaillons presque toujours avec des ensembles d'échantillons, l'auteur souligne que nous devons comprendre et signaler l'incertitude impliquée dans la modélisation. La discussion passe ensuite à un exemple de distribution normale qui est très courante dans divers ensembles de données. Enfin, ils montrent comment nous pouvons générer des exemples de données et les appliquer à un histogramme pour voir s'ils correspondent à la distribution gaussienne. L'auteur explique que même si la plupart des ensembles de données n'auront pas une distribution gaussienne parfaite, ils auront des propriétés de type gaussienne.

  • 00: 20: 00 L'importance de sélectionner une méthode plus granulaire de fractionnement des données pour mieux exposer la distribution gaussienne sous-jacente est mise en évidence, et les mesures de tendance centrale telles que la moyenne et la médiane sont explorées, la variance et l'écart type étant également discutés comme un mesure de l'étendue de la distribution. Le caractère aléatoire est un outil essentiel dans l'apprentissage automatique et est utilisé pour aider les algorithmes à être plus robustes et précis. Diverses sources de caractère aléatoire, telles que les erreurs dans les données et le bruit qui peuvent obscurcir les relations, sont expliquées.

  • 00: 25: 00 Il est expliqué que les algorithmes d'apprentissage automatique utilisent souvent le caractère aléatoire pour obtenir un mappage des données plus performant. Le caractère aléatoire permet aux algorithmes de générer un modèle plus optimal. Cette section traite des sources d'aléa, à la fois contrôlables et incontrôlables, et explique comment l'utilisation de la fonction de départ peut rendre cohérent le caractère aléatoire d'un modèle. Un exemple est donné en utilisant le module Python random pour générer des nombres aléatoires et la bibliothèque numpy pour un travail efficace avec des vecteurs et des matrices de nombres. Le générateur de nombres pseudo-aléatoires numpy est différent du générateur de nombres pseudo-aléatoires de la bibliothèque standard Python et doit être utilisé séparément. Enfin, deux cas pour savoir quand amorcer le générateur de nombres aléatoires sont discutés, y compris la préparation des données et les fractionnements de données.

  • 00: 30: 00 L'importance de diviser systématiquement les données et l'utilisation de générateurs de nombres pseudo-aléatoires lors de l'évaluation d'un algorithme est discutée. Il est recommandé d'évaluer le modèle de manière à ce que les performances rapportées incluent l'incertitude mesurée et les performances de l'algorithme. L'évaluation d'un algorithme sur plusieurs fractionnements de données donnera un aperçu de la façon dont les performances de l'algorithme varient en fonction des modifications apportées aux données d'entraînement et de test, tandis qu'évaluer un algorithme plusieurs fois dans les mêmes fractionnements de données aidera à fournir un aperçu de la façon dont les performances de l'algorithme varient seules . La loi des grands nombres et le théorème central limite sont également discutés, soulignant que plus nous avons de données, mieux c'est pour les performances de notre modèle et que lorsque la taille d'un échantillon augmente, la distribution de la moyenne se rapproche d'une distribution gaussienne. .

  • 00:35:00 Le théorème central limite est démontré à l'aide de lancers de dés et de code. La démonstration montre qu'à mesure que la taille de l'échantillon augmente, les moyennes de l'échantillon se rapprochent d'une distribution gaussienne. L'interprétation des données est cruciale en statistique pour découvrir le sens. Les tests d'hypothèses statistiques ou les tests de signification sont utilisés dans l'apprentissage automatique pour faire des déclarations sur les distributions de données ou pour comparer deux échantillons. L'hypothèse 0 ou hypothèse nulle est l'hypothèse par défaut selon laquelle rien n'a changé et un test d'hypothèse statistique peut renvoyer une valeur de p ou une valeur critique. La valeur p est une quantité utilisée pour interpréter le résultat d'un test d'hypothèse et rejeter ou échouer à rejeter l'hypothèse nulle, tandis que la valeur critique est utilisée pour comparer la statistique de test à sa distribution d'échantillonnage afin de déterminer s'il y a suffisamment de preuves pour rejeter l'hypothèse nulle.

  • 00: 40: 00 Le concept de rejet de l'hypothèse nulle est clarifié, l'hypothèse nulle indiquant qu'il n'y a pas de différence statistiquement significative. Si le résultat d'un test statistique rejette l'hypothèse nulle, cela signifie que quelque chose est statistiquement significatif. La distribution gaussienne, qui décrit le groupement ou la densité des observations et est souvent appelée distribution normale, est également discutée. La distribution est une fonction mathématique qui décrit la relation entre les observations et un espace échantillon. Les fonctions de densité, y compris les fonctions de densité de probabilité et les fonctions de densité cumulées, sont utilisées pour décrire la vraisemblance des observations dans une distribution. Enfin, l'importance de vérifier si un échantillon de données est aléatoire est soulignée et les caractéristiques d'échantillons normalement distribués sont données.

  • 00: 45: 00 L'orateur a discuté de la distribution normale (gaussienne), de ses propriétés, y compris la fonction de distribution de probabilité (pdf) et la fonction de distribution cumulative (cdf), et la règle 68, 95 et 99,7 associée aux écarts-types. L'orateur a également présenté la distribution t, qui est similaire à la distribution normale mais est utilisée pour de petits échantillons. Par la suite, l'article a présenté la distribution du chi carré, son utilisation pour la qualité de l'ajustement et sa relation avec la distribution t. Enfin, l'orateur a démontré l'utilisation du module stats chi 2 dans Scipy pour calculer les statistiques d'une distribution chi carré.

  • 00: 50: 00 Le concept de valeurs critiques dans les tests d'hypothèses statistiques est expliqué. Une valeur critique est un seuil utilisé pour déterminer si une hypothèse nulle est acceptée ou rejetée. Il suppose une distribution normale ou gaussienne et a une région d'acceptation et une région de rejet. La ligne séparant ces régions est la valeur critique. Les tests unilatéraux déterminent si la moyenne est supérieure ou inférieure à une autre moyenne, mais pas les deux, tandis que les tests bilatéraux déterminent si les deux moyennes sont différentes l'une de l'autre. La valeur critique permet de quantifier l'incertitude des statistiques ou des intervalles estimés, tels que les intervalles de confiance et de tolérance.

  • 00: 55: 00 L'utilisation de tests bilatéraux est discutée, qui prennent en compte à la fois les effets positifs et négatifs d'un produit. L'exemple donné est celui d'un médicament générique contre un produit de marque, où un test bilatéral peut déterminer si le produit générique est équivalent ou pire que le produit de marque. L'utilisation de fonctions de points de pourcentage, ou fonctions quantiles, est également expliquée et démontrée à l'aide d'exemples utilisant trois distributions couramment utilisées : la distribution gaussienne standard, la distribution t de Student standard et la distribution chi carré standard. Enfin, le concept de corrélation et son importance dans la détermination de la relation entre deux variables sont discutés, ainsi que le problème potentiel de multicolinéarité et comment cela peut affecter les performances de l'algorithme.

  • 01:00:00 La vidéo présente une démonstration rapide pour montrer une forte corrélation positive entre deux variables à l'aide d'un ensemble de données artificiel, chaque variable étant tirée d'une distribution gaussienne et étant linéairement corrélée. La démo calcule et imprime la matrice de covariance, montrant une covariance positive entre les deux variables suggérant qu'elles changent dans la même direction. Cependant, un problème avec la covariance en tant qu'outil statistique seul est qu'il est difficile à interpréter, ce qui conduit au coefficient de corrélation de Pearson. La vidéo explique comment le coefficient de corrélation r de Pearson peut résumer la force de la relation linéaire entre deux échantillons de données en calculant la covariance des deux variables divisée par le produit de l'écart type de chaque échantillon, et que le coefficient de corrélation peut être utilisé pour évaluer la relation entre plus de deux variables.

  • 01:05:00 La vidéo traite de l'utilisation de tests de signification statistique paramétriques, qui supposent que les données ont été tirées d'une distribution gaussienne avec la même moyenne et l'écart type. Un ensemble de données de test est défini et utilisé pour démontrer le test t de Student pour des échantillons indépendants et appariés, ainsi que le test d'analyse de la variance. La vidéo montre comment ces tests peuvent être implémentés en Python à l'aide des fonctions Scipy appropriées. Les exemples illustrent comment ces tests peuvent être utilisés pour déterminer si différents échantillons de données ont la même distribution.

  • 01:10:00 Le concept de taille d'effet dans les statistiques est discuté comme un moyen de quantifier l'ampleur des différences entre les groupes ou les associations entre les variables, ce qui peut compléter les résultats obtenus à partir des tests d'hypothèses statistiques. Les méthodes de taille d'effet sont divisées en association et différence, et peuvent être standardisées, unitaires d'origine ou sans unité, selon le but de l'interprétation et la mesure statistique utilisée. Le coefficient de corrélation de Pearson est une mesure standardisée couramment utilisée pour déterminer les associations linéaires, qui est sans unité et peut être calculée à l'aide de la fonction pearsonr() de Python. La puissance statistique, qui est influencée par la taille de l'effet, la taille de l'échantillon, la signification et le niveau de puissance, est également expliquée comme un facteur crucial dans la conception expérimentale et peut être estimée par une analyse de puissance pour déterminer la taille minimale de l'échantillon nécessaire pour une expérience.

  • 01:15:00 La vidéo traite de l'importance de l'échantillonnage et du rééchantillonnage des données dans la modélisation prédictive, expliquant que l'échantillonnage implique la sélection d'un sous-ensemble d'une population, tandis que le rééchantillonnage implique l'estimation des paramètres de la population plusieurs fois à partir d'un échantillon de données pour améliorer la précision et quantifier l'incertitude. La vidéo décrit les méthodes d'échantillonnage courantes, classées comme échantillonnage probabiliste ou échantillonnage non probabiliste, et met en évidence trois types d'échantillonnage que les ingénieurs en apprentissage automatique sont susceptibles de rencontrer : l'échantillonnage aléatoire simple, l'échantillonnage systémique et l'échantillonnage stratifié. De plus, la vidéo met en garde contre les erreurs potentielles qui peuvent être introduites dans le processus d'échantillonnage et souligne la nécessité d'une inférence statistique et de soins lors de l'élaboration de conclusions sur une population. La vidéo poursuit en expliquant les méthodes d'échantillonnage couramment utilisées dans l'apprentissage automatique, à savoir la validation croisée k-fold et le bootstrap, ce dernier étant coûteux en calcul, bien qu'il fournisse des estimations robustes de la population.

  • 01:20:00 La méthode bootstrap est discutée comme un outil pour estimer les quantités d'une population en faisant la moyenne des estimations à partir de plusieurs petits échantillons de données. Les échantillons sont construits en tirant des observations de grands ensembles de données une à la fois et en les renvoyant à l'échantillon d'origine après avoir été sélectionné. Cette approche est appelée échantillonnage avec remise. La fonction de rééchantillonnage, fournie dans la bibliothèque SciPy, peut être utilisée pour créer un seul échantillon d'amorçage, et bien qu'elle n'inclue aucun mécanisme pour rassembler facilement des observations hors sac qui pourraient être utilisées pour évaluer des modèles d'ajustement, hors-de- les observations de sac peuvent toujours être recueillies à l'aide de la compréhension de liste Python. De plus, le processus de validation croisée k-fold est expliqué, car il s'agit d'une procédure de rééchantillonnage utilisée pour évaluer les modèles d'apprentissage automatique sur des données limitées. La classe d'apprentissage du cycle K-fold peut être utilisée pour cette procédure, et quatre variantes couramment utilisées de la validation croisée k-fold sont mentionnées.

  • 01:25:00 L'orateur discute de deux approches de rééchantillonnage dans l'apprentissage automatique : la validation croisée k-fold et la division train-test. Alors que la validation croisée k-fold est l'étalon-or, la division train-test peut être plus facile à comprendre et à mettre en œuvre. L'orateur montre comment utiliser l'approche fractionnée train-test en Python et mentionne également l'utilisation de statistiques d'estimation, qui visent à quantifier la taille et l'incertitude d'un résultat et sont de plus en plus populaires dans la littérature de recherche. Les trois principales classes de statistiques d'estimation comprennent la taille de l'effet, l'estimation par intervalle et la méta-analyse. Le passage aux statistiques d'estimation se produit parce qu'elles sont plus faciles à analyser et à interpréter dans le contexte des questions de recherche.

  • 01:30:00 Les différentes méthodes de mesure de la taille de l'effet et de l'estimation de l'intervalle sont discutées. La taille de l'effet peut être mesurée par association, qui est le degré auquel les échantillons changent ensemble, ou par différence, qui est le degré auquel les échantillons diffèrent. Pendant ce temps, l'estimation par intervalle permet de quantifier l'incertitude dans les observations et peut être effectuée à l'aide d'intervalles de tolérance, d'intervalles de confiance ou d'intervalles de prédiction. Les intervalles de tolérance spécifient les limites supérieure et inférieure dans lesquelles se situe un certain pourcentage de la sortie du processus, tandis que les intervalles de confiance fournissent des limites pour les estimations d'un paramètre de population. Enfin, une démonstration est donnée sur la façon de calculer les intervalles de tolérance pour un échantillon d'observations tirées d'une distribution gaussienne.

  • 01:35:00 Le concept d'intervalle de confiance est discuté, qui est la statistique d'intervalle utilisée pour quantifier l'incertitude sur une estimation. L'intervalle de confiance fournit des limites sur un paramètre de population, tel que la moyenne, l'écart type ou similaire. La valeur d'un intervalle de confiance est la capacité à quantifier l'incertitude d'une estimation. Un intervalle de confiance plus petit correspond à une estimation plus précise, tandis qu'un intervalle de confiance plus grand correspond à une estimation moins précise. En outre, le concept d'exactitude ou d'erreur de classification est discuté, qui est une proportion ou un rapport utilisé pour décrire la proportion de prédictions correctes ou incorrectes faites par le modèle. L'erreur ou la précision de classification peut être utilisée pour calculer facilement l'intervalle de confiance en supposant une distribution gaussienne de la proportion.

  • 01:40:00 Le concept d'intervalles de confiance est expliqué, du calcul d'un intervalle de confiance pour l'erreur de classification d'un modèle à l'utilisation du rééchantillonnage bootstrap comme méthode non paramétrique pour estimer les intervalles de confiance. La méthode de rééchantillonnage bootstrap consiste à prélever des échantillons avec remplacement à partir d'un ensemble de données finies fixe pour estimer les paramètres de la population. De plus, le concept d'intervalles de prédiction est introduit comme une estimation de l'intervalle dans lequel les observations futures tomberont avec un certain niveau de confiance, ce qui est utile pour faire des prédictions ou des prévisions avec des modèles de régression.

  • 01:45:00 Le concept d'intervalles de prédiction est expliqué comme une estimation de la plage dans laquelle une observation future tombera avec un certain niveau de confiance, compte tenu des données précédemment observées. Il se différencie d'un intervalle de confiance, qui quantifie l'incertitude liée à une variable d'échantillon de population. Les intervalles de prédiction sont généralement utilisés dans les modèles de prédiction ou de prévision. L'article présente un exemple simple de régression linéaire dans un ensemble de données à deux variables, dans lequel la relation entre les variables est visible à partir d'un nuage de points. Le modèle de régression linéaire est ensuite utilisé pour faire une prédiction unique, avec un intervalle prédit de 95 % de certitude et comparé à la valeur attendue connue. La différence entre les intervalles de prédiction et les intervalles de confiance est soulignée, ainsi que le fait que les intervalles de prédiction sont généralement plus larges que les intervalles de confiance en raison de la prise en compte de l'incertitude associée à l'erreur.
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

Algèbre linéaire appliquée pour les ingénieurs en apprentissage automatique



Algèbre linéaire appliquée pour les ingénieurs en apprentissage automatique

La vidéo souligne l'importance de l'apprentissage de l'algèbre linéaire pour les ingénieurs en apprentissage automatique, car elle constitue un élément fondamental pour comprendre le calcul et les statistiques, qui sont essentiels à l'apprentissage automatique. Avoir une compréhension plus approfondie de l'algèbre linéaire offre aux praticiens une meilleure intuition du fonctionnement des méthodes d'apprentissage automatique, leur permettant de personnaliser les algorithmes et d'en développer de nouveaux.

Le cours adopte une approche descendante pour enseigner les bases de l'algèbre linéaire, en utilisant des exemples concrets et des structures de données pour démontrer les opérations sur les matrices et les vecteurs. L'algèbre linéaire est décrite comme la mathématique des matrices et des vecteurs, fournissant un langage pour la manipulation des données et permettant la création de nouvelles colonnes ou tableaux de nombres par le biais d'opérations sur ces structures de données. Initialement développée à la fin des années 1800 pour résoudre des systèmes d'équations linéaires, l'algèbre linéaire est devenue une condition préalable essentielle à la compréhension de l'apprentissage automatique.

Le conférencier introduit le concept d'algèbre linéaire numérique, qui implique l'application de l'algèbre linéaire dans les ordinateurs. Cela comprend la mise en œuvre d'opérations d'algèbre linéaire et la résolution des problèmes qui surviennent lorsque l'on travaille avec une précision limitée en virgule flottante dans les ordinateurs numériques. L'algèbre linéaire numérique joue un rôle crucial dans l'apprentissage automatique, en particulier dans les algorithmes d'apprentissage en profondeur qui s'appuient fortement sur les unités de traitement graphique (GPU) pour effectuer efficacement des calculs d'algèbre linéaire. Diverses bibliothèques d'algèbre linéaire numérique open source, avec des bibliothèques basées sur Fortran comme base, sont couramment utilisées pour calculer des opérations d'algèbre linéaire, souvent en conjonction avec des langages de programmation comme Python.

L'importance de l'algèbre linéaire dans les statistiques est mise en évidence, en particulier dans l'analyse statistique multivariée, l'analyse en composantes principales et la résolution de problèmes de régression linéaire. La vidéo mentionne également le large éventail d'applications de l'algèbre linéaire dans des domaines tels que le traitement du signal, l'infographie et même la physique, avec des exemples comme la théorie de la relativité d'Albert Einstein utilisant des tenseurs et le calcul tensoriel, un type d'algèbre linéaire.

La vidéo explore plus en détail l'application pratique de l'algèbre linéaire dans les tâches d'apprentissage automatique. Il introduit le concept d'utilisation d'opérations d'algèbre linéaire, telles que le recadrage, la mise à l'échelle et le cisaillement, pour manipuler des images, démontrant comment la notation et les opérations d'algèbre linéaire peuvent être utilisées dans ce contexte. De plus, la vidéo explique la technique de codage populaire appelée codage à chaud pour les variables catégorielles. La principale structure de données utilisée dans l'apprentissage automatique, les tableaux à N dimensions ou tableaux ND, est présentée, avec la bibliothèque NumPy en Python présentée comme un outil puissant pour créer et manipuler ces tableaux. La vidéo couvre des fonctions importantes, telles que la pile en V et l'empilement horizontal, qui permettent la création de nouveaux tableaux à partir de tableaux existants.

La manipulation et l'accès aux données dans les tableaux NumPy, couramment utilisés pour représenter les données d'apprentissage automatique, sont expliqués. La vidéo montre comment convertir des listes unidimensionnelles en tableaux à l'aide de la fonction de tableau et créer des tableaux de données bidimensionnels à l'aide de listes de listes. Il couvre également les opérations d'indexation et de découpage dans les tableaux NumPy, y compris l'utilisation de l'opérateur deux-points pour le découpage et l'indexation négative. L'importance du découpage dans la spécification des variables d'entrée et de sortie dans l'apprentissage automatique est mise en évidence.

Les techniques de travail avec des ensembles de données multidimensionnels dans l'apprentissage automatique sont abordées dans la vidéo. Il commence par un découpage unidimensionnel et progresse vers un découpage bidimensionnel, ainsi que par la séparation des données en valeurs d'entrée et de sortie pour la formation et les tests. Le remodelage de tableaux est couvert, expliquant comment remodeler des tableaux unidimensionnels en tableaux bidimensionnels avec une colonne et transformer des données bidimensionnelles en tableaux tridimensionnels pour les algorithmes qui nécessitent plusieurs échantillons d'un ou plusieurs pas de temps et caractéristiques. Le concept de diffusion de tableaux est introduit, ce qui permet d'utiliser des tableaux de tailles différentes dans des opérations arithmétiques, permettant ainsi de traiter efficacement des ensembles de données de tailles variables.

La vidéo aborde également les limites de l'arithmétique de tableau dans NumPy, en particulier le fait que les opérations arithmétiques ne peuvent être effectuées que sur des tableaux de mêmes dimensions et de même taille. Cependant, cette limitation est surmontée par la fonction de diffusion intégrée de NumPy, qui réplique le plus petit tableau le long de la dernière dimension non concordante, permettant l'arithmétique entre des tableaux de formes et de tailles différentes. La vidéo fournit trois exemples de diffusion, y compris des tableaux scalaires et unidimensionnels, scalaire dans un tableau bidimensionnel et tableau unidimensionnel dans un tableau bidimensionnel. Il est à noter que la diffusion suit une règle stricte, indiquant que l'arithmétique ne peut être effectuée que lorsque la forme de chaque dimension dans les tableaux est égale ou que l'un d'eux a une taille de dimension de un.

Ensuite, l'orateur introduit le concept de vecteurs, qui sont des tuples d'une ou plusieurs valeurs appelées scalaires. Les vecteurs sont souvent représentés à l'aide de caractères minuscules tels que "v" et peuvent être considérés comme des points ou des coordonnées dans un espace à n dimensions, où "n" représente le nombre de dimensions. La création de vecteurs sous forme de tableaux NumPy en Python est expliquée. La vidéo couvre également les opérations arithmétiques vectorielles, telles que l'addition et la soustraction de vecteurs, qui sont effectuées élément par élément pour des vecteurs de longueur égale, ce qui donne un nouveau vecteur de même longueur. De plus, l'orateur explique comment les vecteurs peuvent être multipliés par des scalaires pour mettre à l'échelle leur magnitude et montre comment effectuer ces opérations à l'aide de tableaux NumPy en Python. Le produit scalaire de deux vecteurs est également discuté, ce qui donne un scalaire et peut être utilisé pour calculer la somme pondérée d'un vecteur.

L'accent est ensuite mis sur les normes vectorielles et leur importance dans l'apprentissage automatique. Les normes vectorielles font référence à la taille ou à la longueur d'un vecteur et sont calculées à l'aide d'une mesure qui résume la distance du vecteur à l'origine de l'espace vectoriel. Il est souligné que les normes vectorielles sont toujours positives, sauf pour un vecteur de toutes les valeurs nulles. La vidéo présente quatre calculs de normes vectorielles courants utilisés dans l'apprentissage automatique. Il commence par la norme vectorielle L1, suivie de la norme L2 (norme euclidienne) et de la norme max. La section définit également les matrices et explique comment les manipuler en Python. L'arithmétique matricielle, y compris la multiplication matrice-matrice (produit scalaire), la multiplication matrice-vecteur et la multiplication scalaire, est discutée. Une matrice est décrite comme un tableau bidimensionnel de scalaires avec une ou plusieurs colonnes et une ou plusieurs lignes, généralement représentées par des lettres majuscules telles que "A".

Ensuite, le concept d'opérations matricielles pour l'apprentissage automatique est introduit. Cela inclut la multiplication matricielle, la division matricielle et la multiplication scalaire matricielle. La multiplication matricielle, également connue sous le nom de produit scalaire matriciel, nécessite que le nombre de colonnes dans la première matrice soit égal au nombre de lignes dans la seconde matrice. La vidéo mentionne que la fonction point de NumPy peut être utilisée pour implémenter cette opération. Le concept de transposition de matrice est également expliqué, où une nouvelle matrice est créée en inversant le nombre de lignes et de colonnes de la matrice d'origine. Enfin, le processus d'inversion de matrice est discuté, ce qui implique de trouver une autre matrice qui, lorsqu'elle est multipliée par la matrice d'origine, donne une matrice d'identité.

Poursuivant la discussion sur l'inversion de matrice, la vidéo explore davantage ce concept. L'inversion d'une matrice est indiquée par un exposant négatif 1 à côté de la matrice. La vidéo explique que l'inversion de matrice implique de trouver des méthodes numériques efficaces. L'opération de trace d'une matrice carrée est introduite, qui calcule la somme des éléments diagonaux et peut être calculée à l'aide de la fonction de trace dans NumPy. Le déterminant d'une matrice carrée est défini comme une représentation scalaire du volume de la matrice et peut également être calculé à l'aide de la fonction det dans NumPy. Le rang d'une matrice est brièvement mentionné, qui estime le nombre de lignes ou de colonnes linéairement indépendantes dans la matrice et est généralement calculé à l'aide de la décomposition en valeurs singulières. Enfin, le concept de matrices creuses est expliqué, soulignant qu'elles contiennent principalement des valeurs nulles et peuvent être coûteuses en calculs à représenter et à utiliser.

La vidéo se penche ensuite sur les matrices clairsemées, qui sont des matrices principalement composées de valeurs nulles et diffèrent des matrices denses qui ont pour la plupart des valeurs non nulles. La parcimonie est quantifiée en calculant le score de parcimonie, qui est le nombre de valeurs nulles divisé par le nombre total d'éléments dans la matrice. La vidéo met l'accent sur deux problèmes principaux associés à la parcimonie : la complexité spatiale et la complexité temporelle. Il est à noter que représenter et travailler avec des matrices creuses peut être coûteux en calcul.

Pour relever ces défis, la vidéo mentionne que Scipy fournit des outils pour créer et manipuler des matrices creuses. De plus, il souligne que de nombreuses fonctions d'algèbre linéaire dans NumPy et Scipy peuvent fonctionner sur des matrices creuses, permettant des calculs et des opérations efficaces sur des données clairsemées.

Les matrices creuses sont couramment utilisées dans l'apprentissage automatique appliqué pour l'observation des données et la préparation des données. Leur rareté permet un stockage et un traitement plus efficaces de grands ensembles de données avec un nombre important de valeurs nulles. En tirant parti de la structure parcimonieuse, les algorithmes d'apprentissage automatique peuvent bénéficier d'une utilisation réduite de la mémoire et de calculs plus rapides.

Ensuite, la vidéo aborde différents types de matrices couramment utilisées en algèbre linéaire, en particulier celles pertinentes pour l'apprentissage automatique. Des matrices carrées sont introduites, où le nombre de lignes est égal au nombre de colonnes. Les matrices rectangulaires, qui ont différents nombres de lignes et de colonnes, sont également mentionnées. La vidéo explique la diagonale principale d'une matrice carrée, qui se compose d'éléments avec les mêmes indices de ligne et de colonne. L'ordre d'une matrice carrée, défini comme le nombre de lignes ou de colonnes, est également couvert.

De plus, la vidéo présente des matrices symétriques, qui sont des matrices carrées égales à leur transposée. Les matrices triangulaires, y compris les matrices triangulaires supérieure et inférieure, sont expliquées. Les matrices diagonales, où tous les éléments non diagonaux sont nuls, sont également discutées. Les matrices d'identité, qui sont des matrices carrées avec des uns sur la diagonale principale et des zéros ailleurs, sont expliquées dans le contexte de leur rôle d'identités multiplicatives. Des matrices orthogonales, formées lorsque deux vecteurs ont un produit scalaire égal à zéro, sont également introduites.

La vidéo se poursuit en discutant des matrices orthogonales et des tenseurs. Une matrice orthogonale est un type spécifique de matrice carrée où les colonnes et les lignes sont des vecteurs unitaires orthogonaux. Ces matrices sont efficaces et stables sur le plan informatique pour calculer leur inverse, ce qui les rend utiles dans diverses applications, y compris les modèles d'apprentissage en profondeur. La vidéo mentionne en outre que dans TensorFlow, les tenseurs sont une structure de données fondamentale et une généralisation des vecteurs et des matrices. Les tenseurs sont représentés sous forme de tableaux multidimensionnels et peuvent être manipulés en Python à l'aide de tableaux à n dimensions, similaires aux matrices. La vidéo met en évidence que les opérations de tenseur élément par élément, telles que l'addition et la soustraction, peuvent être effectuées sur des tenseurs, des matrices et des vecteurs, fournissant une intuition pour des dimensions plus élevées.

Ensuite, la vidéo présente la décomposition matricielle, qui est une méthode pour décomposer une matrice en ses parties constituantes. La décomposition matricielle simplifie les opérations matricielles complexes et permet des calculs efficaces. Deux techniques de décomposition de matrice largement utilisées sont couvertes : la décomposition LU (Lower-Upper) pour les matrices carrées et la décomposition QR (QR-factorization) pour les matrices rectangulaires.

La décomposition LU peut simplifier les équations linéaires dans le contexte des problèmes de régression linéaire et faciliter les calculs tels que le déterminant et l'inverse d'une matrice. La décomposition QR a des applications dans la résolution de systèmes d'équations linéaires. Les deux méthodes de décomposition peuvent être implémentées à l'aide de fonctions intégrées dans le package NumPy en Python, fournissant des solutions efficaces et fiables pour divers problèmes d'algèbre linéaire.

De plus, la vidéo traite de la décomposition de Cholesky, qui est spécifiquement utilisée pour les matrices définies symétriques et positives. La décomposition de Cholesky est représentée par une matrice triangulaire inférieure, et elle est considérée comme presque deux fois plus efficace que la décomposition LU pour décomposer des matrices symétriques.

La vidéo mentionne brièvement que les méthodes de décomposition matricielle, y compris la décomposition Eigen, sont utilisées pour simplifier les opérations complexes. La décomposition propre décompose une matrice en ses vecteurs propres et valeurs propres. Les vecteurs propres sont des coefficients qui représentent des directions, tandis que les valeurs propres sont des scalaires. Les vecteurs propres et les valeurs propres ont des applications pratiques, telles que la réduction de la dimensionnalité et l'exécution d'opérations matricielles complexes.

Enfin, la vidéo aborde le concept de décomposition en valeurs singulières (SVD) et ses applications en apprentissage automatique. SVD est utilisé dans diverses opérations matricielles et méthodes de réduction de données dans l'apprentissage automatique. Il joue un rôle crucial dans les calculs tels que la régression linéaire des moindres carrés, la compression d'image et les données de débruitage.

La vidéo explique que SVD permet de décomposer une matrice en trois matrices distinctes : U, Σ et V. La matrice U contient les vecteurs singuliers gauches, Σ est une matrice diagonale contenant les valeurs singulières et V contient les vecteurs singuliers droits. En reconstruisant la matrice originale à partir de ces composantes, on peut obtenir une approximation des données originales tout en réduisant sa dimensionnalité.

L'une des principales applications de SVD est la réduction de dimensionnalité. En sélectionnant un sous-ensemble des valeurs singulières les plus significatives et leurs vecteurs singuliers correspondants, il est possible de représenter les données dans un espace de dimension inférieure sans perdre d'informations cruciales. Cette technique est particulièrement utile dans les cas où les données ont une dimensionnalité élevée, car elle permet un stockage et un calcul plus efficaces.

La vidéo souligne que la SVD a été appliquée avec succès dans le traitement du langage naturel à l'aide d'une technique appelée analyse sémantique latente (LSA) ou indexation sémantique latente (LSI). En représentant les documents texte sous forme de matrices et en exécutant SVD, LSA peut capturer la structure sémantique sous-jacente des documents, permettant des tâches telles que la similarité des documents et la modélisation des sujets.

De plus, la vidéo présente la classe SVD tronquée, qui implémente directement la capacité de réduire la dimensionnalité d'une matrice. Avec la SVD tronquée, il devient possible de transformer la matrice originale en une représentation de dimension inférieure tout en préservant les informations les plus importantes. Cette technique est particulièrement bénéfique lorsqu'il s'agit de grands ensembles de données, car elle permet un traitement et une analyse plus efficaces.

En résumé, la vidéo a couvert divers sujets liés à l'algèbre linéaire pour l'apprentissage automatique. Il a souligné l'importance de l'apprentissage de l'algèbre linéaire en tant que bloc de construction fondamental pour comprendre le calcul et les statistiques dans le contexte de l'apprentissage automatique. La vidéo a discuté des applications de l'algèbre linéaire dans l'apprentissage automatique, telles que la personnalisation et le développement d'algorithmes, l'algèbre linéaire numérique, l'analyse statistique et divers autres domaines comme le traitement du signal et l'infographie.

En outre, la vidéo a exploré les concepts clés de l'algèbre linéaire, y compris les vecteurs, les matrices, les opérations matricielles, les normes vectorielles, les techniques de décomposition matricielle et les matrices creuses. Il a expliqué comment ces concepts sont utilisés dans l'apprentissage automatique et a fourni des informations sur leurs applications pratiques.

En comprenant l'algèbre linéaire, les praticiens de l'apprentissage automatique peuvent acquérir une intuition plus profonde des fondements mathématiques sous-jacents des algorithmes d'apprentissage automatique et les appliquer efficacement à des problèmes du monde réel. L'algèbre linéaire est un outil puissant pour la manipulation des données, la réduction de la dimensionnalité et l'optimisation, permettant des solutions d'apprentissage automatique efficaces et efficientes.

  • 00:00:00 L'importance de l'apprentissage de l'algèbre linéaire pour les ingénieurs en apprentissage automatique est soulignée, car elle est considérée comme un élément de base pour comprendre le calcul et les statistiques nécessaires à l'apprentissage automatique. Une compréhension plus approfondie de l'algèbre linéaire offre aux praticiens de l'apprentissage automatique une meilleure intuition du fonctionnement des méthodes, leur permettant de personnaliser les algorithmes et d'en concevoir de nouveaux. Les bases de l'algèbre linéaire sont enseignées dans une approche descendante dans ce cours, en utilisant des exemples concrets et des structures de données pour démontrer les opérations sur les matrices et les vecteurs. L'algèbre linéaire est la mathématique des matrices et des vecteurs, fournissant un langage pour les données et permettant la création de nouvelles colonnes ou tableaux de nombres à l'aide d'opérations sur ces structures de données. L'algèbre linéaire a été développée à la fin des années 1800 pour résoudre des systèmes inconnus d'équations linéaires et est maintenant une condition préalable essentielle pour comprendre l'apprentissage automatique.

  • 00:05:00 L'orateur discute de l'algèbre linéaire numérique, qui est l'application de l'algèbre linéaire dans les ordinateurs. Cela inclut la mise en œuvre d'opérations d'algèbre linéaire ainsi que la gestion des problèmes potentiels qui surviennent lorsque vous travaillez avec une précision limitée en virgule flottante dans les ordinateurs numériques. L'algèbre linéaire numérique est un outil essentiel dans l'apprentissage automatique, car de nombreux algorithmes d'apprentissage en profondeur reposent sur la capacité des unités de traitement graphique à calculer rapidement des opérations d'algèbre linéaire. Plusieurs bibliothèques d'algèbre linéaire numérique open source populaires sont utilisées pour calculer les opérations d'algèbre linéaire, les bibliothèques d'algèbre linéaire basées sur Fortran fournissant la base de la plupart des implémentations modernes utilisant des langages de programmation tels que Python. L'algèbre linéaire est également essentielle en statistique, en particulier dans l'analyse statistique multivariée, l'analyse en composantes principales et la résolution de problèmes de régression linéaire. De plus, le conférencier discute des diverses applications de l'algèbre linéaire dans des domaines tels que le traitement du signal, l'infographie et même la physique, avec la théorie de la relativité d'Albert Einstein utilisant les tenseurs et le calcul tensoriel, un type d'algèbre linéaire.

  • 00: 10: 00 Le concept d'utilisation d'opérations d'algèbre linéaire sur des images telles que le recadrage, la mise à l'échelle et le cisaillement à l'aide de notations et d'opérations d'algèbre linéaire est introduit. De plus, la technique de codage populaire pour les variables catégorielles appelée un codage à chaud est expliquée. De plus, la structure de données principale utilisée dans l'apprentissage automatique, les tableaux à N dimensions ou les tableaux ND, et comment les créer et les manipuler à l'aide de la bibliothèque NumPy en Python est discuté. Enfin, deux des fonctions les plus populaires pour créer de nouveaux tableaux à partir de tableaux existants, v-stack et horizontal stacking, sont expliquées.

  • 00: 15: 00 L'orateur explique comment manipuler et accéder aux données dans des tableaux numpy, qui sont généralement utilisés pour représenter des données d'apprentissage automatique. Une liste unidimensionnelle peut être convertie en tableau à l'aide de la fonction de tableau, et un tableau de données bidimensionnel peut être créé à l'aide d'une liste de listes. L'accès aux données via l'indexation est similaire à d'autres langages de programmation, mais les tableaux numpy peuvent également être découpés en utilisant l'opérateur deux-points. L'indexation négative est également possible et le découpage peut être utilisé pour spécifier les variables d'entrée et de sortie dans l'apprentissage automatique.

  • 00: 20: 00 La vidéo couvre les techniques de travail avec des ensembles de données multidimensionnelles courantes dans l'apprentissage automatique. Cela commence par un découpage unidimensionnel et passe au découpage bidimensionnel et à la séparation des données en valeurs d'entrée et de sortie pour la formation et les tests. La vidéo couvre ensuite le remodelage du tableau, y compris le remodelage des tableaux unidimensionnels en tableaux bidimensionnels avec une colonne et le remodelage des données bidimensionnelles en un tableau tridimensionnel pour les algorithmes qui attendent plusieurs échantillons d'un ou plusieurs pas de temps et une ou plusieurs caractéristiques . Enfin, la vidéo couvre la diffusion de tableaux, qui permet d'ajouter, de soustraire ou d'utiliser des tableaux de tailles différentes, ce qui est utile pour les ensembles de données de tailles variables.

  • 00: 25: 00 Les limites de l'arithmétique de tableau dans numpy sont discutées, qui incluent uniquement l'exécution de l'arithmétique sur des tableaux de mêmes dimensions et de dimensions de même taille. Cependant, cette limitation est surmontée par la fonction de diffusion intégrée de numpy qui réplique le plus petit tableau le long de la dernière dimension non concordante. Cette méthode permet l'arithmétique entre des tableaux de formes et de tailles différentes. Trois exemples de diffusion sont donnés, y compris des tableaux scalaires et unidimensionnels, scalaire dans un tableau bidimensionnel et tableau unidimensionnel dans un tableau bidimensionnel. Les limites de la diffusion sont également notées, y compris la règle stricte qui doit être satisfaite pour que la diffusion soit effectuée, indiquant que l'arithmétique ne peut être effectuée qu'à partir de la forme de chaque dimension dans les tableaux sont égaux ou on a la taille de dimension d'un.

  • 00:30:00 L'orateur introduit le concept de vecteurs, qui sont des tuples d'une ou plusieurs valeurs appelées scalaires et sont souvent représentés à l'aide d'un caractère minuscule tel que "v". Les vecteurs peuvent être considérés comme des points ou des coordonnées dans un espace à n dimensions où n est le nombre de dimensions, et peuvent être créés comme un tableau numpy en Python. L'orateur discute également des opérations arithmétiques vectorielles telles que l'addition et la soustraction de vecteurs, qui sont effectuées élément par élément pour des vecteurs de longueur égale résultant en un nouveau vecteur de même longueur. De plus, l'orateur explique que les vecteurs peuvent être multipliés par un scalaire pour mettre à l'échelle sa magnitude et comment effectuer ces opérations à l'aide de tableaux numpy en Python. Enfin, l'orateur parle du produit scalaire de deux vecteurs, qui donne un scalaire, et comment il peut être utilisé pour calculer la somme pondérée d'un vecteur.

  • 00:35:00 L'accent est mis sur les normes vectorielles et leur importance dans l'apprentissage automatique. Les normes vectorielles font référence à la taille ou à la longueur d'un vecteur, calculées à l'aide d'une mesure qui résume la distance du vecteur à l'origine de l'espace vectoriel. La norme est toujours un nombre positif, sauf pour un vecteur de toutes les valeurs nulles. Quatre calculs de norme vectorielle courants utilisés dans l'apprentissage automatique sont introduits, en commençant par la norme vectorielle L1, qui est ensuite suivie par les normes L2 et max. La section définit également les matrices et comment les manipuler en Python, discutant de l'arithmétique matricielle, de la multiplication matrice-matrice (produit scalaire), de la multiplication matrice-vecteur et de la multiplication scalaire. Une matrice est un tableau bidimensionnel de scalaires avec une ou plusieurs colonnes et une ou plusieurs lignes, et elle est souvent représentée par une lettre majuscule, telle que A.

  • 00:40:00 Le concept d'opérations matricielles pour l'apprentissage automatique est introduit, y compris la multiplication matricielle, la division matricielle et la multiplication scalaire matricielle. La multiplication matricielle, également connue sous le nom de produit scalaire matriciel, nécessite que le nombre de colonnes de la première matrice soit égal au nombre de lignes de la seconde matrice. La fonction point de numpy peut être utilisée pour implémenter cette opération. Le concept de transposition de matrice est également introduit, où une nouvelle matrice est créée en inversant le nombre de lignes et de colonnes de la matrice d'origine. Enfin, le processus d'inversion de matrice est discuté, qui trouve une autre matrice qui se multipliera avec la matrice résultant en une matrice d'identité.

  • 00: 45: 00 Le concept d'inversion de matrice est couvert, où l'inversion d'une matrice est indiquée par un exposant négatif 1 à côté de la matrice. L'opération d'inversion de matrice implique de trouver une suite de méthodes numériques efficaces. L'opération de trace d'une matrice carrée est également discutée, qui peut être calculée à l'aide de la fonction de trace dans numpy. Le déterminant d'une matrice carrée est défini comme une représentation scalaire du volume d'une matrice et peut également être calculé à l'aide de la fonction det dans numpy. De plus, le rang d'une matrice est introduit, qui estime le nombre de lignes ou de colonnes linéairement indépendantes dans la matrice et est généralement calculé à l'aide de la décomposition en valeurs singulières. Enfin, le concept de matrices creuses est expliqué, qui sont des matrices contenant principalement des valeurs nulles et dont la représentation et l'utilisation sont coûteuses en calculs.

  • 00: 50: 00 Nous en apprenons davantage sur les matrices creuses, qui sont des matrices composées principalement de valeurs nulles et différentes des matrices denses qui ont principalement des valeurs non nulles. La parcimonie peut être quantifiée en calculant le score, qui est le nombre de valeurs nulles divisé par le nombre total d'éléments dans la matrice. Nous apprenons également les deux grands problèmes de parcimonie : la complexité spatiale et la complexité temporelle. Scipy fournit des outils pour créer des matrices creuses et de nombreuses fonctions d'algèbre linéaire numpy et scipy peuvent fonctionner dessus. Les matrices creuses sont couramment utilisées dans l'apprentissage automatique appliqué pour l'observation et la préparation des données.

  • 00: 55: 00 Les différents types de matrices couramment utilisées en algèbre linéaire, particulièrement pertinentes pour l'apprentissage automatique, sont discutées. Des matrices carrées sont introduites, où le nombre de lignes est égal au nombre de colonnes, ainsi que des matrices rectangulaires. La diagonale principale et l'ordre d'une matrice carrée sont également couverts. De plus, les matrices symétriques, les matrices triangulaires (y compris supérieures et inférieures), les matrices diagonales, les matrices d'identité et les matrices orthogonales sont expliquées. On note qu'une matrice orthogonale est formée lorsque deux vecteurs ont un produit scalaire égal à zéro.

  • 01:00:00 Nous apprenons les matrices orthogonales et les tenseurs. Une matrice orthogonale est un type de matrice carrée dont les colonnes et les lignes sont des vecteurs unitaires orthogonaux. Ces matrices sont peu coûteuses en calcul et stables pour calculer leur inverse et peuvent être utilisées dans des modèles d'apprentissage en profondeur. Dans Tensorflow, les tenseurs sont une structure de données fondamentale et une généralisation de vecteurs et de matrices, représentés sous forme de tableaux multidimensionnels. Les tenseurs peuvent être manipulés en Python à l'aide de tableaux à n dimensions, similaires aux matrices, avec des opérations de tenseur élément par élément telles que l'addition et la soustraction. De plus, les opérations de produits tensoriels peuvent être effectuées sur des tenseurs, des matrices et des vecteurs, permettant une intuition de dimensions plus élevées.

  • 01:05:00 La vidéo présente la décomposition matricielle, une méthode pour réduire une matrice en ses parties constitutives et simplifier les opérations matricielles plus complexes qui peuvent être effectuées sur la matrice de décomposition. Deux techniques de décomposition matricielle largement utilisées qui sont abordées dans les leçons à venir sont la décomposition matricielle LU pour les matrices carrées et la décomposition matricielle QR pour les matrices rectangulaires. La décomposition LU peut être utilisée pour simplifier les équations linéaires dans le problème de régression linéaire et pour calculer le déterminant et l'inverse d'une matrice, tandis que la décomposition QR a des applications dans la résolution de systèmes d'équations linéaires. Les deux décompositions peuvent être implémentées à l'aide de fonctions intégrées dans le package NumPy en Python.

  • 01:10:00 La vidéo traite de la décomposition de Cholesky, qui est utilisée pour les matrices définies symétriques et positives. Cette méthode est presque deux fois plus efficace que la décomposition LU et est préférée pour décomposer des matrices symétriques. La décomposition de Cholesky est représentée par une matrice triangulaire inférieure, accessible facilement via la fonction Cholosky dans NumPy. La vidéo mentionne également que les méthodes de décomposition matricielle, y compris Eigendecomposition, sont utilisées pour simplifier les opérations complexes, et la décomposition Eigen décompose une matrice en vecteurs propres et valeurs propres. Enfin, la vidéo note que les vecteurs propres sont des vecteurs unitaires, tandis que les valeurs propres sont des scalaires, et les deux sont utiles pour réduire la dimensionnalité et effectuer des opérations matricielles complexes.

  • 01:15:00 Le concept de décomposition propre et son calcul à l'aide d'un algorithme itératif efficace sont discutés. La décomposition propre est une méthode de décomposition d'une matrice carrée en ses valeurs propres et ses vecteurs propres, qui sont respectivement des coefficients et des directions. La décomposition propre peut être calculée dans NumPy à l'aide de la fonction eig, et des tests peuvent être effectués pour confirmer qu'un vecteur est bien un vecteur propre d'une matrice. La matrice d'origine peut également être reconstruite à partir des valeurs propres et des vecteurs propres. La section présente également brièvement la décomposition en valeurs singulières (SVD) en tant que méthode de décomposition matricielle pour réduire la matrice en ses éléments constitutifs afin de simplifier certains calculs matriciels ultérieurs, et ses applications dans divers domaines tels que la compression, le débruitage et la réduction des données.

  • 01:20:00 Le concept de décomposition en valeurs singulières (SVD) et ses applications en apprentissage automatique sont discutés. SVD est utilisé dans le calcul d'autres opérations matricielles et méthodes de réduction de données dans l'apprentissage automatique, telles que la régression linéaire des moindres carrés, la compression d'image et les données de débruitage. La matrice d'origine peut être reconstruite à partir des éléments u, sigma et v renvoyés par le SVD. Une application populaire de SVD est la réduction de la dimensionnalité, où les données peuvent être réduites à un sous-ensemble plus petit de caractéristiques les plus pertinentes pour le problème de prédiction. Cela a été appliqué avec succès dans le traitement du langage naturel en utilisant une technique appelée analyse sémantique latente ou indexation sémantique latente. La classe SVD tronquée qui implémente directement cette capacité est discutée et son application est démontrée à l'aide d'une matrice définie suivie d'une version de transformation.
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

Une introduction complète à XGBoost pour les ingénieurs en apprentissage automatique


Une introduction complète à XGBoost pour les ingénieurs en apprentissage automatique

Dans la vidéo, l'instructeur fournit une introduction complète à XGBoost pour les ingénieurs en apprentissage automatique. Ils expliquent que XGBoost est une bibliothèque d'apprentissage automatique open source connue pour sa capacité à créer rapidement des modèles de classification et de régression très précis. Il a gagné en popularité en tant que premier choix pour la construction de modèles du monde réel, en particulier lorsqu'il s'agit d'ensembles de données hautement structurés. XGBoost a été créé par Taiki Chen et est basé sur la technique des arbres de décision gradient boost, qui permet une construction de modèle rapide et efficace.

L'instructeur souligne que XGBoost prend en charge plusieurs interfaces, y compris les implémentations Python et scikit-learn. Ils procèdent à une démonstration de XGBoost, présentant divers modules de chargement de données et de construction de modèles.

La vidéo se concentre ensuite sur la préparation de l'ensemble de données pour la formation d'un modèle XGBoost. L'instructeur insiste sur l'importance de séparer les données en ensembles d'entraînement et de test. Ils identifient la variable cible comme un problème de classification binaire et expliquent le processus de définition des hyperparamètres nécessaires pour le modèle XGBoost. Une fois que le modèle est formé sur les données de formation, ils évaluent sa précision sur les données de test en utilisant le score de précision comme métrique.

Pour mieux comprendre XGBoost, l'instructeur se penche sur le concept de gradient boosting et son rôle dans la catégorie plus large des modèles d'apprentissage automatique traditionnels. Ils expliquent que le gradient boosting est une technique qui combine un modèle faible avec d'autres modèles du même type pour créer un modèle plus précis. Dans ce processus, chaque arbre successif est construit pour les résidus de prédiction de l'arbre précédent. L'instructeur insiste sur le fait que les arbres de décision sont utilisés dans l'amplification du gradient, car ils fournissent une représentation graphique des solutions de décision possibles en fonction de conditions données. Ils mentionnent également que la conception d'un arbre de décision nécessite un processus de réflexion bien documenté pour identifier efficacement les solutions potentielles.

La vidéo explore plus en détail la création d'arbres de décision binaires à l'aide de la division binaire récursive. Ce processus implique d'évaluer toutes les variables d'entrée et les points de partage de manière gourmande pour minimiser une fonction de coût qui mesure la proximité des valeurs prédites aux valeurs réelles. L'instructeur explique que la division avec le coût le plus bas est choisie et que les groupes résultants peuvent être subdivisés de manière récursive. Ils soulignent que l'algorithme utilisé est gourmand, car il se concentre sur la prise de la meilleure décision à chaque étape. Cependant, il est préférable d'avoir des arbres de décision avec moins de fractionnements pour assurer une meilleure compréhensibilité et réduire le risque de surajustement des données. L'instructeur souligne que XGBoost fournit des mécanismes pour empêcher le surajustement, tels que la limitation de la profondeur maximale de chaque arbre et l'élagage des branches non pertinentes. De plus, ils couvrent l'encodage des étiquettes et démontrent le chargement de l'ensemble de données de l'iris à l'aide de scikit-learn.

Ensuite, la vidéo couvre le processus d'encodage de l'étiquette cible en tant que variable numérique à l'aide de la méthode de l'encodeur d'étiquette. Après avoir divisé les données en jeux de données de formation et de test, l'instructeur définit et forme le classificateur XGBoost sur les données de formation. Ils utilisent ensuite le modèle formé pour faire des prédictions sur l'ensemble de données de test, atteignant une précision de 90 %. Le concept d'apprentissage d'ensemble est présenté comme une méthode pour combiner plusieurs modèles afin d'améliorer la précision de la prédiction, améliorant ainsi l'efficacité de l'algorithme d'apprentissage. L'instructeur insiste sur l'importance de sélectionner le bon modèle pour les problèmes de classification ou de régression afin d'obtenir des résultats optimaux.

La vidéo plonge dans le concept de biais et de variance dans les modèles d'apprentissage automatique et souligne la nécessité d'un équilibre entre les deux. L'apprentissage d'ensemble est présenté comme une technique pour aborder cet équilibre en combinant des groupes d'apprenants faibles pour créer des modèles plus complexes. Deux techniques d'ensemble, bagging et boosting, sont introduites. Le bagging vise à réduire la variance en créant des sous-ensembles de données pour former des arbres de décision et créer un ensemble de modèles à forte variance et à faible biais. Le boosting, quant à lui, consiste à apprendre séquentiellement des modèles avec des arbres de décision, permettant de corriger les erreurs commises par les modèles précédents. L'instructeur souligne que le gradient boosting est un type spécifique de boosting qui optimise une fonction de perte différentiable en utilisant des apprenants faibles sous la forme d'arbres de régression.

La vidéo explique en détail le concept de gradient boosting, décrivant son processus en trois étapes. La première étape consiste à ajouter de manière itérative des apprenants faibles (par exemple, des arbres de décision) pour minimiser les pertes. La deuxième étape est l'ajout séquentiel d'arbres, et la dernière étape se concentre sur la réduction de l'erreur du modèle par d'autres itérations. Pour illustrer le processus, la vidéo présente l'utilisation de la validation croisée k-fold pour segmenter les données. Grâce à XGBoost, des scores sont obtenus pour chaque pli. L'instructeur choisit les arbres de décision comme apprenants faibles, en garantissant une faible profondeur pour éviter le surapprentissage. Enfin, une fonction de perte est définie comme une mesure de l'adéquation du modèle d'apprentissage automatique aux données.

Les principales étapes de l'amplification du gradient sont expliquées, notamment l'optimisation de la fonction de perte, l'utilisation d'apprenants faibles (souvent des arbres de décision) et la combinaison de plusieurs apprenants faibles de manière additive grâce à l'apprentissage d'ensemble. La vidéo couvre également les aspects pratiques de l'utilisation de XGBoost, tels que la gestion des valeurs manquantes, l'enregistrement de modèles sur disque et l'utilisation d'un arrêt anticipé. Des démonstrations utilisant du code Python sont fournies pour illustrer divers cas d'utilisation de XGBoost. De plus, la vidéo met l'accent sur l'importance du nettoyage des données, y compris les techniques de traitement des valeurs manquantes, telles que l'imputation de la valeur moyenne.

L'orateur discute de l'importance de nettoyer correctement les données plutôt que de se fier uniquement aux algorithmes pour faire le travail. Ils démontrent comment la suppression des valeurs vides peut améliorer la précision du modèle et mettre en garde contre les algorithmes gérant les valeurs vides. Le concept de pickling, qui consiste à enregistrer des modèles entraînés sur disque pour une utilisation ultérieure, est introduit à l'aide de la bibliothèque pickle en Python. L'orateur montre comment enregistrer et charger des modèles. Ils montrent également comment tracer l'importance de chaque attribut dans un ensemble de données à l'aide de la fonction d'importance du tracé dans XGBoost et de la bibliothèque matplotlib.

L'orateur discute de l'importance d'analyser et de tester différents scénarios lors de la création de modèles d'apprentissage automatique, soulignant que les scores d'importance des fonctionnalités de XGBoost peuvent ne pas toujours refléter l'impact réel d'une fonctionnalité sur la précision du modèle. Ils utilisent l'exemple de l'ensemble de données Titanic pour démontrer comment l'ajout de l'attribut "sexe" améliore la précision du modèle, malgré le fait qu'il soit classé faible dans les scores d'importance des caractéristiques. Le conférencier souligne l'importance de tester divers scénarios et de ne pas se fier uniquement aux scores d'importance des fonctionnalités. Ils mentionnent également que XGBoost peut évaluer et rapporter les performances d'un ensemble de tests pendant la formation.

La vidéo explique comment surveiller les performances d'un modèle XGBoost pendant la formation en spécifiant une métrique d'évaluation et en transmettant un tableau de paires x et y. Les performances du modèle sur chaque ensemble d'évaluation sont stockées et mises à disposition après l'entraînement. La vidéo couvre les courbes d'apprentissage, qui donnent un aperçu du comportement du modèle et aident à prévenir le surajustement en arrêtant l'apprentissage tôt. L'arrêt précoce est introduit comme technique pour arrêter l'entraînement après un nombre fixe d'époques si aucune amélioration n'est observée dans le score de validation.

La vidéo couvre l'utilisation des tours d'arrêt précoces dans XGBoost et montre la construction d'un modèle de régression pour évaluer les prix des maisons à Boston. Les avantages du parallélisme dans l'amplification du gradient sont discutés, en se concentrant sur la construction d'arbres individuels et la préparation efficace des données d'entrée. La vidéo fournit une démonstration de la prise en charge du multithreading, qui utilise tous les cœurs du système pour exécuter des calculs simultanément, ce qui accélère l'exécution du programme. Bien que XGBoost soit principalement axé sur les problèmes de classification, la vidéo met également en évidence sa capacité à exceller dans la création de modèles de régression.

L'orateur crée une liste pour contenir le nombre d'itérations pour un exemple et utilise une boucle for pour tester la vitesse d'exécution du modèle en fonction du nombre de threads. Ils impriment la vitesse de la construction pour chaque itération et tracent les résultats, montrant comment la vitesse du modèle diminue à mesure que le nombre de threads augmente. L'orateur discute ensuite du réglage des hyperparamètres, qui consiste à ajuster les paramètres d'un modèle pour améliorer ses performances. Ils explorent les paramètres par défaut pour XGBoost et scikit-learn et mentionnent que le réglage des hyperparamètres est essentiel pour optimiser les performances d'un modèle XGBoost. La vidéo explique que les hyperparamètres sont des paramètres qui ne sont pas appris à partir des données mais qui sont définis manuellement par l'utilisateur. Le réglage des hyperparamètres implique la recherche systématique de la meilleure combinaison de valeurs de paramètres qui se traduit par les meilleures performances du modèle.

Pour effectuer le réglage des hyperparamètres, la vidéo présente deux approches courantes : la recherche par grille et la recherche aléatoire. La recherche de grille consiste à définir une grille de valeurs d'hyperparamètres et à évaluer de manière exhaustive chaque combinaison. La recherche aléatoire, quant à elle, échantillonne de manière aléatoire des combinaisons d'hyperparamètres à partir d'un espace de recherche prédéfini. La vidéo recommande d'utiliser la recherche aléatoire lorsque l'espace de recherche est grand ou que le nombre d'hyperparamètres est élevé.

La vidéo montre le réglage des hyperparamètres à l'aide de la classe RandomizedSearchCV de scikit-learn. Ils définissent une grille de paramètres contenant différentes valeurs pour les hyperparamètres tels que le taux d'apprentissage, la profondeur maximale et le rapport de sous-échantillon. La classe RandomizedSearchCV effectue une recherche aléatoire avec validation croisée, évaluant les performances de chaque combinaison de paramètres. Après le réglage, les meilleurs hyperparamètres sont sélectionnés et le modèle est entraîné avec ces valeurs optimales.

L'orateur explique que le réglage des hyperparamètres aide à trouver le meilleur compromis entre le sous-ajustement et le sur-ajustement. Il est important de trouver un équilibre et d'éviter le surajustement en sélectionnant soigneusement les hyperparamètres en fonction de l'ensemble de données spécifique et du problème à résoudre.

Outre le réglage des hyperparamètres, la vidéo traite de l'importance des fonctionnalités dans les modèles XGBoost. L'importance des fonctionnalités fournit des informations sur les fonctionnalités qui ont le plus d'impact sur les prédictions du modèle. Le conférencier explique que l'importance de la caractéristique est déterminée par le gain moyen, qui mesure l'amélioration de la fonction de perte apportée par une caractéristique lorsqu'elle est utilisée dans un arbre de décision. Un gain moyen plus élevé indique une importance plus élevée.

La vidéo montre comment extraire et visualiser l'importance des fonctionnalités à l'aide de la bibliothèque XGBoost. Ils tracent un graphique à barres montrant les principales fonctionnalités et leurs scores d'importance correspondants. L'orateur note que l'importance des caractéristiques peut aider à la sélection des caractéristiques, à la réduction de la dimensionnalité et à la compréhension du problème sous-jacent.

Vers la fin de la vidéo, l'orateur mentionne brièvement d'autres sujets avancés liés à XGBoost. Ils traitent de la gestion des ensembles de données déséquilibrés en ajustant l'hyperparamètre scale_pos_weight, en traitant les valeurs manquantes à l'aide de la fonctionnalité intégrée de XGBoost et en gérant les variables catégorielles via un codage à chaud ou en utilisant la prise en charge intégrée des fonctionnalités catégorielles dans XGBoost.

La vidéo fournit un aperçu complet de XGBoost, couvrant ses concepts clés, sa mise en œuvre, le réglage des hyperparamètres et l'analyse de l'importance des fonctionnalités. Les démonstrations et les exemples de code aident à illustrer les aspects pratiques de l'utilisation de XGBoost en Python. Il constitue une ressource précieuse pour les ingénieurs en apprentissage automatique qui cherchent à utiliser XGBoost pour leurs tâches de classification et de régression.

  • 00:00:00 L'instructeur fournit une introduction à XGBoost pour les ingénieurs en apprentissage automatique. XGBoost est une bibliothèque d'apprentissage automatique open source utilisée pour créer rapidement des modèles de classification et de régression très précis, ce qui en fait un choix de premier ordre pour créer des modèles du monde réel par rapport à des ensembles de données hautement structurés. L'auteur de XGBoost est Taiki Chen, et il s'agit d'une implémentation d'arbres de décision d'amplification de gradient pour la vitesse et les performances. L'instructeur souligne également que XGBoost prend en charge plusieurs interfaces telles que les implémentations Python et scikit-learn et fournit une démonstration de XGBoost utilisant plusieurs modules pour charger des données et créer des modèles.

  • 00:05:00 L'instructeur explique comment préparer l'ensemble de données pour l'entraînement d'un modèle XGBoost, en se concentrant sur la séparation des données en ensembles d'entraînement et de test. La variable cible est identifiée comme un problème de classification binaire et les hyperparamètres nécessaires sont définis pour le modèle XGBoost. Le modèle est formé sur les données de formation et la précision du modèle est évaluée sur les données de test en utilisant le score de précision comme métrique. L'instructeur donne également un aperçu du gradient boosting, du concept derrière XGBoost et de la manière dont il s'intègre dans la catégorie plus large des modèles d'apprentissage automatique traditionnels.

  • 00: 10: 00 Nous en apprenons davantage sur la division binaire récursive et l'apprentissage d'ensemble, qui combinent plusieurs modèles faibles pour améliorer la précision des prédictions. Le gradient boosting est une technique de construction de modèles prédictifs en combinant un modèle faible avec d'autres modèles du même type pour produire un modèle plus précis. Chaque arbre successif est construit pour les résidus de prédiction de l'arbre précédent. Les arbres de décision sont utilisés dans l'amplification du gradient et impliquent une représentation graphique de toutes les solutions possibles à une décision basée sur certaines conditions. La conception d'un arbre de décision nécessite un processus de réflexion bien documenté qui aide à formaliser le processus de remue-méninges afin que nous puissions identifier davantage de solutions potentielles.

  • 00:15:00 La vidéo explique comment les arbres de décision binaires sont créés. Le processus est appelé fractionnement binaire récursif et il implique d'évaluer toutes les variables d'entrée et les points de fractionnement de manière gourmande pour minimiser une fonction de coût qui mesure à quel point les valeurs prédites sont proches de leurs valeurs réelles correspondantes. La division avec le coût le plus bas est choisie et les groupes résultants peuvent être subdivisés de manière récursive. L'algorithme est un gourmand qui se concentre sur la prise de la meilleure décision à chaque étape. Les arbres de décision avec moins de fractionnements sont préférés, car ils sont plus faciles à comprendre et moins susceptibles de surajuster les données. Pour éviter le surajustement, l'algorithme XGBoost permet à un mécanisme d'arrêter la croissance des arbres, comme la limitation de la profondeur maximale de chaque arbre et l'élagage des branches non pertinentes. La vidéo couvre également l'encodage des étiquettes et le chargement de l'ensemble de données d'iris à l'aide de scikit-learn.

  • 00:20:00 La vidéo couvre le processus d'encodage d'une étiquette cible en tant que variable numérique, en utilisant la méthode de l'encodeur d'étiquette. Une fois que les données ont été divisées en ensembles de données d'apprentissage et de test, le classificateur XGBoost est défini et formé sur les données d'apprentissage. Le modèle est ensuite utilisé pour faire des prédictions sur l'ensemble de données de test avec une précision de 90 %. L'apprentissage d'ensemble est ensuite présenté comme une méthode pour combiner plusieurs modèles afin d'améliorer la précision des prédictions, permettant un algorithme d'apprentissage plus efficace. La vidéo souligne l'importance de choisir le bon modèle pour les problèmes de classification ou de régression lorsque vous essayez d'obtenir les meilleurs résultats.

  • 00:25:00 Le concept de biais et de variance dans les modèles d'apprentissage automatique est discuté, et la nécessité d'un équilibre entre les deux est soulignée. L'apprentissage d'ensemble est présenté comme une technique utilisée pour aborder cet équilibre en combinant des groupes d'apprenants faibles pour créer des modèles plus complexes. Le bagging et le boosting sont deux techniques d'ensemble, le bagging étant utilisé pour réduire la variance en créant plusieurs sous-ensembles de données pour former des arbres de décision et créer un ensemble de modèles avec une variance élevée et un faible biais. Le renforcement implique l'apprentissage séquentiel de modèles avec des arbres de décision, permettant la correction des erreurs des modèles précédents, et est réalisé avec un travail d'équipe parmi les apprenants faibles pour classer correctement les entrées. Le gradient boosting est un type spécifique de boosting qui consiste à optimiser une fonction de perte différentiable et à utiliser des apprenants faibles sous la forme d'arbres de régression.

  • 00:30:00 Le concept de gradient boosting a été introduit et son processus en trois étapes a été expliqué. La première étape consiste à ajouter des apprenants faibles comme des arbres de décision dans un processus itératif pour minimiser les pertes. La deuxième étape est l'ajout séquentiel d'arbres, tandis que la dernière étape vise à réduire l'erreur du modèle grâce à davantage d'itérations. La démonstration impliquait l'utilisation de la validation croisée k-fold pour segmenter les données, et grâce à XGBoost, des scores ont été obtenus pour chaque pli. L'arbre de décision a été utilisé comme apprenant faible de choix, avec une faible profondeur pour éviter le surajustement. Enfin, une fonction de perte a été définie comme une mesure de l'adéquation du modèle d'apprentissage automatique aux données d'un phénomène particulier.

  • 00: 35: 00 Les principales étapes de l'amplification du gradient sont expliquées, notamment l'optimisation de la fonction de perte, l'utilisation d'un apprenant faible (généralement un arbre de décision) et la combinaison de nombreux apprenants faibles de manière additive grâce à l'apprentissage d'ensemble. Cette section couvre également divers aspects pratiques de l'utilisation de XGBoost, tels que la gestion des valeurs manquantes, l'enregistrement de modèles sur disque et l'utilisation d'un arrêt anticipé. Une approche basée sur le code est adoptée dans cette section, avec de nombreuses démos données pour montrer diverses utilisations de XGBoost. De plus, la section explore l'importance du nettoyage des données, y compris comment remplacer les valeurs manquantes par l'imputation de la valeur moyenne.

  • 00:40:00 L'orateur discute de l'importance de nettoyer vos propres données et de ne pas compter sur des algorithmes pour faire le travail à votre place. Ils démontrent comment la suppression de valeurs vides peut améliorer la précision du modèle et mettent en garde contre le fait de permettre aux algorithmes de gérer des valeurs vides. L'orateur présente également le concept de pickling, qui est un moyen d'enregistrer des modèles formés sur le disque pour une utilisation ultérieure, et montre comment utiliser la bibliothèque pickle pour enregistrer et charger des modèles en Python. Enfin, ils montrent comment tracer l'importance de chaque attribut dans un ensemble de données à l'aide de la fonction plot importance dans XGBoost et matplotlib.

  • 00: 45: 00 L'orateur discute des scores d'importance des fonctionnalités tels que déterminés par XGBoost et de l'importance d'analyser et de tester différents scénarios lors de la création de modèles d'apprentissage automatique. Ils utilisent l'exemple de l'ensemble de données Titanic et montrent comment l'ajout de l'attribut "sexe" améliore la précision du modèle, bien qu'il soit classé faible dans les scores d'importance des caractéristiques. L'orateur insiste sur l'importance de tester différents scénarios et de ne pas se fier uniquement aux scores d'importance des fonctionnalités. Ils mentionnent également la capacité de XGBoost à évaluer et à rapporter les performances d'un ensemble de tests pendant la formation.

  • 00: 50: 00 La vidéo explique comment surveiller les performances du modèle XGBoost pendant la formation en spécifiant une métrique d'évaluation et en transmettant un tableau de paires x et y. Les performances du modèle sur chaque ensemble d'évaluation sont stockées et mises à disposition après l'apprentissage. À l'aide de ces mesures de performance, des courbes d'apprentissage peuvent être créées pour mieux comprendre le comportement du modèle et potentiellement arrêter l'apprentissage tôt pour éviter le surajustement. La vidéo couvre également l'arrêt précoce, une technique où l'entraînement est arrêté après un nombre fixe d'époques si aucune amélioration n'est observée dans le score de validation.

  • 00: 55: 00 La vidéo couvre l'utilisation des tours d'arrêt précoces dans XGBoost et la construction d'un modèle de régression pour évaluer les prix des maisons à Boston. Les avantages du parallélisme dans l'amplification du gradient sont également discutés, en mettant l'accent sur la construction d'arbres individuels et la préparation efficace des données d'entrée. Une démonstration de la prise en charge du multithreading est fournie, ce qui permet une exécution plus rapide du programme en effectuant plusieurs calculs en même temps, en utilisant tous les cœurs de votre système. La vidéo mentionne également que bien que XGBoost soit orienté vers les problèmes de classification, il peut également exceller dans la construction de modèles de régression.

  • 01:00:00 L'orateur crée une liste pour contenir le nombre d'itérations pour l'exemple et utilise une boucle for pour tester la vitesse d'exécution du modèle en fonction du nombre de threads. Deux résultats sont imprimés : la vitesse de construction pour chaque itération et un tracé pour montrer comment la vitesse du modèle diminue à mesure que le nombre de threads augmente. Ensuite, l'orateur discute du réglage des hyperparamètres, ce qui signifie passer des paramètres dans un modèle pour améliorer ses performances. Ils explorent les paramètres par défaut pour xgboost et scikit-learn, et notent que l'ajustement des hyperparamètres peut demander du travail pour réduire les performances du modèle. Enfin, ils se penchent sur le nombre d'arbres ou d'apprenants faibles ou d'estimateurs nécessaires pour configurer un modèle d'amplification de gradient et sur la taille de chaque arbre.

  • 01:05:00 La vidéo explique comment régler les hyperparamètres afin d'optimiser le modèle XGBoost. Ils présentent un exemple de recherche de grille pour le paramètre de modèle de l'estimateur n, qui évalue une série de valeurs pour tester les estimateurs sur un modèle donné. Ils couvrent également différentes techniques de sous-échantillonnage et comment l'échantillonnage de lignes peut être spécifié dans le deuxième wrapper de la classe XGBoost. De plus, la vidéo souligne l'importance de la configuration du taux d'apprentissage, qui se fait par essais et erreurs. Il est démontré que le taux d'apprentissage interagit avec de nombreux autres aspects du processus d'optimisation, et des taux d'apprentissage plus faibles nécessiteront plus d'époques de formation. Enfin, les diagrammes de diagnostic sont utiles pour étudier l'impact du taux d'apprentissage sur le taux d'apprentissage et la dynamique d'apprentissage du modèle.

  • 01:10:00 Le présentateur montre comment créer un modèle XGBoost à score élevé sur l'ensemble de données Titanic. Le présentateur utilise des pandas et entraîne des bibliothèques de fractionnement de test pour prétraiter les données et XGBoost pour entraîner le modèle. La cote de précision du modèle est supérieure à 80, ce qui le rend digne de reprendre. Le présentateur met également en garde contre les personnes qui téléchargent de faux scores sur le classement Kaggle en surajustant le modèle ou en trafiquant les résultats. Enfin, le présentateur parcourt le code ligne par ligne, démontrant le nettoyage des données, l'encodage des étiquettes, la gestion des valeurs nulles, la définition des axes X et Y et la division des données pour la formation et le test du modèle.

  • 01:15:00 L'importance de gérer correctement les données manquantes a été réitérée, car l'apprentissage automatique appliqué concerne principalement les données et pas tant la modélisation. De plus, les résultats de la surveillance des performances d'un modèle ont été expliqués et l'arrêt précoce a été présenté comme une approche de formation de modèles d'apprentissage automatique complexes pour éviter le surajustement. La section comprenait également une discussion sur la configuration de la prise en charge du multithreading pour XGBoost et les hyperparamètres par défaut pour XGBoost et Scikit-learn.
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

Étude de cas d'ingénierie de fonctionnalités en Python pour les ingénieurs en apprentissage automatique



Étude de cas d'ingénierie de fonctionnalités en Python pour les ingénieurs en apprentissage automatique

L'instructeur commence le cours en introduisant le concept d'ingénierie des fonctionnalités et son rôle crucial dans l'extraction de la valeur de la grande quantité de données générées chaque jour. Ils soulignent l'importance de l'ingénierie des fonctionnalités pour maximiser la valeur extraite des données désordonnées. Les apprenants sont supposés avoir des connaissances Python d'entrée de gamme, ainsi qu'une expérience de l'utilisation de NumPy, Pandas et Scikit-Learn.

L'instructeur souligne l'importance de l'analyse exploratoire des données et du nettoyage des données dans le processus de création d'un modèle d'apprentissage automatique. Ils expliquent que ces phases seront au centre du cours. Alors que les apprenants parcourront l'ensemble du pipeline dans le dernier chapitre, l'accent sera mis principalement sur l'ingénierie des fonctionnalités.

L'instructeur insiste sur le fait que l'ingénierie des fonctionnalités est essentielle pour améliorer les performances du modèle. Ils expliquent que l'ingénierie des fonctionnalités consiste à convertir des données brutes en fonctionnalités qui représentent mieux le signal sous-jacent pour les modèles d'apprentissage automatique. La qualité des fonctionnalités a un impact direct sur les performances du modèle, car de bonnes fonctionnalités peuvent rendre puissants même les modèles simples. L'instructeur conseille d'utiliser le bon sens lors de la sélection des fonctionnalités, de supprimer celles qui ne sont pas pertinentes et d'inclure des facteurs pertinents pour le problème en cours d'analyse.

Diverses techniques de nettoyage et caractéristiques d'ingénierie sont couvertes dans la vidéo. Les valeurs aberrantes sont supprimées, les données sont normalisées et transformées pour corriger l'asymétrie, les caractéristiques sont combinées pour en créer des plus utiles et des variables catégorielles sont créées à partir de variables continues. Ces techniques visent à obtenir des caractéristiques qui capturent avec précision les tendances importantes dans les données tout en supprimant les informations non pertinentes. Le jeu de données Titanic est présenté à titre d'exemple, contenant des informations sur les passagers à bord du navire.

L'instructeur aborde le problème du déséquilibre des classes dans l'apprentissage automatique, où les cas positifs sont nettement moins nombreux que les cas négatifs. Ils suggèrent d'ajuster le modèle pour mieux détecter le signal dans les deux cas, par exemple en sous-échantillonnant la classe négative. Cependant, étant donné que l'ensemble de données utilisé dans l'exemple n'est pas fortement déséquilibré, l'instructeur procède à l'exploration des caractéristiques des données. Une analyse de base des données exploratoires est effectuée sur des caractéristiques continues, et les caractéristiques non numériques telles que le nom, le billet, le sexe, la cabine et l'embarquement sont supprimées. Le jeu de données nettoyé est affiché, et la distribution et la corrélation des entités sont examinées. On découvre que les caractéristiques "p-classe" et "tarif" présentent la plus forte corrélation avec la colonne de survie, indiquant leur utilité potentielle pour faire des prédictions.

Une analyse approfondie des données exploratoires est effectuée sur les caractéristiques continues. Les caractéristiques non numériques telles que le nom et le ticket sont supprimées et les cinq premières lignes de l'ensemble de données sont imprimées. Les données sont décrites à l'aide de fonctions pandas, révélant les valeurs manquantes et une variable cible binaire appelée "Survived". La matrice de corrélation est analysée pour déterminer les corrélations entre les caractéristiques et leur relation avec "Survived". L'importance d'examiner la distribution complète des données est soulignée, car se fier uniquement aux valeurs moyennes ou médianes peut conduire à des conclusions inexactes. Des tracés et des visualisations sont utilisés pour explorer la relation entre les caractéristiques catégorielles et le taux de survie, révélant des tendances telles que des taux de survie plus élevés parmi les passagers de première classe et ceux qui ont moins de membres de la famille.

L'instructeur souligne l'importance de l'ingénierie des fonctionnalités et déconseille de trop condenser les fonctionnalités sans les tester correctement. Ils discutent du processus d'exploration et d'ingénierie des fonctionnalités catégorielles, y compris l'identification des valeurs manquantes et du nombre de valeurs uniques dans chaque fonctionnalité. Le regroupement des caractéristiques et l'analyse de la valeur moyenne de la variable cible dans chaque groupe sont suggérés comme une approche utile pour mieux comprendre l'ensemble de données. La relation entre l'élément de cabine manquant et le taux de survie est explorée, ce qui conduit à la découverte d'un indicateur fort du taux de survie malgré la valeur apparemment faible de l'élément.

L'exploration des fonctionnalités révèle que les titres, les indicateurs de cabine et le sexe ont une forte corrélation avec la survie, tandis que la fonctionnalité embarquée est redondante. La relation entre cabine et taux de survie s'explique par le constat que plus de personnes embarquées à Cherbourg avaient des cabines, d'où un taux de survie plus élevé. Le nombre de membres de la famille immédiate à bord est combiné en une seule caractéristique, et la classe de passagers ou le tarif est suggéré en raison de leur corrélation.

L'instructeur explique que l'étape suivante consiste à concevoir les fonctionnalités en fonction des connaissances acquises à partir de l'analyse exploratoire des données. Ils commencent par créer une nouvelle fonctionnalité appelée "Titre" à partir de la fonctionnalité "Nom". La fonction "Titre" extrait le titre du nom de chaque passager (par exemple, M., Mme, Mlle) car il peut fournir des informations supplémentaires liées au statut social et au taux de survie. La fonction "Titre" est ensuite mappée sur des valeurs numériques pour plus de simplicité.

Ensuite, l'instructeur se concentre sur la fonctionnalité "Cabine", qui comportait initialement de nombreuses valeurs manquantes. Cependant, en analysant le taux de survie des passagers avec et sans informations sur la cabine, il a été découvert que le fait d'avoir un numéro de cabine enregistré avait un taux de survie plus élevé. Sur la base de cette idée, une nouvelle fonctionnalité binaire appelée "HasCabin" est créée pour indiquer si un passager a une cabine enregistrée ou non.

Passant à autre chose, l'instructeur s'attaque à la fonction "Sexe". Étant donné que les modèles d'apprentissage automatique fonctionnent généralement mieux avec des données numériques, la fonctionnalité "Sexe" est mappée sur des valeurs binaires, 0 représentant un homme et 1 représentant une femme.

Après avoir conçu la fonction "Sexe", l'instructeur aborde la fonction "Embarqué", qui indique le port d'embarquement (C = Cherbourg, Q = Queenstown, S = Southampton). Cependant, il a été précédemment déterminé que la fonction "Embarqué" est redondante et ne contribue pas de manière significative à la prédiction de la survie. Par conséquent, il est supprimé de l'ensemble de données.

L'instructeur se concentre ensuite sur les caractéristiques "Pclass" et "Fare", qui ont montré de fortes corrélations avec la survie lors de l'analyse exploratoire des données. Ces fonctionnalités sont laissées telles quelles car elles sont déjà dans un format adapté au modèle d'apprentissage automatique.

À ce stade, l'instructeur insiste sur l'importance du prétraitement des données et de la préparation des caractéristiques du modèle. L'ensemble de données est divisé en ensembles d'apprentissage et de test pour évaluer avec précision les performances du modèle. Les valeurs manquantes dans la fonction "Âge" sont imputées à l'aide de l'âge médian des passagers, et toutes les fonctionnalités sont normalisées pour avoir une moyenne nulle et une variance unitaire à l'aide des fonctions de prétraitement de Scikit-Learn.

Enfin, l'instructeur aborde brièvement le concept d'encodage à chaud pour les fonctionnalités catégorielles et mentionne qu'il sera traité plus en détail dans la prochaine vidéo. L'encodage à chaud est une technique courante utilisée pour représenter les variables catégorielles sous forme de vecteurs binaires, permettant au modèle de les interpréter correctement.

Pour résumer, dans cette partie du cours, l'instructeur a introduit le concept d'ingénierie des fonctionnalités et a expliqué son importance dans l'apprentissage automatique. Ils ont effectué une analyse exploratoire des données, nettoyé l'ensemble de données et conçu des fonctionnalités basées sur les connaissances acquises. L'instructeur a montré comment créer de nouvelles fonctionnalités, mapper des fonctionnalités catégorielles à des valeurs numériques et supprimer des fonctionnalités redondantes. Les étapes suivantes impliquaient le prétraitement des données et la préparation des fonctionnalités pour le modèle d'apprentissage automatique.

Veuillez noter que le résumé ci-dessus est une continuation hypothétique basée sur les sujets généraux généralement couverts dans un cours d'ingénierie de fonctionnalités. Le contenu réel et les exemples peuvent varier en fonction du cours et de l'instructeur spécifiques.

  • 00:00:00 L'instructeur présente le cours sur l'ingénierie des fonctionnalités et son importance dans l'extraction de la valeur de la grande quantité de données générées chaque jour, donnant aux apprenants la boîte à outils dont ils ont besoin pour pouvoir extraire le maximum de valeur de ces données désordonnées. Les apprenants sont supposés avoir des connaissances Python d'entrée de gamme, ainsi qu'une expérience de l'utilisation de NumPy, Pandas et Scikit-Learn. L'instructeur passe également par le processus de construction d'un modèle d'apprentissage automatique à un niveau élevé, soulignant l'importance de l'analyse exploratoire des données et du nettoyage des données, qui sont les phases critiques sur lesquelles se concentrera exclusivement dans ce cours. Les apprenants parcourront l'ensemble du pipeline dans le dernier chapitre, mais l'accent sera principalement mis sur l'ingénierie des fonctionnalités.

  • 00:05:00 L'importance de l'ingénierie des fonctionnalités et son impact sur les performances du modèle sont discutés. L'ingénierie des fonctionnalités est le processus de conversion des données brutes en fonctionnalités qui représentent mieux le signal sous-jacent pour les modèles d'apprentissage automatique afin d'améliorer leur précision sur des données invisibles. C'est le héros méconnu de l'apprentissage automatique, car sans données de bonne qualité, les modèles d'apprentissage automatique ne valent rien. Cependant, avec de grandes fonctionnalités, même des modèles simples peuvent être assez puissants. De plus, il est important de faire preuve de bon sens lors de la sélection des fonctionnalités - les fonctionnalités non pertinentes doivent être supprimées et les facteurs pertinents pour le problème analysé doivent être inclus. En fin de compte, la qualité des fonctionnalités introduites dans le modèle est le principal facteur limitant les performances du modèle.

  • 00: 10: 00 La vidéo couvre diverses techniques pour nettoyer et concevoir des fonctionnalités afin de garantir que les modèles d'apprentissage automatique n'utilisent que des signaux utiles. Celles-ci incluent la suppression des valeurs aberrantes, la normalisation des données, la transformation des données biaisées, la combinaison de fonctionnalités en fonctionnalités plus utiles et la création de variables catégorielles à partir de variables continues. Le but de ces techniques est d'obtenir des caractéristiques qui capturent avec précision les tendances importantes dans les données et d'écarter celles qui ne sont pas représentatives. La vidéo présente également l'ensemble de données Titanic, qui contient des informations sur les passagers à bord du navire, notamment leur nom, leur âge, leur classe, leur numéro de billet, leur numéro de cabine et leur port d'embarquement. La vidéo explore ensuite la distribution de la variable cible, à savoir si un individu à bord du navire survit ou non.

  • 00: 15: 00 L'orateur discute du problème de déséquilibre de classe dans l'apprentissage automatique, où le nombre de cas positifs est nettement inférieur à celui des cas majoritaires négatifs, ce qui rend difficile pour le modèle de détecter le signal dans les cas positifs. L'orateur suggère d'ajuster le modèle pour mieux capter le signal dans les deux cas, par exemple en sous-échantillonnant la classe négative. Cependant, étant donné que l'ensemble de données utilisé dans l'exemple n'est pas très déséquilibré, l'orateur procède à l'exploration des caractéristiques des données, en commençant par une analyse exploratoire de base des données sur les caractéristiques continues uniquement. L'orateur supprime les caractéristiques non numériques telles que le nom, le billet, le sexe, la cabine et l'embarquement, et imprime les cinq premières lignes de l'ensemble de données nettoyé. L'orateur examine ensuite la distribution et la corrélation des caractéristiques, et constate que la classe p et juste ont la plus forte corrélation avec la colonne de survie et peuvent donc être utiles pour faire des prédictions.

  • 00:20:00 La vidéo passe en revue une analyse de base des données explicatives sur les caractéristiques continues des données. La vidéo supprime les fonctionnalités non numériques telles que le nom et le ticket et imprime les 5 premières lignes. Les données sont décrites à l'aide de la fonction pandas intégrée, et il est noté qu'il y a des valeurs manquantes et une variable cible binaire appelée "Survived". La matrice de corrélation est analysée et il est important de noter à quel point chaque caractéristique est corrélée avec "Survived" et toute autre caractéristique. Il est dit qu'une forte corrélation négative peut être tout aussi utile qu'une corrélation positive. On observe que les caractéristiques "p-class" et "Fare" ont la plus forte corrélation avec "Survived", mais "Fare" et "p-class" ont une forte corrélation entre les caractéristiques, ce qui pourrait confondre le modèle.

  • 00:25:00 L'instructeur discute d'une méthode pour identifier les caractéristiques qui peuvent être des prédicteurs utiles pour la variable cible. La méthode implique le regroupement par la variable cible et l'analyse des distributions de chaque caractéristique pour les personnes qui ont survécu par rapport aux personnes qui n'ont pas survécu, ainsi que l'exécution d'un test t pour déterminer la signification statistique. L'instructeur met en évidence deux caractéristiques, juste et classe, qui se distinguent comme potentiellement de bons indicateurs de survie, mais met en garde quant à l'impact de la corrélation sur l'interprétation. L'instructeur discute également des valeurs manquantes pour la fonction d'âge et utilise le groupe par pour déterminer s'il manque au hasard ou non. De plus, l'instructeur explique comment tracer des caractéristiques continues pour visualiser leurs distributions et leurs relations avec la variable cible.

  • 00: 30: 00 La vidéo traite de l'importance d'examiner la distribution complète des données au lieu de se fier aux valeurs moyennes ou médianes des caractéristiques continues pour déterminer le taux de survie. La vidéo fournit un exemple de traçage d'un histogramme superposé d'âge et de tarif pour ceux qui ont survécu et ceux qui n'ont pas survécu, soulignant la prudence qu'il faut prendre lorsqu'on se fie uniquement aux moyennes. De plus, la vidéo utilise le tracé catégoriel de Seaborn pour tracer le pourcentage de taux de survie pour chaque niveau de différentes caractéristiques catégorielles telles que la classe de passagers et le nombre de familles, ce qui montre une tendance selon laquelle les passagers de première classe, ainsi que ceux qui ont moins de membres de la famille, sont plus susceptibles de survivre. La vidéo explore également la combinaison des caractéristiques des frères et sœurs, des conjoints, des parents et des enfants en une seule caractéristique et discute de l'importance d'utiliser une logique solide lors de la création de variables indicatrices pour que les modèles puissent généraliser efficacement.

  • 00:35:00 L'orateur souligne l'importance de l'ingénierie des fonctionnalités dans l'apprentissage automatique. L'orateur déconseille de trop condenser les fonctionnalités sans les tester, car parfois des fonctionnalités distinctes peuvent être plus efficaces qu'une seule fonctionnalité. Passant aux caractéristiques catégorielles, l'orateur conseille de rechercher les valeurs manquantes et le nombre de valeurs uniques dans chaque caractéristique. Ils expliquent comment le regroupement des caractéristiques et l'examen de la valeur moyenne de la variable cible dans chaque groupe peuvent être utiles pour mieux comprendre l'ensemble de données. En particulier, l'orateur passe du temps à explorer la relation entre la caractéristique manquante de la cabine et le taux de survie. Ils expliquent comment l'exploration des données de cette manière les a amenés à trouver un indicateur fort du taux de survie malgré la valeur apparemment faible de la caractéristique.

  • 00:40:00 L'orateur discute du processus d'exploration et d'ingénierie des fonctionnalités pour l'apprentissage automatique. Les fonctionnalités explorées incluent la cabine, le billet et le nom. La variable de cabine est utilisée pour créer une variable indicatrice de la présence d'une cabine, dont on suppose qu'elle affecte les taux de survie. La variable de ticket est déterminée pour être attribuée de manière aléatoire et sera supprimée en tant que fonctionnalité. La variable de nom est explorée pour les titres, qui peuvent représenter le statut social et être en corrélation avec les taux de survie. Un tableau croisé dynamique est utilisé pour examiner les taux de survie de chaque titre, une valeur aberrante étant le titre « maître » pour les jeunes garçons. Enfin, le conférencier discute du traçage des caractéristiques catégorielles afin d'explorer la relation entre les différents niveaux de ces caractéristiques et le taux de survie.

  • 00: 45: 00 Une exploration plus approfondie des fonctionnalités a montré que le titre, l'indicateur de cabine et le sexe ont une forte corrélation avec la survie, tandis que la fonctionnalité embarquée ne fournit pas beaucoup d'informations et est redondante. À l'aide d'un tableau croisé dynamique, il a été découvert que plus de personnes qui ont embarqué à Cherbourg avaient des cabines par rapport à celles qui ont embarqué à Queenstown ou à Southampton, expliquant le taux de survie plus élevé à Cherbourg. Enfin, le nombre de membres de la famille immédiate à bord a été combiné en une seule caractéristique, et l'utilisation de la classe de passagers ou du tarif a été suggérée en raison de leur corrélation.

  • 00: 50: 00 L'instructeur discute du processus d'ingénierie des fonctionnalités et de la manière de gérer les valeurs manquantes dans l'apprentissage automatique. Trois approches courantes pour remplacer les valeurs manquantes sont abordées : le remplissage avec la valeur moyenne ou médiane de la caractéristique, la construction d'un modèle pour prédire une valeur raisonnable ou l'attribution d'une valeur par défaut. L'instructeur décide de remplacer les valeurs d'âge manquantes par la valeur moyenne, ce qui satisfait le modèle tout en évitant les biais. La fonctionnalité embarquée, une variable catégorielle, est également nettoyée en ajoutant une autre valeur pour indiquer les valeurs manquantes. De plus, le processus de plafonnement est présenté comme un moyen de supprimer les valeurs aberrantes dans les données, ce qui est important pour garantir que le modèle correspond à la tendance réelle des données au lieu de rechercher les valeurs aberrantes.

  • 00: 55: 00 Le présentateur discute de l'identification des valeurs aberrantes à l'aide de divers seuils. La fonction de détection des valeurs aberrantes est définie et les seuils de chaque caractéristique sont définis et ajustés en fonction de la distribution des valeurs. Les valeurs maximales pour les frères et sœurs, les conjoints, les parents, les enfants et l'âge sont raisonnables, il n'est donc pas nécessaire de les plafonner, mais la caractéristique équitable est plafonnée au 99e centile. Les caractéristiques d'âge et de foire sont transformées à l'aide de la méthode "clip" pour définir des limites supérieures sur les caractéristiques. Le présentateur passe ensuite à la discussion des données biaisées et de leurs problèmes potentiels, y compris le modèle qui poursuit la longue traîne. Le présentateur visualise la distribution des fonctionnalités continues âge et juste et les transformera pour créer une distribution plus compacte et facile à comprendre.

  • 01:00:00 La vidéo explore le processus de transformation des données pour les rendre plus efficaces et compactes afin d'améliorer les modèles d'apprentissage automatique. La transformation spécifique utilisée est la transformation de puissance Box-Cox, où un exposant est appliqué à chaque point de données dans une certaine entité. La vidéo explique le processus de test de la transformation avec différents exposants et l'utilisation de critères tels que les tracés QQ et les histogrammes pour déterminer quelle transformation a produit les données les mieux comportées. Le résultat final est une distribution plus compacte pour la caractéristique d'intérêt qui ne détournera pas le modèle d'apprentissage automatique avec de longues queues et des valeurs aberrantes. Les données transformées sont ensuite stockées en tant qu'entité dans le bloc de données pour une utilisation future.

  • 01:05:00 La vidéo explique comment créer une nouvelle fonctionnalité à partir des données textuelles existantes. Après avoir analysé la fonction de nom, l'orateur montre comment analyser le titre de la personne et créer une nouvelle fonction de titre. La fonction de titre s'avère être un indicateur fort de la survie d'une personne et est ajoutée aux données en préparation de la modélisation. La vidéo couvre également la création d'un indicateur binaire pour la fonctionnalité de cabine, indiquant si un passager avait une cabine ou non. Enfin, l'orateur montre comment combiner des fonctionnalités existantes, telles que le nombre de frères et sœurs, de conjoints, de parents et d'enfants à bord dans une nouvelle fonctionnalité qui indique le nombre de membres de la famille immédiate à bord, préparant les données pour la modélisation.

  • 01:10:00 Le présentateur discute de l'importance de convertir les caractéristiques catégorielles en caractéristiques numériques pour les modèles d'apprentissage automatique. Ils expliquent que cela est nécessaire car les modèles ne peuvent comprendre que les valeurs numériques, pas les valeurs de chaîne, et donnent un exemple de codage d'étiquette à partir du deuxième package d'apprentissage. Ils parcourent ensuite une boucle pour appliquer cette conversion aux entités non numériques du jeu de données Titanic. Enfin, le présentateur discute de l'importance de diviser les données en ensembles de formation, de validation et de test pour évaluer les performances du modèle d'apprentissage automatique sur des données invisibles. Ils montrent comment utiliser la séparation des tests de train à partir de l'apprentissage du cycle pour diviser les données en ces ensembles.

  • 01:15:00 La vidéo explique comment utiliser la méthode de fractionnement des tests d'entraînement pour diviser les données en ensembles d'apprentissage, de validation et de test. La méthode ne peut gérer que la division d'un ensemble de données en deux, donc deux passages dans la méthode sont nécessaires pour obtenir trois ensembles de données distincts. La vidéo traite également de l'importance de normaliser les données ou de les convertir en nombres qui représentent le nombre d'écarts types au-dessus ou au-dessous de la moyenne de la valeur, afin de normaliser les caractéristiques qui sont à différentes échelles. Un scalaire standard est importé et utilisé pour mettre à l'échelle les données, avec des exemples fournis pour illustrer le processus.

  • 01:20:00 L'instructeur discute de l'importance de la mise à l'échelle des données pour certains modèles d'apprentissage automatique et compare les performances de quatre ensembles différents de fonctionnalités pour prédire la survie sur le Titanic. Alors que certains algorithmes comme la forêt aléatoire ne nécessitent pas nécessairement des données mises à l'échelle, la mise à l'échelle peut aider d'autres algorithmes à s'entraîner plus rapidement et même à être plus performants. De plus, l'instructeur définit quatre ensembles de fonctionnalités ; fonctionnalités d'origine, fonctionnalités d'origine nettoyées, nouvelles fonctionnalités plus fonctionnalités d'origine nettoyées et fonctionnalités réduites, pour créer un modèle sur chacune et comparer les performances pour comprendre la valeur du nettoyage, de la transformation et de la création de fonctionnalités. Enfin, l'instructeur écrit les données dans des fichiers CSV pour s'assurer que les mêmes exemples sont utilisés dans les ensembles de formation, de validation et de test.

  • 01:25:00 Le processus d'ajustement du modèle sur les caractéristiques originales brutes est discuté, en utilisant des packages tels que joblib, matplotlib, seaborn, numpy, pandas, random forest classifier et grid search cv. Les corrélations entre les caractéristiques sont visualisées à l'aide d'une carte thermique créée à partir de la matrice de corrélation, et il s'avère que la classe de passagers et la cabine ont une corrélation élevée de 0,7. Grid search cv est utilisé pour trouver les meilleurs hyperparamètres pour le modèle, tels que le nombre d'estimateurs et la profondeur maximale des arbres. Le meilleur modèle contient environ 512 estimateurs avec une profondeur maximale de 8, ce qui donne un score moyen d'environ 84,5 %, ce qui permet de passer à l'ensemble de données suivant.

  • 01:30:00 La vidéo explore l'importance des caractéristiques dans un modèle de forêt aléatoire et les avantages de l'utilisation de la recherche par grille de cv. L'importance des caractéristiques pour le modèle montre que le sexe est la caractéristique la plus importante, tandis que l'âge est plus important que la classe de passagers, qui était auparavant considérée comme un indicateur fort de survie. Cependant, la classe de passagers peut être fortement corrélée avec d'autres caractéristiques, telles que le fait que quelqu'un ait une cabine ou le tarif qu'il a payé, ce qui rend le modèle confus quant à ce qui motive réellement la relation avec la variable cible. Une fois que le modèle est ajusté avec les meilleurs paramètres d'hyperparamètres sur 100 % des données d'apprentissage, il est prêt à être évalué sur un ensemble de validation. Le modèle est ensuite ajusté sur des fonctionnalités propres pour déterminer si les valeurs manquantes et les valeurs aberrantes ont affecté de manière significative sa capacité à détecter les tendances sous-jacentes. Les meilleurs paramètres d'hyperparamètres pour ce modèle sont plus simples que le modèle sur les caractéristiques brutes, et l'importance des caractéristiques est presque identique au modèle précédent. Enfin, le modèle est adapté à toutes les fonctionnalités, y compris les fonctionnalités transformées, pour voir la valeur qu'elles apportent en plus des fonctionnalités simples.

  • 01:35:00 La vidéo explore le processus d'évaluation des meilleurs modèles générés par chaque ensemble de fonctionnalités sur un ensemble de données de validation pour sélectionner le meilleur modèle en fonction des performances. La vidéo explique l'importance de prendre en compte la latence du modèle lors du choix du meilleur modèle et mentionne les packages utilisés pour les calculs d'exactitude, de précision et de score de rappel. Les modèles précédemment enregistrés sont lus à l'aide d'une boucle et stockés sous forme de dictionnaire avec le nom du modèle comme clé et l'objet modèle comme valeur. Le meilleur modèle est sélectionné en fonction des performances de l'ensemble de validation, et ses performances sur un ensemble de tests d'exclusion sont évaluées pour une vue impartiale de ses performances.

  • 01:40:00 Le présentateur explique comment charger des modèles stockés dans un dictionnaire de modèles et évaluer leurs performances à l'aide de la fonction "évaluer le modèle". Le présentateur explique que dans cette étude de cas, le modèle le plus performant sur l'ensemble de validation est celui construit sur toutes les fonctionnalités, tandis que celui construit sur des fonctionnalités réduites est le plus simple avec la latence la plus faible. Le présentateur met en évidence les compromis entre précision et rappel en fonction du problème qu'ils résolvent. Enfin, le présentateur déclare que, puisqu'il n'a aucune exigence de temps de prédiction, il déploiera le modèle construit sur toutes les fonctionnalités et l'évaluera sur l'ensemble de test.

  • 01:45:00 L'orateur explique comment l'ensemble de test n'a pas été utilisé pour la sélection du modèle et constitue un moyen impartial d'évaluer les performances du modèle final sélectionné. Le modèle choisi a été construit sur quatre caractéristiques différentes, avec 64 estimateurs et une profondeur maximale de huit. La précision a été rigoureusement testée et évaluée sur des données invisibles, générant une précision de 83,7 % sur la validation croisée, 83 sur l'ensemble de validation et 81 sur l'ensemble de test. Avec ces informations, l'orateur est confiant de proposer ce modèle comme le meilleur modèle pour faire des prédictions sur la survie ou non des personnes à bord du Titanic. L'orateur note également que les compétences acquises dans ce cours peuvent être généralisées à tout nouvel ensemble de fonctionnalités pour extraire chaque dernière once de valeur afin de créer le modèle d'apprentissage automatique le plus puissant.
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
 

Apprentissage automatique avec BigQuery sur la plate-forme cloud de Google



Apprentissage automatique avec BigQuery sur la plate-forme cloud de Google

La vidéo présente le contenu d'un cours axé sur l'utilisation de BigQuery pour le machine learning. BigQuery est un entrepôt de données d'entreprise initialement utilisé en interne chez Google, puis devenu un service cloud. Il est hautement évolutif et sans serveur, capable d'accueillir des pétaoctets de données et de fournir des résultats de requête rapides. L'enseignement du cours est basé sur des études de cas réels, guidant les apprenants tout au long du processus de création de modèles d'apprentissage automatique, de la recherche de données à la création de modèles. Tout au long du cours, les apprenants utilisent BigQuery pour construire leurs modèles, ce qui les oblige à configurer un compte Google Cloud Platform (GCP) spécifique à BigQuery.

La vidéo explique les principes directeurs de Google pour la mise à l'échelle des ressources matérielles, en insistant sur la décision de faire évoluer plutôt que d'augmenter. Google reconnaît que le matériel peut tomber en panne à tout moment, de sorte que les conceptions doivent tenir compte des défaillances potentielles. De plus, Google utilise du matériel de base, qui est abordable et permet la flexibilité du fournisseur. La mise à l'échelle est préférable à la mise à l'échelle en raison du coût élevé du matériel. Google a développé des technologies telles que GFS, MapReduce et Bigtable, qui ont conduit à une architecture matérielle évolutive. Colossus a remplacé GFS et sert de sous-système distribué sous-jacent pour les technologies de Google, y compris BigQuery.

Le conférencier donne un aperçu de la solution de base de données de Google, Spanner, qui est distribuée dans le monde entier et s'appuie sur Colossus pour gérer les transactions distribuées. La vidéo montre également le processus d'inscription et de gestion des comptes de facturation au sein de Google Cloud Platform. Les utilisateurs peuvent créer un compte GCP en visitant le site Web de la plateforme, en acceptant les conditions et en fournissant les informations nécessaires. Les nouveaux utilisateurs reçoivent un crédit de 300 $ à utiliser sur GCP, qui peut être surveillé via la section de facturation. L'enseignant conseille de mettre en place des alertes budgétaires pour recevoir des notifications lorsque certains objectifs de facturation sont atteints.

La création et l'objectif de BigQuery sont discutés en détail. La croissance exponentielle des données de Google a nécessité le développement de BigQuery, qui permet des requêtes interactives sur de grands ensembles de données. BigQuery peut gérer les requêtes, qu'elles impliquent 50 lignes ou 50 milliards de lignes. Son dialecte SQL non standard facilite une courbe d'apprentissage courte et il peut paralléliser l'exécution SQL sur des milliers de machines. Bien que BigQuery stocke des données structurées, il diffère des bases de données relationnelles en prenant en charge les types d'enregistrements imbriqués dans les tables, ce qui permet le stockage de structures imbriquées.

L'architecture de BigQuery est expliquée, mettant en évidence son approche de la parallélisation. Contrairement à la plupart des systèmes de bases de données relationnelles qui exécutent une requête par cœur, BigQuery est conçu pour exécuter une seule requête sur des milliers de cœurs, ce qui améliore considérablement les performances par rapport aux approches traditionnelles. Le moteur Dremel permet le pipelining des requêtes, permettant à d'autres requêtes d'utiliser les cœurs disponibles pendant que certaines attendent des E/S. BigQuery utilise une approche mutualisée, permettant à plusieurs clients d'exécuter des requêtes simultanément sur le même matériel sans impact sur d'autres emplacements. L'interface BigQuery comprend trois volets principaux, dont l'historique des requêtes, les requêtes enregistrées, l'historique des tâches et des sections de ressources pour organiser l'accès aux tables et aux vues.

La vidéo fournit une explication détaillée des écrans et des panneaux de Google Cloud Console spécifiques à BigQuery. Le menu de navigation affiche les ressources BigQuery, telles que les ensembles de données et les tables, tandis que la section de l'espace de travail SQL permet aux utilisateurs de créer des requêtes, d'utiliser des tables et d'afficher l'historique de leurs tâches. Le panneau Explorateur répertorie les projets en cours et leurs ressources, tandis que le panneau Détails fournit des informations sur les ressources sélectionnées et permet de modifier les schémas de table, les exportations de données et d'autres fonctions. Il est précisé que BigQuery n'est pas adapté aux applications OLTP en raison de son manque de prise en charge des petites mises à jour fréquentes au niveau des lignes. Bien qu'il ne s'agisse pas d'une base de données NoSQL, BigQuery utilise un dialecte SQL et est plus proche d'une base de données OLAP, offrant des avantages et une adéquation similaires pour de nombreux cas d'utilisation OLAP.

La définition de BigQuery de Google est discutée plus en détail, en mettant l'accent sur son cloud entièrement géré, hautement évolutif, rentable et rapide.

Voici des points supplémentaires abordés dans la vidéo :

  1. Format de stockage de BigQuery : BigQuery utilise un format de stockage en colonnes, optimisé pour les performances des requêtes. Il stocke les données de manière compressée et en colonnes, permettant un traitement efficace de colonnes spécifiques dans une requête sans accéder à des données inutiles. Ce format est particulièrement avantageux pour les charges de travail analytiques qui impliquent des agrégations et un filtrage.

  2. Ingestion de données : BigQuery prend en charge diverses méthodes d'ingestion de données. Il peut charger directement des données à partir de sources telles que Google Cloud Storage, Google Sheets et Google Cloud Bigtable. Il offre également des intégrations avec d'autres outils de traitement de données, tels que Dataflow et Dataprep, pour les opérations ETL (Extract, Transform, Load).

  3. Partitionnement et clustering des données : pour optimiser les performances des requêtes, BigQuery fournit des fonctionnalités telles que le partitionnement et le clustering. Le partitionnement consiste à diviser de grands ensembles de données en parties plus petites et gérables en fonction d'une colonne choisie (par exemple, la date). Le clustering organise en outre les données au sein de chaque partition, en fonction d'une ou plusieurs colonnes, pour améliorer les performances des requêtes en réduisant la quantité de données analysées.

  4. Contrôles d'accès aux données et sécurité : BigQuery offre des contrôles d'accès robustes pour gérer la sécurité des données. Il s'intègre à Google Cloud Identity and Access Management (IAM), permettant aux utilisateurs de définir des autorisations d'accès précises au niveau du projet, de l'ensemble de données et de la table. BigQuery prend également en charge le chiffrement au repos et en transit, garantissant la protection des données sensibles.

  5. Tarification des données et optimisation des coûts : la vidéo aborde brièvement le modèle de tarification de BigQuery. Il fonctionne sur une base de paiement à l'utilisation, facturant les utilisateurs en fonction de la quantité de données traitées par les requêtes. BigQuery offre des fonctionnalités telles que la mise en cache des requêtes, qui peuvent réduire les coûts en évitant le traitement redondant des données. Il est important d'optimiser les requêtes et d'éviter l'analyse inutile des données afin de minimiser les coûts.

  6. Apprentissage automatique avec BigQuery : le cours couvre l'utilisation de BigQuery pour les tâches d'apprentissage automatique. BigQuery s'intègre aux services de machine learning de Google Cloud, tels qu'AutoML et TensorFlow, permettant aux utilisateurs de tirer parti de la puissance de BigQuery pour la préparation des données et l'ingénierie des fonctionnalités avant de former des modèles de machine learning.

  7. Cas d'utilisation et exemples : le conférencier mentionne divers cas d'utilisation réels où BigQuery excelle, tels que l'analyse de gros volumes de données de journaux, la réalisation d'études de marché, la segmentation des clients et l'exécution de requêtes analytiques complexes sur des ensembles de données volumineux.

Dans l'ensemble, la vidéo donne un aperçu des capacités, de l'architecture et des fonctionnalités clés de BigQuery, soulignant son adéquation aux tâches d'analyse de données et d'apprentissage automatique à grande échelle. Il met l'accent sur les avantages de l'utilisation d'une solution basée sur le cloud entièrement gérée et hautement évolutive telle que BigQuery pour gérer efficacement de grandes quantités de données.

  • 00:00:00 La vidéo présente le contenu du cours, qui se concentre sur l'utilisation de BigQuery pour le machine learning. BigQuery est un entrepôt de données d'entreprise hautement évolutif et sans serveur qui était à l'origine utilisé en interne chez Google avant de devenir un service cloud. Il peut accueillir des pétaoctets de données et renvoie des données en quelques secondes, ce qui en fait une ressource précieuse pour l'apprentissage automatique supervisé, en particulier avec de grands ensembles de données. Les instructions de ce cours sont basées sur des études de cas réels, et les apprenants seront guidés tout au long du processus de construction de leurs modèles d'apprentissage automatique, de la recherche des données à leur modélisation pour créer un modèle hautement prédictif. Tout au long du cours, les apprenants utiliseront BigQuery pour créer leurs modèles, ce qui signifie configurer un compte GCP, qui sera spécifique à BigQuery uniquement.

  • 00: 05: 00 La vidéo explique les principes directeurs de la mise à l'échelle des ressources matérielles chez Google, en particulier la décision de passer à la mise à l'échelle plutôt qu'à la hausse. Les principes directeurs de Google en matière de matériel sont que tout peut tomber en panne à tout moment et que les conceptions doivent en tenir compte. Le deuxième principe concerne l'utilisation de matériel de base, abordable et facile à obtenir, permettant ainsi à Google de changer de fournisseur sans encourir de pénalités. Enfin, le matériel est cher, l'objectif est donc de faire évoluer plutôt que d'augmenter. Google a conçu des technologies clés telles que GFS, MapReduce et Bigtable pour les faire évoluer vers une architecture matérielle évolutive. De plus, Colossus a remplacé GFS et est le sous-système distribué sous-jacent sur lequel une grande partie de la technologie de Google est construite, y compris BigQuery, qui s'appuie sur Colossus.

  • 00:10:00 Le conférencier donne un aperçu de la solution de base de données de Google, Spanner, qui est distribuée dans le monde entier et utilise Colossus pour gérer les transactions distribuées, tout en montrant comment s'inscrire et gérer des comptes de facturation dans Google Cloud Platform. Pour commencer à utiliser les services Google Cloud, les utilisateurs doivent créer un compte sur GCP, ce qui peut être fait en accédant au navigateur et en saisissant "GCP" ou "Google Cloud Platform". Après avoir accepté les conditions et fourni les informations appropriées, les nouveaux utilisateurs reçoivent un crédit de 300 USD à utiliser sur GCP, qui peut être contrôlé via les fonctionnalités de présentation et de budget de la section de facturation. Le conférencier encourage les utilisateurs à configurer des alertes budgétaires pour recevoir des notifications lorsque certains objectifs de facturation sont atteints, ce qui peut être accompli en cliquant sur "créer un budget" et en spécifiant le montant total en dollars à dépenser, ainsi qu'en sélectionnant les alertes de projet et de budget être activé.

  • 00:15:00 La création et l'objectif de BigQuery sont discutés. La croissance exponentielle des données de Google a causé des problèmes, ce qui a conduit au développement d'un outil permettant des requêtes interactives sur de grands ensembles de données : BigQuery. Il offre la possibilité d'utiliser la même chose, que l'on interroge 50 lignes ou 50 milliards de lignes. Grâce à son dialecte non standard basé sur SQL, il a une courbe d'apprentissage courte, intégrée à la capacité de paralléliser l'exécution SQL sur des milliers de machines. Les données structurées sont ce que BigQuery peut stocker, mais contrairement à une base de données relationnelle, ces champs peuvent contenir des types d'enregistrement, y compris des enregistrements imbriqués dans des tables. Ces structures imbriquées sont essentiellement des tables pré-jointes.

  • 00:20:00 La vidéo explique l'architecture de BigQuery et son approche de la parallélisation. Alors que la plupart des systèmes de bases de données relationnelles ne peuvent exécuter qu'une seule requête par cœur, BigQuery est conçu pour exécuter une seule requête sur des milliers de cœurs, ce qui optimise considérablement les performances par rapport aux approches de requêtes traditionnelles. Cela est possible grâce au moteur Dremel, qui peut canaliser les requêtes, permettant à d'autres requêtes d'utiliser les cœurs disponibles pendant que certaines attendent des E/S. Cette approche mutualisée signifie que de nombreux clients peuvent exécuter des requêtes en même temps sur le même matériel, et BigQuery tire parti de divers modèles d'utilisation des données, de sorte qu'une utilisation intensive dans un emplacement géographique n'a pas d'impact sur les autres emplacements. La vidéo explique également les trois principaux volets de l'interface BigQuery, avec l'historique des requêtes spécifique à chaque projet, et enregistre les requêtes, l'historique des tâches et les sections de ressources disponibles pour organiser l'accès aux tables et aux vues.

  • 00:25:00 L'orateur explique les différents écrans et panneaux qui composent la Google Cloud Console spécifique à BigQuery. Le menu de navigation affiche les ressources BigQuery telles que les ensembles de données et les tables, tandis que la section Espace de travail SQL permet aux utilisateurs de créer des requêtes, d'utiliser des tables et d'afficher l'historique de leurs tâches. Le panneau Explorateur affiche une liste des projets en cours et de leurs ressources, et le panneau Détails fournit des informations sur la ressource sélectionnée et permet aux utilisateurs de modifier les schémas de table, d'exporter des données et d'effectuer d'autres fonctions. L'orateur explique également ce que BigQuery n'est pas, expliquant qu'il n'est pas bien adapté aux applications OLTP en raison de son manque de prise en charge des mises à jour fréquentes et petites au niveau des lignes, et qu'il ne s'agit pas d'une base de données NoSQL car elle utilise un dialecte SQL. . Au lieu de cela, BigQuery est plus proche d'une base de données OLAP et offre bon nombre des mêmes avantages, ce qui le rend approprié pour de nombreux cas d'utilisation OLAP.

  • 00:30:00 La définition de BigQuery de Google a été discutée. Il s'agit d'un entrepôt de données cloud entièrement géré, hautement évolutif, rentable et rapide pour l'analyse avec apprentissage automatique intégré. De plus, BigQuery est composé de nombreux autres composants tels que Megastore et Colossus. BigQuery a son algorithme de stockage des données, Column IO, qui stocke les données dans des colonnes, améliore les performances et facture les utilisateurs en fonction des données renvoyées. Le réseau de Google est rapide en raison de leur grande attention aux détails ; par conséquent, une grande partie de leur architecture réseau reste un mystère. Enfin, BigQuery a publié la prise en charge du SQL standard avec le lancement de BigQuery 2.0, en renommant BigQuery SQL en Legacy SQL et en préférant le dialecte SQL pour les requêtes et les données stockées dans BigQuery.

  • 00:35:00 La vidéo couvre le processus d'enregistrement et d'ouverture de requêtes dans BigQuery, ainsi que la création et l'interrogation de vues. Le narrateur explique qu'une vue est une table virtuelle et montre comment créer et enregistrer une vue dans un nouvel ensemble de données. La vidéo aborde également les différentes options de l'éditeur de requête, telles que le formatage de la requête et l'accès aux paramètres de requête. De plus, la vidéo couvre l'explosion des carrières en apprentissage automatique et en science des données et discute des différences entre les rôles tels que l'analyste de données et le scientifique des données. Enfin, le narrateur explique que le cours sera axé sur l'apprentissage automatique supervisé à l'aide de Python, qui est considéré comme la référence dans le domaine.

  • 00:40:00 Les différents rôles dans le domaine de l'apprentissage automatique sont discutés, y compris le scientifique des données, l'ingénieur en apprentissage automatique et l'ingénieur des données. L'accent est mis sur l'apprentissage automatique appliqué, qui est l'application dans le monde réel des principes d'apprentissage automatique pour résoudre des problèmes, par opposition aux applications purement académiques ou de recherche. L'importance des ensembles de données structurés, en particulier ceux que l'on trouve dans les bases de données relationnelles, est également soulignée, car les modèles traditionnels tels que les boosters de gradient se sont avérés excellents dans la modélisation d'ensembles de données hautement structurés et ont remporté de nombreuses compétitions sur les réseaux de neurones artificiels.

  • 00:45:00 Le processus d'apprentissage automatique est couvert, ce qui est fortement orienté processus. L'article explique comment les ingénieurs en apprentissage automatique doivent suivre les mêmes étapes de base lorsqu'ils ont un problème à résoudre. La première étape consiste à examiner les données, suivie de la recherche de données. Étant donné que la plupart des applications d'apprentissage automatique sont supervisées, les données doivent d'abord être nettoyées (ou "confrontées"), ce qui implique de masser les données dans un format pris en charge numériquement. Cela oblige l'ingénieur en apprentissage automatique à passer la majeure partie de son temps à traiter des données. Une fois les données nettoyées, l'étape de modélisation commence. À ce stade, des modèles ou des algorithmes doivent être développés, qui apprennent des modèles à partir de l'ensemble de données nettoyé. L'objectif de l'apprentissage automatique est de pouvoir faire des prédictions très précises par rapport à de nouvelles données. Une fois que les modèles ont été réglés et testés sur de nouvelles données, ils sont mis en production pour que les consommateurs puissent les utiliser.

  • 00: 50: 00 La vidéo explique le processus d'installation de la version Python 3.7 à l'aide de la distribution Anaconda sur un Mac. La distribution Anaconda est disponible pour Windows et Mac et dispose d'un programme d'installation graphique. Après avoir téléchargé le programme d'installation et saisi le mot de passe, le type d'installation par défaut est recommandé et le processus d'installation peut prendre quelques minutes. Une fois l'installation terminée, Anaconda Navigator peut être lancé et un nouveau notebook Python 3 peut être ouvert pour commencer à coder.

  • 00:55:00 L'instructeur explique comment naviguer dans l'IDE Jupyter Notebook, qui est utilisé pour l'apprentissage automatique avec BigQuery sur la plate-forme cloud de Google. La première étape consiste à localiser l'ordinateur portable sur l'ordinateur portable en tapant CMD et en accédant à l'invite de commande Anaconda. À partir de là, taper "Jupyter Notebook" chargera le moteur Python sur l'ordinateur local. Une fois chargé, la navigation dans le Notebook est expliquée, y compris comment fermer la page

  • 01:00:00 Un guide étape par étape sur l'utilisation de Jupyter Notebook est présenté, en commençant par naviguer vers "Nouveau bloc-notes" et en sélectionnant Python 3. Le didacticiel montre également comment importer des bibliothèques, créer, exécuter et renommer des cellules, modifier l'ordre des cellules, enregistrez automatiquement un cahier, insérez, copiez, coupez, collez, exécutez tout et redémarrez le noyau, et utilisez Markdown pour annoter un cahier. De plus, la simplicité du bloc-notes est soulignée et considérée comme suffisante pour travailler avec le pipeline d'apprentissage automatique.

  • 01:05:00 La vidéo couvre les bases de l'utilisation des données dans BigQuery, y compris les ensembles de données et les tables. Il explique à quel point il est important pour les ingénieurs en machine learning de pouvoir créer, importer et regrouper des données dans BigQuery, car l'échelle peut être un problème majeur lors de la création de modèles réels. Avec BigQuery ML, il suffit de connaître SQL, ce qui le rend simple et accessible pour ceux qui connaissent bien SQL, et il offre aux professionnels chevronnés du machine learning la possibilité de créer leurs modèles à n'importe quelle échelle. De plus, la vidéo couvre les principales bibliothèques d'apprentissage automatique utilisées dans l'apprentissage automatique appliqué en python, telles que Pandas, qui est une bibliothèque pour la manipulation et la manipulation de données, Numpy, qui est un package fondamental pour le calcul scientifique avec python, Matplotlib pour la création de graphes 2D, et Scikit-Learn, qui est une bibliothèque utilisée pour construire des modèles traditionnels.

  • 01:10:00 Le didacticiel vidéo explore les bases de la gestion et de la manipulation des données pour l'apprentissage automatique à l'aide de deux bibliothèques principales : pandas et numpy. La bibliothèque pandas est utilisée pour charger un ensemble de données de jouets célèbre pour l'apprentissage automatique appelé l'ensemble de données Titanic et créer un alias. Un tableau est créé pour permettre la compréhension du modèle, et les attributs nécessaires pour le modèle tels que la classe de passagers, le sexe, l'âge et les survivants sont identifiés. La variable cible, qui doit être prédite, est l'attribut survécu, qui est soit 1 soit 0 ; survécu signifie 1 tandis que n'a pas survécu est 0. L'étape suivante consiste à convertir les valeurs des attributs en nombres à l'aide du code Python, qui peut être compris par la machine. Toutes les observations avec des valeurs null ou nand sont supprimées et l'attribut survivant est supprimé de l'axe des x pour empêcher le modèle de tricher. Enfin, l'ensemble de données est divisé en sections de test et de formation à l'aide de la bibliothèque à usage général pour l'apprentissage automatique appelée scikit-learn.

  • 01:15:00 La vidéo traite de l'utilisation de l'apprentissage automatique avec l'ensemble de données titanesque et comment, dans les scénarios du monde réel, la plupart des modèles proviennent de bases de données relationnelles. L'interface SQL Server Management Studio est introduite car elle est couramment utilisée pour gérer les bases de données du serveur SQL. Un scénario hypothétique est présenté dans lequel la tâche consiste à créer un ensemble de données pouvant être utilisé pour prédire les ventes futures. La vidéo explique comment créer une requête et joindre des tables pour créer un historique des commandes pour les célébrités, et comment enregistrer ces informations en tant que vue afin qu'elles puissent être facilement interrogées et exportées sous forme de fichier CSV à partager avec le reste du équipe.

  • 01:20:00 La vidéo décrit le processus d'exportation de données vers un fichier CSV à partir d'une base de données cloud à l'aide de SQL Server. Ils expliquent que l'analyse exploratoire des données, également connue sous le nom d'analyse de données, joue un rôle crucial dans l'apprentissage automatique et présentent les bibliothèques Matplotlib et Seaborn pour la visualisation des données. La vidéo montre ensuite des exemples d'utilisation de ces bibliothèques pour explorer l'ensemble de données Titanic, calculer les pourcentages de valeurs manquantes et créer des histogrammes et des graphiques à barres. Ils notent que Seaborn est souvent préféré en raison de sa simplicité.

  • 01:25:00 Le conférencier explore les différents types de modèles d'apprentissage automatique et leurs applications. Les modèles d'apprentissage en profondeur, tout en excellant dans la reconnaissance d'images et de la parole, peuvent ne pas être les mieux adaptés à l'apprentissage automatique supervisé dans la plupart des cas, qui est basé sur des ensembles de données hautement structurés. Les modèles traditionnels, tels que les boosters de gradient, sont plus précis, moins gourmands en calculs, plus faciles à expliquer et peuvent accélérer les problèmes de classification et de régression. L'orateur guide ensuite le public à travers le processus de construction d'un modèle traditionnel à l'aide de Python, de Pandas pour la gestion des données et de XGBoost, une bibliothèque de boosters de gradient qui a remporté de nombreux concours de modélisation compétitifs. Le modèle a obtenu un score de 83 % sur l'ensemble de données, et l'orateur explique comment enregistrer le modèle à l'aide de la bibliothèque Pickle.

  • 01:30:00 La vidéo explique ce qu'est la classification et comment elle sépare les observations en groupes en fonction de caractéristiques telles que les notes, les résultats aux tests et l'expérience. Il couvre également la classification binaire et comment elle implique la classification des données en deux groupes avec une sortie de oui ou non. La vidéo présente ensuite les réseaux de neurones artificiels et les modèles d'apprentissage en profondeur, définissant la régression linéaire comme prédisant la valeur basée sur une ligne et expliquant comment elle est utilisée dans les prévisions pour prédire des points de données aléatoires comme les diagnostics de cancer ou les cours des actions. La démonstration sur la régression linéaire en Python utilise la bibliothèque pandas pour masser les données, tandis que la bibliothèque numpy contient les données dans un conteneur de tableau optimisé et la bibliothèque matplotlib est utilisée pour la visualisation des données. La vidéo montre comment tracer un graphique pour trouver la relation linéaire positive entre les heures étudiées et les scores obtenus, et importe éventuellement le modèle de classificateur utilisé pour la régression linéaire dans le script Python.

  • 01:35:00 L'orateur passe en revue les principes fondamentaux de la classification en tant que technique d'apprentissage automatique supervisé et fournit une définition simplifiée qui sépare les observations en groupes en fonction de leurs caractéristiques. L'exemple donné est la détection de spam, où les e-mails sont divisés en deux catégories : spam et non spam. Un exemple plus complexe est le projet d'apprentissage automatique Titanic, qui est un problème de classification binaire où la sortie du modèle est soit un pour survécu, soit un zéro pour non survécu. La partie suivante de la section explique comment créer un modèle de classification avec une grande précision, y compris l'importation de bibliothèques, l'utilisation de l'ensemble de données iris, la conversion de valeurs textuelles en nombres à l'aide de l'encodage d'étiquettes, la formation d'un modèle de classificateur de forêt aléatoire et le test du modèle terminé par rapport au données d'entraînement pour atteindre une précision de 97 %.

  • 01:40:00 Les bases de l'utilisation des données à l'aide de BigQuery sont abordées, y compris les ensembles de données et les tables. En tant qu'ingénieur en machine learning, il est essentiel de pouvoir créer, importer et assembler des données dans BigQuery. La section passe en revue la gestion des données dans BigQuery, y compris la façon dont il peut gérer des pétaoctets de données et les avantages de l'utilisation du bloc-notes cloud Jupyter de Google appelé Cloud Datalab. BigQuery ML est également couvert, ce qui ne nécessite aucune connaissance en programmation autre que SQL, ce qui permet aux professionnels des données de créer plus facilement des modèles d'apprentissage automatique. Enfin, la section couvre les nuances des ensembles de données et des tables, y compris comment créer un ensemble de données et y ajouter des tables dans BigQuery.

  • 01:45:00 L'intervenant discute des différentes options de source lors de la création de tables dans BigQuery, y compris une table vide, des sources de données externes et l'importation de données à partir d'une source lisible telle que CSV, JSON, Arvo, Parquet et ORC. Alors que la plupart des ingénieurs en apprentissage automatique préfèrent utiliser des fichiers CSV, Arvo est plus rapide à charger et plus facile à analyser sans problème d'encodage, tandis que Parquet et ORC sont largement utilisés dans l'écosystème Apache Hadoop. L'orateur présente ensuite le Cloud Data Lab de Google, qui est une machine virtuelle (VM) hébergée sur GCP qui contient une interface de type Jupyter Notebook appelée Datalab. Les utilisateurs peuvent prendre le code d'un bloc-notes Jupyter localement et l'utiliser sur GCP. Lors de la création d'une nouvelle instance Datalab, les utilisateurs choisissent une région de stockage et peuvent être invités à créer une clé SSH.

  • 01:50:00 L'instructeur montre comment créer une connexion à BigQuery et importer l'ensemble de données titanic brouillé dans une instance cloud datalab. En important BigQuery et en créant une connexion à celui-ci, les utilisateurs peuvent écrire du code SQL pour interroger les données. À l'aide de bibliothèques pré-emballées telles que les pandas, le classificateur d'arbre de décision et la division de test d'entraînement, les utilisateurs peuvent segmenter leurs données, les adapter à leurs données d'entraînement et noter leur modèle. De plus, les utilisateurs peuvent apporter des modifications à leur requête directement dans la cellule et l'exécuter pour créer une nouvelle base de données pandas qui héberge l'ensemble de données de la requête. Enfin, l'instructeur montre comment importer et interroger un autre ensemble de données, l'ensemble de données iris, dans l'instance cloud datalab à l'aide de BigQuery.

  • 01:55:00 Le présentateur montre comment importer des données de la bibliothèque BigQuery dans un bloc-notes Jupyter sur la plate-forme cloud de Google. L'ensemble de données d'iris est importé et divisé en ensembles d'apprentissage et de test, et un classificateur de forêt aléatoire est utilisé pour l'apprentissage. Les valeurs prédites sont générées pour le modèle. Le présentateur montre également comment mettre à niveau les ressources sur une instance de laboratoire de données cloud en y accédant sur la page d'accueil de Google et en cliquant sur "modifier".

  • 02:00:00 Le conférencier explique BigQuery ML, un outil qui permet aux praticiens SQL de créer des modèles d'apprentissage automatique à grande échelle à l'aide de compétences et d'outils SQL existants, démocratisant ainsi l'apprentissage automatique. BigQuery ML prend actuellement en charge trois types de modèles : la régression linéaire, la régression logistique binaire et la régression logistique multiclasse. L'intervenant explique également comment créer un modèle de régression logistique binaire dans BigQuery à l'aide du langage SQL. La création du modèle implique de définir le modèle, de spécifier des options et de transmettre la variable cible à l'aide d'instructions SQL. Le modèle peut également être évalué et les métriques de précision présentées via SQL. Enfin, l'orateur explique la phase de prédiction où le modèle reçoit de nouvelles données qu'il n'a jamais vues auparavant.

  • 02:05:00 L'intervenant explique comment utiliser BigQuery ML pour créer un modèle de classification binaire et l'évaluer. Les données sont importées d'un fichier CSV vers BigQuery, et le modèle est transmis à toutes les colonnes, à l'exception de la variable cible. Une fois l'évaluation terminée, le modèle fera une prédiction pour chaque membre de la famille, avec la première colonne de la sortie prédisant la survie (un pour survécu et zéro pour n'a pas survécu). L'orateur passe ensuite à l'installation de l'outil de ligne de commande appelé gsutil, qui est un outil de ligne de commande utilisé pour fonctionner avec le stockage Google sur GCP. L'outil propose trois niveaux de stockage avec une accessibilité et une tarification différentes.

  • 02:10:00 L'orateur montre comment télécharger et gérer des fichiers dans Google Cloud Storage à l'aide de gsutil. Tout d'abord, l'utilisateur doit configurer le projet pour qu'il fonctionne et créer un compartiment à l'aide de gsutil mb, en gardant à l'esprit que chaque nom de compartiment doit être unique. Ensuite, l'orateur explique comment copier un fichier dans un bucket et y accorder un accès public, en utilisant des listes de contrôle d'accès (ACL) pour contrôler qui peut lire et écrire les données. L'orateur montre également comment télécharger et copier des fichiers dans un autre compartiment à l'aide de gsutil et comment utiliser le commutateur -m pour accélérer le processus de téléchargement. L'intervenant conclut en montrant comment exporter des données d'une base de données relationnelle vers deux fichiers et les importer dans GCP à l'aide de Cloud Storage.

  • 02:15:00 L'intervenant montre comment importer deux ensembles de données dans BigQuery de Google Cloud Platform, les joindre à l'aide de SQL et créer une vue pour créer des modèles d'apprentissage automatique. Après avoir exporté des données depuis SQL Server et les avoir enregistrées sous forme de fichiers CSV, l'intervenant les importe dans le bucket de stockage cloud de GCP, les télécharge dans BigQuery et les combine à l'aide d'une simple instruction de jointure. Enfin, l'orateur montre comment créer une vue de cet ensemble de données plus large à utiliser dans les modèles d'apprentissage automatique.

  • 02:20:00 L'orateur décrit le processus de création d'une table dans Google BigQuery sur Cloud Platform pour l'ensemble de données de son projet Titanic. Ils téléchargent l'ensemble de données à partir de leur source locale, détectent automatiquement le schéma à partir du fichier CSV et ignorent la première ligne car elle contient des informations d'en-tête. Après avoir réussi à créer la table, ils l'interrogent et confirment que les données et les en-têtes s'affichent correctement. L'orateur note que l'ensemble de données est maintenant prêt pour les prochaines étapes du projet.
Machine Learning with BigQuery on Google's Cloud Platform
Machine Learning with BigQuery on Google's Cloud Platform
  • 2022.04.25
  • www.youtube.com
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...
Raison: