Science des données et machine learning avec Python - Cours pratique ! | Frank Kane | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Science des données et machine learning avec Python - Cours pratique !

teacher avatar Frank Kane, Machine Learning & Big Data, ex-Amazon

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      2:44

    • 2.

      Instructions de configuration Windows

      9:43

    • 3.

      Instructions de configuration Mac

      7:04

    • 4.

      Instructions de configuration Linux

      8:11

    • 5.

      Bases Python Partie 1

      4:59

    • 6.

      Bases Python Partie 2

      5:17

    • 7.

      Bases Python Partie 3

      2:46

    • 8.

      Bases Python Partie 4

      4:02

    • 9.

      Introduction à Pandas

      10:08

    • 10.

      Types de données

      6:58

    • 11.

      Moyenne, mode moyen,

      5:26

    • 12.

      Utiliser moyenne et le mode dans Python

      8:20

    • 13.

      Variation et déviation standard

      11:12

    • 14.

      Fonction de densité de probabilité ; Fonction de masse de probabilité

      3:27

    • 15.

      Distributions de données communes

      7:45

    • 16.

      Percentiles et moments

      12:32

    • 17.

      Un cours de crash dans matplotlib

      13:46

    • 18.

      Visualisation de données avec Seaborn

      17:30

    • 19.

      Covariance et Corrélation

      11:31

    • 20.

      Exercice : Probabilité conditionnelle

      16:04

    • 21.

      Solution d'exercice : probabilité conditionnelle

      2:20

    • 22.

      Théorème de Bayes

      5:23

    • 23.

      Réglage linéaire

      11:01

    • 24.

      Réglage Polynomial

      8:04

    • 25.

      Régression multiple

      16:26

    • 26.

      Modèles multi-niveaux

      4:36

    • 27.

      Apprentissage, train et test supérieur et non supervisé/test

      8:57

    • 28.

      Utiliser le train/test pour éviter le surmontage

      5:47

    • 29.

      Méthodes Bayesian : concepts

      3:59

    • 30.

      Mettre en place un classificateur de spam avec Naive Bayes

      8:05

    • 31.

      Clustering K-Means

      7:23

    • 32.

      Clustering People par revenu et âge

      5:14

    • 33.

      Mesurer l'entropie

      3:09

    • 34.

      Fenêtres : Installation de Graphviz

      0:22

    • 35.

      Mac : Installation de Graphviz

      1:16

    • 36.

      Linux : Installation de Graphviz

      0:54

    • 37.

      Arbres de décisions : concepts

      8:43

    • 38.

      Arbres de décisions : Predicting des décisions de recrutement

      9:47

    • 39.

      Apprentissage d'ensemble

      5:59

    • 40.

      [Activité] XGBoost

      15:29

    • 41.

      Aperçu des machines vectorielles de l'en série de machines vectorielles (SVM)

      4:27

    • 42.

      Utiliser SVM pour des gens de regroupements

      9:29

    • 43.

      Filtrage collaboratif des utilisateurs

      7:57

    • 44.

      Filtrage collaboratif d'articles en fonction des éléments

      8:15

    • 45.

      Trouver des similitudes de film

      9:08

    • 46.

      Améliorer les résultats de la similitude de film

      7:59

    • 47.

      Faire des recommandations de film aux gens

      10:22

    • 48.

      Améliorer les résultats du Recommender

      5:29

    • 49.

      K-Nearest-Neighbors: : concepts

      3:44

    • 50.

      Utiliser KNN pour prédire une liste pour un film

      12:29

    • 51.

      Réduction de dimension ; Analyse du composant principal

      5:44

    • 52.

      Exemple PCA avec le jeu de données Iris Data Set

      9:05

    • 53.

      Stockage de données ETL et ELT

      9:05

    • 54.

      Apprentissage de renforcement

      12:44

    • 55.

      Hands-On avec l'apprentissage Q-

      12:56

    • 56.

      Comprendre une matrice de confusion

      5:17

    • 57.

      Mesurer des classifiers (Precision, Recall, F1, ROC, Measuring Measuring

      6:35

    • 58.

      Préjugés / variance Tradeoff

      6:15

    • 59.

      Validation K-Fold Cross

      10:26

    • 60.

      Nettoyage et normalisation des données

      7:10

    • 61.

      Nettoyer des données de journal Web

      10:56

    • 62.

      Normaldes données numériques

      3:22

    • 63.

      Détection des points

      6:21

    • 64.

      Ingénierie des caractéristiques et Curse de dimension

      6:03

    • 65.

      Techniques d'imputation pour les données manquantes

      7:48

    • 66.

      Gestion des données déséquilibrées : amplification en contournement, Oversampling, le soudage et SMOTE

      5:35

    • 67.

      Bossement, Binning, encodage, encodage et shuffling

      7:51

    • 68.

      Notes d'installation importantes au spark

      5:00

    • 69.

      Installation du spark - Partie 1

      6:59

    • 70.

      Installation du spark - Partie 2

      7:20

    • 71.

      Introduction au spark

      9:10

    • 72.

      Spark et les données distribuées résilientes (RDD) (RDD)

      11:42

    • 73.

      Présentation MLLib

      5:09

    • 74.

      Arbres de décisions dans Spark

      16:15

    • 75.

      Clustering K-Means dans Spark

      11:23

    • 76.

      TF / IDF

      6:43

    • 77.

      Rechercher Wikipédia avec Spark

      8:21

    • 78.

      Utiliser l'API Spark 2 DataFrame pour MLLib

      8:07

    • 79.

      Déployer des modèles à la production

      8:42

    • 80.

      Concepts de test A/B

      8:23

    • 81.

      Test et valeurs P

      5:59

    • 82.

      Hands-On avec des tests de tests de tests

      6:03

    • 83.

      Déterminer combien longtemps mener une expérience

      3:24

    • 84.

      Gotchas de test A/B

      9:26

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

14 316

apprenants

7

projets

À propos de ce cours

Les scientifiques de données sont des emplois de classe majoritaires, avec un salaire moyen de 120 dollars de 120 dollars en fonction Glassdoor et Indeed. C'est la moyenne ! Et il ne s'agit pas de l'argent - il en fait un travail intéressant aussi !

Si vous avez des expériences de programmation ou de scripts, ce cours vous apprendra les techniques utilisées par de véritables scientifiques de données dans l'industrie des technologies et vous préparera à ce chemin de carrière chaut de course Ce cours complet comprend 68 cours couvrant presque de 9 heures de vidéo de vidéo. La plupart des sujets comprennent des exemples de codes Python pratiques que vous pouvez utiliser pour des références et pour la pratique. Je vous guiderai à partir de mes 9 années d'expérience chez Amazon et IMDb pour vous guider dans ce qui est nécessaire et ce que vous ne passez.

Chaque concept est introduit en anglais clair, en évitant la notation mathématique et le jargon. On ensuite démonstration à l'aide du code Python dont vous pouvez expérimenter et construire dessus, ainsi que des notes que vous pouvez conserver pour une référence à l'avenir. Vous ne trouverez pas de contenus académiques et profondément mathématiques de ces algorithmes dans ce cours, la concentration sur la compréhension pratique et l'application de ces algorithmes.

Les sujets de ce cours sont une analyse des exigences réelles de données des listes de travaux de scientifiques de données de plus grands employeurs de technologie. Nous aborderons des techniques d'apprentissage de machine et de données à la recherche des techniques de données à l'apprentissage en machine et à la recherche des employeurs de nouveaux employeurs, notamment :

  • Analyse de régression
  • Clustering K-Means
  • Analyse de composant principal
  • Train/test et validation croisée
  • Méthodes Bayesian
  • Décision et forêts aléatoires
  • Réglage multivarié
  • Modèles multi-niveaux
  • Soutien machines vectorielles de l'en
  • Apprentissage de renforcement
  • Filtrage collaboratif
  • K-Nearest
  • Bias/Variance Tradeoff
  • Apprentissage d'ensemble
  • Fréquence de temps / fréquence de document inverse
  • Conception expérimentale et tests A/B


..et bien plus encore ! Il y en a également une section complète de l'apprentissage des machines avec Apache Spark, qui vous permet de mettre en valeur ces techniques de grandes données analysées sur un groupe informatique.

Si vous êtes novice en Python, ne vous inquiétez pas pas et ne d'en pas de l'enchaînement de l'enchaînement Si vous avez des émissions déjà avant, vous devriez le prendre rapidement. Ce cours vous montre comment mettre en place sur les PC basés sur Microsoft Windows ; le code de code de type échantillon sera également sur des systèmes de bureau MacOS ou Linux de bureau, mais je ne peux pas fournir un soutien spécifique pour OS.

Si vous êtes un programmer qui cherche à passer en une nouvelle piste de carrière passionnante, ou un analyste de données qui cherche à passer à l'industrie des technologies, ce cours vous apprendra les techniques de base de l'expérience des scientifiques de données de l'industrie réelle dans l'industrie. Je pense que vous y jouirez !



Rencontrez votre enseignant·e

Teacher Profile Image

Frank Kane

Machine Learning & Big Data, ex-Amazon

Enseignant·e

Frank spent 9 years at Amazon and IMDb, developing and managing the technology that automatically delivers product and movie recommendations to hundreds of millions of customers, all the time. Frank holds 17 issued patents in the fields of distributed computing, data mining, and machine learning. In 2012, Frank left to start his own successful company, Sundog Software, which focuses on virtual reality environment technology, and teaching others about big data analysis.

Voir le profil complet

Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Salut. Bienvenue dans la science des données et l'apprentissage automatique avec Python. Je suis votre instructeur. Frank Kane et moi avons passé plus de neuf ans chez amazon dot com et imdb dot com. Développer et gérer certaines de leurs fonctionnalités les plus célèbres, comme Recommandé pour vous et les gens qui ont acheté aussi acheté, les meilleurs vendeurs et les recommandations de films et I. M. D B. M. D B. Et toutes ces fonctionnalités a nécessité d'appliquer l'exploration de données dans les techniques d'apprentissage automatique à des ensembles de données du monde réel. Et c'est ce qui se passe dans ce cours. Être chercheur des données dans l'industrie de la technologie est l'une des carrières les plus enrichissantes de la planète aujourd'hui, je suis allé étudier les descriptions de travail réelles pour les rôles de Data Scientist dans les entreprises de technologie , et je disculpe ces exigences dans le que vous verrez dans ce cours. Ce cours est vraiment complet. Nous allons commencer par un cours de crash en Python et faire un examen des statistiques de base et des probabilités. Mais ensuite, nous allons plonger dans plus de 60 sujets dans l'exploration de données dans l'apprentissage automatique qui inclut des choses comme la bière à base de bière. Je regroupe les arbres de décision, analyse de régression, la conception expérimentale. Regardez-le tous et certains de ces sujets sont vraiment amusants. Nous allons développer un système de recommandation de film réel en utilisant les données d'évaluation des films des utilisateurs , nous allons créer un moteur de recherche qui fonctionne réellement pour les données Wikipédia. Nous allons créer un classificateur de spam capable de classer correctement les courriels spam et non spam dans votre compte de messagerie. Et nous avons également toute une section sur la mise à l'échelle de ce travail jusqu'à un cluster qui fonctionne sur le Big Data en utilisant Apache Spark. Si vous êtes un développeur de logiciels ou un programmeur qui cherche à passer à une carrière en science des données , ce cours vous enseignera les compétences les plus chaudes sans toute la notation mathématique et prétexte qui accompagne ces sujets. Nous allons juste expliquer ces concepts en anglais simple et vous montrer du code python fonctionne réellement que vous pouvez plonger et gâcher pour faire couler ces concepts à la maison. Et si vous travaillez en tant qu'analyste de données dans le secteur de la finance, ce cours peut également vous apprendre à faire la transition vers l'industrie de la technologie. Tout ce dont vous avez besoin, c'est une expérience préalable dans la programmation ou le script, et vous devriez être prêt à partir. Le format général de ce cours est que je vais commencer par chaque concept en l'expliquant dans un tas de diapositives et d'exemples graphiques, et je le ferai en anglais simple autant que possible. Je vais vous présenter une partie de la notation et de la terminologie fantaisie que les scientifiques des données vous aiment pour que vous puissiez parler la même langue. Mais les concepts eux-mêmes étaient généralement assez simples après cela. Tous les trois dans un code python réel qui fonctionne réellement que nous pouvons exécuter et gâcher avec. Et je vais vous montrer comment appliquer réellement ces idées aux données réelles, et celles-ci vont être présentées comme des fichiers de bloc-notes I Python. Et c'est un format où je peux mélanger le code et les notes entourant le code qui expliquent ce qui se passe dans les concepts Donc vous pouvez prendre ces fichiers de bloc-notes avec vous après ce cours et l'utiliser comme une référence pratique et rapide plus tard sur dans votre carrière et à la fin de chaque concept, je vous encouragerai à réellement plonger dans ce code python, faire quelques modifications, gâcher et à simplement gagner plus de familiarité en mettant la main sur et en faisant des modifications et de voir les effets qu'elles ont. Alors avec ça, plongons et commençons 2. Instructions de configuration Windows: Alors nous allons vous préparer pour ce cours. Plutôt facile à faire. Nous allons commencer par installer un environnement de développement Python appelé Anaconda. Si vous ne l'avez pas déjà. Une fois installé, nous allons juste installer quelques paquets dont nous avons besoin et qui ne viennent pas avec. Pi dot plus et TensorFlow, que nous utiliserons plus tard pour faire des réseaux neuronaux. Ensuite, nous allons télécharger tous les documents de cours de notre site Web et l'installer et nous assurer que tout fonctionne. Commençons par aller sur anaconda.com. Ce sera l'environnement Python que nous utilisons pour ce cours. Il est déjà conçu pour la science des données et l'analyse des données, donc il nous permet d'économiser beaucoup de problèmes et de mettre en place les choses. suffit de vous diriger vers Il voussuffit de vous diriger vers le grand bouton convivial Get Started ou de naviguer vers la zone de téléchargement. Nous allons télécharger les installateurs d'Anaconda. Et nous voulons, pour moi la version 64 bits de Windows. Évidemment, choisissez la version qui est logique pour système d'exploitation que vous utilisez. Mais pour moi, c'est Windows 64 bits. Donc, nous attendrons que ça se télécharge. devrait descendre assez vite. Et une fois que c'est terminé, nous allons juste ouvrir l'installateur et l'exécuter. Très bien, donc rien de spécial ici, juste votre Windows Installer standard. Je vais cliquer sur Suivant pour commencer. Acceptez les termes de la licence. Installez-le juste pour moi. Et tu veux t'assurer d'installer ça quelque part. Il a beaucoup d'espace sur le disque dur pour moi. Le lecteur C est un peu serré car il s'agit d'un petit SSD. Donc, je vais changer ça pour mon E Drive. Faites tout ce qui est logique pour votre assistant pour vous assurer que vous avez assez de place pour cela. Et nous allons frapper Next pour continuer. Ces options par défaut sont correctes. Et maintenant, nous attendons juste qu'il s'installe et cela prendra quelques minutes. Il y a beaucoup de choses à installer, donc je vais faire une pause et revenir quand cela sera fait. Très bien, quelques minutes plus tard, ça a fini. Donc, je vais appuyer sur Suivant pour continuer avec l'installateur. Et on va dire Next encore. Et je vais décocher ces options. Je n'ai pas vraiment besoin de voir un tutoriel. Et nous l'avons là. Maintenant qu'Anaconda a été installé, nous avons juste besoin d'y installer quelques paquets supplémentaires. Donc, pour entrer dans notre nouvel environnement Anaconda, allez dans votre menu Démarrer et recherchez le dossier Anaconda trois. Et à partir de là, sélectionnez Anaconda Prompt. Et vous devriez voir un petit terminal de commande comme celui-ci. Et à partir de là, nous allons juste taper dans Conda install pi dot plus. Et cela va juste installer un paquet. Visualisons les arbres de décision plus tard dans le cours. Ça prendra un moment pour comprendre comment faire ça. Et quand vous obtenez cette invite de dire pourquoi Entrez et laissez-le faire son truc. Très bien, très bien. Ensuite, nous devons installer le paquet TensorFlow. C' est ce que nous allons utiliser pour l'apprentissage profond plus tard dans le cours et les réseaux neuronaux et toutes ces choses amusantes. Normalement, vous diriez que Conda installe TensorFlow pour le faire, mais il y a un bug avec cela en ce moment sur Windows. Donc, au lieu de cela, nous allons dire pip installer TensorFlow. Et ça devrait marcher. Encore une fois, laissez-le faire son truc. Un tas de dépendances qu'il doit obtenir en premier mais ne devrait pas prendre trop de temps. Bon, donc maintenant nous avons TensorFlow installé aussi. Laissons cette fenêtre. On y reviendra un peu plus tard. Mais revenons à notre navigateur Web et téléchargeons ensuite le matériel du cours. Pour cela, vous vous dirigerez vers le point Media JSON, chien dash, softer.com slash machine dash learning dot HTML. Faites attention aux tirets et à la capitalisation en tout cas. Et une fois que vous êtes ici, vous trouverez un lien sympathique pour le matériel du cours. Allez-y et cliquez dessus. Et au CMS. Pendant que vous êtes ici, si vous voulez une copie des diapositives, vous les trouverez également ici. Une fois que c'est téléchargé, allez-y et ouvrez ça. Et élargissons le matériel de cours là-bas. Cliquez avec le bouton droit et tout extraire Et ce qu'il y a ici, c'est un tas de fichiers de Jupyter Notebook. Et ce sont des façons d'exécuter du code Python de manière interactive dans un navigateur Web. Donc à peu près chaque conférence de ce cours va être accompagnée d'un bloc-notes IPython pratique que vous pouvez jouer et expérimenter avec. Et c'est ce qu'il y a là-dedans. Ici aussi, il y a beaucoup de types expérimentaux de données de test que vous pouvez utiliser pour réellement former ces modèles et jouer autour et réellement faire des prédictions basées sur des données réelles. Et c'est ce que la plupart de ce qui est décompressé en ce moment est de donner un peu de temps pour terminer la décompression. Très bien, c'est fini de décompresser. Alors allons de l'avant et trouvons le dossier dans lequel il s'est développé. Il devrait y avoir un dossier de cours ML maintenant, et ouvrons cela. Et à l'intérieur du dossier de cours ML se trouve un autre dossier de cours MLK. C' est celui que nous voulons réellement. Alors allons de l'avant et sélectionnez ce dossier de cours ML à l'intérieur de l'autre. Et je vais frapper Control X pour couper ça. Et maintenant, nous voulons mettre ça quelque part qui nous sera facile de nous souvenir et facile à taper. Donc je vais mettre ça sur la racine de mon disque C. Je vais juste appuyer sur Control V pour le coller dans mon lecteur C ici. Qu' est-ce que cette copie est terminée. Et la raison pour laquelle je le mets ici, c'est parce que nous allons devoir taper le chemin dans lequel il se trouve. Cela va être C colon backslash ML cours dans ce cas. Bon, donc maintenant nous avons un dossier de cours CML, et à l'intérieur il y a le matériel du cours lui-même. Vous pouvez y voir toutes les données ainsi que tous les ordinateurs portables IPython. C' est ce que je, p, y et p signifient. Ça s'appelle un carnet Jupyter ces jours-ci. Alors allons de l'avant et essayons un et voyons si cela fonctionne réellement. Ouais, alors retourne à notre Anaconda Prompt ici. Et on en a fini avec toutes ces choses en arrière-plan. Donc, ce que vous devez faire, n' oubliez pas de pratiquer ces gars. Cela va être quelque chose que vous devez faire avec presque toutes les conférences. Pour réellement ouvrir le fichier bloc-notes pour une conférence donnée , vous devez d' abord ouvrir une invite Anaconda. Et encore une fois, c'est sous le menu Démarrer, sous le menu Anaconda. Et puis j'ai besoin que vous fassiez du CD partout où vous installez ces matériaux. Donc, je vais dire cd C colon backslash ML cours, parce que c'est là que j'ai installé le matériel du cours. Il est important que vous commenciez cela à partir du bon répertoire, sinon ces blocs-notes ne s'afficheront pas. Mais une fois que nous sommes dans le répertoire où nous installons ces matériaux, je peux alors taper dans le cahier Jupiter. Et cela va démarrer le navigateur Web qui me permettra de réellement exécuter ces ordinateurs portables. Encore une fois, rappelez-vous, pour chaque fois que vous avez besoin d'ouvrir un ordinateur portable Jupiter, ouvrez un cd d'invite Anaconda dans le répertoire dans lequel vous installez le matériel du cours, puis tapez le bloc-notes Jupiter. Vous voudrez peut-être écrire ça les gars. Tu vas devoir recommencer beaucoup à l'avenir. Et ce que cela fait est en fait d'afficher votre navigateur Web. Et cela nous amène à la page principale de Jupiter ici, nous pouvons réellement sélectionner les différents ordinateurs portables à exécuter. Voyons donc si cela fonctionne réellement. Défilons un peu vers le bas. Les valeurs aberrantes sont amusantes. Donc, nous allons cliquer sur points aberrants p-y, a et B. Et une introduction rapide aux ordinateurs portables Jupiter ici, vous pouvez voir que c'est fondamentalement une façon d'exécuter du code Python en ligne. Nous pouvons réellement voir les résultats dans votre navigateur et l'exécuter. Et ce n'est pas seulement une page web pré-faite. Vous pouvez réellement exécuter du code ici. Alors regarde ça. Je peux effectivement cliquer sur l'un de ces blocs ici et appuyer le bouton Exécuter et exécute réellement ce code et génère un nouveau graphique en réponse à cela. C' est donc un excellent moyen d'expérimenter de manière interactive avec du code Python et de jouer avec de nouveaux algorithmes. Et c'est exactement ce qu'on va faire dans ce cours. Donc, passons très rapidement à travers cet exemple ici juste pour que vous puissiez voir ce qui se passe un peu à un niveau élevé, nous en parlerons plus en détail plus tard. Mais ce qui se passe ici, c'est que nous simulons une répartition des revenus. Donc nous avons simulé un tas de personnes au hasard qui ont des revenus allant de, vous savez, vingt-sept mille dollars plus ou moins 15 mille dollars par an. Et puis pour gâcher les choses, nous jetons Jeff Bezos qui a un milliard de dollars à son nom, probablement plus que ça à ce stade, non ? Et vous pouvez voir que cela fausse notre distribution ici. Donc nous aimerions juste avoir ça comme un petit point maigre ici qui représente tous les gens normaux. Et puis nous avons Jeff Bezos ici pour gâcher nos données. Donc, ce dont nous parlons dans cet exercice particulier est de savoir comment identifier les valeurs aberrantes comme Jeff Bezos et les supprimer de nos données afin que nous puissions réellement obtenir une distribution plus significative. Et c'est ce qui se passe ici. Et vous pouvez en fait, c'est un raccourci pour exécuter tout ça en même temps. Vous pouvez voir aller dans le menu du noyau ici et dire redémarrer et exécuter tout. Et cela réexécutera automatiquement toutes ces cellules. Et vous pouvez voir que cela fonctionne réellement. Donc j'espère que si vous faites ça, vous verrez de jolis graphiques. Et si oui, cela signifie que vous avez tout configuré correctement. Félicitations. Encore une fois, rappelez-vous comment arriver ici, les gars l'écrivent. Vous allez ouvrir un cd d'invite Anaconda le répertoire dans lequel vous installez les matériaux du cours, dans le répertoire dans lequel vous installez les matériaux du cours, puis tapez le bloc-notes Jupiter et sélectionnez le NOPLAT que vous souhaitez ouvrir. Très bien, avec ça sous notre ceinture, passons à autre chose et commençons à apprendre des trucs. 3. Instructions de configuration Mac: Très bien, si vite, laisse-moi te guider dans la mise en place ici. Je vais vous montrer comment faire tout ça de première main. Mais pour le résumé, nous allons installer Anaconda, qui est un environnement Python et un besoin pour informatique scientifique, la science des données et l'apprentissage automatique. Une fois que nous aurons cette configuration, nous installerons un paquet appelé pi dot plus, que nous utiliserons plus tard dans le cours pour visualiser les arbres de décision. Et installera également TensorFlow, que nous allons utiliser pour construire des réseaux neuronaux, de l'IA réelle et de l'apprentissage profond plus tard dans le cours. Nous allons également télécharger le matériel de cours de mon site Web ici et ouvrir l'un des cahiers de ce matériel et voir si cela fonctionne. Alors plongons dedans. Donc, la première chose dont nous avons besoin est un environnement de développement Python. Et dans ce cours, nous utilisons Anaconda à cette fin. Il est livré avec la plupart des paquets dont nous avons besoin pour ce cours pré-installé. Donc ça va vous épargner beaucoup d'ennuis. Donc, même si vous avez un environnement de développement Python existant, je recommande d'installer Anaconda sur le côté également. Pour l'obtenir, rendez-vous sur anaconda.com. Et vous voulez aller au menu des produits et aller à l'ajout individuel. Fondamentalement chercher la version open source d' Anaconda partout où ils pourraient le cacher sur le site de nos jours. Et à partir de là, nous allons cliquer sur le grand bouton Télécharger convivial et sélectionner l'installateur graphique Mac OS et attendre que le téléchargement. Très bien, c'est terminé. Allons de l'avant et ouvrons l'installateur. Là, il y a peu, il suffit de double-cliquer dessus pour le lancer. Et nous allons appuyer sur Continuer. Continuer. Lisez le contrat de licence. Continuer. Et d'accord. D' accord. Nous allons juste passer par les valeurs par défaut ici. Nous allons installer pour moi seulement. Et vous n'avez pas mangé un peu d'espace disque pour ce gars est un deux points de 13 gigaoctets pour commencer, et nous allons installer plus de choses sur le dessus aussi. Assurez-vous donc que vous avez suffisamment de place pour cette installation. Et cela prendra un certain temps. Il y a une loi pour l'installer, donc nous reviendrons quand ce sera fait. Très bien, juste à peu près fini ici. Nous allons appuyer sur Continuer ici pour terminer et fermer les choses. Et oui, on en a fini avec l'installateur, on peut le jeter. Alors maintenant, ouvrons un nouveau terminal. Et si vous en aviez déjà un, vous aurez besoin d'un ensemble fermé et de le rouvrir afin de récupérer les nouvelles variables d'environnement installées par Anaconda. Donc, une fois que vous êtes sûr que vous avez un nouveau terminal ouvert ici, nous pouvons simplement taper dans Conda install pi dot plus, juste comme ça. Et cela installera le paquet pi dot plus dont nous aurons besoin plus tard dans le cours afin de visualiser les arbres de décision. Laisse-le partir et fais son truc ici un peu. Pourquoi continuer ? D'accord, l'autre chose dont nous avons besoin est TensorFlow, et c'est tout aussi facile à installer, Conda, installer TensorFlow, juste comme ça. Et c'est un paquet que nous devons faire des réseaux neuronaux profonds, ce qui va être beaucoup de plaisir plus tard dans le cours. Ce sera un environnement plus vaste. Pourquoi procéder ? Et ça va. Cool. Donc, nous avons Anaconda complètement configuré pour l'ensemble du cours à ce stade, c'était assez facile. La prochaine chose que nous devons faire est d'obtenir le matériel du cours. Donc, revenons à notre navigateur et aller aux médias Dotson chiens, bord, soft.com slash machine dash apprentissage point HTML. Faites attention à l'orthographe de la majuscule, où les tirets sont, tout compte. Vous devriez voir une page qui ressemble à ceci. Et vous verrez ici un grand lien amical pour le matériel du cours. Allez-y et cliquez dessus pour le télécharger. Et aussi ici, vous verrez un lien vers les diapositives de cours si vous voulez une copie de cela. Bon, alors maintenant que le matériel du cours a été téléchargé, allons-y et ouvrons que l'un fait devrait juste faire une analyse rapide des virus en ce moment. On dirait que notre matériel de cours est là et qu'il l'a déjà décompressé pour nous aussi. C' est cool. Retournons à notre terminal ici et voyons si nous pouvons réellement utiliser ces matériaux. Maintenant, nous devons savoir où ils sont. Donc, afin de lancer réellement ces fichiers de bloc-notes qui se trouvent dans le matériel du cours, nous devons être en mesure d'y accéder d'abord. Donc nous sommes dans notre répertoire personnel en ce moment. Cd dans les téléchargements. Et c'est là que réside le répertoire des cours ML. C' est là. Bon, donc si tu veux déplacer ça ailleurs, tu peux. C' est important que vous sachiez comment vous rendre à cet endroit, d'accord. Parce que ce qu'il y a ici, c'est un tas de fichiers que nous appelons Jupiter Notebook. Ce sont des façons interactives d'exécuter et d'expérimenter code Python qui nous permettront de jouer avec tous les algorithmes de ce cours. Maintenant, afin de les lancer, nous devons d'abord naviguer dans ce répertoire. J' ai donc besoin d'utiliser la commande cd pour naviguer où c'est. Donc encore une fois, je suis sous les utilisateurs Frank téléchargements ML cours pour vous qui sera dans votre propre répertoire d'utilisateurs le plus probable. Et vous avez juste besoin d'être capable de cd là-dedans. Donc, la première étape pour lancer ces choses en tant que cd dans le répertoire dans lequel je les ai téléchargés. Je le fais juste pour l'illustration ici. Et pour vous, vous pouvez voir les deux partout où vous l'enregistrez aussi. Une fois que vous êtes là, vous allez taper le cahier Jupiter suivant. Juste comme ça, Jupiter est drôle d'orthographe et assurez-vous que vous obteniez ça bien. Et ce que cela fera est de lancer Jupyter notebook dans ce dossier. De cette façon, tous les fichiers de script corrects apparaîtront et toutes les données dont ils ont besoin seront au bon endroit. Et vous pouvez voir ici une liste de tous les fichiers de bloc-notes qui viennent avec le cours. Voyons donc si cela fonctionne réellement. Allons aux points aberrants, PY et B. C'est simple. Donc, chaque fois que je suis dans une conférence dans ce cours et je dis ouvrir les aberrants, point IP, y et b ou quoi que ce soit. C' est ce que vous voulez faire les gars. C' est important. Écrivez ceci. Ok, je ne reviendrai pas sur ça beaucoup de fois à l'avenir. Vous devez à nouveau ouvrir un terminal cd où vous installez le type de matériaux dans le cahier Jupiter, Jupiter orthographié drôle. Et à partir de là, sélectionnez le script que vous souhaitez ouvrir. Alors ouvrons les valeurs aberrantes et voyons si cela fonctionne. C' est cool. Donc, vous devriez voir un écran comme celui-ci. Et ce qui est cool, c'est que vous pouvez réellement exécuter ce code en ligne ici et en fait le modifier et jouer avec lui un gâchis avec elle. Ce n'est pas seulement une page web statique. Donc, par exemple, je peux cliquer sur ce bloc de code Python ici et cliquer sur ce bouton Exécuter. Et il va aller de l'avant et effectivement exécuter ce code et générer ce graphique automatiquement basé sur cette exécution. Alors, c'est cool ? Vous êtes curieux de ce qui se passe ici ? Nous sommes en train de créer une répartition des revenus des gens. Et puis nous jetons dans Jeff Bezos a un milliardaire à la fin pour montrer l'effet d'un aberrant sur une distribution de données. Et tout au long de cet exercice, nous passons en revue et trouvons des moyens d'identifier les valeurs aberrantes telles que Jeff Bezos, les rejetant de l'ensemble de données, ce qui nous permet d'obtenir une interprétation plus significative des données pour tout le monde. Mais nous en parlerons plus à l'avenir. C' est des trucs amusants. Pour l'instant, vous devriez voir un cahier de travail Jupiter ici. Si vous le faites, alors de grandes choses sont configurées correctement. Si ce n'est pas le cas, vérifiez que les choses peuvent être en conflit avec un autre environnement Python que vous avez peut-être installé. Donc c'est peut-être quelque chose que vous devez trouver, mais j'espère que les choses fonctionnent et que nous pourrons passer à autre chose. 4. Instructions de configuration Linux: Très bien, si vite, laisse-moi te faire piéger ici. Je vais vous montrer comment faire tout ça de première main. Mais pour le résumé, nous allons installer Anaconda, qui est un environnement Python et un besoin pour informatique scientifique, la science des données et l'apprentissage automatique. Une fois que nous aurons cette configuration, nous installerons un paquet appelé pi dot plus, que nous utiliserons plus tard dans le cours pour visualiser les arbres de décision. Et installera également TensorFlow, que nous allons utiliser pour construire des réseaux neuronaux, de l'IA réelle et de l'apprentissage profond plus tard dans le cours. Nous allons également télécharger le matériel de cours de mon site Web ici et ouvrir l'un des cahiers de ce matériel et voir si cela fonctionne. Alors plongons dedans. D'accord, installons des choses sur Linux, quelqu'un en aubaine à héberger ici. Et la première chose que nous devons faire est d'installer Anaconda. Anaconda est un environnement Python conçu pour l'informatique scientifique. Il contient les bibliothèques nécessaires à la science des données et à l'apprentissage automatique. Cela vous permettra donc d'économiser beaucoup de problèmes et d'installer des paquets en utilisant ceci au lieu d'une installation Python générique. Et la pensée canopée peut aussi fonctionner si vous avez ça. Mais Anaconda est ce que j'utilise dans ce cours pour l'instant. Alors dirigez-vous vers anaconda.com si vous ne l'avez pas et trouvez le bouton de téléchargement et appuyez à nouveau sur Télécharger. Et sélectionnez votre système d'exploitation. Nous sommes sur Linux. Et vous voulez Python trois version 3, quoi qu'il en soit, le code dans ce cours est pour Python 3 et Python 2, je suis sur un système X86, donc je vais aller de l'avant et installer l'installateur X86. Vous pouvez voir qu'il est grand. Nous le téléchargerons automatiquement dans mon répertoire personnel dans le dossier de téléchargement. Et on va attendre que ça descende. Une fois que le téléchargement est fait, nous pouvons minimiser notre navigateur et ouvrir un terminal. Nous allons cd dans notre dossier Téléchargements. Et nous devons rendre ce script shell exécutable. Ceci change mod H plus x Anaconda trois, quoi qu'il soit. Et maintenant devrait être capable d'exécuter ce script d'installation. Appuyez sur Entrée pour regarder l'espace du contrat de licence au fur et à mesure que vous le lisez. Et en supposant que vous acceptez le type de termes dans oui. L' emplacement du répertoire personnel est bien par moi, nous allons appuyer sur Entrée. Et il s'en va. Il y a beaucoup à installer, donc nous reviendrons quand c'est fait. D' accord. Il est presque en train de se désinstaller. Il veut savoir si vous voulez initialiser Anaconda, pas sûr pourquoi vous diriez non. Alors tapons oui. Et nous sommes prêts à partir. Donc anaconda est installé à ce stade, c'est génial. Maintenant, certaines variables d'environnement ont été modifiées ici. Donc pour être sûr qu'on les ramasse, je vais fermer ce terminal et en faire un nouveau. Maintenant, il y a quelques paquets que nous devons installer qui ne sont pas fournis avec l'installation par défaut. L' un est pi dot plus. Nous allons l'utiliser pour visualiser les arbres de décision plus tard dans le cours. Pour installer cela, il suffit de taper Conda, installez pi dot plus juste comme ça. Et vous verrez beaucoup d'avertissements en général lorsque vous exécutez du code et que vous travaillez avec l'environnement Anaconda, généralement ils ne parlent que de choses qui sont obsolètes à l'avenir et il est sûr de les ignorer. Alors ne paniquez pas à propos des messages d'avertissement, les gars. Ça va être beaucoup d'entre eux et ils sont presque toujours en sécurité à ignorer. Si c'est une erreur, c'est une autre histoire, mais ne suez pas les avertissements. Très bien, on va frapper Y pour continuer. Et c'était rapide. Maintenant, nous devons également installer TensorFlow. Tensorflow est un paquet utilisé pour construire des réseaux neuronaux d'apprentissage profond, et nous allons jouer avec cela plus tard dans le cours aussi. Pour installer ce que vous dites simplement Conda, installez TensorFlow. Et si vous êtes sur un système doté d'un GPU NVIDIA, vous pouvez accélérer les choses en installant réellement le GPU TensorFlow à la place. Mais si vous n'êtes pas sûr, il suffit de rester avec TensorFlow. Comme je suis dans un petit environnement virtuel ici, je n'ai pas beaucoup de confiance que le GPU TensorFlow fonctionnera réellement. Donc, je vais rester avec juste TensorFlow. Et ça va aller et faire son truc aussi. Et encore une fois, pourquoi procéder ? D' accord, Et à ce stade, Anaconda est installé avec tout ce dont nous avons besoin pour ce cours. Allons de l'avant et effacons l'écran. Et revenons à notre navigateur et nous obtiendrons le matériel de cours ensuite. Maintenant, pour les obtenir, vous allez vous diriger vers HTTP et médias chiens Dotson, dash soft.com slash Machine Learning point HTML. Faites attention à la capitalisation et aux tirets en tout cas. Et vous devriez voir une page qui ressemble à ceci. Très bien, donc vous verrez un grand lien amical ici pour le matériel du cours. Cela contient tous les fichiers de bloc-notes Python que nous allons utiliser tout au long du cours. Allez-y et cliquez dessus pour le télécharger. Et nous allons aller de l'avant et sauver ça. Et si vous voulez les diapositives est une copie de celui-ci ici aussi. Bon, maintenant que le matériel de cours est en place. Allons de l'avant et fermons du navigateur ici. Et retour à notre terminal. Allons à nouveau dans notre dossier de téléchargements. Et décompressions ce fichier zip de points de cours ML. Bon, donc on a juste besoin de se rappeler où c'est. Alors, allons dans le cours ML. Et c'est donc sous le cours Téléchargements AMOLED. Tu peux déplacer ça ailleurs si tu veux. est important, c'est que vous vous souvenez où il est et comment y arriver. Ok, alors laissez-moi vous montrer comment gérer ces choses. Donc, il s'agit d'une collection de fichiers Jupiter Notebook est ce qu'ils s'appellent. Ce sont des moyens d'exécuter du code Python de manière interactive dans un navigateur Web. Et cela inclut également toutes les données d'échantillon dont nous avons besoin pour que le cours forme réellement nos modèles et fasse réellement l'apprentissage automatique. Mais pour, pour réellement les exécuter, nous devons réellement démarrer ce qui s'appelle Jupiter notebook à partir de ce répertoire. Alors rappelez-vous, chaque fois que nous commençons un ordinateur portable dans ce cours, ce que vous devez d'abord faire est d'ouvrir un cd de fenêtre de terminal dans le répertoire où vous installez ces matériaux de cours, ok, pour nous, ça va être notre maison sous téléchargements, puis cours ML. Et une fois que vous êtes dans ce répertoire, tapez Jupiter avec un bloc-notes y, juste comme ça. Il est important que vous commenciez cela à partir du bon répertoire. Une fois que nous avons fait cela, nous devrions avoir une fenêtre contextuelle de navigateur. Et c'est là. Donc c'est cool. Maintenant, nous pouvons voir la liste des fichiers Notebook que nous avons pour ce cours ici nous avons juste besoin de sélectionner celui que nous voulons. Donc, chaque fois que je dis d'ouvrir un fichier de bloc-notes spécifique sur le cours, juste attendre ici. Ouvrons les valeurs aberrantes. Dot I-SPY, N.-B. C'est intéressant. Cool. Donc, vous pouvez voir que nous avons tout ce code Python en ligne que nous pouvons réellement exécuter manière interactive et voir réellement la sortie comme nous l'exécutons dans notre petit navigateur Web. C' est plutôt cool. Et ce n'est pas juste une page web pré-faite, les gars. C' est en fait un environnement où vous pouvez réellement exécuter et modifier du code. Donc, par exemple, je peux cliquer sur ce petit bloc ici. Ce qu'il fait en fait, c'est de créer une répartition aléatoire des revenus des gens. Et puis jeter dans Jeff Bezos a une valeur aberrante avec un milliard de dollars, mais peut simplement cliquer dessus et appuyer sur ce bouton Exécuter. Et cela exécutera réellement ce code et produira ce graphique en réponse. Plutôt cool. Et le reste, nous en parlerons plus tard quand nous aurons réellement cette leçon. Mais fondamentalement, nous parlons de la façon de supprimer Jeff Bezos a une valeur aberrante et obtenir des visualisations plus significatives des données pour les gens normaux ici. Activité si importante là-bas. Mais de toute façon, oui, ça semble fonctionner. Donc, si vous êtes là, tout est configuré correctement. Félicitations, et nous pouvons aller de l'avant à nouveau. Rappelez-vous comment ouvrir ces fichiers de bloc-notes. Vous souhaitez ouvrir un terminal cd le répertoire dans lequel vous installez les matériaux du cours, puis tapez le bloc-notes Jupiter. Et rappelez-vous, Jupiter est drôle, Jay UP pourquoi TER, et ça devrait vous amener là où vous devez être. D' accord, les gars, passons à autre chose. 5. Bases Python Partie 1: donc si vous connaissez déjà Python, vous pouvez probablement sauter les deux prochaines conférences. Mais si vous avez besoin d'un rafraîchisseur, ou si vous n'avez pas fait python auparavant, vous voulez passer par ceux-ci. Il y a quelques choses bizarres sur le langage de script python que vous devez connaître . Alors plongons et sautons dans la piscine et apprenons du python en écrivant du code réel . C' est l' heure d'un cours de crash en Python. Maintenant, comme je l'ai déjà dit dans les exigences de l'année pour ce cours, vous devriez avoir une sorte de formation en programmation pour réussir. Dans ce cours, vous avez abordé une sorte de langage, même s'il s'agit d'un langage de script. JavaScript. Je me fiche de ce que c'est. C plus travail quelque chose. Mais si vous êtes nouveau en Python, je vais vous donner un peu de cours de crash ici. Je vais juste plonger et aller dans quelques exemples ici. Il y a quelques bizarreries sur python qui sont un peu différentes des autres langages que vous auriez pu voir, donc je veux juste parcourir ce qui est différent à propos de python des autres langages de script avec lesquels vous avez peut-être travaillé et le meilleur la façon de le faire est de regarder quelques exemples réels. Alors plongons dans un code. Donc une dernière fois, un peu droit comment ouvrir un ordinateur portable ici sur votre système ici. Et je suis sur les fenêtres. Reportez-vous à la conférence précédente si vous avez besoin d'instructions sur un autre système d'exploitation, mais en général, vous voudrez ouvrir une invite de commande d'une sorte ou d'une autre. Et sous Windows, vous devrez utiliser l'invite de commande anaconda. Alors trouvez votre anaconda trois. Beaucoup avec le menu Démarrer et Goto Anaconda invite nous pour que venir et encore une fois, vous devez CD dans le répertoire où vous avez enregistré tous vos documents de cours. Donc pour moi, c'était C colon slash ml cours, vous pourriez faire un de ir juste pour vous assurer que tout est là. Et une fois que vous êtes dans le bon répertoire, tapez Jupiter avec pourquoi notebook et vous devriez voir un écran comme celui-ci. Et à partir de là, nous voulons sélectionner le cahier Python 101 parce que cela va contenir notre petit tutoriel en python ici. Alors allez-y et cliquez sur Python 101 dot i p y N b et vous devriez maintenant avoir un écran qui ressemble à ceci, alors plongons dans. Si vous n'avez jamais vu de bloc-notes Jupiter auparavant, la façon dont il fonctionne est que vous pouvez cliquer dans l'une de ces cases de code et appuyer sur le bouton Exécuter ou Maj. Entrez et il exécutera ce code directement à partir de votre navigateur Web. Essayons-le avec ce premier bloc. Cliquez à l'intérieur pour le sélectionner et appuyez sur Maj Entrée. Maintenant, nous allons juste couvrir la syntaxe de python ici dans les principales façons dont il diffère des autres langages. Alors regardons de plus près ce code. Une chose avec Python est que l'espace blanc est vraiment important. Toute imbrication de code, comme pour l'adoration ou les expressions conditionnelles, repose sur le nombre d'onglets pour regrouper le code ensemble au lieu de crochets bouclés comme d'autres langues. Donc, nous avons une liste de chiffres. En python, une liste est comme un tableau ou un vecteur et d'autres langages. Nous définissons une liste des nombres un à six en les plaçant entre crochets séparés par des virgules. En python, il n'y avait aucun caractère nécessaire pour terminer une ligne que vous venez de taper. Entrez quand vous avez terminé, nous avons eu sept à la liste juste pour prouver que l'exécution de cela fait réellement quelque chose. Oui, on a des résultats pour un à sept maintenant. Ensuite, nous avons un exemple d'une boucle quatre en python. Cette déclaration est un taux à travers la liste nommée liste de nombres, stockant l'itération actuelle dans le nombre variable à chaque fois, Ah, quatre déclaration doit se terminer par un deux-points comme celui-ci, mais maintenant nous utilisons dans dense à indiquer quel code vit dans ce bloc de quatre. Et ici, nous avons un exemple de clause if else. Si le nombre est divisible uniformément par deux, nous l'imprimons. C' est même le contraire. Nous imprimons que c'est étrange et encore une fois nous utilisons dans dense pour indiquer quel code vit dans chaque clause if ou else ici va supprimer tout en dense pour sortir de la boucle quatre et imprimer tout fait à la fin. Notez que nous n'avons jamais eu à déclarer une variable à l'avance. Nous n'avons pas non plus à définir leurs types. Python est ce qu'on appelle un langage typé dynamiquement. Il essaie d'inférer le type de données de vos variables en fonction de la façon dont vous avez initialement utilisé um, mais en interne, elles ont des types. Vous pouvez également lancer explicitement des variables en différents types si vous en avez besoin. Mais les variables ne seront pas remaniées automatiquement comme elles le feraient dans les langues de type hebdomadaire. Parfois, cela peut entraîner des erreurs inattendues, et nous verrons certaines de ces erreurs au fur et à mesure que nous suivrons le cours. Passons au bloc suivant, qui montre simplement comment importer des modules externes dans vos scripts python. Vous venez d'utiliser la commande import pour cela, et vous pouvez définir un alias pour le module si vous souhaitez vous enregistrer aussi un peu de saisie . Donc ici, nous importons le module num pie afin que nous puissions y faire référence dans notre script, et nous l'importons sous le nom NP. Cela nous permet alors d'utiliser la fonction aléatoire des tartes engourdies en tapant simplement np point aléatoire et dans ce cas, demandaient à la tarte engourdie de nous donner 10 valeurs aléatoires normalement distribuées avec la moyenne donnée et l'écart-type 6. Bases Python Partie 2: ensuite, discutons des listes plus en profondeur, puisque nous les utilisons beaucoup. Si vous avez besoin de savoir combien d'éléments air dans une liste, vous pouvez utiliser la fonction Len intégrée pour obtenir cela. Comme si souvent, vous devez également découper des listes de certaines manières pour extraire des valeurs dans une plage donnée dans la liste. Le deux-points est utilisé pour cela. Dans ce premier exemple, nous utilisons Colon trois pour demander les 3 premiers éléments de la liste, et de même, nous pouvons utiliser trois points orteils. Demandez tout après le troisième élément. Comme So, nous pouvons aussi faire quelque chose comme négatif à l'orteil du côlon. Demandez les deux derniers éléments de la liste. Et si vous voulez ajouter une liste à une autre liste, c'est à cela que sert la fonction d'extension. Comme ce garçon, la liste contenant sept et huit à notre liste d'origine. Et si vous voulez modifier une seule valeur à une liste, vous pouvez utiliser la fonction upend comme ceci. Une autre chose cool à propos de Python est que les listes peuvent contenir à peu près n'importe quel type que vous voulez. Vous pourriez même faire une liste de listes, alors faisons-le maintenant. nous allons créer une nouvelle liste appelée Why and Make une nouvelle liste de listes qui contient notre liste X nouvellement développée et cette nouvelle liste Y pour récupérer un élément d'une liste. Utilisez simplement l'opérateur de support comme celui-ci ici. On récupère Element l'un des plus fous. Ceci est basé sur zéro. Alors pourquoi on vous donne réellement le deuxième élément, pas le 1er 1 Pourquoi zéro vous donnerait le premier élément, qui est le nombre 10 dans cet exemple. Nous allons également avoir une fonction de tri intégrée que vous pouvez utiliser pour trier la liste en place comme ça. Et si vous voulez trier dans l'ordre inverse, vous passez simplement. Inverser est égal à true dans la fonction de tri. C' est aussi un bon moment pour mentionner qu'il existe plusieurs façons de passer des paramètres dans des fonctions. Vous pouvez simplement passer une liste de valeurs comme vous le feriez dans la plupart des langues, mais vous pouvez également les transmettre par nom. Souvent, les fonctions python auront beaucoup de paramètres qui ont des valeurs par défaut leur assignées, et vous spécifiez simplement ceux qui vous intéressent en les spécifiant par leur nom. OK, continuons à parler de deux sondages. deux prochains sondages ressemblent beaucoup à des listes, mais la principale différence est qu'ils sont immuables. Une fois que vous avez créé un pour tirer, vous ne pouvez pas les modifier. Ils sont pratiques pour les personnes qui font de la programmation fonctionnelle ou pour interfaçage avec des systèmes comme Apache Spark que l'air développé sur des langages de programmation fonctionnels fera cela plus tard dans le cours. La seule vraie différence est que vous placez deux pools avec des parenthèses au lieu de crochets . Donc, voici un à tirer des valeurs 12 et 3. On peut utiliser Len dessus, comme avec la liste. Vous pouvez référencer des éléments dans A pour tirer de la même manière que vous le feriez dans une liste est, bien encore une fois il basé sur zéro. Alors pourquoi deux nous donne le troisième élément de la liste, pas le 2ème 1 Vous pouvez également faire une liste de deux taureaux si vous le souhaitez. Une autre utilisation courante de deux pôles est de passer autour de groupes de variables que vous voulez garder ensemble. Par exemple, la fonction split sur une chaîne vous donnera un tas de vallées de chaînes extraites de cette chaîne, et nous pouvons assigner ces valeurs à des éléments dans un pour tirer comme un moyen rapide de nommer chacun la fonction split sur une chaîne vous donnera un tas de vallées de chaînes extraites de cette chaîne, et nous pouvons assigner ces valeurs à des éléments dans un pour tirer comme un moyen rapide de nommer chacun cet exemple. Nous avons deux nombres séparés par une virgule, et nous savons que la première vallée représente un âge et la seconde et la valeur du revenu. Nous pouvons les extraire directement dans des variables appelées Âge et revenu. Comme si en se déplaçant sur une autre structure de données utile et python est le dictionnaire. Dans d'autres langues, vous pouvez le connaître sous la forme d'une carte ou d'une table de hachage. Il s'agit essentiellement d'une table de recherche où vous stockez les valeurs associées à un ensemble unique de valeurs clés. C' est plus logique. Avec un exemple, vous déclarez un dictionnaire en utilisant des parenthèses bouclées, alors faisons un dictionnaire Mapping noms de vaisseau avec les noms de leurs capitaines appelleront ce dictionnaire capitaines maintenant pour créer une entrée dans le carré Dictionary of Use pour spécifier une valeur de clé qui étaient intéressés à attribuer. Donc, pour attribuer la valeur Kirk à l'entreprise clé, Nous pouvons juste dire capitaines entreprise égale Kirk. Nous faisons la même chose pour les autres vaisseaux que nous connaissons. Ensuite, la récupération d'un élément de dictionnaire se fait de la même manière. Utilisez simplement des crochets pour récupérer la valeur souhaitée. Donc pour obtenir le capitaine de l'USS Voyager, on peut le faire comme ça. Mais que se passe-t-il si vous essayez de récupérer une valeur pour une clé qui n'existe pas ? Vous obtenez une exception. Dans ce cas, une façon d'éviter cela est d'utiliser la fonction get sur le dictionnaire. Donc, vous voyez, vous pouvez récupérer le capitaine de l'entreprise avec succès tel qu'il existe dans le dictionnaire . Mais si nous essayons d'obtenir un vaisseau qui n'est pas dans son dictionnaire, il renvoie la valeur spéciale nulle que vous contestez et traitez comme vous le souhaitez. Et si tu sais que le capitaine du N XO est Jonathan Archer, tu es mon nouveau meilleur ami. Vous pouvez itérer toutes les clés d'un dictionnaire, comme vous le feriez dans une liste comme celle-ci pour l'expédition. Les capitaines vous rendront chaque clé et le dictionnaire du capitaine et le nom qu'il vous a envoyé pour que nous puissions ensuite l'imprimer. Comme si 7. Bases Python Partie 3: OK, passer aux fonctions maintenant. Heureusement, ils ont fonctionné à peu près comme vous vous attendiez en python. Cet intact ressemble à ceci. Vous définissez une fonction avec le mot-clé sourd, suivi du nom de la fonction, suivi des paramètres que vous souhaitez transmettre avec leurs noms. Veillez à mettre fin à la définition de la fonction par un deux-points. Après cela, votre code dans la fonction doit être indenté. Pythons tout sur l'espace blanc. Tu te souviens ? Donc, ici, nous avons une fonction super simple appelée Square It qui prend juste une valeur, l' appelle X et retourne son appel carré. La fonction fonctionne exactement comme vous vous attendez. Il suffit de taper le carré, puis deux entre parenthèses pour obtenir la vallée carrée de, par exemple, nous allons l'exécuter. Il y a quelques choses funky que vous pouvez faire avec des fonctions et python, par exemple. Vous pouvez réellement passer une autre fonction à une fonction en tant que paramètre. C' est quelque chose qui permet à python de jouer bien avec les langages de programmation fonctionnels, que vous rencontrez beaucoup d'informatique distribuée. Nous pouvons créer une fonction comme celle-ci appelée faire quelque chose qui prend dans une fonction f paramètre X et retourne le résultat de f de X. Donc, nous pouvons réellement dire faire quelque chose, carré la virgule trois comme un moyen vraiment alambiqué de revenir au carré de trois. Mais cela fonctionne que, en passant, avez-vous remarqué que ce bloc de code sait toujours que le carré qu'il fonctionne existe même si nous l'avons défini dans un bloc précédent ? cahiers Jupiter fonctionnent en une seule session de colonel. Donc, tout ce que vous définissez ou modifiez avant le bloc que vous exécutez sera toujours en mémoire au sein de ce colonel. Parfois, cela peut entraîner un comportement déroutant, surtout si vous exécutez des blocs dans un bloc-notes, en panne ou à plusieurs reprises. Si des choses bizarres commencent à se produire, vous pouvez toujours commencer à partir d'une ardoise propre en sélectionnant Redémarrer Colonel dans le menu. Donnons également une certaine attention orteil fonctions Lambda qui vous permettent de passer des fonctions simples en ligne sans même leur donner un nom. Vous le voyez assez souvent dans le monde de la science des données. C' est plus facile à comprendre avec un exemple. Ici, nous appelons notre fonction do Something avec une fonction lambda qui calcule le cube d'une valeur au lieu de son carré. Jetez un oeil de près à la syntaxe ici, nous disons Lambda, suivi par le paramètre de fonction qu'un deux-points, après quoi nous pouvons faire ce que nous voulons à ce paramètre. Quelle que soit la valeur calculée après le deux-points est implicitement la valeur de retour de la terre de fonction. Donc, cela dit, pour créer une fonction lambda qui prend quelque chose appelé X et retourne X fois X X fois X Nous passons cet agneau pour fonctionner pour faire quelque chose avec une valeur de trois, qui exécute ensuite sont la fonction lambda pour la valeur trois. Et si nous faisons ça, vous pouvez voir que nous le faisons en fait, récupérer 27, soit trois cubes. 8. Bases Python Partie 4: Ok, les autres choses sont assez simples. Voici à quoi ressemble la syntaxe pour les expressions booléennes. Vous pouvez utiliser un signe double égal pour tester l'égalité, et vous pouvez aussi simplement utiliser le mot est qu'il y a aussi un triple signe égal que vous pouvez utiliser pour comparer les objets réels ensemble au lieu de leurs valeurs. Mais cela semble moins souvent vrai et faux sont un peu bizarres et qu'ils sont capitalisés en python. Mais seulement la première lettre, comme ainsi et pour les opérateurs comme et ou et non vous avez simplement utilisé les mots et ou et non au lieu de symboles spéciaux, vous pouvez faire quelque chose comme une requête de cas ou de changement en utilisant des expressions booléennes avec un Si l. Si d'autre structure comme celle-ci dans cet exemple, nous imprimons Comment est-ce arrivé si on a trois ans, ce qui est toujours faux. Sinon, nous passons à vérifier si l'on est supérieur à trois, ce qui devrait également être rencontré avec incrédulité si c'était vrai. Lorsque ce test échoue, nous revenons à notre dernière clause else, qui imprime tout va bien avec le monde à nouveau, nous avons utilisé en dense pour associer le code à des clauses spécifiques ici que nous avons abordé en boucle plus tôt . Allons plus en profondeur ici. Vous pouvez utiliser la fonction de plage toe automatiquement construire une liste de valeurs dans une plage donnée comme ainsi encore, nous commençons à compter à partir de zéro ici, donc la plage 10 nous donne les valeurs zéro à neuf. Le mot-clé continue dans une boucle signifie ignorer le reste de l'adoration et passer directement à la suivante. Et le mot-clé brake signifie arrêter l'adoration au début de cet exemple, nous utilisons continuer à sauter sur l'impression de chaque valeur si la valeur est un, et nous utilisons brake pour arrêter une fois que nous avons atteint la valeur. Cinq. Étudiez la sortie de 02345 et vous verrez que c'est exactement ce qu'il a fait. Une syntaxe alternative est la boucle wild, qui génère jusqu'à ce que certains expressionnistes booléens false. Ici, nous mettons en place une variable de compteur appelée X et boucle à travers l'impression X seulement alors que X est inférieur à 10. Une fois qu'il frappe 10, la boucle se termine comme vous pouvez le voir dans sa sortie. Essayez donc une activité très simple qui rassemble certaines des choses dont nous venons parler. Votre défi est d'écrire ici un bloc de code qui crée une liste d'imageurs boucles à travers chaque élément de la liste, et Onley imprime les numéros pairs dans la liste. Cela devrait simplement être une question de réorganiser certains des autres codes de ce bloc-notes. Donc, même si vous n'êtes pas à l'aise avec Python, je vous encourage à essayer. Vous vous sentirez beaucoup mieux avec Python si vous avez écrit quelque chose vous-même avec, aussi petit que petit. Ok, donc j'espère que tu n'as pas eu beaucoup de problèmes avec ça. Voici ma solution. Et gardez à l'esprit cela plus d'une façon de le faire. Tapons. Ma liste est entre crochets. 012583 et vous pouvez utiliser tous les numéros que vous voulez. Alors on peut dire quatre numéros dans ma liste. Colon Course. Vous pouvez choisir des noms de variables différents si le nombre mod deux est zéro numéro d'impression deux-points. Et comme vous pouvez le voir, nous obtenons la sortie attendue des nombres pairs ici. Ok, donc c'est tout ce qui est particulier à propos de Python. Pour la plupart, si vous venez d'une autre langue, cela devrait vous donner suffisamment de connaissances pour comprendre le code python. Je vais vous montrer dans ce cours et travailler avec ce code vous-même. Donc, c'est votre cours de crash python. Il est évident que vous avez juste des trucs très basiques là-bas. Au fur et à mesure que nous parcourons de plus en plus d'exemples tout au long du cours, cela sera de plus en plus logique puisque vous avez plus d'exemples à examiner. Mais si vous vous sentez un peu intimidé à ce stade, peut-être que vous êtes un peu trop nouveau dans la programmation ou le script, et ce pourrait être une bonne idée d'aller suivre un cours Python avant d'aller de l'avant. Mais si vous vous sentez plutôt bien à propos de ce que vous avez vu jusqu'à présent, allons de l'avant et nous continuerons. 9. Introduction à Pandas: Maintenant que vous avez une brève introduction au langage de programmation Python, parlons un peu de la bibliothèque Pandas. C' est une bibliothèque de fonctions python que vous utiliserez beaucoup de scientifiques de données. Alors suivez avec moi ici, allez-y et trouvez le tutoriel pandas que je p Y N fichier b. Ça devrait être à l'intérieur de votre matériel de cours. Vous devriez voir quelque chose comme ça à ce stade. Qu' est-ce que les pandas ? Eh bien, c'est fondamentalement une façon de traiter des données tabulaires. Donc, lorsque vous avez des colonnes et des lignes d'informations comme vous le faites souvent dans la science des données, pandas est un moyen très facile de charger ces données en les manipulant, examinant, nettoyant et en d'autres choses comme ça. Et cela fonctionne avec deux autres bibliothèques que vous allez utiliser beaucoup dans le domaine de la science des données et de l'apprentissage automatique. Donc, quand nous parlons de l'apprentissage automatique réel, les algorithmes utiliseront une bibliothèque python appelée Psychic Learn ou SK Learn pour abréger. C' est là qu'il a tout le code réel pour faire des choses comme les régressions linéaires ou SPM. Tout ce dont on parlera plus tard et qui prend habituellement comme entrée un bûcher engourdi , une tarte tellement engourdie. Une autre bibliothèque dans le mélange ici qui a sa propre représentation d'une augmentation de données à ce sujet pourrait être un tableau multidimensionnel de données, aussi. Donc c'est une sorte de façon de représenter l'information. Donc, la façon dont cela se passe habituellement est que vous pouvez utiliser des pandas pour charger vos données et les manipuler nettoyer et les comprendre, puis traduire cela en un bûcher engourdi. A qui se nourrit ensuite dans la psyché. Il apprend, et que la traduction se fait souvent automatiquement. Au fait, tu n'as rien de spécial. Alors, ce qui est plus important à ce stade, c'est de comprendre les pandas, non ? Parce que en fait chose que dans la psyché, il apprend assez trivial. Parlons donc des pandas. Défilons un peu ici et jouons avec des données, n'est-ce pas ? Nous commencerons donc par importer ce dont nous avons besoin. Donc, nous allons dire que nous voulons utiliser la bibliothèque de la bibliothèque de l'intrigue mat en ligne. Le moindre signifie que toute herbe que nous créons dans le cadre de notre bloc-notes apparaîtra dans le bloc-notes lui-même et non dans une fenêtre externe avec un besoin d' importer spécifiquement les bibliothèques que nous voulons utiliser dans notre code python. Donc, nous allons importer la bibliothèque num pie comme et P. Cela signifie que nous pouvons nous référer aux tartes engourdies le raccourci et P dans notre script maintenant. Et nous allons également importer la bibliothèque Pandas en tant que PD. Donc, cela signifie que nous avons essentiellement créé un alias pour la bibliothèque Panis de PD. Juste orteil nous sauve quelques coups de touche. Alors allons de l'avant et utilisons Panis pour la première fois. Où je dis ici est DF égale p d point reid Underscore. Voir SV passé Sazi SV supérieur. Alors que se passe-t-il ici ? Cela va charger le dernier début plus élevé voir fichier SV. C' est un fichier de valeurs séparées par des virgules Cela signifie juste que c'est des informations tabulaires où chaque colonne est séparée par une virgule. C' est donc un format très simple, basé sur le texte, et la première ligne correspond généralement aux titres de ces colonnes. Donc, avec une ligne de code, nous pouvons lire ces données à partir du disque et créer ce qu'on appelle un bloc de données à partir de celui-ci. Un bloc de données pandas, et nous allons signer ce bloc de données à une variable appelée DF. Donc, cela charge dans le passé notre Zazi SV et le convertit en un bloc de données pandas. Et puis nous pouvons appeler la tête sur cet objet de bloc de données pour visualiser les 5 premières lignes de ce bloc de données, et c'est à ça qu'il ressemble. Donc, il est en fait en cliquant ici et appuyez sur Maj Entrée pour l'exécuter. Et vous pouvez voir ici ceci est un petit aperçu du fichier. Donc, si vous voulez juste, genre, vérifier que tout est mal chargé et comprendre ce qu'il y a dedans, c' est un bon moyen. orteils font peu de place. Vérifiez avec la tête. Vous pouvez voir ici que nous avons les 5 premières lignes affichées ici et nos colonnes air intitulées Properly Années expérience employé employeurs précédents niveau d'éducation, parlé votre école, stagiaire et embauché. Nous allons utiliser cet ensemble de données plus tard dans le cours, en fait voir si nous pouvons prédire si un candidat est embauché ou non en fonction de son passé. Ok, donc tout a l'air assez bien là-bas. Vous pouvez également passer un entier à l'avance si vous voulez voir un nombre spécifique depuis le début de votre fichier. Donc, si je veux voir les 10 premières lignes de mon bloc de données. Je pourrais juste dire DF point head 10 comme ça et la crampe les 10 premières lignes, vous pouvez voir un peu d'un plus grand échantillon de données là-bas. Hum, et il pourrait aussi regarder la fin de votre fichier de données aussi. Si votre bloc de données ainsi DF point queue bien, ressemblez à cela et cela affiche les quatre dernières lignes de notre bloc de données. Vous pouvez voir qu'il s'agit d'un très petit ensemble de données. C' est juste quelque chose que j'ai inventé. Il ne contient que 12 lignes d'informations. Maintenant, nous allons parfois parler de la forme de votre bloc de données ou de la forme de vos données. Et ce que nous voulons dire quand nous parlons de la forme, c'est juste la dimensionnalité de celle-ci. Ainsi, par exemple, si nous voyons la forme de point DF qui reviendra avec 13 virgule sept, et ce que cela signifie, c'est que nous avons 13 roses et sept colonnes dans notre bloc de données, et c'est la forme de notre bloc de données. Juste combien de colonnes a combien de lignes Il a juste un mot de fantaisie pour un concept très simple . Nous pouvons également dire, taille de point DF qui revient. C' est 91 qui est juste le nombre de cellules dans notre bloc de données, essentiellement le nombre de points de données uniques. Et ça va être 13 fois sept dans notre exemple. 13 L'heure des roses. Sept colonnes. C' est 91. Il y a aussi un opérateur de Len. Il pourrait appeler Len DF, et ça revient avec 13. Cela vous cause juste le nombre de lignes dans votre bloc de données. Si tu as juste besoin de ça. Et si vous faites des colonnes de points DF. Ce que ça te rend. C' est un tableau des noms de colonne réels. Donc, si vous voulez rappeler rapidement ce que sont vos noms de colonnes et ce qu'ils signifient , c'est un bon moyen , c'est un bon moyend' obtenir une visualisation rapide de ce qu'il m'appelle. Et parfois tu dois te rappeler, et c'est, ah, ah, un petit truc pratique. Maintenant, faisons quelques manipulations de ce bloc de données. Disons que nous voulons extraire une seule colonne de ce bloc de données. Disons que nous voulons juste extraire la colonne embauchée et faire quelque chose de spécifiquement avec cela . Souvent, lorsque vous chargez des données, vous n'êtes pas intéressé par toutes les fonctionnalités qu'il contient. Vous souhaitez extraire certaines entités qui vous intéressent pour le modèle que vous créez . C' est ainsi que cela fonctionnerait. Donc, si je dis entre crochets DF fourchette embauchée qui va juste extraire la première colonne la colonne embauchée comme une seule trame de données. Donc, nous avons maintenant un nouveau bloc de données qui se compose juste de cela. Colonne unique. La colonne embauchée et moi aurions pu signer ça à un autre bloc de données si je voulais retourner et faire ça, vous savez, et faire autre chose avec. Donc, je pourrais dire, vous savez, appel embauché sur des égaux, DF embauché ou quelque chose comme ça. Vous pouvez également extraire une plage donnée de rose dans une colonne comme celle-ci. Donc, si je le fais, DF embauché et puis un support supplémentaire avec Colon cinq qui va extraire les 5 premières lignes de la colonne embauchée et je récupère un nouveau bloc de données qui ressemble à cela juste cinq lignes de la colonne supérieure et rien d'autre afin que vous peut voir comment les pandas pourraient être utilisés pour extraire les données qui vous intéressent lorsque vous essayez de pré-traiter vos données. Vous pouvez également extraire une seule valeur comme celle-ci. Si je dirais juste entre crochets cinq à la fin, c'est explicitement arracher la colonne embauchée sur la cinquième ligne, ce qui se trouve être la valeur Why. Ok, alors parlons un peu de terminologie ici. OK, nous avons une trame de données qui est fondamentalement un objet multidimensionnel, dans ce cas de 13 par 7 objets. Et puis quand on extrait une seule ligne ou une seule colonne comme celle-ci, ça va donner. Speck s'appelait un Siri. Ok, donc ce sérieux est fondamentalement un tableau un D. Et si nous extrayons une seule valeur, cela se réfère généralement à, eh bien, une valeur si peu de terminologie là. Vous pouvez également extraire plus d'une colonne si vous le souhaitez. Évidemment, ça va être une situation plus courante. Tu ferais ça comme ça. Donc, au lieu de passer juste un seul nom de colonne entre guillemets, vous pouvez passer un tableau de noms de colonnes à la place comme ceci. Donc, nous allons dire le support DF, et puis nous allons avoir une autre couche de parenthèses à l'intérieur de ces parenthèses qui représente le tableau de noms de colonnes que vous voulez Donc, je dis le support de support DF années d'expérience virgule embauché support et cela nous redonnera ce nouveau cadre de données ici qui se compose colonnes d' années d'expérience et d'embauche et rien d'autre. Et vous, évidemment, vous pouvez ajouter plus de colonnes à cette liste si vous le souhaitez. Encore une fois, une opération très courante pour extraire uniquement les entités ou les colonnes qui vous intéressent réellement pour une tâche spécifique. Moins vous poussez de données, mieux c'est. Donc c'est généralement la première chose que tu veux faire. Débarrassez-vous de ce que vous ne vous souciez pas. Ok, vous pouvez également extraire des plages de rose de plus d'une colonne de la même manière. Donc, je pourrais dire, je veux juste les 5 premières lignes des années expérimentées dans des colonnes supérieures comme celle-ci. Rien de trop surprenant cela dans la taxe là-bas. Si vous souhaitez trier vos résultats, triez votre bloc de données. Tu pourrais le faire comme ça. Il y a la fonction de tri des valeurs de soulignement. Vous pouvez appeler sur le bloc de données, en passant juste tableau de la colonne que vous voulez trier par et nous dirons cette expérience. Nous voulons trier par années d'expérience. Vous pouvez voir qu'il l'a fait en fait, faire ce genre de zéro le plus bas au plus haut, jusqu'à 20 ans d'expérience et notre petit bloc de données fabriqué ici. Que pouvons-nous faire d'autre ? Nous pouvons également faire des comptes de valeur. C' est la façon de décomposer le nombre de chaque valeur unique qui existe, ce qui pourrait être un moyen utile de visualiser votre type de données. Recherchez des valeurs bizarres qui pourraient être dehors. Les menteurs que je dois faire est de dire DF, puis le nom de la colonne que vous voulez compter sur la valeur des points compte et je vous donnerai un compte de chaque valeur unique dans leur. Alors, rendez-en réel. Disons que nous voulons créer une valeur compte Siri hors de la colonne de niveau d'éducation dans notre bloc de données, et ensuite nous allons aller de l'avant et imprimer cela en disant simplement de créer un score compte et nous récupérons ce résultat qui indique que dans notre bloc de données, il y a sept degrés B s pour les diplômes de doctorat dans les degrés M s. Ok, donc et si tu veux Oh, la chose tentante à faire ici est de créer une histoire, Graham, non ? Donc, si vous voulez tracer cette distribution, c'est très facile. Et Pan est bien, on pourrait juste dire que les diplômes comptent. Arrêtez l'intrigue genre Eagles Bar dit, en disant, Nous voulons une parcelle de bar de ces comptes de degrés. Et puisque nous avons utilisé Matt Plot live en ligne en haut, cela va juste de l'avant et affiche dans notre carnet I Python si très facile de faire réellement graphiques en utilisant des pandas aussi bien. Très bien, si vous voulez pratiquer ça pour vous-même, j'ai un défi pour vous. Salissez vos mains ici et obtenez un peu de main sur l'expérience. Essayez d'extraire rose 5 à 10 de ce bloc de données source de l'des embauches potentielles que nous avons, et je veux que vous conserviez seulement les employeurs précédents et les colonnes supérieures. Attribuez cela à un nouvel objet de bloc de données, puis créez un historique graham comme nous venons ici, le faire ici,en traçant la distribution du nombre d'employeurs précédents dans ce sous-ensemble des données. Ok, ça devrait te permettre de rassembler toutes les choses dont on a parlé ici. Il y a beaucoup plus de dépendance que cela, évidemment, mais ce sont les opérations les plus courantes que vous devez gérer et à peu près tout ce que vous devez savoir pour suivre ce cours et comprendre ce qui se passe. Donc, ayez une fissure de cet exercice. Je pense que ce sera une bonne pratique pour vous, et avec ça sous votre ceinture, nous pouvons passer à une vraie science des données. 10. Types de données: d' accord. Si vous souhaitez être un spécialiste des données, nous devons parler des types de données que vous pourriez rencontrer, de la façon de les classer et de la façon dont vous pourriez les traiter différemment. Alors plongons dans les différentes saveurs de données que vous pourriez rencontrer. de Parlonsdedifférents types de données que vous pourriez rencontrer des choses assez basiques ici. Mais, vous savez, je dois commencer par des choses simples, et nous allons aller jusqu'aux choses les plus compliquées de l'apprentissage machine d'exploration de données. Mais il est important de savoir quel type de données vous traitez, car différentes techniques peuvent avoir des nuances différentes, selon le type de données que vous traitez. Il y a donc plusieurs saveurs de données, si vous voulez, si vous voulez et j'aime la crème glacée, qui est la principale raison pour laquelle cette diapositive est en place. Mais il y a des données numériques, catégoriques et originales, et encore une fois, vous savez, il existe différentes variantes de techniques que vous pouvez utiliser pour différents types de données . Vous devez donc toujours garder à l'esprit le type de données que vous traitez lorsque vous les analysez. Commençons le Nouveau Miracle. C' est probablement le type de données le plus commun représente fondamentalement une chose quantifiable que vous pouvez mesurer quelques exemples que j'ai ici des hauteurs de temps de chargement de page de personnes, les prix des actions. Vous savez, des choses qui varient des choses que vous pouvez mesurer des choses qui ont, vous savez, un large éventail de possibilités. Maintenant, il y a essentiellement deux types de données numériques, donc une saveur, si vous voulez. Il y a des données discrètes, qui sont basées sur l'énergie , par exemple, qui pourraient être des comptes d'une sorte d'événement. Quelques exemples ici. Combien d'achats un client a-t-il fait au cours d'une année ? Eh bien, ça ne pourrait être que des valeurs discrètes. Ils en ont acheté une ou deux. Les choses sont à propos de trois choses qu'ils auraient pu acheter, vous savez, 2,25 choses ou trois et 3/4 choses. C' est une valeur discrète qui a une restriction entière à elle. L' autre type de données numériques est celui des données continues. C' est des trucs. Il a une gamme infinie de possibilités où vous pouvez aller en fraction. Ainsi, par exemple, revenant à la hauteur des gens, il y a un nombre infini de hauteurs possibles pour les gens. Vous pourriez être cinq pieds et 10.37625 pouces de haut ou peu importe ou le temps qu'il faut pour faire quelque chose comme vérifier sur un site Web pourrait être une énorme gamme de possibilités. Vous savez, 10.7625 secondes pour tout ce que vous savez ou combien de pluie est tombée un jour donné, il y a une quantité infinie de précision là, donc c'est un exemple de données continues. Donc, pour résumer, données numériques sont quelque chose que vous pouvez mesurer quantitativement avec un nombre. Et il pourrait être soit un discret où son énergie est basée, comme une sorte de nombre d'événements ou continu, où il y a une précision infinie que vous pourriez avoir à la disposition de ces données. Le deuxième type de données que nous allons parler de ses données catégoriques et ce sont données qui n'ont pas de réunion numérique inhérente. Vous ne pouvez pas vraiment comparer une catégorie à une autre directement. Des choses comme le genre. Oui, pas de questions. Race, État de résidence, catégorie de produits, parti politique. Vous pouvez attribuer des numéros à ces catégories, et souvent vous le ferez, mais ces nombres n'ont pas de réunion inhérente. Donc, par exemple, je peux dire que la région du Texas est plus grande que la région de Floride, mais je ne peux pas dire que le Texas est plus grand que la Floride, je veux dire, sont que des catégories. n'y a pas de riel, un nouveau miracle, un sens quantifiable pour eux. C' est juste une façon de catégoriser différentes choses. Encore une fois, je pourrais avoir une sorte de cul numérique IG Nation à chaque État. Je peux dire que l'état numéro 3 de la Floride dans la succession du Texas numéro 4, mais il n'y a relation réelle entre trois et quatre. Ils ont raison. C' est juste une sorte d'abrégé pour représenter ces catégories de manière plus compacte. Encore une fois, les données catégoriques n'ont pas de signification numérique intrinsèque. C' est juste une façon que vous choisissez de diviser un ensemble de données en fonction de catégories, et la dernière catégorie dont vous avez tendance à entendre parler avec les types de données est les données d'origine, et c'est une sorte et la dernière catégorie dont vous avez tendance à entendre parler avec les types de données est les données d'origine, et c'est une sortede mélange de et les données catégoriques. Et un exemple courant est l'évaluation des étoiles pour un film ou une musique ou ce que vous avez. Donc, dans ce cas, nous avons des données catégoriques en ce sens qu'il pourrait être de une à cinq étoiles. Vous savez où l'on peut représenter pauvre et cinq peut représenter excellent, mais ils ont une signification mathématique. On sait que cinq signifie que c'est mieux qu'un. C' est donc un cas où nous avons des données où les différentes catégories ont en fait une relation numérique les unes avec les autres. Donc je peux dire qu'une étoile est moins de cinq étoiles. Je peux dire que deux étoiles est moins de trois étoiles et dire que quatre étoiles est plus grand que deux étoiles en termes de qualité. Donc c'est en quelque sorte au milieu là. Vous pourriez aussi penser à cela. Vous savez, si vous le considérez comme le nombre réel d'étoiles comme des données numériques discrètes. Donc certainement une ligne fine là-bas, et dans beaucoup de cas, vous pouvez réellement le traiter de cette façon. Donc là, vous l'avez. Les trois types différents il y a des dia numériques, catégoriques et orginal. Voyons s'il est enfoncé. Ne vous inquiétez pas, je ne vais pas passer dans votre travail ou quoi que ce soit. Quiz rapide. Donc, pour chacun de ces exemples, les données sont-elles numériques, catégoriques ou originales ? Commençons par la quantité de gaz dans votre réservoir de gaz. Qu' est-ce que tu en penses ? Eh bien, la bonne réponse est un nouveau miracle. C' est une valeur numérique continue là parce que vous pouvez avoir n'importe quelle gamme infinie de possibilités de gaz dans votre réservoir. Je veux dire, oui, c'est probablement une limite supérieure à la quantité de gaz que vous pouvez y insérer. Mais il n'y a pas de fin au nombre de valeurs possibles de la quantité de gaz que vous avez. Ça pourrait être 3/4 d'un char. Ça pourrait être 7/16 d'un char. Ça pourrait être un piqûre d'un char. Je veux dire, qui sait, n' est-ce pas ? Que diriez-vous si vous lisez votre santé globale sur une échelle de 1 à 4, où ces choix correspondaient catégories plus pauvres, modérées, bonnes et excellentes, Pensez-vous ? Eh bien, c'est un bon exemple de données d'origine. Ça ressemble beaucoup à nos données d'évaluation de films. Et encore une fois, selon la façon dont vous modélisez que vous pourriez probablement traiter comme des données numériques discrètes aussi . Mais techniquement, on va appeler ça les données de l'épreuve. Et les courses de vos camarades de classe ? Tu sais, quelle nationalité sont-ils ? Exemple assez clair de données catégoriques. Vous savez, vous ne pouvez pas vraiment dire que, vous savez, vous ne pouvez pas comparer les gens jaunes les verts juste là juste jaune et vert et juste choisir deux courses aléatoires qui n'existent pas. Euh, mais, vous savez, sont des catégories que vous pourriez vouloir étudier et comprendre les différences entre sur une autre dimension. Que diriez-vous de l'âge de vos camarades de classe ici dans cette classe depuis des années ? Une petite question piège là. Si je disais que ça devait être dans une nouvelle vallée de l'énergie, comme, vous savez, 40, 50 ou 55 ans, alors ce serait des données numériques distinctes. Mais si j'avais plus de précision comme, vous savez, 40 ans, 3 mois et 2,67 jours, alors ce serait des données numériques continues. Mais de toute façon, c'est un type de données numériques, et enfin, et enfin, l'argent dépensé dans un magasin à nouveau. Tu sais, ça pourrait être un exemple de données numériques continues. Encore une fois, cela n'est important que parce que vous pouvez appliquer différentes techniques à différents types de données. Donc, il pourrait y avoir certains concepts où nous faisons un type d'implémentation pour les données catégoriques et un type différent d'implémentation pour les données numériques, par exemple. C' est donc tout ce que vous devez savoir sur les différents types de données. Zone de concepts assez simples que vous avez obtenu numérique catégorique et les données Ordell et numériques peuvent être continues ou discrètes, et il peut être différentes techniques que vous appliquez, selon le type de données que vous traitez. Donc, nous allons voir que tout au long du cours à l'avenir, passons à 11. Moyenne, mode moyen,: Faisons un peu de mise à jour des statistiques. 101 e. Je veux dire, c'est comme des trucs de l'école primaire, mais bon de le revivre et d'apprécier les différences et la façon dont ces différentes techniques sont utilisées. Moyenne médiane et mode. Je suis sûr que vous pour ces termes avant, mais il est bon de voir comment ils sont utilisés différemment. Alors plongons dedans. Passons à la moyenne et au mode. Cela devrait être une critique pour la plupart d'entre vous. Je pense qu'ils enseignent ça à l'école primaire ces jours-ci. Mais juste un rafraîchissement rapide, en d'autres termes, commencer à réellement plonger dans quelques statistiques réelles. Regardons juste quelques données réelles et comprenons comment mesurer ces choses. Donc, la moyenne, comme vous le savez probablement, est juste un autre nom pour la moyenne pour calculer la moyenne d'un ensemble de données. Tout ce que vous avez à faire, c'est d'augmenter toutes les valeurs et de diviser par le nombre de vallées que vous avez. Prenons donc cet exemple ici. Disons que je suis allé porte à porte dans mon quartier et que j'ai demandé à tout le monde, combien d'enfants ont-ils ? Combien d'enfants vivent dans leur ménage qui, d'ailleurs, est un bon exemple de données numériques discrètes , n'est-ce pas ? Rappelez-vous de la conférence précédente. Disons que je fais le tour et que j'ai découvert que la première maison n'a pas d'enfants dedans. Et la deuxième maison a deux enfants et la troisième famille SEC a trois enfants et deux et un et ainsi de suite. Donc un masque, ce petit ensemble de données de données numériques discrètes. Et pour comprendre la moyenne, tout ce que je fais est de les ajouter tous ensemble et divisés par le nombre de maisons où je suis allé. Donc, dans ce cas, il sort zéro plus deux plus trois, plus tout le reste de ces choses divisé par le nombre de maisons que j'ai regardées, soit neuf. Et le nombre moyen d'enfants par maison dans mon échantillon est de 1,11 Donc là, vous avez cela signifie maintenant, médiane. C' est un peu différent. La façon dont vous calculez la médiane d'un ensemble de données est de trier toutes les valeurs et de prendre celle qui se termine au milieu. Donc, par exemple, si c'était mon ensemble de données d'origine, je pourrais le trier numériquement, et je peux prendre le nombre qui a dormi tamponnée au milieu des données, qui s'avère être un. Donc encore une fois, tout ce que je fais est de prendre les données numériquement et de prendre le point central. C' est tout ce qu'il y a aux médias. Maintenant, il y a une nuance si vous l'avez même contre un nombre impair de points de données que la médiane pourrait réellement tomber entre deux points de données, non ? Comme si j'avais Ah, un nombre pair là de points de données qu'il serait clair lequel est en fait le milieu . Dans ce cas, tout ce que vous faites est de prendre la moyenne de la à faire tomber au milieu. Donc, si vous n'avez même pas de nombre, vous prenez juste le milieu à maintenant cet exemple de médiane et la moyenne que nous sommes assez proches uns des autres parce qu'il n'y avait pas beaucoup de valeurs aberrantes. Tu sais, on avait 012 ou trois enfants, mais on n'avait pas une famille farfelue qui avait 100 enfants. Ça aurait vraiment faussé la moyenne. Mais cela n'a peut-être pas trop changé la médiane, est-ce pas ? Et c'est pourquoi la médiane est souvent une chose très utile à regarder et souvent négligée. Les gens ont tendance à tromper les gens avec des statistiques parfois, et je vais continuer à le signaler tout au long du cours où je peux. Mais par exemple, vous pouvez parler du revenu moyen ou moyen des ménages aux États-Unis, et le chiffre réel de l'année dernière quand j'ai regardé les choses était de 72,000 dollars impairs. Mais cela ne donne pas vraiment une image précise de ce que la moyenne, ce que fait l'Américain typique. Parce que si vous regardez le revenu médian, il est beaucoup moins élevé que ses 51 939$. Pourquoi c'est ça ? En raison de l'inégalité des revenus, il y a quelques personnes très riches en Amérique, et il en va de même dans beaucoup de pays. En raison de l'inégalité des revenus, il y a quelques personnes très riches en Amérique, L' Amérique n'est même pas la pire, mais vous connaissez ces milliardaires si riches qui vivent à Wall Street ou à la Silicon Valley ou quoi qu'ils faussent le droit méchant. Mais il y en a tellement peu, ils n'affectent pas vraiment la médiane. Donc c'est un excellent exemple de l'endroit où la médiane raconte une bien meilleure histoire sur la personne ou le point de données typique dans cet exemple que la moyenne. Donc, chaque fois que quelqu'un parle de la moyenne à laquelle vous devez penser, eh bien, quoi ressemble la date de distribution ? Y a-t-il des valeurs aberrantes qui pourraient être biaisées ? Et si la réponse est potentiellement, oui, vous devriez également demander la médiane, car souvent cela fournit plus de perspicacité que la moyenne ou la moyenne. Enfin, nous allons parler de mode. Cela ne se produit pas vraiment trop souvent dans la pratique, mais vous ne pouvez pas parler de moyenne et de médiane sans parler de mode. Je ne sais pas pourquoi. Parce que ça commence avec eux, je suppose. Mais tout ce qui est est est la valeur la plus courante dans l'ensemble de données. Donc, en revenant à mon exemple de nombre d'enfants dans chaque maison, si je regarde juste quel nombre se produit le plus souvent, il s'avère être nul. Et le mode, par conséquent, de ces données est zéro. Le nombre le plus courant d'enfants dans une maison donnée dans ce quartier n'est pas d'enfants, et c'est tout ce que cela signifie maintenant. C' est en fait un bon exemple de par continues parrapport aux données discrètes, , parce que cela ne fonctionne vraiment qu'avec des données discrètes. Si j'ai une plage continue de données que je ne peux pas vraiment parler de la valeur la plus commune qui se produit à moins que, comme vouloir des liens qui en quelque sorte dans des valeurs discrètes. OK, donc nous avons déjà rencontré un exemple ici où le mode de type de données est généralement pertinent uniquement pour les données numériques discrètes. Et si vous avez des données continues, pas tellement. Beaucoup de données du monde réel ont tendance à être continues. C' est peut-être pour ça que tu n'entends pas trop parler de Mode. Mais c'est là pour l'exhaustivité. Là, vous avez cela signifie médian et mode en un mot, et nous pourrions aller de l'avant. Moyenne médiane et mode, genre de choses statistiques les plus basiques que vous pouvez faire. Mais j'espère qu'il y a eu un peu de recyclage sur l'importance de choisir entre la médiane et la moyenne. Ils peuvent raconter des histoires très différentes, et pourtant les gens ont tendance à les assimiler dans leur tête. Assurez-vous donc d'être un scientifique responsable des données et de représenter les données d'une manière qui transmet le sens que vous essayez de représenter. Si vous essayez d'afficher une valeur typique, la médiane est souvent un meilleur choix que la moyenne en raison des valeurs aberrantes. Alors rappelez-vous que passons à autre chose 12. Utiliser moyenne et le mode dans Python: Commençons à faire un vrai codage et python et voyons comment vous calculez la médiane moyenne et le mode en utilisant python dans certains fichiers I Python que nous avons Okay, alors ouvrez le bloc-notes de mode médian moyen à partir de vos matériaux de cours ici dans votre ah Page de cahier Jupiter ici et encore, si vous avez besoin de rafraîchissement Teoh sur la façon de faire cela, retournez à la conférence mise en place et je vais vous montrer comment faire à nouveau. Mais une fois que vous avez le mode médian moyen ouvertement, vous pouvez jouer avec. Voyons ce qui se passe ici. Donc, ce que nous allons commencer à faire, c'est créer une fausse série de données sur la répartition des revenus. Nous allons donc modéliser 10 000 personnes et combien d'argent ils gagnent chaque année. Maintenant, pour ce faire, nous allons utiliser le paquet num pie. Donc, comme nous l'avons mentionné dans l'importation de paquets dans notre introduction à Python, commencera par dire numb pie importante AS et P. Cela nous permet de nous référer au paquet numb pie comme juste np, qui nous permet juste de nous sauver quelques taper en plus d'importer ce paquet afin que nous puissions l'utiliser maintenant Le paquet num pie inclut une fonction appelée point aléatoire normal, et ce que cela fait est de créer une distribution aléatoire. Fondamentalement, il crée une distribution de données de courbe de cloche autour d'un certain point dans ce cas, 27 000$ avec un écart-type de 15 000$. Et nous voulons 10 000 points de données dans cet ensemble de données. Maintenant, si vous n'êtes pas familier avec l'écart type et les distributions normales, nous en parlerons plus en détail plus tard. Mais je pense que vous commencerez à en donner un sens au cours de cet exercice. Donc, une fois que nous avons créé cet ensemble de données de 10 000 personnes qui ont une distribution centrée autour de 27 000$, nous pouvons alors col n p dot dire d'utiliser le paquet num pie pour calculer la moyenne ou la moyenne de cet ensemble de données. Et puisque nous avons précisé qu'il devrait être centré autour de $27,000, nous nous attendons à ce que ce soit environ $27,000. Donc, il est cliquez dans ce bloc de code et appuyez sur Shift enter pour l'exécuter, et bien sûr, il est d'environ 27 000$ maintenant parce qu'il y a un composant aléatoire à cela votre résultat peut être légèrement différent. C' est prévu. C' est OK, mais ça devrait être près de 27 000 pour que nous puissions réellement tracer cela pour avoir une idée plus de la façon dont l'état est distribué. Pour ce faire, nous allons utiliser un paquet appelé Matt Plot Lib, qui nous permet de créer des graphiques très simples ici en ligne et d'afficher ces graphiques dans le fichier de bloc-notes lui-même. Nous devons dire pour cent Matt plot lib en ligne comme la première ligne ici. Avez-vous déjà rencontré un problème à l'avenir avec ce cours dans les carnets où vos graphiques sont affichés ? C' est probablement parce que vous avez oublié d'exécuter un bloc de code qu'il contenait Matt plot live en ligne qui est nécessaire pour réellement voir ces graphiques. Avec cela hors du chemin, cependant, cependant, nous pouvons importer le paquet lib de plot Matt lui-même spécifiquement la partie de lot de tuyau de celui-ci et nous ferons encore une fois référence à cela comme un alias de Plt juste pour nous sauver et taper. Donc maintenant que nous avons Matt Pot Libs parcelle installée, nous pouvons simplement dire que le point de l'intrigue sifflé pour créer un hist un gramme de notre ensemble de données sur les revenus, et nous allons passer dans le numéro 50 ce qui signifie que nous voulons ce diviser en 50 seaux différents. Donc nous allons à Kwan Ties sont un ensemble de données dans 50 compartiments discrets de données, si vous voulez, si vous voulez, et ensuite nous pouvons appeler l'intrigue que j'ai montré. Montrez-le en fait. Allons de l'avant et exécutons ça aussi. Maj, entrez dans ce bloc et vous devriez voir quelque chose qui ressemble un peu à ça. Donc il y a cette courbe de cloche que je vous ai promis , et vous pouvez voir qu'elle est centrée autour ou environ 27 000$. Si vous n'êtes pas familier avec l'histoire, Grammes, La façon d'interpréter ces données est que beaucoup de gens gagnent environ 27 000$ par année. Très peu de gens gagnent entre 60,000 et 80,000$ par année. Ok, donc c'est les données fictives qu'on a inventées. Donc nous avons vu que la moyenne est d'environ 27 000$. C' est logique. C' est ce à quoi on s'attendrait. Quelle est la médiane ? Encore une fois, les médias sont justes. Si nous devions trier toutes ces données, quelle serait la valeur au milieu de tout cela. Et comme nous avons une belle distribution de courbe de cloche, même ici, la médiane devrait être à peu près la même que la moyenne. Allons de l'avant et cliquez dans le bloc trois ici et exécutez ce décalage. Entrez et assez sûr, c'est aussi environ 27 000$. Donc, pour un uniformément détruit un ensemble de données comme celui-ci, la médiane et la moyenne seront à peu près la même. Cependant, tous les ensembles de données ne sont pas uniformément répartis. Voyons ce qui se passe si on ajoute Jeff Bezos dans le mélange. Et disons juste qu'il a fait 1 000 000 000 000$ l'an dernier. C' est probablement un peu du côté supérieur, même pour Jeff Bezos. Mais juste pour des raisons d'argument, nous allons appeler n p dot append pour juste ajouter une valeur supplémentaire à la liste des revenus, et il contiendra une seule valeur, un milliard. Donc nous aurons une nouvelle liste de revenus ici qui contient des données normalement distribuées plus Jeff Bezos là pour gâcher les choses. Maintenant rappelez-vous, la médiane représente juste ce qui est la valeur moyenne loin pour tous les trier. Et nous n'avons ajouté qu'un point de données de plus ici, donc ça ne devrait pas changer beaucoup, non ? Donc, nous allons recommencer la médiane, et nous obtenons toujours une valeur proche de 27 000$. Donc Jeff Bezos n'a pas gâché la médiane de notre ensemble de données. Cependant, si on calcule la moyenne, ça va être très différent, non ? C' est jusqu'à, comme 127 000$. Presque. C' est une excellente histoire sur la façon dont une valeur aberrante dans un ensemble de données peut vraiment gâcher la moyenne ou la valeur moyenne de cet ensemble de données. Donc, quand les gens parlent de moyennes ou de moyens, prenez cette information avec un grain de sel. Demandez-vous, pourrait-il y avoir des valeurs aberrantes qui faussent ces données ? Et, ah, la répartition des revenus en est un excellent exemple. Dans ce cas, la médiane va vous raconter une meilleure histoire de ce qui se passe réellement dans la population en général . Donc, vous savez, leçon de statistiques numéro un ou comment surveiller les gens mentis avec des statistiques. Assurez-vous que vous comprenez la différence entre la médiane et la moyenne, et s'il y a des valeurs aberrantes impliquées, les médias et cela va probablement vous donner plus d' informations utiles vont également toucher au mode juste parce qu'il commence avec eux et les gens parlent à ce sujet avec la moyenne et la médiane pour une raison quelconque. Alors allons de l'avant et créons un autre ensemble de données faux ici. Cela sera réparti uniformément. On aura un tas de faux âges pour 500 personnes. Donc nous allons appeler np dot aléatoire rand pour avoir une distribution uniforme entre 18 et 19 ans pour 500 personnes. Et puis nous allons juste taper les âges, ce qui nous permet de visualiser ce tableau en ligne ici. Maj entrer à l'intérieur de cela et c'est aléatoire. Donc nous allons obtenir des résultats différents à chaque fois maintenant pour calculer à nouveau le mode. C' est juste la valeur qui apparaît le plus souvent dans cet ensemble de données. Alors allons-y et faisons-le. Tu as fait ça ? Nous allons utiliser le paquet de thèse I pi et c'est le module de stats, et c'est juste une autre façon de l'importer. Donc, nous disons à partir de CYP que j'importe des statistiques. Dans ce cas, nous n'allons pas utiliser la clause as car je peux taper des statistiques qui ne sont pas trop difficiles. Et puis que nous appellerons le mode dot stats sur le tableau des âges pour récupérer notre résultat de mode, et après cela, chugs un peu. Il y a une charge. Ce paquet que nous recevons. Notre réponse. S' avère, dans ce cas, le mode est 28 qui s'est produit 14 fois dans l'état de l'ensemble. Et c'est tout à fait aléatoire. Donc, chaque fois que vous exécutez ceci, vous obtiendrez une réponse différente. Allons-y. Allons-y ! Reculez, Teoh. Bloquer sept Ici à nouveau et passer à nouveau entrer pour obtenir un nouvel ensemble de données ici. Et si nous courons ce blocus à nouveau, vous devriez obtenir une réponse différente cette fois les électeurs 20 qui ont eu lieu 15 fois. Donc vous montre juste que le mode fonctionne. Mais ce sont des données aléatoires, donc ce n'est pas terriblement significatif, mais illustre comment vous feriez cela dans cyp I Ok, donc là vous avez cela signifie médian et mode. Passons à un exercice pour vous permettre de pratiquer avec. Je vais te donner un peu Simon. Ici. Si vous ouvrez moyenne exercice médian I cahier python. Il y a des trucs avec lesquels vous pouvez jouer, donc je veux que vous retroussiez vos manches et essayiez de le faire ici nous avons des données aléatoires sur le commerce électronique. Alors quoi ? Ces données représentent le montant total dépensé par transaction. Et encore une fois, tout comme avec notre exemple précédent, est juste une distribution normale des données. Tout comme notre exemple de revenu peut exécuter cela et vos devoirs sont d'aller de l'avant et de trouver la moyenne et la médiane de ces données en utilisant la masse que j'emballe à peu près la tâche la plus facile que vous pourriez imaginer. Toutes les techniques dont vous avez besoin sont sur le mode médian moyen par cahier Python. Mon point ici n'est pas vraiment de nous défier, juste pour vous faire réellement écrire du code python et vous convaincre que vous pouvez réellement obtenir un résultat et faire quelque chose arriver ici. Alors allez-y et jouez avec ça. Si vous rencontrez des difficultés à afficher les discussions pour la sélection vous aideront. Mais il devrait être assez trivial si vous voulez jouer que certains ou n'hésitez pas à jouer avec la distribution de données ici et voir quel effet vous pouvez avoir sur les nombres là-bas. Vous savez, à certains points aberrants, faites ce qu'on fait avec les données de revenus si désorientées comme ça vous apprendrez ces trucs, amusez-vous, accord. J' espère qu'il a retroussé vos manches et qu'il a joué un peu autour de ce code. Obtenez une certaine confiance en faire des statistiques dans I cahier Python, Bear et Python en général. Donc, sans derrière nous, allons de l'avant vers notre concept de filets, écart-type et la variance. 13. Variation et déviation standard: Parlons de concepts d'écart-type et de variantes en termes que vous avez probablement entendus auparavant. Mais allons un peu plus en profondeur sur ce qu'ils signifient vraiment et comment vous les calculez . C' est une mesure de la propagation d'une distribution de données, et j'aurai un peu plus de sens dans quelques minutes. Parlons de l'écart type entre les variantes et les quantités fondamentales pour une distribution de données que vous verrez encore et encore dans ce cours. Alors voyons ce qu'ils sont. Si vous avez besoin d'une actualisation à nouveau, regardons un historique Graham, car la variance et l'écart-type sont tous liés à la propagation de la date de la forme de la distribution d'un ensemble de données. Jetons un coup d'oeil à ces fausses données. Supposons que nous ayons quelques données sur la fréquence d'arrivée des avions dans un aéroport, par exemple, et cette histoire Graham indique que, cependant, nous choisissons de Kwan lie ces données. Disons que nous avons environ quatre arrivées par minute. Eh bien, c'est arrivé, disons, environ 12 jours que nous avons regardé pour ces données. Donc 12 différents points de données discrets à quatre arrivées ish permanent, mais alors nous avons ces valeurs aberrantes. Nous avons eu une journée vraiment lente qui n'avait qu'une arrivée par minute pour moi, n'avait qu'une journée vraiment rapide où nous avions presque 12 arrivées par minute. Encore une fois, la façon de lire un historique Graham est de rechercher le compartiment d'une valeur donnée et cela vous indique quelle fréquence cette valeur s'est produite dans vos données et la forme de l'historique. Ram pourrait vous en dire beaucoup sur la distribution de probabilité d'un ensemble donné de données. Donc, nous savons à partir de ces données qu'il est très probable qu'il y ait environ quatre arrivées par minute. Mais il est très peu probable d'avoir un ou 12 droit, et nous pouvons également parler spécifiquement des probabilités de tous les nombres entre les deux. Non seulement il est peu probable que 12 arrivées soient autorisées, il est également très peu probable d'avoir neuf arrivées par minute. Et une fois que nous commençons à nous déplacer, vous savez, manger ou alors les choses commencent à ramasser un peu. Donc, beaucoup d'informations que nous avons d'une histoire graham et la variance ne fait que dire comment étaler quelle est la forme de ces données. Quelle est la diffusion de votre ensemble de données ? Comment mesurez-vous bien la variance, nous l'appelons généralement au carré Sigma et vous découvrirez pourquoi momentanément. Mais pour l'instant, sachez simplement que la variance est juste la moyenne des différences au carré par rapport à la moyenne. Donc, pour calculer la variance d'un ensemble de données, vous devez d'abord en déterminer la moyenne. Disons que j'ai des données. Ça pourrait représenter n'importe quoi. Disons Ah, nombre maximum de personnes qui ont fait la queue pendant une heure donnée ou quelque chose que je ne sais pas . Et la première heure, j'ai vu une personne debout en queue de quatre à cinq et quatre à huit. Ok, donc la première étape dans le calcul de la variance est juste de trouver la moyenne la moyenne de ces données. Je les ajoute tous ensemble, divisé par le nombre de points de données. Et ça sort à 4.4. Est le nombre moyen de personnes en ligne Maintenant, l'étape suivante consiste à trouver les différences par rapport à la moyenne pour chaque point de données. Donc je sais que la moyenne est 4.4. Donc, pour mes premières données 0.4 point quatre, et à un, donc un moins 4.4 est négatif 3.4 quatre moins 4.4 est négatif. 0.4 et ainsi de suite et ainsi de suite. Ok, donc je finis avec facilité à la fois des nombres positifs et négatifs qui représentent la variance par rapport à la moyenne de chaque point de données. OK, mais ce que je veux, c'est un nombre unique qui représente la variance de tout cet ensemble de données. Donc la prochaine chose que je vais faire, trouvons les différences carrées. Donc on doit juste passer par chacune de ces différences brutes par rapport à la moyenne et les caler . C' est pour quelques raisons différentes. Tout d'abord, je veux m'assurer que les variances négatives sont autant que les variances positives, accord. Sinon, ils s'annuleraient l'un l'autre, pas être mauvais. Je veux aussi donner plus de poids aux valeurs aberrantes. Donc, cela amplifie l'effet des choses qui sont très différentes de la moyenne tout en conservant , veillant à ce que l'air négatif et positif comparent comparablement Alors regardons ce qui se passe là. Donc négatif 3,4 carré positif, 11,6 négatif 0,4 carré, mais plus petit nombre de 0,16 parce que c'est beaucoup plus proche de la moyenne de 4,4 point six, aussi proche de la moyenne seulement 60,36 Mais comme nous arrivons à la valeur aberrante positive 3,6 cents en haut étant 12.96 ok, et pour trouver la valeur réelle des variantes, nous prenons juste la moyenne de toutes ces différences au carré de la moyenne. Donc, nous additionnons toutes ces variances au carré divisées par cinq le nombre de valeurs que nous avons , et nous finissons avec une variance de 5.4 OK, c'est toutes les variances maintenant. Typiquement, nous parlons de l'écart type plus que des variantes, et il s'avère que l'écart type est juste la racine carrée de la variance. C' est aussi simple que ça. J' ai donc eu une variance de 5,4. L' écart-type est de 2,24 Donc, vous voyez maintenant pourquoi nous avons appelé Variante Sigma au carré. C' est parce que Sigma lui-même représente l'écart-type. Donc, si je prends la racine carrée de signal Square pour obtenir Sigma qui finit dans cet exemple pour être 2.24 Ceci est un Graham historique des données réelles que nous regardions. Maintenant, nous voyons que le numéro quatre son deux fois dans notre ensemble de données, et puis nous avons eu 1115118 Maintenant, l'écart type est généralement utilisé comme un moyen de penser à la façon d'identifier les valeurs aberrantes dans votre ensemble de données. Donc, si je dis que si je suis dans un écart-type de la moyenne de 4,4, c'est considéré comme une sorte de valeur typique dans une loi normale. Mais vous pouvez voir dans cet exemple les nombres un et huit se situent en fait en dehors de cette plage. Donc, si je prends 4.4 plus ou moins 2.24, vous savez que nous finissons par là et là et un huit sont tous les deux hors de cette plage d'un écart-type. Donc on peut dire mathématiquement qu'un sur huit ou des valeurs aberrantes, on n'a pas à deviner un globe oculaire. Maintenant, il y a encore une sorte de jugement. Appelez-nous à ce que vous considérez comme aberrant en termes de nombre d'écarts-types, afin que vous puissiez généralement parler de la quantité d'un point de données aberrant par le nombre d' écarts-types par rapport à la moyenne. Donc, c'est quelque chose que vous verrez l'écart type utilisé dans le monde réel, il y a un peu nouveau veut de l'écart-type dans les variantes. Et c'est là que vous parlez de la population par rapport à la variance de l'échantillon. Ok, juste une petite différence. Donc, si vous travaillez avec un ensemble complet de données, vous savez, un ensemble complet d'observations, alors vous faites exactement ce que je vous ai dit. Vous prenez juste la moyenne de toutes les variantes au carré de la moyenne et ce sont vos variantes. Mais si vous échantillonnez vos données, vous savez, si vous prenez un sous-ensemble des données juste pour faciliter l'informatique, vous devez faire quelque chose d'un peu différent. Au lieu de diviser par le nombre d'échantillons, vous divisez par le nombre d'échantillons moins un . Ok, alors regardons cet exemple un exemple. On a juste eu la variance de la population, c'est exactement ce qu'on a fait. Nous avons pris la somme des variances au carré divisé par cinq, le nombre de points de données que nous devions obtenir 5.4 Mais la variance de l'échantillon, qui est estimée par S au carré, est divisée par quatre et moins un. Nous avons donc pris le nombre de points de données que nous avions soustraits un et obtenu la variance de l'échantillon qui s'élève à 6.3. Donc encore une fois, si c'était une sorte d'échantillon que nous avons pris à partir d'un ensemble de données plus important, c'est ce que vous feriez. Si c'est l'ensemble de données complet, vous divisez avec le nombre réel, d' accord ? Et c'est trop extrême de la population et de la variance de l'échantillon. Quant à la raison pour laquelle il entre dans, genre, choses vraiment bizarres sur la probabilité que vous ne vouliez probablement pas trop penser . Et si vous voulez exprimer cela en termes de notation mathématique fantaisie, j'essaie d'éviter la notation dans ce cours autant que possible. Je pense que les concepts sont plus importants, mais c'est assez basique que que vous allez le voir encore et encore. Population diverse est généralement désigné un sigma carré avec l'écart-type Sigmund, et nous pourrions dire que c'est la somme de la de chaque point de données X moins la moyenne que vous avez carré. Ce sont les variantes de chaque échantillon au carré sur la fin. Le nombre de points de données et la variance de l'échantillon est de la même façon n'est pas s au carré. Et c'est la somme de chaque point de données moins la moyenne m de l'ensemble d'échantillons au carré et moins un. Donc, vous soustrayez un du nombre d'échantillons que vous avez, c'est tout ce qu'il y a à cela. Alors regardons quelques exemples réels et écrivons du code python pour que cela se produise. Écrivons du code ici et jouons avec un écart type dans les variances. Donc, si vous tirez vers le haut ce n'a pas fait les variantes de cahier Python. Sarah Deviation Variants fichier. Suivez-moi ici. S' il vous plaît faire, parce qu'il y a une activité à la fin que je veux que vous essayiez. Donc, nous allons entendre est juste comme l'exemple précédent. Nous allons utiliser Matt Plot Live pour tracer une histoire de certaines données aléatoires normalement distribuées . Et on va appeler ça, on appelle ça les revenus, on dit que ça va être centré autour de 100. Espérons que c' est un tarif horaire ou quelque chose comme ça. Et sur annuel ou c'est une dénomination bizarre résister à l'écart de 20 et 10 000 points de données . Alors allons de l'avant et générons ça et tracons-le. Là, vous l'avez. Nous avons donc 10 000 points de données à un centré autour de 100 comme vous pouvez le voir ici. Donc, avec une loi normale avec un écart-type de 20 donc c'est une mesure de la propagation de ces données, et bien sûr, vous pouvez voir que l'occurrence la plus courante est d'environ 100. Et à mesure que nous allons de plus en plus loin, les choses deviennent de moins en moins probables. Et le point d'écart type de 20 que nous avons spécifié est autour de là. Donc vous pouvez voir ce genre de point où les choses commencent à tomber brusquement, non ? Donc, nous pouvons dire que les choses au-delà de cet écart-type, limite ou inhabituel. Maintenant, dump je le rend également incroyablement facile de rivaliser l'écart type dans la variance. Si vous voulez calculer l'écart type réel de cet ensemble de données que nous avons généré, vous appelez simplement la fonction STD directement sur l'ensemble de données lui-même. Donc, aucun arbitre quand il crée une liste, ce n'est pas seulement une liste python normale, a en fait quelques choses supplémentaires attachées à elle, donc vous pouvez réellement appeler des fonctions comme STD pour l'écart type. Et nous pourrions le faire, et nous devrions avoir un chiffre assez proche de 20 parce que c'est ce que nous spécifions. Lorsque nous avons créé nos données aléatoires, nous voulions un écart-type de 20. Bien sûr, 19.96 assez proche et la variance est juste une question d'appeler dot var, qui sort à assez près de 400 qui est 20 carrés, non ? Donc le monde a du sens. Oui, écart-type n'est qu'une racine carrée de la variance. Ou vous pourriez dire que les variations d'un écart type carré dans l'inverse. Bien sûr, ça marche pour que le monde fonctionne comme il le devrait. Je veux que tu plonges ici et que tu joues avec ça. Faites-le vraiment donc essayer différents paramètres pour générer ces données normales. Rappelez-vous qu'il s' agit d'une mesure de la forme de la distribution des données. Que se passe-t-il si je change ce point central ? Ça n'a pas d'importance. Est-ce que cela affecte réellement la forme ? Tu l'as essayé et le découvrir ? Essayez de jouer avec l'écart type réel que nous spécifions et voyez quel impact cela a sur la forme du graphique. Donc, si je veux un écart-type de 30, je pourrais changer ça là. Et vous savez, vous pouvez voir comment cela affecte réellement les choses ou nous allons le rendre encore plus dramatique, comme 50 Juste jouer autour de ça commençant un peu plus gros là-bas, juste, donc joueur avec des valeurs différentes juste obtenir un sentiment de la façon dont ces valeurs fonctionnent. C' est la seule façon d'obtenir vraiment un sens intuitif de l'écart-type, variance Mesereau et juste des exemples différents et de voir l'effet qu'il a. Donc, jouer autour de cela un peu en voyant la prochaine conférence afin que l'écart type dans les variantes dans la pratique a mis la main sur une partie de celui-ci là-bas. Alors j'espère que vous avez joué un peu autour de ça pour vous familiariser avec elle. Concepts très importants. Vous savez, nous avons beaucoup parlé des écarts types tout au long du cours et tout au long de votre carrière et de la science des données, alors assurez-vous que vous avez ça sous votre ceinture. Allons passer à autre chose. 14. Fonction de densité de probabilité ; Fonction de masse de probabilité: nous avons donc déjà vu quelques exemples de fonction de distribution normale pour certains des exemples de ce cours. C' est un exemple de fonction de densité de probabilité, et il existe d'autres types de fonctions de densité de probabilité là-bas, alors plongons et voyons ce que cela signifie vraiment et ce que d'autres exemples d'entre eux sont. Parlons de la probabilité, fonctions de densité, et nous l'avons déjà utilisé dans le cours. On n'a pas appelé ça comme ça. Alors formalisons certaines des choses dont nous avons parlé. Par exemple, nous avons vu la distribution normale à quelques reprises dans nos exemples, et c'est un exemple d'une fonction de densité de probabilité ici est cette courbe de distribution normale . Donc, vous savez, il est facile conceptuellement d'essayer de considérer cela comme la probabilité qu'une valeur donnée se produise. Mais c'est un peu trompeur quand vous parlez de données continues, n' est-ce pas, est-ce pas, parce qu'il y a un nombre infini de points de données possibles réels dans un état continu de distribution, vous savez qu'il pourrait y avoir zéro ou 0,1 ou 0,1 à droite, sorte que la probabilité réelle d'une valeur très spécifique se produise est très, très petite, infinie, même infiniment petite. La fonction probablement Desi parle vraiment de la probabilité qu'une plage donnée de valeurs se produise. Donc c'est ce que tu dois y penser. Ainsi, par exemple, dans une distribution normale entre la moyenne et un écart-type par rapport à la moyenne, il y a 34,1% de chances qu'il s'agisse d'une valeur tombant dans cette plage, et vous pouvez le resserrer ou l'étaler comme autant que vous voulez. Déterminer les valeurs réelles, mais c'est la façon de penser à une probabilité, densité, fonction, plage de valeurs pardonnée. Il vous indique que vous pouvez voir un moyen de découvrir la probabilité que cette plage se produise. Ok, vous pouvez voir ici. Vous savez, si vous approchez de la moyenne à l'intérieur d'un écart-type, vous risquez d'y arriver. Je veux dire, si vous additionnez 34 34 quoi que ce soit, c'est la probabilité d'atterrir à l'intérieur d'un écart-type de la moyenne. Mais quand vous sortez ici entre deux et trois écarts-types, vous savez, nous sommes en baisse à un peu plus de 4% combiné avec le positif et le négatif et que vous sortez au-delà de trois écarts-types et nous sommes beaucoup moins de 1% En fait. Alors est-ce la façon de visualiser et de parler des probabilités du point de données donné qui se passe ? Encore une fois, une fonction de distribution de probabilité. Vous voyez la probabilité qu'un point de données se situe dans une plage donnée d'une valeur donnée. D' accord. Et une fonction normale n'est qu'un exemple d'une fonction de densité de probabilité. Regarde un peu plus dans un instant. Maintenant, quand vous avez affaire à des données discrètes, cette petite nuance d'avoir un nombre infini de valeurs possibles disparaît bien, et nous appelons cela quelque chose de différent. C' est donc une fonction de masse de probabilité pour traiter des données discrètes. Vous pouvez parler de la fonction de masse de probabilité. Ainsi, par exemple, vous pouvez tracer une densité de probabilité, probabilité normale, fonction de densité de données continues sur cette courbe noire. Mais si nous devions quantifier cela dans un ensemble de données discret comme nous le faisons avec le Ram historique , nous pouvons dire que le nombre trois se produit un certain nombre de fois, vraiment, et vous pouvez dire que le numéro trois a un peu plus de 30% de chance de se produire, Donc probablement fonction de masse est la façon dont nous visualisons la probabilité de données discrètes se produire, et il ressemble beaucoup à une histoire Graham, parce qu'il est fondamentalement un bélier d'histoire. Ok, donc la différence de terminologie probablement fonction de densité, une courbe solide qui décrit la probabilité qu'une plage de valeurs se passe avec des données continues . Probablement fonction de masse est les probabilités de valeurs discrètes données se produisant dans un ensemble de données . Ok, alors regardons quelques exemples réels, et il sera encore plus logique que nous allons aller à quelque part plus profond ensuite. 15. Distributions de données communes: Regardons quelques exemples réels de fonctions de distribution de probabilité et de distributions de données en général, et sorte d'envelopper votre tête un peu plus sur les distributions de données et comment les visualiser et les utiliser en python. Alors allez-y et ouvrez les distributions I fichier cahier Python à partir des matériaux de cours , et vous pouvez suivre avec moi ici si vous le souhaitez. Commençons par un exemple très simple. Donc ah, distribution uniforme signifie juste qu'il y a une probabilité plate et constante d'une valeur se produisant dans une plage donnée afin que nous puissions utiliser en utilisant la fonction uniforme de point aléatoire forfaitaire I. Et cet appel dit, je veux un ensemble aléatoire uniformément distribué de valeurs qui varie entre 10 négatif et 10 positif et 1 100 000 d'entre eux. Et si je crée ensuite un hist, un gramme de ces valeurs que vous pouvez voir cela ressemble à ceci. Il y a donc à peu près une chance égale qu'une valeur donnée ou une plage de valeurs se produise dans ces données. Donc, contrairement à la distribution normale, où nous avons vu une concentration de valeurs proches de la distribution uniforme moyenne ah comme probabilité égale sur n'importe quelle valeur donnée dans la plage que vous définissez. Alors, à quoi ressemblerait la fonction de distribution de probabilité de cela ? Alors que je m'attendais à voir fondamentalement zéro en dehors de la plage de négatif 10 ou au-delà de 10. Mais quand j'entre 10 et 10 négatif, je verrais une ligne plate parce qu'il y a une probabilité constante que l'une de ces plages de valeurs se produise. Ok, donc une distribution uniforme, vous verrez une ligne plate sur la fonction de distribution de probabilité parce qu'il y a fondamentalement une probabilité constante. Chaque valeur, chaque plage de valeurs a une chance égale d'apparaître comme n'importe quelle autre valeur. Ok, et ça arrive parfois. Maintenant, nous avons vu des fonctions normales ou aussi connues sous le nom de galaxie et de distribution dans le passé, et déjà dans ce cours, vous pouvez réellement visualiser ceux en Python. Il y a une fonction pdf sur la fonction de paquet de norme CYP idot stats dot. Donc, ici, dans cet exemple, passons juste à travers ce qui se passe ici. Nous créons une liste de valeurs X pour applaudir cette plage entre trois négatifs et trois positifs avec un incrément de 30,1 entre eux. Ok, donc ces air les valeurs X sur le graphique et ils allaient tracer l'axe X et l' axe Y va être la fonction normale de la norme point pdf fonction de densité de probabilité pour une distribution normale sur ces valeurs X. Et on finit avec ça. Donc, la fonction pdf avec une distribution normale ressemble exactement à ce qu'elle a fait dans notre diapositive précédente . C' est une distribution normale pour les nombres donnés que nous avons fournis où zéro représentera la moyenne et ces nombres sont des écarts-types maintenant pour réellement générer des nombres aléatoires avec une distribution normale. Nous l'avons déjà fait quelques fois, mais juste comme un rafraîchissement à nouveau, si vous utilisez le paquet num pie, il a une fonction normale de point aléatoire. Et le premier paramètre mu représente la moyenne que vous voulez centrer. Les données autour de Sigma sont l'écart-type de ces données, qui est fondamentalement la propagation de celles-ci. Ensuite, nous spécifions le nombre de points de données que nous voulons en utilisant une fonction de distribution de probabilité normale . Ok, donc c'est la façon d'utiliser une fonction de distribution de probabilité dans ce cas, la fonction de distribution normale. Pour générer un ensemble de données aléatoires, nous condamnons l'intrigue qui montre juste un historique. Graham s'est cassé dans 50 seaux et le montrer, et c'est ce qu'on finit avec. Cela ressemble plus ou moins à une distribution normale, mais comme il y a un élément aléatoire, ce ne sera pas une courbe parfaite. Vous savez, nous parlons tous de probabilités ou de chances que des choses ne soient pas tout à fait ce qu'elles devraient être. Une autre fonction de distribution, vous voyez assez souvent est la fonction de distribution de probabilité exponentielle où les choses tombent d'une manière exponentielle. Donc, quand vous parlez de chute exponentielle, attendez-vous à voir une courbe comme celle-ci où il est très probable que quelque chose se produise, vous savez, presque zéro. Mais alors, au fur et à mesure que vous vous éloignez, il tombe très rapidement. Il y a donc beaucoup de choses dans la nature qui se comportent de cette manière. Et pour le faire en Python, tout comme nous avions une fonction dans les statistiques CYP I pour un pdf point standard. Nous avons également un pdf point ex pond pour une fonction de distribution de probabilité exponentielle, et nous pourrions faire la même syntaxe que nous avons fait pour la distribution normale avec une distribution exponentielle ici. Donc encore une fois, nous créons simplement nos valeurs X en utilisant le num pie, une fonction de plage pour créer un tas de valeurs entre zéro et 10 avec une taille de pas de 100.1 Et puis nous tracons ces vallées X par rapport à l'axe Y, qui est défini comme la fonction exponentielle. Pdf de X et il ressemble à cette chute exponentielle. Nous visualisons également probablement les fonctions de masse de probabilité. Il est appelé par personne la probabilité binomiale, fonction de masse et encore, même péché taxes avant. Donc, au lieu d'ex Pond ou norme, nous utilisons simplement par gnome et encore une fois une fonction de masse de probabilité de rappel traite de données discrètes , et dans ce cas, nous traitons de données discrètes. Nous avons été tout au long des versions comment vous pensez à ce sujet. Nous créons des valeurs X discrètes entre zéro et 10 à un espacement de 100,1 Et nous disons que je veux tracer une fonction de masse de probabilité binomiale en utilisant ces données et avec la fonction de masse de probabilité, je peux en fait spécifier le de ces données à l'aide de paramètres de forme et NP. Dans ce cas, c'est 10 et 0,5, et si vous voulez jouer autour de différentes valeurs pour voir quels effets il a, c' est un bon moyen d'avoir une idée intuitive de la façon dont ces paramètres de forme fonctionnent sur le fonction de masse de probabilité. Enfin, l'autre fonction de distribution que vous pourriez entendre parler est une fonction de masse de probabilité de Poisson , et cela a une application très spécifique. Ça ressemble beaucoup à une distribution normale, mais c'est un peu différent. L' idée ici est si vous avez quelques informations sur le nombre moyen de choses qui se produisent dans une période donnée. Ok, ça pourrait vous donner un moyen de prédire les chances d'obtenir une autre valeur à la place d'un jour donné. Ok, donc à titre d'exemple, disons, avoir un site web, et en moyenne, vous obtenez 500 visiteurs par jour. Je peux utiliser la fonction de masse de probabilité Pawson pour estimer la probabilité de voir une autre valeur sur un jour spécifique. Disons que je reçois en moyenne 500 visites par jour. Quelles sont les chances de voir 550 visiteurs par jour ? C' est ce qu'une fonction de masse de probabilité de Prasong peut vous donner. Donc, dans cet exemple, je dis que mes moyennes 500 vous je vais mettre en place quelques valeurs X toe. Regardez entre 406 100 avec un espacement de 1000,5. Et je vais tracer ça en utilisant le fossile sur la fonction de masse de probabilité. Et je peux utiliser ce graphique pour rechercher les chances d'obtenir une valeur spécifique. Ce n'est pas 500 en supposant une distribution normale. Donc 5 50 il s'avère, sort à environ 0,2 est la probabilité là ou 0,2% ? Très intéressant. Très bien, donc ce sont des distributions de données courantes que vous pourriez rencontrer dans le monde réel. Quiz pop. Assurez-vous que vous faites attention. Quelle est la fonction de distribution de probabilité équivalente lors de l'utilisation de données discrètes au lieu de données continues. Rappelez-vous donc que nous avons utilisé une fonction de distribution de probabilité avec des données continues. Mais quand nous traitons de données discrètes à la place, nous utilisons un indice. C' est juste sur l'écran en ce moment. Une fonction de masse de probabilité. Ok, passons à autre chose. Donc c'est la probabilité. Densité, fonctions et probabilité. Les fonctions de masse essentiellement éloignées visualisent et mesurent la probabilité réelle qu'une plage donnée de valeurs se produise dans un ensemble de données. Information très importante dans une chose très importante à comprendre, continuez à utiliser ce concept encore et encore. Assurez-vous donc de regarder cette vidéo à nouveau si vous le devez. Tu es bon. D' accord, passons à autre chose 16. Percentiles et moments: nous parlerons ensuite des percentiles et des moments percentiles. Tu entends parler de ça dans les infos tout le temps. gens qui sont dans les 1% supérieurs du revenu, c'est un centile. Nous allons l'expliquer et en avoir quelques exemples, et nous parlerons de moments. Concept mathématique très fantaisie. Mais il s'avère que c'est très simple à comprendre conceptuellement. Alors plongons et commençons. Parlons de percentiles et de moments. Quelques concepts et statistiques assez basiques. Mais encore une fois, on travaille jusqu'aux choses difficiles. Soutenez donc avec moi pendant que nous passons par une partie de cette revue. Donc percentiles. Fondamentalement, si vous imaginez que si vous deviez trier toutes les données de l'ensemble de données, un centile donné est le point auquel ce pourcentage des données est inférieur au point auquel vous êtes. Donc, un exemple courant dont vous voyez beaucoup parlé est la répartition du revenu. Quand on parle du 99e centile ou d'un pour cent, imaginez que vous deviez prendre tous les revenus de tout le monde dans ce cas -ci, les États-Unis, et les trier par revenu. Le 99e centile serait le revenu auquel 99 % du reste du pays gagnait moins. OK, donc c'est un orteil très facile. Comprends-le. Ce sont des données réelles ici. Ainsi, par exemple, au 99e centile, on peut dire que 99 % des points de données ici, qui représentent les Américains, moins de 506 000$ par an, et 1 % font plus que cela. Inversement, Donc, si vous êtes un percenter, vous gagnez plus de 500 000$ par an à peu près. Félicitations. Mais si vous êtes une personne médiane plus typique, le 50e centile définit le point à partir duquel la moitié des gens gagnent. Moins de la moitié font plus, quelle est la définition de la médiane, est-ce pas ? Donc, le 50e centile est la même chose médiane, et ce serait à 42 000$ compte tenu de cet ensemble de données. Donc, si vous gagnez 42 000$ par année aux , vous faites exactement le montant médian du revenu pour le pays, et vous pouvez voir que vous connaissez le problème de la répartition des revenus. J' entends que les choses ont tendance à être très concentrées vers le haut de gamme, qui est Ah, très gros problème politique en ce moment dans le pays, alors nous verrons ce qui se passe avec ça. Mais c'est au-delà du cadre de ce cours. Donc c'est des percentiles en un mot. Les percentiles sont également utilisés dans le contexte de parler des quarts de tuiles dans une distribution. Donc, si vous regardez, disons, disons, une distribution normale ici, les gens parlent de tuiles de cour et de quartile. Un et le quartile trois au milieu ne sont que les points qui contiennent ensemble 50 % des données, donc 25 % se trouvent de ce côté de la médiane dans 25 % de ce côté de la médiane. La réunion dans cet exemple se trouve proche de la moyenne Donc, par exemple, la plage inter quartile lorsque nous parlons d'une distribution est la zone au milieu de la distribution qui contient 50% des valeurs. OK, maintenant, c'est un exemple de ce que nous appelons un diagramme de boîte et de moustaches. Alors ne vous inquiétez pas encore pour ces trucs ici sur les bords. Ça devient un peu déroutant, et nous le couvrirons plus tard, même si ça s'appelle quartile lors d'un procès. Trois, ils ne représentent pas vraiment 25% des données. Mais ne te raccroche pas encore à ça. Concentrez-vous sur le point que les tuiles de quart au milieu représentent 25 % de la distribution des données , et celles-ci ont tendance à être au milieu. Regardons quelques exemples plus utilisant python et sorte de mettre la main dessus et conceptualiser C'est un peu plus. Allons nous salir les mains avec des percentiles. Allez-y et ouvrez les percentiles comme le fichier de bloc-notes Python. Si vous voulez suivre encore et encore, je vous encourage à le faire parce que je voulais jouer avec ça un peu plus tard. Commençons donc par générer des données normales distribuées aléatoirement ou des données aléatoires normalement distribuées. Plutôt et dans cet exemple, où nous allons faire est de générer des données centrées autour de zéro avec une moyenne de zéro avec un écart-type de 00,5. Et je vais faire 10 000 points de données avec cette distribution, et nous allons tracer une histoire Graham et voir nous trouver et ça ressemble un peu quelque chose comme ça, peu comme une distribution normale. Mais parce qu'il y a un élément aléatoire, vous savez, nous avons beaucoup de menteur. Entendez des choses. Pointe d'air un peu vers la droite ici. Un peu. Un peu de variation aléatoire là pour rendre les choses intéressantes. Maintenant, pour calculer les valeurs de percentile de cette distribution, Numb pie fournit une fonction de percentile très pratique qui le fera pour vous. Donc nous avons créé notre liste de voyelles de données ici en utilisant le point de l'arbitre aléatoire, pas normal. Et je pourrais juste appeler np point percentile pour comprendre la valeur du 50e centile dans cet exemple qui s'avère être Plano 5. Alors rappelez-vous, le 50e centile est juste un autre nom de la médiane. Et il s'avère que la médiane est très proche de zéro dans ces données et vous pouvez voir que nous sommes un peu pointés vers la droite, donc ce n'est pas trop surprenant. Je veux calculer le 90e centile. Cela me donne le point où 90% des données sont inférieures à cette valeur donnée. Donc, le 90e centile de l'état, il s'avère être 0.65 Donc c'est ici, et fondamentalement à ce 0.90% des données est inférieur à cela, donc je vais croire que 10% est plus grand. 90% est inférieur à la valeur du 20e centile. Cela me donnerait à quel point 20 % des valeurs sont inférieures au nombre que j'ai trouvé. Donc, le point du 20e centile s'avère négatif de 0,4 à peu près et encore, je crois que cela. Donc, cela dit que 20% des données se trouvent à gauche du négatif 200,4, et inversement, 80% est plus grand. Donc, si vous voulez avoir une idée de l'emplacement de ces points de rupture dans l'ensemble de données, la fonction percentile est un moyen facile de les calculer. S' il s'agissait d'un ensemble de données représentant la répartition du revenu, comme dans nos diapositives, vous savez, nous pourrions simplement appeler les valeurs du centile supérieur MP commun 99 comprendre ce qu' est le 99e percentile . Pour que tu puisses trouver de qui les gens ne cessent de parler. Et si vous êtes l'un d'entre eux, accord, maintenant vous salir les mains. Je veux que vous jouiez autour de ces données, donc c'est un I Python ouvert pour une raison. C' est pour que vous puissiez jouer avec elle et gâcher avec le code essayer, vous savez, différent. Essaie différentes valeurs d'écart-type. Voyez quel effet cela a sur la forme des données et où ces pourcentages de maison finissent par s'appliquer . Par exemple, essayez d'utiliser des tailles de jeux de données plus petites et un peu plus de variation aléatoire dans la chose. C' est juste être à l'aise que jouer avec elle et, vous savez, trouver que vous pouvez réellement faire ce truc et écrire un vrai co qui fonctionne. Donc, passez quelques minutes, Ah, jouer avec cette politique de succès pendant que vous faites ça et quand vous continuez, vous reviendrez au concept de moments de distribution. Ensuite, parlons de moments. Les moments sont une phrase mathématique fantaisie, et vous n'avez pas vraiment besoin d'un diplôme de maths pour le comprendre, bien que intuitivement, c'est beaucoup plus simple qu'il n'y paraît. C' est l'un de ces exemples où les gens des statistiques et de l'exploration de données dans le domaine de l'apprentissage automatique et de la science des données aiment utiliser de grands termes fantaisistes pour se rendre vraiment intelligents. Mais les concepts sont en fait très faciles à saisir, et c'est le thème que vous allez entendre, peut et encore dans ce cours. Alors parlons de moments. Fondamentalement, c'est des façons de mesurer la forme d'une distribution de données d'une fonction probablement de densité de n'importe quoi, vraiment. Et mathématiquement, nous avons une notation mathématique vraiment fantaisie ici de la façon dont ils sont définis. Et, vous savez, si vous connaissez le calcul, ce n'est pas si compliqué d'un concept. Nous prenons la différence entre chaque valeur d'une course de valeur à la 10e puissance, où N est le nombre de moment et l'intégration à travers toute la fonction de l' infini négatif à l'infini. Mais intuitivement, c'est beaucoup plus facile que le calcul prêt. On y va. Le premier moment s'avère être juste la moyenne des données que vous regardez. C' est ça. Le premier moment, c'est la viande, la moyenne, c'est si simple. Le deuxième moment est la variance. C' est ça. Le deuxième moment d'un ensemble de données est la même chose que les différentes valeurs, et , vous savez, il peut sembler un peu effrayant que ces choses tombent naturellement des maths . Mais pensez-y. Les différents sont vraiment basés sur le carré des différences de la moyenne alors venir avec une façon mathématique de dire que très insister lié à la moyenne n'est pas vraiment beaucoup d'un tronçon, non ? C' est aussi simple que ça. Maintenant, quand on arrive aux troisième et quatrième moments, les choses deviennent un peu plus difficiles, mais ce sont toujours des concepts faciles à saisir. Donc, le troisième moment est appelé biais, et c'est essentiellement une mesure de la façon dont une distribution est asymétrique. Donc, vous pouvez voir dans ces deux exemples. Si j'ai une queue plus longue à gauche, tu sais que c'est une inclinaison négative, et j'ai une queue plus longue à droite. C' est une inclinaison positive, sorte que vous pouvez voir ici avec la forme d'une distribution normale ressemblerait sans inclinaison. Si je l'étire d'un côté, alors je me retrouve avec l'inclinaison de l'autre côté de l'inclinaison positive dans cet exemple. Ok, donc c'est tout ce qui est biaisé. C' est essentiellement étirer la queue d'un côté ou de l'autre, et c'est une mesure de la façon dont une distribution est asymétrique, à quel point elle est biaisée. Le quatrième moment s'appelle Curto Sis. Wow, c'est un mot de fantaisie. Tout ce qui est vraiment est l'épaisseur de l'histoire sur la netteté du pic. Encore une fois, c'est une mesure de la forme de la distribution des données Et voici un exemple ici, et vous pouvez voir que les valeurs de crête supérieures ont une valeur d'hôtesse Kurt plus élevée. Donc la courbe rouge a une kératose plus élevée que vous ne le savez. C' est ce noir. Je ne peux même pas dire une courbe noirâtre fière ici en bas. Donc, c'est une différence très subtile, mais une différence sur le moins elle mesure fondamentalement comment vos données sont piquées à nouveau. Révision. Premier moment signifie des variantes de second moment. Troisième moment fausser la kératose quatrième moment savent déjà quelle moyenne et variance notre ski était quel point les données sont asymétriques, comment étiré l'un des contes pourrait être et kératose sur Peaked maison écrasé ensemble. La démonstration est donc nous allons jouer en Python et en fait calculer ces moments et voir comment vous faites cela, Ok, pour jouer autour, Allons de l'avant et ouvrir les moments I fichier cahier Python et vous pouvez suivre avec moi ici donc il est à nouveau créer cette même distribution normale de données aléatoires, et encore une fois nous allons la rendre centrée autour de zéro avec un écart type de 0,5 et 10 000 points de données et tracer cela de nouveau, un ensemble de données généré aléatoirement avec une distribution normale autour de zéro. Donc, pour trouver la moyenne et la variance que nous avons fait cela avant, numb pie vous donne juste une fonction moyenne et barre pour calculer cela. Donc, nous pouvons juste appeler et p dot signifie pour trouver le premier moment, ce qui est juste un mot de fantaisie pour la moyenne. Et cela fonctionne pour être très proche de zéro, tout comme nous pourrions nous attendre pour une distribution normale, des données distribuées centrées autour de zéro. Donc le monde a du sens jusqu'à présent. Le deuxième moment, juste un autre nom pour la variance. Et ça marche pour être d'environ 0,25 et encore une fois ça marche avec un bon contrôle de santé mentale. Rappelez-vous que l'écart-type est la racine carrée de la variance. Et si vous prenez la racine carrée de 0,25, il sort 2,5, qui est l'écart-type que nous avons spécifié lors de la création du statut. Donc encore une fois, ça vérifie aussi pour un instant, sq. Et pour ce faire, nous allons devoir utiliser le paquet CYP I au lieu de non tarte. Mais cela est encore une fois intégré dans n'importe quel paquet informatique scientifique comme et pensée canopy ou anaconda importations. Tapez les stats iDot comme SP et puis nous pourrions simplement dire sp point inclinaison sur les vales et cela nous donnera une valeur biaisée. Et puisque cela est centré autour de zéro, il devrait être presque zéro inclinaison. Il s'avère qu'à partir d'une variation aléatoire, il fait un peu biaisé à gauche. Et en fait, c'est avec la forme que nous voyons ici. On dirait qu'on a tiré un peu négatif. Quatrième femme est Curto Sys, qui décrit la forme de la queue et encore une fois pour une distribution normale qui devrait être d'environ zéro. Et en effet, c'est le cas. Donc vous savez, la forme du tailleur, la netteté du pic si vous le poussez dedans. Vous savez, ça a tous les deux effet jusqu'à présent d'écraser la queue vers le bas. Ça pousse ce pic pour être plus pointu. Et de même si je devais la pousser vers le bas de cette distribution et imaginer ce genre d'étaler un peu les choses un peu, le rendant un peu plus gros et le pic de celui-ci un peu plus bas. C' est ce que veut dire kératose. Et dans cet exemple, kératose est proche de zéro car il s'agit juste d'une distribution normale et ancienne . Donc, si vous voulez jouer autour de ça, allez-y et essayez encore de modifier la distribution, faites-la centrée autour de quelque chose d'autre que zéro et voyez si cela change réellement quelque chose, n' est-ce pas ? Eh bien, cela ne devrait pas vraiment parce que ce sont toutes des mesures de la forme de la distribution, et cela ne dit pas vraiment grand-chose sur l'endroit où se trouve cette distribution exactement. C' est une mesure de la forme. C' est ce que sont les moments. Alors allez-y et jouez autour de ça. Essayez différentes valeurs centrales, essayez différentes valeurs de déviation san et voyez quel effet il a sur ces valeurs et ne change pas tout. Bien sûr, vous vous attendez à ce que des choses comme elles signifient changer parce que vous changez la valeur moyenne. Mais variance Qué peut-être pas jouer autour, savoir tout droit, ce sont des moments. Allons passer à autre chose. Et là, vous avez des percentiles et des moments percentiles. Moments conceptuels assez simples. Ça a l'air dur, mais c'est en fait assez facile de comprendre comment le faire. Et c'est facile et python à. Donc tu as ça sous ta ceinture. Passons à autre chose 17. Un cours de crash dans matplotlib: pour que tu saches que ton rencard est aussi bon que tu peux le présenter à d'autres personnes, vraiment ? Parlons donc de tracer et de graphier vos données et comment présenter aux autres et rendre vos graphiques jolis étaient sur Introduce Matt Plot Lib, qui est une bibliothèque que vous pouvez utiliser en python pour faire de jolis graphiques, et je vais vous montrer quelques astuces sur la façon de les rendre aussi jolis que vous le pouvez. Allons là-bas. Amusons-nous un peu avec les graphiques. Vous savez qu'il est toujours bon de faire de jolies photos de votre travail, et cela vous donnera plus d'outils dans votre coffre à outils pour visualiser deux types de données différents , en utilisant différents types d'artisanat et en la rendant jolie. Vous savez, ces différentes couleurs, différents styles de ligne, différents axes, des choses comme ça. Vous savez donc qu'il est non seulement important d'utiliser les graphiques et la visualisation des données pour essayer de trouver des modèles intéressants dans vos données, mais il est également intéressant de bien présenter vos résultats à un public non technique. Alors plongons dans Matt plot lib. Allez-y et ouvrez le tapis plot lib I cahier Python et vous pouvez jouer autour de ce truc avec moi. Nous allons commencer par détruire un simple graphique linéaire. Donc, dans cet exemple, je vais importer Matt Plot a vécu la parcelle haute comme plantation et nous allons juste y référer comme plt. À partir de maintenant dans ce cahier et ce que je vais faire utiliser un point de tarte engourdie a arrangé pour créer un axe X rempli de valeurs entre trois et trois négatifs et des arguments de 30.1 Et je vais utiliser la fonction de tracé de pi pour tracer X et la fonction Y sera norme point pdf de x. donc je vais créer une fonction de densité de probabilité avec une distribution normale basée sur les valeurs X. Et j'utilise le paquet de norme de statistiques du site pi pour le faire. Donc, en le liant à notre conférence précédente sur les fonctions de densité de probabilité ici, nous tracons une fonction de densité de probabilité normale en utilisant cette lèvre de tracé. Nous avons donc appelé la méthode de la parcelle à tarte pour mettre en place notre intrigue. Et puis nous l'affichons en utilisant plot dot show et quand nous exécutons ça, c'est ce que nous obtenons. Jolie petit graphique avec tout le formatage par défaut. Disons que je veux tracer plus d'une chose à la fois afin que vous puissiez réellement appeler plot plusieurs fois avant d'appeler show réellement ajouter plus d'une fonction à votre graphique. Donc, dans cet exemple, j'appelle ma fonction originale d'une distribution normale. Mais je vais rendre une autre distribution normale ici aussi, avec une moyenne autour d'un point. Oh, dans un écart-type de 00,5. Et je vais les montrer ensemble pour que vous puissiez voir comment ils se comparent les uns aux autres et vous pouvez voir par défaut. Matt. Parcelle vécu choisit différentes couleurs pour chaque graphique automatiquement pour vous, ce qui est très agréable et pratique de celui-ci. Là, vous l'avez. Si je veux dire cela à un dossier, vous savez, vous savez, peut-être que je veux l'inclure dans un document ou quelque chose comme ça. Je peux faire quelque chose comme ça au lieu d'appeler l'intrigue got show. Je peux appeler l'intrigue obtenu, disons fig avec un chemin vers l'endroit où je veux enregistrer ce fichier et dans quel format je voulais. Donc, dans cet exemple, j'ai la même intrigue configurée au lieu de show. J' appelle safe big à ce chemin et vous voudrez changer cela en un chemin réel qui existe sur votre machine. Si vous suivez, vous n'avez probablement pas le dossier franc d'un utilisateur sur votre système. Et rappelez-vous que si vous êtes sur Lennox ou Mac Os au lieu d'une barre oblique inverse, vous allez utiliser des barres obliques et vous n'aurez pas de lettre de lecteur. Donc, avec tous ces blocs-notes python, chaque fois que vous voyez un chemin comme celui-ci, assurez-vous de le changer en un chemin réel qui fonctionne sur votre système. Ok, mais je suis sur Windows ici, et j'ai les utilisateurs dossiers francs donc je peux aller de l'avant et exécuter ça. Et si je vérifie mon système de fichiers sous les utilisateurs, Frank. Bien sûr, j'ai un fichier PNG de mon intrigue. Je peux m'ouvrir et le regarder, et je peux l'utiliser dans n'importe quel document que je veux. Tellement cool. Bon, passons à autre chose. Disons que je n'aime pas les choix par défaut des axes de cette valeur, comme s'il l'adapte automatiquement à l'ensemble de valeurs d'accès le plus serré qu'il confinait, ce qui est généralement une bonne chose à faire. Mais parfois tu veux des choses à une échelle absolue, n'est-ce pas ? Donc, dans cet exemple, je mets la limite X en utilisant d'abord j'obtiens les axes en utilisant les axes Plata. Je veux avoir ces objets axes. Je peux les ajuster. Donc, en appelant ensemble Excellent. Je peux définir la gamme X de négatif 55 et définir alors que dans mon ensemble leur gamme Y de 0 à 1. Et vous pouvez voir ça ici Mon ex valorise l'air allant de nuit moins 5 à 5 et pourquoi il va de 0 à 1. Et je peux aussi avoir un contrôle explicite sur l'endroit où sont ces coches. Donc je dis que je veux le x tex au Viet moins cinq sur ses quatre mines, trois, etc. Et pourquoi les tiques de 0 à 1 à 10,1 incréments. Maintenant, je pourrais utiliser la fonction de plage pour le faire de manière plus compacte. Mais le fait est que vous avez un contrôle explicite sur l'endroit où exactement ces graduations se produisent et vous pouvez en ignorer certaines. Vous pouvez les avoir à tous les incréments que vous voulez ou quelle que soit la distribution que vous voulez. Au-delà de ça, c'est la même chose. Une fois que j'ai ajusté mes axes, j'appelle juste plot avec les fonctions que je veux plot et call show pour l'afficher. Et bien sûr, là vous avez le résultat. Que faire si je veux des lignes de grille ? Eh bien, la même idée. Tout ce que je fais est d'appeler la grille de points sur les axes que je reçois de Pipe Lott DOD axes. Et en faisant cela, j'obtiens ces belles petites lignes de grille, et cela rend un peu plus facile de voir où se trouve un point spécifique, bien qu'il encombre un peu les choses, donc un petit choix stylistique là. Que faire si je veux jouer à des jeux avec les types de lion et les couleurs ? Tu pourrais faire ça aussi. Donc, vous voyez ici qui est en fait un paramètre supplémentaire sur la fonction de tracé, chaîne passable Reckon qui décrit le style de la ligne. Et dans ce premier exemple, ce que cela indique est que je veux une ligne bleue avec une ligne pleine. C' est ce que le B représente. Bleu dans le tableau de bord signifie une ligne solide, et pour ma deuxième fonction, je vais le tracer en rouge. C' est ce que veut dire le R et le deux-points signifie que je vais tracer avec des petits hachages verticaux tout le long. Je cours que vous pouvez voir que c'est ce qu'il fait, et vous pouvez changer, euh, différents types de styles de ligne là-bas. En outre, vous pouvez faire une double barre oblique ou un double tiret plutôt, et cela vous donne cette ligne pointillée est un style de ligne comme dans ah, tiret point et vous pouvez obtenir quelque chose qui ressemble à ça. Alors, quels sont les différents choix là-bas ? Je pourrais le rendre vert avec horreur avec des barres obliques verticales. Voilà, tu y vas. Alors amusez-vous avec ça. Si vous le souhaitez, expérimentez avec différentes valeurs et vous pouvez obtenir différents styles de ligne. Quelque chose que vous ferez plus souvent est d'étiqueter vos axes. Vous savez que vous ne voulez jamais présenter des données dans le vide. Tu veux vraiment dire aux gens ce que ça représente. Et pour ce faire, vous pouvez utiliser l'étiquette X et pourquoi les fonctions d'étiquette sur le diagramme à secteurs pour mettre effectivement étiquettes sur vos axes. Donc je vais étiqueter l'axe X Grable et la probabilité Wild Label, et vous pouvez également ajouter une légende et définir ici. Normalement, ce serait la même chose. Mais juste pour montrer qu'il dit indépendamment, je suis assis ici une légende, et vous passez en gros une liste de ce que vous voulez nommer chaque graphique. Donc mon premier graphique va s'appeler des vienouilles. Le deuxième Graf va s'appeler Jacks et le paramètre look ici indique à quel endroit vous le vouliez. C' est pourquoi représente le coin inférieur droit. Allons-y et lançons ça, et vous pouvez voir que je plodding la probabilité de Grable contre les deux discours et la petite référence du Dr Seuss de Jack pour vous là-bas. C' est ainsi que vous avez dit haches, étiquettes et légendes. Un petit exemple amusant ici si vous êtes familier avec la bande dessinée Web X, K C D. Et c'est un peu d'un œuf de Pâques dans la boucle d'intrigue de tapis, où vous pouvez réellement tracer des choses dans le style CD XK, et vous pouvez le faire en Parcelle de colonie X K C D. Quel genre de met l'intrigue Matt en direct en mode X K C D. Et après cela, les choses commenceront à regarder avec, vous savez, comme ce style avec une sorte de police de bande dessinée et des lignes squiggly automatiquement. Et ce petit exemple simple montre un petit graphique drôle ici où nous complotons votre santé par rapport au temps, où votre santé prend une forte baisse une fois que vous réalisez que vous pourriez cuisiner du bacon quand vous voulez. Et tout ce que nous faisons là, c'est utiliser cette méthode x K C D pour passer dans ce mode. Un peu de python intéressant ici et en fait comment nous mettons réellement ce métier ensemble. Nous commençons donc par créer une ligne de données qui n'est rien d'autre que la valeur sur 100 points de données. Et puis nous avons utilisé le vieux python. Laissez-nous trancher opérateur pour prendre tout après la valeur de 70 et nous soustrayons de cette sous-liste de 30 articles, la plage de zéro à 30. Donc, cela a pour effet de soustraire une valeur plus grande linéairement que vous obtenez au-delà de 70, ce qui entraîne cette position couchée vers le bas jusqu'à zéro au-delà du 00.70. Donc un petit exemple. Là-bas. Certains morceaux de liste python en action là dans un peu d'utilisation créative de la fonction A range pour modifier vos données. Maintenant, revenant au monde réel, nous pouvons supprimer le mode CD XK en disant les valeurs par défaut RC sur cette intrigue en direct, et nous pouvons revenir à la charge normale ici. Si vous voulez un graphique à secteurs, tout ce que vous avez à faire est d'appeler le diagramme à points et de lui donner un tableau de vos valeurs, couleurs, étiquettes et si vous voulez ou non que les éléments explosent. Et si oui, par combien Donc vous pouvez voir ici je crée un graphique à secteurs avec ces valeurs 12 55 pour 32 14 . Je vais assigner des couleurs explicites à chacune de ces valeurs des étiquettes explosives à chacune de ces valeurs. Je vais faire exploser le segment russe de la tarte de 20% et je vais donner à cette intrigue un titre appelé Student Locations et montrer que c'est tout ce qu'il y a. Nous sommes allés à un graphique à barres aussi très simple, genre d'idée similaire au graphique à secteurs. Vous avez donné un tableau de valeurs et un tableau de couleurs, et vous venez de tracer vos données. Donc, je lui dis de tracer de la plage de 0 à 5, en utilisant ces valeurs y dans ce tableau et en utilisant sa liste explicite de couleurs. Allez-y et montrez ça. Et là, vous avez votre graphique à barres et un nuage de points. C' est quelque chose que nous verrons assez souvent dans ce cours. Donc, disons que vous avez quelques attributs différents. Vous voulez un intrigue pour le même groupe de personnes ou de choses. Par exemple, ils applaudissaient les âges contre le revenu ou quelque chose pour chaque personne atteinte point représente une personne, et les axes représentent différents attributs de ces personnes. La façon dont vous le faites avec un nuage de points est que vous appelez mon diagramme à secteurs avec scatter en utilisant les deux axes que vous voulez définir ces deux attributs qui contiennent des données que vous voulez un tracé l'un contre l'autre. Donc, disons, avoir une distribution aléatoire dans X et Y, et je les ai dispersés sur un nuage de points, et je le montre C'est ce que ça ressemble assez cool. Vous pouvez donc voir ce genre de concentration au centre ici en raison de la distribution normale qui est utilisée dans les deux axes. Mais puisque c'est aléatoire, mais il n'y a pas de vraie corrélation entre ces deux-là. Enfin, nous vous rappellerons comment fonctionne un gramme sifflé. Nous l'avons déjà vu beaucoup de fois dans le cours, mais si vous appelez, par exemple, la distribution normale centrée sur 27 000 avec un écart-type de 15 000 avec 10 000 points de données, Je peux juste appeler des parcelles à tarte, siffler une fonction Graham siffler, et vous spécifiez les données d'entrée et le nombre de compartiments dans lesquels vous voulez regrouper les choses dans votre histoire, Graham dans cette émission d'appel, et le reste est magique. Enfin, des parcelles de boîte et de moustaches. Alors rappelez-vous la conférence précédente, et nous avons parlé de percentiles touché un peu à nouveau. Avec une boîte et une parcelle de moustaches. La zone représente les vignettes de rapport à où résident 50 % de vos données et, et, inversement, 25 % se trouvent de chaque côté de cette zone. Mais la ligne fille et les moustaches représentent la plage des données à l'exception des valeurs aberrantes. Nous définissons donc les valeurs aberrantes dans un diagramme de pièce de boîte et de moustache comme n'importe quoi au-delà de 1,5 fois l'arrangement interquartile ou la taille de cette boîte. Donc, nous prenons la taille de cette boîte fois 1,5, et jusqu'à ce point, c'est ce que nous appelons ces tuiles de noyau externes. Mais tout ce qui est en dehors de cela est considéré comme un aberrant, et c'est ce que ces lignes représentent ici. C' est là que nous ou définissons des valeurs aberrantes en fonction de notre définition avec le tracé de la boîte et du moustache . Maintenant, juste pour vous donner un exemple ici, nous avons créé un ensemble de données faux où nous avons une distribution uniforme juste pour vous donner un exemple ici, nous avons créé un ensemble de données faux où nous avons une distribution uniforme et aléatoire des données,puis nous ajoutons quelques valeurs aberrantes sur le haut de gamme et quelques valeurs aberrantes négatives nous bien et aléatoire des données, Et puis nous pouvons capitaliser huit ces listes toutes ensemble et créer un seul ensemble de données à partir de ces trois ensembles différents que nous avons créés en utilisant le tourte engourdi. Nous prenons ensuite cet ensemble de données combinées de données aléatoires en uniforme et quelques valeurs aberrantes, et nous avons tracé à l'aide de la boîte à points de tracé. Et c'est comme ça que vous obtenez une émission d'appel d'intrigue de boîte et de moustaches pour le visualiser. Et voilà. Donc, vous pouvez voir qui montre cette boîte qui représente l'inter 50% de toutes les données. Et puis nous avons ces lignes aberrantes où vous pouvez voir un petit croisement pour chaque individu sur Liar qui se trouve dans cette plage. Très bien, c'est dans ce complot. Vivez votre cours d'accident. Mets-toi la main dessus. En fait, faites quelques exercices ici. Donc, comme votre défi, je veux que vous créiez un nuage de points qui représente des données aléatoires que vous fabriquez sur l'âge par rapport au temps passé à regarder la télévision et vous pourriez faire ce que vous voulez. Vraiment ? Si vous avez un ensemble de données fictif différent dans votre tête que vous aimeriez jouer avec, amusez-vous avec elle. Donc, créez un nuage de points qui trace des ensembles aléatoires d'aide les uns contre les autres et étiqueter vos axes le rendre joli. Jouez autour d'elle, amusez-vous avec elle. Tout. Et il devrait être dans ce bloc-notes Python que vous avez besoin de référence pour des exemples. Mais n'hésitez pas à poster dans les discussions pour cette conférence et nous vous aiderons . Alors gardez que je cahier Python avec vos conseils et astuces pour Matt Plot lib. C' est une sorte de feuille de triche, si vous voulez, pour différentes choses que vous pourriez avoir besoin de faire pour générer différents types de graphiques et différents styles d'artisanat, donc j'espère que cela s'avère utile. 18. Visualisation de données avec Seaborn: Parlons de Seaborne maintenant, qui est fondamentalement Matt plot lib plus, si vous voulez. Parlons de Seaborne maintenant, qui est fondamentalement Matt plot lib plus, Bon, donc Seaborn est fondamentalement une bibliothèque de visualisation qui se trouve au-dessus de la carte lot lib, et tout ce qu'il fait est de la rendre un peu jolie à regarder. Mais il a aussi un tas de différents types de graphiques et de graphiques que nous n'avions pas dans Matt plot live. Et juste depuis l'exemple va commencer à nouveau dire que l'intrigue en direct en ligne, qui signifie que nous voulons voir tous nos résultats dans le cadre de cet ordinateur portable lui-même dans le navigateur va importer des pandas comme PD charger un point d'efficacité énergétique C S V fichier que j'ai téléchargé ici sur mon site ici et ces données Israël, d'ailleurs. Ce sont donc des données réelles qui proviennent du américain gouvernement américainsur l'efficacité énergétique de chaque voiture. Ils ont un record pour l'année modèle 2019 et spécifique, Alors extrayons quelques informations de ce que nous pouvons jouer avec. Commençons par extraire le nombre d'engrenages de ce bloc de données résultant, et nous allons faire des comptes de valeur. Et si vous vous souvenez de retour de notre tutoriel pandas, cela nous donne essentiellement les données dont nous avons besoin pour un hist un gramme qui indique combien de fois chaque valeur unique se produit dans notre bloc de données. Donc, cela devrait nous donner un Siri qui mappe les numéros d'engrenage au nombre de fois que chaque valeur unique est apparue. Nous pouvons alors simplement tracer cela, en disant que nous voulons un graphique à barres. Donc en ce moment, nous utilisons juste cette lib de tracé, comme c'est juste pour visualiser ces données. Et là vous l'avez, donc vous pouvez voir que Ah, transmission à huit vitesses semble être la plus courante, suivie de six vitesses, et nous avons une suivie de six vitesses, sorte de chute exponentielle de leurs deux autres valeurs plus obscures. Maintenant, nous allons vous voir né donc voir né dans sa forme la plus basique peut juste faire Matt intrigue live look mieux. Donc tout ce que nous devons faire, disons, importer Seaborn comme SNS, et ensuite nous pouvons dire sns dot set et tout ce qui fait est remplacé. Les paramètres par défaut dans Matt plot vivent avec les paramètres visuellement modernes que Seaborne nous a donnés. Ce pot live est assez vieux. Je veux dire, ça remonte à ce complot, et ça montre en quelque sorte son âge assez franchement. Cela lui donne donc un look et une sensation plus modernes. Donc maintenant, nous pourrions faire le même diagramme à barres exact. Mais avec les valeurs par défaut Seaborne appliquées, vous pouvez voir un peu plus joli. Nous avons, vous savez, plus, Ah, tons sourds ici. Et c'est aussi dans ce joli petit fond graphique ici qui vous permet visualiser ce grand un peu mieux sinon, peu près la même chose. Mais c'est juste un peu plus facile pour les yeux, non ? Plongons dans un peu plus de profondeur ici. Examinons de plus près les données auxquelles nous avons affaire. Donc voici notre cadre de données brutes que nous avons chargé et qui vient du gouvernement ici , et nous avons juste dû jeter un oeil aux 5 premières lignes ici à titre d'exemple. Donc les informations que j'ai extraites sont le constructeur automobile comme Aston Martin ou Volkswagen. La ligne de voiture, qui est fondamentalement le modèle de la cylindrée du moteur. C' est combien de leaders le moteur est. Combien de cylindres d'air dans le moteur, le type de transmission. C' est un MPG de ville. efficacité énergétique frappe l'efficacité énergétique de l'autoroute, la ville combinée plus l'autoroute, ma valeur mpg et le nombre d'engrenages Cities Car a. Donc c'est l'information avec laquelle nous devons jouer ici maintenant. See Born a quelques parcelles que Matt intrigue live n'offre pas du tout. Donc, par exemple, il y a dis plot, et c'est la façon de tracer un hist par gramme avec une distribution lisse sur. Couché sur le dessus de ça sifflé un gramme. Jetons donc un coup d'oeil à cela sur la colonne calme et PG. Donc, ici, nous avons une histoire graham de combien de fois chaque valeur dans le commentaire. PG apparaît. Vous pouvez voir qu'on a une sorte de pic ici. Tu sais, le bas, bas au milieu de la vingtaine, non ? Cela semble être un peu comme la cote mpg la plus courante pour un véhicule. Et nous pouvons superposer ce genre de courbe de tendance ici automatiquement fait partie des diagrammes dis. Donc c'est quelque chose que Seaborn fait pour nous automatiquement sans que nous essayions même de sorte qu' ils disent un peu plus facile de visualiser les plus gros trans ici. Et vous pouvez voir que c'est un peu utile parce que nous avons ces valeurs, comme des valeurs bizarres entre ces autres valeurs. Donc, il semble qu'il y ait une sorte de quantification qui se produit dans nos données que nous pouvons lisser un peu avec cette ligne de tendance. C' est parfois un moyen utile de visualiser les choses. Une autre chose que vous pouvez avoir à Seaborn est l'intrigue de paires qui est aussi quelque chose d'unique à voir Born. Et c'est cool, car il vous permet de visualiser des parcelles de toutes les combinaisons possibles de , ah, ensemble d'attributs. Donc, vous pouvez, comme, juste regarder toutes les façons possibles de visualiser un ensemble de valeurs et essayer de trouver celles qui semblent intéressantes qui pourraient être utiles pour étudier plus en profondeur. Donc, à titre d'exemple, allons classer les voitures selon le nombre de cylindres qu'elles ont, et nous allons chercher les relations entre le nombre de cylindres que chaque voiture a et leur cote de ville mpg il cote route mpg et leur cote combinée mpg. Commençons donc par extraire ces colonnes de notre bloc de données dans DF 2. Nous allons utiliser la même syntaxe si introduite dans notre tutoriel culotte. Il suffit d'extraire ces colonnes dans un nouveau bloc de données, donc nous avons maintenant un nouvel ensemble de rose ici qui ne contient que les cylindres et les colonnes NPG de nos données d'origine. Maintenant, regarde ça. Si nous faisons un tracé de paires sur ce nouveau bloc de données, devriez-vous le faire ? Nous pouvons dire que nous voulons nous concentrer sur les cylindres comme notre principale chose que nous voulons regarder et avec une hauteur donnée pour dire que nous voulons que ce soit une belle et grande intrigue que nous pouvons visualiser facilement. Laisse ça courir. On y va. Donc ce qu'on a ici, c'est comme une grille de grilles, non ? Donc, c'est un peu soigné. Faites défiler un peu vers le bas pour que nous puissions visualiser ce qui se passe ici afin que vous puissiez voir que nous avons ici chaque colonne. Et ici, nous avons tout, chaque colonne aussi. Donc, si vous voulez un commentaire de l'intrigue PG versus cylindres, vous pouvez regarder si ici. Si vous voulez une route parcelle, mpg contre City I mpg. Vous pouvez regarder cette intrigue ici afin que vous puissiez voir ici que vous pouvez trouver des relations linéaires intéressantes entre différentes colonnes ah ici. Donc, par exemple, regardant la colonne Cylindres ici, nous pouvons voir qu'il y a une relation assez claire entre le nombre de cylindres et le mpg, ce soit la ville, autoroute ou combiné. Donc, c'est le nombre de cylindres augmente, nous pouvons voir que ce mpg doit être en baisse. Mais il y a un très répandu ici pour quatre véhicules à cylindre. C' est donc plus à l'histoire ici dans le monde des véhicules à quatre cylindres. Certains sont vraiment mauvais. Certains sont vraiment bons, vraiment grande propagation là-bas. Donc, nous avons déjà quelques informations utiles sur nos données, donc nous pouvons également utiliser un nuage de points et Seaborn 1.9. C' est juste une sorte de version plus jolie de la carte. Vivre un. Fondamentalement, vous pouvez tracer des points de données individuels sur deux axes de votre choix et voir comment vos données sont réparties entre ces dimensions. Donc, disons Sns point scatter plot. On va dire que l'axe X va être moteur cylindrique. Pourquoi va être combiné mpg, mpg ? Et pour les données elles-mêmes, nous allons faire référence à notre bloc de données DF à partir de nos données brutes. Donc ça va arracher ces deux colonnes et les tracer l'une contre l'autre sur un nuage de points. Et là, vous l'avez. Ainsi, chaque point individuel de notre bloc de données est dispersé sur ce diagramme qui mappe déplacement du moteur de points particuliers et la valeur combinée de mpg. Et encore une fois, vous pouvez voir Ah, il y a une relation ici. Donc, déjà, nous obtenons des aperçus de la visualisation de ces données à nouveau. Les déplacements les plus bas du moteur ont tendance à avoir une très répandue des M p G, mais en général,plus la cylindrée du moteur est mais en général, grande, le pire, le rendement énergétique, ce qui ne devrait pas être aussi grand que celui d'un surprise, non ? Une autre chose cool et Seaborn est l'intrigue commune. Cela vous permet de visualiser, disperser des diagrammes et de siffler un grammes en même temps sur chaque axe. Jetons donc un coup d'oeil à la même propagation de la cylindrée du moteur par rapport au couvent PG. Mais cette fois, on va faire un complot commun au lieu d'un nuage de dispersion. Voici à quoi il ressemble, donc nous avons les mêmes parcelles de dispersion avant, mais nous avons un historique grammes sur chaque accès afin que nous puissions voir ici de ce côté le sifflement, un gramme de notes mpg. Ok, donc on peut visualiser ça très facilement et voir comment toutes ces données s'accumulent ici. Nous avons également un historique des valeurs de cylindrée du moteur, donc il est beaucoup plus facile de dire que la cylindrée la plus courante est autour. Un peu moins de 22 leaders, non ? Un peu moins de 22 leaders, Donc, c'est un peu plus facile de, comme essayer de comprendre combien de points d'air dans une colonne donnée ici une section parce que beaucoup de fois ils peuvent se chevaucher et qu'il n'est pas vraiment si intuitif de comprendre l' histoire. Ram rend cette distribution des données plus facile à voir. Une autre chose que Seaborn offre est l'intrigue L M, et c'est juste un nuage de points avec une régression linéaire. Appliquer à elle automatiquement afin que je puisse dire ce même nuage de points, mais au lieu de parcelle de dispersion et de l'agneau me donne ce même Scott exactement un tracé, mais avec une régression linéaire appliquée à elle. Et si vous regardez de très près, vous pouvez voir ce genre de zone ombragée autour de là à cela. Donnez n'importe quelle sorte de vos limites à cette régression, et nous parlerons de régression linéaire et de mort plus tard dans ce cours. limites à cette régression, Mais fondamentalement, nous faisons une ligne au jour où nous avons un concept très simple. Retour dans Matt intrigue en direct. Nous parlons de parcelles boites et Seaborne a aussi sa propre version. en boîte et moustaches. Dans cet exemple. Jetons un coup d'oeil à chaque constructeur de véhicule et visualisons la cote mpg sur les véhicules qu'ils produisent. Donc, cela va nous donner la répartition des cotes mpg sur tous les véhicules que chaque constructeur offre. Ok, donc nous allons faire essentiellement une boîte individuelle pour chaque fabricant montrant la distribution des évaluations de NPG sur toute sa gamme de produits. ai eu. Bon, donc il y a beaucoup de fabricants, donc on va devoir faire quelques choses ici pour profiter de ce que Seaborne offre. Tout d'abord, nous allons régler la taille de la figure à 15 5 Ce qui le rend juste plus grand afin que nous puissions insérer plus d' informations sur l'écran. Eh bien, puis définir la boîte de tracé lui-même étaient sur. Supposons que nous voulons tracer le fabricant sur l'axe X et les valeurs mpg combinées sur l' axe Y en utilisant notre bloc de données d'origine. Voici le DF de données et nous allons enregistrer ce tracé de boîte dans une variable X. Nous définirons ensuite les étiquettes de coche sur ce tracé pour avoir une rotation de 45 degrés. De cette façon, ils seront plus faciles à lire car il y en a beaucoup. Donc la syntaxe ici est Ron, Say, sit set X étiquettes de ticks sur les étiquettes X que nous récupérons de cette intrigue avec une rotation de 45 degrés. Donc, c'est essentiellement dire, je veux définir les étiquettes sur l'axe X aux étiquettes existantes. Vous savez, laissez-les inchangés, mais spécifiez une rotation de 45 degrés. Donc, allons de l'avant et commençons ça à partir de la sortie définie des étiquettes cochées La commande a sorti une sortie . Voici une partie de son processus ah ici. Mais voici le graphique lui-même assez intéressant, donc vous pouvez voir cet angle de 45 degrés que nous avons spécifié sur les étiquettes ici utilisées là-bas. C' est beaucoup plus facile à lire, et vous pouvez regarder la propagation des valeurs mpg pour chaque fabricant individuel. Tellement intéressant. Volkswagen a une très large gamme, par exemple, alors qu'Aston Martin est assez étroitement regroupé. Volvo sont aussi très serrés ici, vous savez, choses si intéressantes. En outre, General Motors a tendance à être regroupée ici, vous savez,au milieu de la vingtaine ou environ vous savez, , mais ils ont beaucoup de valeurs aberrantes ici sur l'extrémité supérieure aussi. Il semble donc qu'il y ait aussi quelques voitures de General Motors très efficaces. Ensuite, nous avons Ferrari, évidemment pas très bon mpg, parce que les gens qui conduisent Ferraris se soucient plus de la performance et de l'efficacité énergétique. Je pense que oui. Perspectives intéressantes à tirer de cette boîte et moustaches intrigue ici de l'efficacité énergétique travers les modèles pour chaque constructeur de véhicules que nous connaissons sur les choses amusantes, et c'est joli à regarder. C' est encore une fois. C' est descouleurs modernes et agréables, couleurs modernes et agréables, et c'est une sorte de ce que C on vous donne hors de la boîte. Il y a aussi les parcelles d'essaim, qui, au lieu de boîtes et de moustaches, trace chaque point de données individuel. Mais il les regroupe en fait d'une manière qui facilite leur visualisation. Donc, c'est plus logique. Quand vous le regarderez, nous ferons juste un complot d'essaim sur la même chose exacte. Donc, dans le nom du fabricant et combiné mpg de notre cadre de données DF. Encore une fois, nous allons régler la rotation à 45 degrés sur l'axe X et la lancer sur Lee. Différents Sears faisaient une parcelle d'essaim au lieu d'une parcelle de boîte que vous pouvez voir ici c'est de la boîte et des moustaches. Nous avons juste ce format différent ici, où nous sommes en quelque sorte en train de s'agglutiner ensemble. Ces points ici pour représenter réellement la distribution des données mieux. Donc, chaque véhicule individuel est tracé à un point sur la ferraille, mais nous regroupons ces points horizontalement pour essayer de refléter une distribution de ces points un peu mieux. C' est donc une façon de regarder les données brutes un peu plus que dans une boîte de dialogue. Mais il est toujours groupé d'une manière qui vous donne les mêmes informations qu'une boîte de poche avec des informations plus raffinées. C' est ce qu'on appelle un complot d'essaim. Vous pourriez obtenir les mêmes résultats. Donc encore une fois, vous savez, regardant plus profondément dans Volkswagen, vous pouvez voir qu'ils ont un assez répandu ici. Il y a un tas autour de 30 et un tas autour de 10 et rien de plus entre les deux. Donc un cas curieux là-bas, et je pense que c'est parce que Volkswagen possède en fait un tas de marques différentes qui sont ciblées sur des marchés très différents. Donc, on voit probablement les véhicules de consommation ici. Et les véhicules de performance ici seraient à mon avis. General Motors très étroitement regroupés dans cette gamme. Ici, ils sont, plus sur le véhicule du marché de masse, donc ils veulent être dans ce point doux il de choses qui ont raisonnablement bien fonctionné mais aussi bien à sorte d'appel. Bientôt public américain de toute façon, juste une autre façon de le regarder. Un de plus est le complot de comte. Fondamentalement, la même chose est une histoire, Graham, mais c'est pour les données catégoriques, donc siffler un gramme est vraiment seulement sifflé un gramme si vous avez affaire à des valeurs numériques. Si vous faites avec des catégories, cependant, cependant, c'est ce qu'on appelle le diagramme de compte. Alors regardons simplement comme un exemple à nouveau, extrayons les noms des fabricants et jetons simplement un coup d'oeil au nombre de voitures que chaque fabricant fabrique. Donc, nous allons tenir compte de l'intrigue, en comptant le nombre de véhicules que chaque constructeur a et encore une fois les faire tourner de 45 degrés afin que nous puissions réellement lire ces étiquettes X. Et là, vous l'avez. Donc, tout comme une histoire Graham, sauf qu'elle est ventilée par catégorie, donc il n'y a pas de véritable signification inhérente à l'ordre dans lequel elles apparaissent. Il y a juste des comptes ventilés par catégorie, c'est tout ce qu'il y a. C' est tout l'intrigue de compte ISS. Donc, vous pouvez voir assez clairement ici que General Motors a le plus grand nombre de modèles de voitures disponibles, suivi de près par BMW et, vous savez, encore une fois, ces grandes compagnies aériennes qui possèdent d'autres fabricants. Donc vous savez, nous ne disons pas nécessairement qu'il y a plus de 100 modèles BMW différents sur le marché en 2019. Ceux-ci comprennent d'autres marques. Le fardeau de la preuve est bien, mais , vous savez , à l'autre bout, il y a très peu de modèles Aston Martin dans un très petit nombre de modèles Rolls Royce, par exemple, sorte que vous pouvez vraiment voir ici la distribution du nombre de modèles que chaque fabricant produit très facilement. Enfin, jetons un coup d'oeil à une carte de chaleur, des cartes de chaleur ou de plaisir afin qu'ils soient loin de tracer Ah deux données d, mais où les couleurs représentent les valeurs individuelles dans chaque cellule de cette table, il est donc plus logique à nouveau. Si vous regardez simplement, faisons un tableau croisé dynamique à partir de notre bloc de données d'origine pour créer une table à deux D cartographiant cote moyenne mpg pour chaque combinaison du nombre de cylindres et de la cylindrée du moteur . Jetons un coup d'oeil à cette carte de chaleur que nous avons ici. C' est un tableau croisé dynamique sur le bloc de données original juste pour extraire ces informations de deux D essentiellement un tableau de deux D qui mappe le mpg combiné pour chaque combinaison de cylindres et de cylindrée du moteur . Donc, en gros, on court ici. C' est un peu comme une trame de données, juste là où étaient cartographiés les cylindres contre la cylindrée du moteur avec des cellules individuelles dans ce diagramme contiennent la combinaison de frigo mpg. Et nous allons les agréger ensemble en utilisant des moyens que nous allons dire que nous voulons examiner toutes les différentes valeurs et prendre la moyenne pour chaque combinaison individuelle de cylindres et de cylindrée du moteur. Donc s'il y a plus d'une voiture qui a dit, vous savez ah, quatre cylindres à point, un moteur de tête prendra la moyenne de toutes ces voitures ensemble pour arriver à la valeur dans cette cellule de ce complot. Ok, donc c'est à ça que ressemble cette intrigue comme une carte de chaleur. Maintenant, il manque beaucoup de date parce qu'apparemment il n'y a pas de moteur de 12 cylindres , 1,4 litre. , Ce serait fou. Mais les représentent toutes les valeurs pour lesquelles nous avons réellement des données dans notre bloc de données, et la couleur réelle de chaque point correspond à la valeur de cette cellule. Donc, par exemple, voici la légende de ce que ces couleurs signifient. Le noir est quelque part autour de 12 mpg. Donc, si vous avez un moteur de 16 cylindres, huit litres, ça va avoir une consommation de carburant vraiment horrible en moyenne de seulement 12 mpg. Ok, donc c'est comme ça que tu lis ce truc. Et vous pouvez voir juste en regardant cela que lorsque vous montez à cette extrémité de l'intrigue ce coin ici vous avez un petit nombre de cylindres, faible cylindrée du moteur. ont des couleurs très claires parce qu'ils sont plus économes en carburant. Alors que vous descendez vers ce coin de beaucoup de cylindres et de beaucoup de cylindrée , vous devenez de pire en pire, rendement énergétique. Cette carte thermique permet donc de visualiser très facilement la façon dont ces évaluations réelles de mpg changent en fonction de l'endroit où elles se trouvent dans ce graphique. Donc c'est une carte de chaleur. Tout droit. Si vous voulez essayer cela par vous-même. Voici un petit défi pour vous. Essayez donc d'explorer la relation entre le nombre d'engrenages de la voiture et son indice combiné mpg. Et je veux les yeux divisionnaires ces deux dimensions de données dans un tas de façons différentes à un nuage de dispersion faisant Ellen complot à un complot commun à un sang de boîte et à un intrigue d'essaim. Quelles conclusions pouvez-vous en tirer ? Donc, avant de faire défiler vers le bas, donnez à essayer vous-même. Je t'ai laissé des endroits vides pour jouer avec et donner un coup de feu. Pas de regard à l'avance, mais j'ai ma solution ci-dessous. Si vous voulez jeter un coup d'oeil lorsque vous avez terminé et comparez vos résultats à l'esprit. Alors donnez ça un coup, j'espère obtenir des résultats. Mais si vous êtes coincé, hésitez pas à faire défiler vers le bas et à ne pas bec. Mais mes réponses sont là bas. Ok, alors amusez-vous avec ça. Et j'espère que ça rendra Seaborn un peu plus réel pour toi. On va l'utiliser un peu tout au long de ce cours. C' est une bibliothèque de visualisation très utile qui est également bon à regarder et là vous l'avez 19. Covariance et Corrélation: Ensuite, nous allons parler de co variance et de corrélation. Donc, disons que j'ai deux attributs différents de quelque chose, et je veux voir s'ils sont réellement liés l'un à l'autre ou non. Cela vous donnera les outils mathématiques dont vous avez besoin pour le faire et plongera dans quelques exemples et déterminera réellement co variance et corrélation en utilisant Python. Ensuite, parlons de la variance co et de la corrélation. Ce sont des façons de mesurer si deux attributs différents sont liés les uns aux autres dans un ensemble de données, qui est cumbia. Chose très utile à savoir. Parlons donc de co variance. Imaginez que nous ayons un nuage de points ici, et peut-être que chacun de ces points de données représente une personne que nous avons mesurée. Et nous applaudissons peut-être leur âge sur un axe par rapport à leur revenu sur un autre. Donc, chacun de ces points représenterait une personne ou dire qu'ils sont exe Valley, représentait leur âge, et leur raison représentait leur revenu. Ok, je fais totalement que ce bureau est de fausses données. Maintenant qu'un nuage de points qui ressemblait à ceci, vous voyez que ces valeurs ont tendance à se situer partout. Et cela vous dira qu'il n'y a pas de corrélation entre l'âge et le revenu sur la base ces données, juste, comme ça ne semble pas avoir d'importance pour un âge donné qui pourrait être une énorme gamme de revenus. Ils ont tendance à être regroupés autour du milieu. Mais, vous savez, nous ne voyons pas vraiment une relation très claire entre ces deux attributs différents de l' âge et du revenu. Maintenant, en revanche, ici à droite, vous pouvez voir qu'il y a une relation linéaire très claire entre l'âge et le revenu, donc co variance et corrélation nous donne un moyen de mesurer à quel point ces choses sont serrées sont corrélées. Donc, vous savez, je m'attendrais à une très faible corrélation ou variance co pour ces données sur la gauche, mais une très forte variance et corrélation de Corvair pour les données sur la droite. C' est donc le concept de variance du cœur et de corrélation mesure combien ces deux attributs que je mesure semblent dépendre l'un de l'autre, donc la mesure de la variance de la co mathématiquement. C' est un peu dur, mais je vais essayer de l'expliquer. Il est vraiment plus important que vous compreniez comment l'utiliser et ce que cela signifie, mais en fait, vous le dériver. Si vous deviez y penser, ces attributs des données sont des vecteurs à haute dimension. Ce que nous allons faire sur chaque attribut pour chaque point de données est de calculer la variance par rapport à la moyenne à chaque point. Donc maintenant, j'ai ces vecteurs haute dimension atteignent chaque point de données chaque personne, si vous correspondez à une dimension différente. Et j'ai un vecteur dans cet espace haute dimension qui représente toutes les variations de la moyenne pour un âge dit pour un attribut. Et puis j'ai une autre victoire qui représente toutes les variations par rapport à la moyenne pour d' autres attributs, comme le revenu. Et ce que je fais alors, c'est que je prends ces vecteurs qui mesurent les variations de la moyenne pour chaque attribut, et je prends ce qu'on appelle le produit point entre les deux et mathématiquement. C' est une façon de mesurer l'angle entre ces vecteurs de haute dimension. Donc, s'ils ne sont pas très proches les uns des autres, cela me dit que ces variances sont à peu près en lockstep les uns avec les autres travers ces différents attributs. Et si je prends ce produit point final et divise avec une taille d'échantillon, c'est ainsi qu'il s'est terminé avec le montant de la variance co. Maintenant, tu n'auras jamais à calculer ça toi-même de la manière la plus difficile. Vous savez, nous allons voir comment faire cela en Python, mais conceptuellement, c'est comme ça que cela fonctionne maintenant. Le problème avec co various est qu'il peut être difficile à interpréter. Donc si j'ai, AH, co variance est proche de zéro. Eh bien, je sais que ça me dit qu'il n'y a pas beaucoup de corrélation entre ces variables du tout, mais, ah, ah, grande variance de co implique qu'il y a une relation. Mais quelle est la taille ? Vous savez, selon les unités que j'utilise, il peut y avoir des façons très différentes d'interpréter ces données. Donc c'est un problème. Cette corrélation de Saul. Il normalise tout par l'écart-type de chaque attribut, et ce faisant, je peux dire très clairement. Une corrélation négative signifie qu'il y a une corrélation inverse parfaite. Ainsi, à mesure qu'une valeur augmente, l'autre diminue et vice versa. Une corrélation de zéro signifie qu'il n'y a pas de corrélation du tout entre ces deux ensembles attributs, et une corrélation d'un impliquerait une corrélation parfaite où ces deux attributs se déplacent exactement de la même manière que vous regardez différents points de données. Rappelez-vous donc que la corrélation n'implique pas de causalité simplement parce que vous trouvez une valeur de corrélation très élevée ne signifie pas que l'un de ces attributs provoque l'autre. Ça veut juste dire qu'il y a une relation entre les deux, et que cette relation pourrait être causée par quelque chose de complètement différent. La seule façon de vraiment déterminer la causalité est de passer par une expérience contrôlée, dont nous parlerons plus tard. Mettons-nous les mains sales et calculons la corrélation et la causalité et voyons comment nous faisons réellement cela en Python. Très bien, nous allons salir les mains avec la variance co et la corrélation ici avec du code python réel . Donc, encore une fois, comme je l'ai expliqué aux diapositives, vous pouvez penser conceptuellement que la co variance est en quelque sorte de prendre ces vecteurs multidimensionnels de variances de la moyenne pour chaque attribut et de calculer l'angle entre eux comme un mesure de la variance co. Et le calcul pour faire cela est beaucoup plus simple que cela n'en a l'air. Tu sais, on parle de vecteurs de haute dimension. Je veux dire, ça ressemble ça ressembleà destrucs de Stephen Hawking, mais en fait, pour un point de vue mathématique, c'est assez simple. trucs de Stephen Hawking, mais en fait, pour un point de vue mathématique, Donc je vais faire ça à la dure. Numb Pie a une méthode pour juste calculer la variance co pour vous, et nous en parlerons plus tard. Mais pour l'instant, je veux montrer que vous pouvez vraiment faire ça. Tu sais, d'après les premiers principes. Donc la variance co est à nouveau définie comme le produit point, qui est une mesure de l'angle entre deux vecteurs du vecteur des écarts par rapport à la moyenne pour un ensemble donné de données et les écarts par rapport à la moyenne pour un autre donnent à la place de données pour les mêmes données, points de données. Et puis nous divisons ça par fin moins un. Dans ce cas, parce que nous sommes en fait affaire avec un échantillon donc d e moyenne ou écart par rapport à être fonction prend dans un ensemble de Data X liste en fait, et il calcule la moyenne de cet ensemble de données. Et voici un peu de supercherie python pour vous. Cette syntaxe dit que je vais passer par Je vais créer une nouvelle liste et passer par chaque élément de la prochaine. Appelez-le X I, puis retournez la différence entre X I et la moyenne suivante pour cet ensemble de données. Donc, cette fonction renvoie une nouvelle liste de données qui représente les écarts par rapport à la moyenne pour chaque point de données. Donc, ma fonction de variance co fera cela pour les deux ensembles de données entrant, divisé par le nombre de points de données moins un. Tu te souviens de cette chose sur l'échantillon contre la population ? Eh bien, ça entre en jeu ici, et on peut juste utiliser ces fonctions et voir ce qui se passe. Donc, dans cet exemple, je vais fabriquer des données qui vont essayer de trouver une relation entre les vitesses payantes . C' est à quelle vitesse il rend la page sur un site Web et combien les gens dépensent. Ainsi, par exemple, chez Amazon, nous étions très préoccupés par la relation entre la rapidité de rendu des pages et le montant argent que les gens dépensent après cette expérience. Tu sais, on veut savoir. Existe-t-il une relation réelle entre la vitesse du site Web et le montant d'argent que les gens dépensent réellement sur le site ? Donc c'est une façon de comprendre ça. Donc, nous allons simplement générer des données aléatoires normalement distribuées au hasard pour les vitesses payantes et les montants d'achat. Et comme c'est aléatoire, ça ne va pas être une corrélation de riel entre eux. Donc juste un contrôle de santé mentale ici va commencer. Commencez par le traçage par scatter de ce truc, et vous verrez qu'il a tendance à se regrouper autour du milieu en raison de la distribution normale sur chaque attribut. Eh bien, il n'y a pas de vraie relation entre les deux, vous savez, vitesse payée donnée est une grande variété de montants dépensés et pour n'importe quel montant dépensé, il y a une variété de vitesses payantes mensonges. Donc, il n'y a pas de corrélation de riel, sauf ceux qui sortent par hasard ou par la nature de la distribution normale . Et bien sûr, si nous calculons la variance de co dans ces deux données les deux ensembles d'attributs, nous finissons avec une très petite valeur. Négatif 0,7 C'est donc une très petite valeur de variance co proche de zéro. Cela implique qu'il n'y a pas de véritable relation entre ces deux choses. Maintenant, rendons la vie un peu plus intéressante. Faisons réellement le montant d'achat de la fonction réelle de la vitesse payée. Donc, nous gardons les choses un peu aléatoires ici, mais nous créons une vraie relation entre ces deux ensembles de valeurs. Donc, pour un utilisateur de tendance donné pardonné, il y a une vraie relation entre les vitesses payantes qu'ils rencontrent et le montant qu' ils ont dépensé. Et si nous tracons cela, nous pouvons voir que c'est en fait cette courbe ici où les choses ont tendance à être étroitement alignées. Les choses deviennent un peu bizarres ici près du fond juste à cause de la façon dont les choses se passent au hasard . Mais si nous rivalisons la variance co ici, nous finissons avec une valeur beaucoup plus grande. Négatif huit. Et tu sais que c'est l'ampleur de ce nombre qui compte. thèse signée, positive ou négative implique simplement une corrélation positive ou négative. Mais cette valeur de huit dit, Hey, c'est une valeur beaucoup plus élevée que zéro. Donc il se passait quelque chose là-bas. Mais encore une fois, il est difficile d'interpréter ce que huit signifie réellement. C' est donc là que la corrélation intervient, où nous normalisons tout par les écarts-types. Donc, encore une fois, faisant cela à partir des premiers principes, nous pouvons prendre la corrélation entre deux ensembles d'attributs. Calculer l'écart-type de chaque variance de co informatique de chaque variance de co entre ces deux choses et diviser par les écarts types de chaque ensemble de données. Et cela nous donne la valeur de corrélation qui est normalisée à négative 1 à 1, et nous finissons avec une valeur négative de 0,4, ce qui nous dit qu'il y a une corrélation entre ces deux choses dans la direction négative . Ce n'est pas parfait. Ce n'est pas une ligne parfaite, tu sais, ce serait négative. Mais il y a quelque chose d'intéressant qui se passe là et encore. Un coefficient de corrélation négatif signifie une corrélation négative parfaite. Zéro signifie pas de corrélation, et l'un signifie une corrélation positive parfaite. Maintenant, Pichon engourdi calcule la corrélation pour vous en utilisant la fonction de coif de base. Donc, s'il voulait le faire de la manière facile, on pourrait juste dire vider iDot Core Coif, vitesses payées, montant d'achat. Et ce que cela vous donne est un tableau qui vous donne la corrélation entre chaque combinaison possible des ensembles de données que vous transmettez. Donc, la façon de lire ceci est celle qui répond. Il y a une corrélation parfaite entre la comparaison des vitesses payantes à lui-même et le montant d'achat à lui-même, ce qui est attendu. Mais quand vous commencez à comparer la vitesse payée au montant d'achat ou au montant d'achat vitesse payée en passant par cette valeur native 10.4005, qui est à peu près ce que nous avons obtenu quand nous l'avons fait de la manière difficile, il y aura un peu de précision erreurs, mais vous savez, ce n'est pas vraiment important. Maintenant. Nous pourrions forcer une corrélation parfaite en fabriquant une relation totalement linéaire, et c'est ce que nous avons fait dans cet exemple et encore ici. On s'attendrait à ce que la corrélation soit négative pour une corrélation négative parfaite . Et en fait, c'est avec ça que nous finissons. Très bien, donc, encore une fois, une corrélation de rappel n'implique pas une cause de cause. Juste parce que les gens paient, les gens pourraient dépenser plus s'ils ont des vitesses payantes plus rapides. Peut-être que cela signifie juste qu'ils peuvent se permettre une meilleure connexion Internet. Peut-être que cela ne signifie pas qu'il y a en fait une causalité entre la rapidité du rendu des pages et le montant que les gens dépensent. Mais ça vous dit cette relation intéressante qui vaut la peine d'enquêter sur Mawr. Donc, vous ne pouvez rien dire sur la causalité sans faire une expérience. Mais Correlation peut vous dire quelles expériences vous pourriez vouloir exécuter, alors mettez vos mains en rouleau. Je veux que tu utilises la fonction Num pie Doc U've. C' est en fait un moyen d'obtenir une tarte engourdie pour calculer la variance co pour vous. Nous avons vu comment calculer la corrélation en utilisant la fonction de coif de base, alors revenez en arrière et réexécutez ces exemples. Il utilise la fonction no numb pie dot c o V sur voir ce que si vous obtenez les mêmes résultats ou pas d'accord, vous devriez. Ils devraient être très proches. Donc, au lieu de le faire à la dure avec la fonction de variance co que j'ai écrite à partir de zéro , utilisez simplement la tarte engourdie et voyez si vous obtenez à nouveau les mêmes résultats. C' est juste Ah, le but de cet exercice est de vous familiariser avec l'utilisation de la tarte engourdie et l'appliquer aux données réelles. Alors, faites-lui. Voyez où vous arrivez, alors vous l'avez. Covariance et corrélation à la fois en théorie et en pratique, Technique très utile. Les orteils ont si certainement se souvenir de cette conférence. Allons passer à autre chose. 20. Exercice : Probabilité conditionnelle: Parlons de probabilité conditionnelle. Concept assez simple. C' est essentiellement la probabilité que quelque chose se produise étant donné que quelque chose d'autre s'est produit premier, que cela dépend de bons exemples du monde réel. Si vous allez sur amazon dot com et regardez l'avenir, c'est comme les gens qui ont acheté ce également acheté, ou les gens qui ont vu cela également vu. Vous pouvez penser à cela en termes de probabilité conditionnelle. Quelles sont les chances d'acheter un autre article étant donné que vous avez acheté cet autre article en premier  ? Même concept. Maintenant, la notation en probabilité conditionnelle est probablement la partie la plus déroutante, donc nous allons essayer de vous guider dans cette conférence. Mais cela aiderait si vous prenez une tasse de café supplémentaire ou mettez votre chapeau de réflexion tout ce qu' il faut pour vous mettre dans votre état mental le plus aiguisé, parce que c'est l'une des choses les plus difficiles à traverser. Avec ça, plongons et je vais essayer de le rendre aussi simple que possible. Parlons encore de probabilité conditionnelle. concept simple avec la notation contribue parfois, alors nous allons juste plonger dans ce que cette notation est et ce que cela signifie Maintenant. Le concept de base de la probabilité conditionnelle est que si je le dois, des événements qui dépendent les uns des autres, je peux faire une déclaration sur la probabilité que ce deuxième événement se produise. Étant donné que le premier événement s'est produit maintenant, la notation que nous allons utiliser ici est double. Il y a p une virgule B, ce qui signifie la probabilité que A et B se produisent indépendamment l'un de l'autre. Et puis nous avons p d'être bar A. C'est la probabilité d'être donné qu'un a eu lieu. Cela implique donc une certaine dépendance entre B et A. Et nous pouvons lier tout cela ensemble en utilisant cette équation dandy pratique ici, où la probabilité d'être donné un qui est la probabilité conditionnelle d'être donné événement A est égale à la probabilité de A et B ensemble divisé par la probabilité d'un Donc, vous pouvez utiliser cela pour taquiner le conditionnel la dépendance entre être un Cela aura plus de sens avec un exemple réel. Jetons donc un coup d'oeil à un vrai exemple. Disons que je donne mes élèves aux tests, et dans l'ensemble, 60% de mes élèves ont réussi les deux tests. Donc, si nous appelons les tests A et B p une virgule, serait 60%. Cependant, le premier test a été plus facile. 80 % de mes élèves l'ont réussi. Donc, si être est le deuxième test et a est le premier test P d'un serait 80% dans cet exemple, droit et voir. Cela devient confus assez rapidement avec tous les A et B et les virgules et tuyaux. Mais passons en revue à nouveau. Donc 60% des étudiants ont passé les deux tests. Opiacez un large 60%. Le premier test a été plus facile. 80% ont réussi. Ce savon d'essai est de 80 %. Alors maintenant, comment puis-je comprendre le pourcentage d'étudiants qui ont réussi le premier test et qui ont également réussi le deuxième ? Quelle est la probabilité de passer mon deuxième test ? Étant donné que vous avez réussi le premier test ? C' est une probabilité conditionnelle. Donc, nous demandons la probabilité de B bar a. la probabilité conditionnelle de passer le test, étant donné que vous réussissez le test un et nous pouvons calculer cela en utilisant l'équation que nous venons de voir p d'être Bari. La probabilité conditionnelle d'être donné a est capable de la probabilité non conditionnelle p une virgule B, qui était de 60% sur la probabilité de A, qui est de 80%. Et si nous le faisons, cette division est allée avec 75%. Et nous pouvons dire que 75% est la probabilité conditionnelle de passer le deuxième test. Étant donné que vous passez le 1er 1 a du sens, frapper, mettre en pause et digérer cela pendant une minute. Parce qu'avec toutes ces lettres et différents signes de ponctuation et quoi que ce soit, cela peut devenir déroutant. Laissez-moi vous plonger dans un cahier et nous allons passer par un tas d'autres exemples pour essayer de faire cette notation et comment gérer toutes ces choses seconde nature pour vous. Et quand on aura fini, je vous donnerai un peu d'exercice en pratique vous-même. Ok pour cet exercice, je veux que vous ouvriez le cahier d'exercice de probabilité conditionnelle dans votre matériel de cours , et j'ai essayé de marcher à travers cela un peu lentement. C' est une sorte de chose difficile à enrouler un peu la tête. Ce que nous allons faire dans cette activité est de générer 100 000 personnes aléatoires et disons qu'ils sont tous des clients sur un grand site de commerce électronique comme Amazon ou quelque chose pour chacun de ces 100 000 personnes les affecteront aléatoirement à une tranche d'âge donnée, être dans la vingtaine ou dans la trentaine ou dans la quarantaine, jusqu'à la soixantaine. Et nous allons créer une probabilité conditionnelle d'une dépendance entre leur probabilité d'acheter quelque chose et leur âge. Fondamentalement, nous allons dire que plus vous êtes âgé, plus vous aurez de chances d'acheter quelque chose. Donc, si vous êtes jeune, vous aurez une probabilité plus faible d'acheter quelque chose. Donc, disons que nous disons que la probabilité d'acheter quelque chose est appelée E, et la probabilité d'être réellement dans une plage d'âge donnée F. Cela signifie que nous n'avons pas de probabilité conditionnelle de dépendance entre E et F. et la probabilité d'être réellement dans une plage d'âge donnée F.Cela signifie que nous n'avons pas de probabilité conditionnelle de dépendance entre E et F. alors passons à travers le code ici qui configure cet ensemble de données aléatoires. Je reçois beaucoup de questions de gens sur le fonctionnement de ce code. Alors supporte avec moi les gars, si vous connaissez déjà Python. Mais pour les gens qui y sont nouveaux, cela demande des explications. Donc je vais passer par cette ligne par ligne. Bon, donc nous allons commencer par importer au hasard du paquet de tarte engourdie. Rien d'excitant. Là C'est juste pour que nous puissions réellement générer des nombres aléatoires dans ce petit extrait de code ici,la graine de code ici, points aléatoires génère juste une valeur de graine pour le générateur de nombres aléatoires. Le but de cette ligne est de s'assurer que nous obtenons des résultats cohérents chaque fois que nous exécutons ce code. Donc, comme avant, nous avions l'habitude d'obtenir des résultats différents chaque fois que vous exécutez ceci. Mais en ayant un numéro cohérent, voir, cela signifie qu'il obtiendra les mêmes résultats pour nos nombres aléatoires. Chaque fois que nous exécutons ceci, le nombre zéro est arbitraire. Tout ce qui compte, c'est que c'est la même valeur qui est utilisée à chaque fois. Ça pourrait être 1234 ou n'importe quel numéro que vous voulez, tant que c'est le même qui se passe toujours. La prochaine fois, nous nous assurions d'avoir une certaine cohérence dans nos résultats. Mettre en place des dictionnaires python appelés totaux et achats et ce que cela fait est de garder une trace du nombre total de personnes que j'ai dans chaque plage de rage. Les jeunes de 20 ans, les 30 ans de 40 ans et ainsi de suite, et combien d'achats ont été faits par chaque personne dans cet âge fait rage Donc fondamentalement, je dis, au départ, je n'ai aucune personne dans le seau de 20 ans ici sur le seau de 30 ans et ici sur le seau 40 ans et ainsi de suite et ainsi de suite. Et je n'ai aucun achat chez les jeunes de 20 ans, zéro achat chez les enfants de 30 ans, zéro achat chez les enfants de 40 ans et ainsi de suite. C' est ainsi que je vais garder une trace du nombre total de personnes et du nombre total d'achats associés à chaque groupe d'âge. Je garderai également une trace du nombre total d'achats indépendamment de l'âge, avec la variable d'achats totaux. Ensuite, nous allons créer une boucle à travers 100 000 personnes aléatoires qui allaient créer . Et cela nous souligne un détenteur de place. Je pourrais juste dire Forex et à 100.000 ou ce que vous voulez. Mais puisque je n'utilise pas réellement cette valeur n'importe où dans la boucle ici, je peux simplement utiliser le caractère de soulignement comme espace réservé. Cela signifie juste que je me fiche vraiment de ce que cette valeur est réellement à chaque fois. Je me fiche que ce soit le numéro d'utilisateur 1776. Je pourrais juste jeter cette information. C' est tout. Le trait de soulignement signifie que je ne me fiche pas vraiment du nombre réel. Donc pour chacun d'entre eux, 100 000 personnes allaient manger à travers la soupe 100 000 fois et pour chaque fois, nous allons attribuer l'âge de 10 ans à cette personne. Le choix de points aléatoires va simplement choisir au hasard une valeur de cette liste que nous passons afin qu'il choisisse aléatoirement l'un de ces nombres 2030 40 50 60 ou 70 répartis uniformément. Nous aurons donc une chance aléatoire, voire même d'avoir 20 ans, 30 ans ou 40 ans. Tout ce que nous avons à 70 ans pour chaque personne individuelle. Voilà où les choses deviennent un peu bizarres. En fonction de votre âge, nous calculons une probabilité d'achat. Donc, nous prenons votre âge et le divisons par 100 pour comprendre les chances que vous ayez réellement acheté quelque chose sur notre site Web. Donc, par exemple, si j'ai 20 ans, je prendrai 20 divisé par 100. Cela correspond à 0,2 ou 20%, donc les jeunes de 20 ans auront 20% de chances d'acheter quelque chose de 30 ans qui ont 30% de chance d'acheter quelque chose et ainsi de suite et ainsi de suite. Donc c'est comme ça que nous sommes en train de découvrir que les jeunes sont moins susceptibles d'acheter quelque chose que les personnes âgées dans notre ensemble de données générées aléatoirement ici pendant que nous le traversons, va augmenter le total pour cette décennie d'âge par un moyen que nous avons généré à un nouveau personne aléatoire dans cette tranche d'âge. Et ici, nous disons, si des points aléatoires aléatoires, c'est moins que cette probabilité d'achat d'attribuer réellement l'achat à cette personne. Comment ça marche ? Eh bien, point aléatoire aléatoire sélectionne au hasard une valeur entre zéro et un. Donc si ce nombre aléatoire est inférieur à notre probabilité d'achat, nous disons que cette personne a réellement acheté quelque chose. Regardons un exemple pour le rendre un peu plus intuitif. Disons que nous avons un enfant de 30 ans, ok, donc quelqu'un dans la trentaine sa probabilité d'achat va atteindre 0,3 ou 30%. Donc, si notre nombre aléatoire entre zéro et un est inférieur à 10,3, cette personne est attribuée à un achat s'il est supérieur à 0,3. Ils n'ont pas acheté quelque chose. Donc, vous voyez comment ça marche. Voilà comment sont essentiellement rouler les dés pour voir si cette personne a acheté quelque chose ou non, compte tenu de leur probabilité globale d'acheter plus gamme d'âge. Ainsi, au fur et à mesure que nous avons terminé, nous créons le nombre total d'achats effectués sur l' ensemble des données . Nous gardons également une trace des achats avant cette décennie d'âge individuel, et nous gardons également une trace du nombre total de personnes dans chaque décennie d'âge ainsi, nous aurons besoin de tous ces chiffres pour comprendre des choses comme PV, Piece PF et PV étant donné la moitié et tout ça. Allons-y et courons. Ceci et ça. Génère est un jeu de données faux qui a une dépendance entre l'âge et les achats. Jetons un coup d'oeil à ce qu'on a. Je m'attends à ce que les totaux pour chaque tranche d'âge soient à peu près cohérents, et ils le sont de sorte que nous avons environ 16,5 1000 personnes par décennie d'âge, donc c'est bon. Et même la distribution, c'est ce que nous attendons. Mais si l'on examine les achats attribués à chaque tranche d'âge, on constate que cela augmente en fonction du sida. Donc, nous avons cette dépendance que nous essayons de modéliser là-bas fonctionnant bien. Donc environ 3020 ans, mais acheter quelque chose, mais environ, vous savez, presque 12.007 ans spots quelque chose, même si ils ont été répartis uniformément en nombre de personnes. Donc, nous voyons ici très clairement qu'il y a une relation entre votre âge et votre probabilité d'acheter quelque chose. Ok, donc nous avons un joli petit jeu de données faux travail avec l'année pour la probabilité conditionnelle, nous pouvons également calculer le nombre total d'achats sur l'ensemble de données qui sort à 45 012. Et maintenant, nous avons les vallées avec lesquelles nous devons travailler pour jouer avec la probabilité conditionnelle. Ok, donc encore une fois, beaucoup de ça est juste de te faire la tête autour de la notation et de garder une trace de quelle lettre signifie quoi ? Donc encore une fois, nous allons appeler e acheter quelque chose et f un âge donné dans lequel vous êtes. Donc, commençons par calculer p de e donné f. C'est une probabilité conditionnelle entre faire un achat et f où nous allons appeler ça être dans la trentaine avec cette tranche d'âge arbitrairement choisie là-bas. Donc, la probabilité d'acheter quelque chose e étant donné que vous êtes dans la trentaine f nous pouvons calculer cela directement. En fait, on peut juste savoir combien d'enfants de 30 ans ont acheté quelque chose en pourcentage. Alors allons de l'avant et calculons ça. Combien d'achats totaux avons-nous constatés à partir de trente années et combien de personnes appartenaient à cet ensemble de données ? Et cela fonctionne à 0,299 presque 0,3 droit ? Nous pouvons également calculer indépendamment pièce de BNP Sabbeth morceau de f sera la probabilité d'être 30 globale dans l'état de l'ensemble. C' est facile à calculer. Il suffit de prendre le nombre total de 30 ans divisé par le nombre total de personnes dans notre ensemble de données, et cela fonctionne. Teoh 16,6% 0.166 pièce PF e est juste la probabilité globale d'acheter quelque chose indépendamment de votre âge, s'il n'y avait pas de dépendance là du tout, Donc, pour calculer, PV prendra juste le nombre total d'achats pour tout le monde, quel que soit l'âge, divisé par le nombre total de personnes dans l'ensemble, ce qui correspond à 2,45 ou 45 p. 100. Donc, dans l'ensemble de notre ensemble de données, en éliminant l'âge de l'équation, il y a 45% de chances d'acheter quelque chose. Ok, donc c'est là que vous commencez à mettre un peu votre bonnet de réflexion. Alors enroulez votre tête autour de cette déclaration. Si e et f c'est acheter quelque chose et votre âge étaient indépendants que vous vous attendiez à ce que p de e donné f soit à peu près le même que PV, n'est-ce pas ? S' il n'y avait pas de dépendance entre acheter quelque chose dans votre âge, vous vous attendez à ce que la probabilité globale d'acheter quelque chose soit la même que la probabilité d' acheter quelque chose compte tenu de votre âge, car il ne devrait pas y avoir de dépendance il ne devrait pas avoir d'importance. Tu n'aurais pas dû avoir d'importance. Mais on a vu que ce n'est pas vrai, non ? Donc PV nous avons calculé pour être d'environ 45% mais p de e donné f nous avons calculé plus tôt pour être d'environ 30% ou 300.299 Quoi qu'il en soit ISS les chiffres air assez différents. Alors que seul nous dit que E et f sont dépendants qu'il y a une condition entre ces deux choses et nous savons que c'est le cas dans cet exemple, nous avons artificiellement créé une dépendance entre la probabilité d'achat et l'âge. Donc c'est une façon de taquiner ça des données juste là. Si vous voyez que P, e, v et P V donné F ou si vous voulez utiliser des lettres différentes, vous pouvez pipi de A n'est pas égal à P d'un donné soit toutes les lettres que vous voulez utiliser, c'est juste la notation. Si ce ne sont pas les mêmes, alors il pourrait y avoir une dépendance qui se passe là que vous devez savoir. Très bien, nous allons aussi calculer p de e com af à nouveau. Tout est question de notation. PFE virgule F est différent de P A e bar f. Donc PV virgule F est la probabilité globale d'être à la fois dans la trentaine et d'acheter quelque chose sans dépendance là-bas. Donc, nous examinons la probabilité globale d'être à la fois dans la trentaine et d'acheter quelque chose, pas seulement de limiter cela à la population de personnes dans la trentaine. Nous pouvons le calculer assez facilement. Nous pourrions simplement regarder le nombre total d'achats à partir de trente ans sur la taille totale de l'ensemble de données ici, et cela correspond à environ 5 % ish point par point. Oh, pour neuf. Pendant que nous y sommes, nous pouvons également calculer le produit de P E et P F Cela va juste multiplier P e et P F, la probabilité globale d'acheter quelque chose et la probabilité globale d'être dans trentaine . Cela s'élève à environ 7,5 % maintenant. Dans les statistiques, quand ils parlent de probabilité, vous verrez souvent la relation que p de aecom F est égal au produit de PNE et de PMF . Mais ce n'est vrai que s'il est assez indépendant maintenant. Nous avons trouvé ici que p de aecom f la probabilité globale d'être dans la trentaine et d'acheter quelque chose sur l'ensemble de données total est d'environ 0,5 Mais PV fois Pff est d'environ 0,75 Donc quand vous avez une dépendance qui se passe entre ces deux variables, il y a une probabilité conditionnelle qui se passe, et la relation de la virgule PV F est égale à P s'il fois pf ne tient plus. Donc c'est une autre façon de comprendre qu'il y a peut-être une dépendance qui gâche vos résultats. Cependant, nous pourrions revenir en arrière et vérifier cette équation que nous avons donnée dans les diapositives et juste voir si p a e donné f est en fait égal à PV virgule F sur PF. Et c'est juste une façon de calculer la probabilité conditionnelle. Si vous ne pouvez pas ordinateur directement comme nous le pourrions dans cet exemple, et assez sûr, nous pouvons prouver que c'est vrai. La probabilité de aecom un F Cela va juste être le nombre total d'achats de 30 ans sur l'ensemble des données sur Pff, que nous avons calculé plus tôt. Cela fonctionne 2.299 à 9, ce qui est exactement le même que P A E donné f que nous avons calculé en haut de ceci, n' est-ce pas ? Alors vérifions que 90.299295 Le même numéro que nous sommes arrivés ici à l'origine. Donc c'est cool. Les maths marchent. Wow. OK, donc c'est essentiellement quelques façons de déterminer si vous avez une dépendance dans vos données que vous n'avez peut-être pas connu et une façon de calculer la probabilité conditionnelle, compte tenu d'autres choses que vous pourriez connaître. Donc, de toute façon, faisons une petite mission ici un petit défi, si vous voulez. Donc, votre tâche, si vous choisissez de l'accepter, est de modifier le code ci-dessus de sorte que la probabilité d'achat ne varie pas avec l'âge. Alors rappelez-vous ici, dans ce premier bloc, ici, nous avons cette probabilité d'achat qui était fonction de votre âge. Il suffit de faire cela une valeur constante. Voyez plutôt ce que cela fait pour vos résultats. Donc, si vous faites cela, pouvez-vous générer un nouvel ensemble de données où vous pouvez montrer que PV donné f est à peu près le même de P et V ? Cela vous montrerait qu'il n'y a pas de condition là-bas. Si vous montrez que pour être vrai, que PV donne assez est le même spv alors il n'y a pas de dépendance entre ces deux choses et c'est une façon mathématique de trouver cela. Alors donnez ça un coup de feu et voyez si vous pouvez le prouver à vous-même et je vous montrerai ma solution à cela lors de la prochaine conférence. Donc, là, nous avons quelques exemples d'utilisation de probabilité conditionnelle à nouveau, les concepts pas si difficile. Il est juste vraiment facile de se faire trébucher sur toute la notation avec tous les tuyaux et les virgules, ce qui signifie des choses différentes et autres choses. Mais une fois que vous vous y habituez, ce n'est pas si mal. J' espère donc que vous aurez la chance de plonger dans la tâche de devoirs ici et d'essayer ce petit exercice de jouer avec vous-même et d'enlever cette condition et de confirmer que probabilité conditionnelle finit par s'effacer. Dans ce cas, permettez-moi de vous montrer ma solution lors de la prochaine conférence. 21. Solution d'exercice : probabilité conditionnelle: Tu as fait tes devoirs ? Je l'espère. Jetons donc un coup d'oeil à ma solution au problème de jeter un oeil à la façon dont la probabilité conditionnelle nous indique s'il y a une relation entre l'âge et la probabilité d'achat dans un ensemble de données faux. Allons-y. Ok, laissez-moi vous expliquer ma solution ici, et ça devrait être assez simple à nouveau. L' objectif ici était de supprimer la dépendance entre votre âge et votre probabilité d'achat et de voir si vous pouvez réellement taquiner les maths de cette dépendance que conditionnalité a disparu. Donc, si vous vous souvenez de notre marche à travers ce code qui génère notre ensemble de données, nous avons utilisé une ligne ici sur la probabilité d'achat qui a généré cela en fonction de votre âge. Il a fallu votre décennie d'âge et divisé par 100 pour créer cette condition entre votre âge et la probabilité d'acheter quelque chose. Donc ce que j'ai fait ici, au lieu de juste un code dur de ça à 40% donc il n'y a plus de relation entre votre âge et votre probabilité d'acheter quelque chose. Allons donc de l'avant et régénérons cet ensemble de données. Suppression de cette dépendance entre l'âge et la probabilité d'achat, c'est maintenant que nous pouvons calculer. PFE donné f Encore une fois C'est la probabilité de faire un achat compte tenu de votre âge, pour certains groupes d'âge choisira 30 ans à nouveau juste pour être cohérent. Encore une fois, nous calculerons le nombre total d'achats par les enfants de 30 ans par le nombre total de 30 ans, et nous finirons avec le nombre d'environ 40 %. Et nous pouvons calculer indépendamment p de e, qui est juste la probabilité d'acheter quelque chose dans l'ensemble, quel que soit votre âge, qui s'élève à 40%. Donc 39,8 40,0, assez proche. Ok, donc dans ce cas, PV est à peu près équivalent à PV donné f un peu différent juste à cause de la variation aléatoire . Mais c'est assez proche pour que l'on puisse dire que TNF sont probablement des variables indépendantes dans ce cas. Donc, les mathématiques nous ont dit que p de e donné F est le même spv plus ou moins et assez sûr, cela reflète le fait que nous supprimons ce lien entre l'âge et la probabilité d'achat. J' espère donc que vous avez été en mesure d'atteindre le même résultat et d'apprendre un peu de quelque chose route sur la probabilité conditionnelle et comment taquiner ces dépendances entre vos différentes fonctionnalités de vos données définies en mathématiques. Ok, j'espère que vous êtes arrivé à une solution similaire par vous-même. Si ce n'est pas le cas, retournez en arrière et étudiez ma solution. C' est juste là dans les fichiers de données pour ce cours. Si vous avez besoin de l'ouvrir et de l'étudier et de jouer avec elle. Et avec ça derrière nous, passons au théorème de Bayes. 22. Théorème de Bayes: Donc, maintenant que vous comprenez la probabilité conditionnelle, vous pouvez comprendre comment appliquer le théorème de Bayes, qui est basé sur la probabilité conditionnelle. Et c'est un concept très important, surtout si vous allez dans le domaine médical, mais largement applicable à, et vous verrez pourquoi dans une minute, il peut vous dire très quantitativement. Parfois, quand les gens vous trompent avec des statistiques. Voyons comment ça marche. Maintenant que vous comprenez la probabilité conditionnelle, nous pouvons parler du théorème de Bayes. Vous entendez beaucoup parler de cela, mais peu de gens comprennent vraiment ce que cela signifie ou sa signification. Parlons donc de basé là-bas à un niveau élevé ici. Donc basé là, euh, est tout simplement ceci. La probabilité d'un B donné est égale à la probabilité d'une fois la probabilité d'être donné a sur la probabilité de B. Très bien, donc vous savez que vous pouvez remplacer A et B ce que vous voulez. Un exemple courant est le dépistage des drogues. Donc nous pourrions dire, quelle est la probabilité d'être un utilisateur réel d'une drogue, étant donné que vous avez obtenu un test positif pour elle ? Et le théorème basé sur la raison est important est qu'il appelle que cela dépend beaucoup à la fois de la probabilité d'un et probablement des abeilles. Donc, la probabilité d'être un utilisateur de drogue, étant donné que vous avez obtenu un résultat positif dépend beaucoup de la probabilité globale de base d'être un utilisateur de drogue et de la probabilité globale de tests positifs. Ok, cela signifie aussi que le probablement être donné un Ce n'est pas la même chose qu'un être probablement donné . Donc, la probabilité d'être un utilisateur de drogue, étant donné que vous avez obtenu un résultat positif, pourrait être très différente de la probabilité de test positif, étant donné que vous étiez un utilisateur de drogue, donc vous savez que vous pouvez voir où cela va. Il y a un vrai problème où les tests diagnostiques en médecine ou en médicaments donnent beaucoup de faux positifs, non ? Et vous pouvez toujours dire que la probabilité qu'un test détecte un utilisateur soit très élevée. Mais cela ne signifie pas nécessairement que la probabilité d'être un utilisateur étant donné que vous avez testé positif est élevée. Il y a deux choses différentes et basé là et vous permet de quantifier cette différence. Donc, nous allons clouer cet exemple maison un peu plus Donc encore une fois, un test de drogue pourrait être un exemple commun de l'application du théorème de Bayes pour prouver un point. Même un test médicamenteux très précis peut produire plus de faux positifs et de vrais positifs. Donc, dans notre exemple ici, nous allons venir avec un test de drogue qui peut identifier avec précision les utilisateurs d'un médicament 99% du temps et a en fait un résultat négatif pour 99% des non-utilisateurs. Donc, mais seulement 0,3 % de la population totale consomme réellement le médicament en question. OK, donc j'ai une très faible probabilité d'être un utilisateur d'une drogue. Ce qui semble être une très haute précision de 99% n'est pas assez élevé, non ? On peut travailler sur les maths. Donc, l'événement Amy veut dire que vous êtes un utilisateur d'une drogue et l'événement est que vous avez testé positivement la drogue en utilisant ce test de drogue. Nous devons donc déterminer la probabilité de tester positivement dans l'ensemble. Et nous pouvons travailler cela en regardant le test de probabilité positif si vous êtes utilisateur et la probabilité de test positif si vous n'êtes pas un utilisateur et cela fonctionne à 22 point Avril de cela fonctionne à 1,3% dans cet exemple Ok, donc nous avons la probabilité d'être la probabilité de tester positivement le médicament dans son ensemble sans savoir quoi que ce soit d'autre sur vous. Si vous faites les calculs, la probabilité d'être un utilisateur du médicament Étant donné que vous avez testé positivement, vous savez quelle est la probabilité d'un résultat positif ? Ce qui signifie que vous êtes en fait un utilisateur de drogue détermine la probabilité d'être un utilisateur du médicament dans l'ensemble, qui est de 3%. Nous savons que 3% de la population est un utilisateur de drogues multiplié la probabilité d'être donné une probabilité de tests positifs. Étant donné que votre utilisateur et encore ce test a un ce qui sonne comme une très haute précision de 99% . Donc, nous avons 0,3% de la population utilise le médicament fois la précision I de 99% divisé par la probabilité de tests positifs globalement, qui a fonctionné à 1,3%. Donc, la probabilité d'être un utilisateur réel de ce médicament, étant donné que vous avez testé positivement pour cela est seulement de 22,8%. Bien que ce test de drogue soit précis 99 % du temps, il fournit toujours un faux résultat dans la plupart des cas où vous êtes positif. Bien que ce test de drogue soit précis 99 % du temps, Ok, les gens oublient ça tout le temps. Donc, s'il y a une leçon à tirer de la base là-bas, c'est de toujours prendre la source des choses avec les travaux d'assaut de grue qui s'appliquent à ces problèmes réels. Et vous trouvez souvent que ce qui sonne comme un taux de précision élevé peut en fait donner des résultats très trompeurs. Si vous faites face à une faible incidence globale d'un problème donné, nous constatons la même chose dans le dépistage du cancer et d'autres types de dépistage médical. C' est un problème très réel, et il y a beaucoup de gens qui obtiennent une chirurgie très, très réelle et très inutile à la suite de ne pas comprendre basée là. Donc, si vous allez dans la profession médicale avec le Big Data, s'il vous plaît, rappelez-vous cette conférence. Donc c'est basé là. Je me souviens toujours que la probabilité de quelque chose donné quelque chose d'autre n' est pas la même chose, chose,est l'inverse, et cela dépend en fait beaucoup des probabilités de base de ces deux choses qui vous mesurez. Donc, la probabilité qu'un test de drogue soit précis dépend beaucoup de la probabilité globale d'être un utilisateur de drogue dans la population, pas seulement de la théocratie du test, chose très importante à garder à l'esprit. Et, vous savez, toujours regarder vos résultats en gardant cela à l'esprit basé là et vous donne les outils pour quantifier cet effet. J' espère que cela s'avérera utile. 23. Réglage linéaire: Parlons de l'analyse de régression, sujet très populaire et de la science des données et des statistiques. Donc tout ce qu'il est d'essayer d'adapter une courbe, une sorte de fonction à un ensemble d'observations. Ensuite, vous pouvez utiliser cette fonction pour prédire de nouvelles valeurs que vous n'avez pas encore vues. C' est tout ce qu'il y a. Commençons donc par parler de la forme la plus simple d'analyse de régression. Régression linéaire. Parlons de régression linéaire. Vous entendez beaucoup parler de l'analyse de régression dans le domaine des jours. La science semble fantaisie, mais c'est en fait un concept très simple. Voyons voir. Donc la régression linéaire tout ce qu'il est est est d'adapter une ligne droite à un ensemble d'observations. C' est ça. C' est tout ce qu'il y a. Donc, par exemple, disons que j'ai un tas de personnes que j'ai mesurées et les deux caractéristiques que j'ai mesurées ou ces personnes sont leur poids et leur taille, certains choquant, montrant le poids sur l'axe X et la hauteur sur l'axe Y. Et je peux tracer tous ces points de données. Que les gens nous attendent est leur taille, et je pouvais le voir. Ça ressemble à une relation linéaire, n'est-ce pas ? Peut-être que je peux y mettre une ligne droite et l'utiliser pour prédire de nouvelles valeurs. Et c'est ce que fait Lenny Linear Regression. Donc, dans cet exemple, je pourrais finir avec une pente de 0,6 dans l'interception Y de 1 30.2 dans cet exemple sur qui définit une ligne droite, étant donné une pente dans une interception Y qui correspond aux données que j'ai le mieux. Et je peux utiliser cette ligne et créer de nouvelles valeurs pour que vous puissiez voir que les poids que j'ai observés ne sont passés qu'à des personnes pesant 100 kilogrammes. Et si j'avais quelqu'un qui pesait 120 kilogrammes ? Eh bien, je pourrais utiliser cette ligne pour déterminer où serait la hauteur pour quelqu'un de 100 20 kilogrammes d'après toutes ces données antérieures ? C' est ça. Je ne sais pas pourquoi on appelle ça la régression. régression implique en quelque sorte que vous faites quelque chose en arrière, et je suppose que vous pouvez penser à cela en termes de création d'une ligne pour prédire de nouvelles valeurs basées sur les observations que vous avez faites dans le passé à l'arrière dans le temps. Mais ça semble être un peu un peu trop long. C' est juste un terme déroutant, honnêtement. Et vous savez encore une autre façon de masquer ce que nous faisons avec des concepts très simples et simples utilisant une terminologie très fantaisiste. Alors ne laissez pas la régression linéaire vous monter en termes de fantaisie. Tout ce qu'il est est d'ajuster une ligne droite à un ensemble de points de données. Comment ça marche bien utilise en interne une technique appelée moindres carrés, moindres carrés ordinaires qui est également connu sous le nom OLS. Vous pouvez voir ce terme jeté aussi, et la façon dont il fonctionne est qu'il essaie de minimiser l'erreur au carré entre chaque point et la ligne, et l'erreur est juste la distance entre chaque point de la ligne que vous avez. Donc, si nous résumons tous les carrés de ces erreurs, cela ressemble beaucoup à quand nous avons calculé les variantes juste sauf au lieu de par rapport aux moyens de cette ligne que nous définissons. Nous pouvons mesurer la variance des points de données à partir de cette ligne, et en minimisant cette variance, nous pouvons trouver la ligne qui lui correspond le mieux. Maintenant, vous n'aurez jamais à faire ça vous-même de la manière la plus difficile. Mais si vous deviez pour une raison quelconque ou si vous venez curieux de ce qui se passe sous le capot . Cela décrit l'algorithme global ici pour vous de la façon dont vous allez réellement calculer la pente et pourquoi vous interceptez de la manière difficile si vous en avez besoin. Ce n'est vraiment pas si compliqué. La pente s'avère juste être la corrélation entre les deux variables fois un écart-type et pourquoi divisé par l'écart-type dans X, et il peut sembler un peu bizarre que l'écart-type juste une sorte de glisse dans le carte naturellement là. Mais rappelez-vous, Correlation avait un écart-type cuit dans elle aussi, donc il n'est pas trop surprenant que nous ayons orteil réintroduire ce terme. L' interception peut alors être mise. L' interception peut alors être calculée comme la moyenne du Y, moins la pente, fois la moyenne de X et encore, même si ce n'est vraiment pas si difficile. Python fera tout pour vous. Mais le fait est que ce ne sont pas des choses compliquées à exécuter, vous savez, elles peuvent effectivement faire assez efficacement. Encore une fois, rappelez-vous, les moindres carrés minimisent la somme des erreurs au carré de chaque point à la ligne et une autre façon de penser à la régression linéaire est que vous définissez une ligne qui représente le maximum probabilité d'une observation située là, mais la probabilité maximale que la valeur Y soit quelque chose pour une valeur X. Encore une fois, vous savez, les gens appellent parfois cette estimation du maximum de vraisemblance, et c'est juste un autre exemple de gens qui donnent un nom de fantaisie à quelque chose de très simple . Donc, si vous entendez quelqu'un parler d'estimation du maximum de vraisemblance, il parle vraiment de régression. Ils essayent juste d'avoir l'air très intelligent. Mais maintenant vous connaissez ce terme pour que vous puissiez sembler intelligent tous les deux. Il y a plus d'une façon de le faire. Nous parlons des moindres carrés ordinaires comme étant un moyen simple d'ajuster une ligne à un ensemble de données. Mais il y a aussi d'autres techniques. Grady et dissidence étant l'un d'eux, et cela fonctionne mieux dans les données tridimensionnelles, donc il essaie de suivre les contours des données pour vous. C' est très fantaisie et évidemment un peu plus coûteux de calcul, mais python ne vous permet pas de l'essayer facilement. Si vous voulez le comparer à des carrés ordinairement, d' habitude, cependant, cependant, les moindres carrés sont un excellent choix que nous faisons quand votre régression et vous savez que c'est toujours, ah, chose légitime à faire. Mais si vous rencontrez Grady et la dissidence, vous saurez que c'est une autre façon de faire l'Angleterre votre régression et cela est généralement vu dans les données dimensionnelles supérieures. Comment puis-je savoir à quel point ma régression est bonne ? Dans quelle mesure ma ligne corresponde-t-elle à mes données ? Eh bien, c'est là que R. Squared entre en jeu et R carré est aussi connu comme le coefficient de détermination à nouveau . Donc j'essaie de trouver quelqu'un qui essaie de paraître intelligent. Je l'appelle comme ça, mais habituellement ça s'appelle R carré. C' est la fraction de la variation totale et pourquoi cela est capturé par vos modèles. Alors, dans quelle mesure votre ligne suit cette variation qui se passe ? Est-ce que nous obtenons une quantité égale de variantes très de chaque côté de votre ligne ou non ? C' est ce que R. Squared a rencontré cette mesure et en fait calculer la valeur prendre un moins la somme des erreurs au carré sur la somme des variations au carré de la moyenne donc il n'est pas très difficile à calculer, mais encore une fois, python vous donnera des fonctions qui calculeraient simplement cela pour vous, donc vous ne serez jamais Acto faire vous-même ce calcul pour interpréter R carré, vous obtiendrez une valeur qui varie de 0 à 1 zéro. Ça veut dire que tu es en forme c'est terrible. Il ne capture aucune de la variance dans vos données, et l'un est un ajustement parfait. Donc, toute la variance de vos données est capturée par cette ligne, donc tous les différents à voir de chaque côté de votre ligne devraient être les mêmes dans ce cas, donc zéro est mauvais. L' un est bon. Il est déjà vraiment besoin de savoir quelque chose entre les deux est quelque chose entre les deux. Donc, une valeur au carré R faible signifie pour soutenir ajustement haut R carré. Value Moyens est un bon ajustement. Et, comme vous le voyez dans les conférences à venir, il y a plus d'une façon de faire la régression. La régression linéaire est l'un d'entre eux. C' est une technique très simple, mais il y a aussi d'autres techniques, et vous pouvez utiliser notre carré. Il s'agit d'une mesure quantitative de la qualité d'une régression donnée à un ensemble de points de données , puis utilisez-la pour choisir le modèle qui correspond le mieux à vos données. OK, alors jouons avec elle et calculons une régression linéaire et r au carré. Amusons-nous un peu avec la régression linéaire mains sur. Alors allez-y et ouvrez le fichier de carnet de régression linéaire I Python et suivez avec moi si vous voulez, parce qu'ils le font. Vous voulez jouer autour de ça pour avoir une bonne idée de ça. Donc, nous allons commencer par créer un peu de code python ici qui génère des données ish aléatoires qui sont, en fait, linéairement corrélées. Donc, dans cet exemple, je vais falsifier quelques données sur les vitesses de rendu de page et combien les gens achètent comme un exemple précédent. Donc, fabriquez une relation linéaire entre le temps qu'il faut pour une charge de pointe de site Web et le montant d'argent que les gens dépensent sur ce site Web. Donc, je l'ai fait ici est que j'ai fait une distribution aléatoire, une distribution normale des vitesses de paie centrées autour de trois secondes avec un écart central d'une seconde, et j'ai fait le montant d'achat de la fonction linéaire de cela. Donc, je fais 100 moins la vitesse de la page, plus une distribution aléatoire normale autour d'elle. Trois fois. Et si nous dispersons cela, nous pouvons voir que la ligne des données finit par ressembler à ceci. Ok, donc vous pouvez voir juste en regardant qu'il y a définitivement une relation linéaire qui se passe là. Et c'est parce que nous avons fait dur coda, riel relation linéaire dans nos données sources. Voyons donc si nous pouvons taquiner ça et trouver la meilleure ligne d'ajustement en utilisant les moindres carrés ordinaires . Maintenant, nous avons parlé de la façon de faire ordinairement des carrés et de la régression linéaire dans les diapositives, mais vous n'avez pas à faire de ces mathématiques vous-même, parce que le paquet de thèse I pi a un paquet stets que vous pouvez important chercher à l'abri de CYP I statistiques d'importation. Et ensuite, vous pourriez simplement appeler les statistiques. Stotland régresse sur vos deux fonctionnalités. Donc, avoir une liste des vitesses payantes et une liste correspondante des montants d'achat. régression de Lane me donnera un tas de choses, donc ça me redonne toutes ces variables que je récupère cette pente de l'interception, et c'est ce que j'ai besoin pour définir ma meilleure ligne d'ajustement. Il me donne aussi notre valeur à partir de laquelle nous pouvons obtenir notre carré pour mesurer la qualité de cet ajustement et quelques choses qui parleront plus tard dans le cours pour Maintenant, nous avons juste besoin d'interception de pente dans notre valeur. Alors allons de l'avant et lançons ça. Donc il y a ma ligne et allons de l'avant et trouver la régression linéaire. Meilleur ajustement maintenant la valeur au carré R que la ligne que nous avons obtenu est 0.99 C'est presque un point. Oh, donc ça veut dire que nous avons un très bon ajustement, ce qui n'est pas trop surprenant parce que nous nous sommes assurés qu'il y avait une vraie relation linéaire entre ces données. Même s'il y a une certaine variance autour de cette ligne, sont mensonges captures à variance. Nous avons donc à peu près le même écart de part et d'autre de la ligne, ce qui est une bonne chose. Cela nous dit que nous avons une relation linéaire et que notre modèle convient bien aux données que nous possédons. Tracons en fait cette ligne de sorte que ce petit morceau de code va réellement créer une fonction pour dessiner cette ligne rouge la mieux ajustée à côté des données. Donc un peu plus de magie Matt plot lib ici, nous allons faire une liste de ligne d'ajustement, et nous allons utiliser cette fonction de prédiction. Nous avons écrit pour prendre les vitesses payantes, qui est notre axe X et créer la fonction Y de cela. Donc, au lieu de prendre les observations pour le montant dépensé, nous allons trouver les prévisions juste en utilisant la pente Times X plus l'interception que nous avons obtenu de l'appel de régression terrestre ci-dessus. Donc, fondamentalement, nous allons à un nuage de points comme nous l'avons fait avant pour montrer les points de données brutes les observations. Et puis nous allons aussi appeler l'intrigue sur cette même instance de lot de tuyaux en utilisant notre ligne d'ajustement que nous avons créée en utilisant l'équation de ligne que nous avons obtenue et les montrer tous les deux ensemble. Fais ça. Et il ressemble à cela afin que vous puissiez voir que notre lion est en fait un bon ajustement pour nos données va droit, collation au milieu et tout ce que vous avez besoin pour prédire de nouvelles valeurs est cette fonction de prédire. Donc, compte tenu d'une nouvelle vitesse payée précédemment invisible, nous pourrions prédire le montant dépensé juste en utilisant la pente fois la vitesse payée C plus C pe plus l'interception. C' est tout ce qu'il y a. Il est temps de se salir les mains. Essayez d'augmenter la variation aléatoire dans les données de test et voyez si cela a un impact. Rappelez-vous que le R carré est une mesure de l'ajustement. Combien à capturer, les variantes. Donc, la quantité de variance nous verrons si elle fait une différence ou non. C' est une régression linéaire. Concept assez simple. Tout ce que nous faisons est d'ajuster une ligne droite à la place des observations. Et puis nous pouvons utiliser cette ligne pour faire des prédictions de nouvelles valeurs. C' est tout ce qu'il y a. Mais pourquoi vous limiter à aligner ? Il y a d'autres types de régression. On pourrait faire ce bras ou ce complexe. On le fera ensuite. 24. Réglage Polynomial: nous avons donc parlé de régression linéaire. La régression polynomiale est notre prochain sujet, et c'est en utilisant un ordre supérieur. Polynôme est de s'adapter à vos données, donc parfois vos données peuvent ne pas être vraiment appropriées pour une ligne droite. C' est là que la régression polynôme intervient. Plongons dans Très bien. Nous avons parlé plus tôt de régression linéaire, où nous ajustons une ligne droite à un ensemble d'observations. Parlons de régression polynomiale, qui est un cas plus général de régression. Alors pourquoi vous limiter à une ligne droite ? Peut-être que vos données n'ont pas réellement de relation linéaire. Peut-être qu'il y a une sorte de courbe, non ? Cela arrive assez souvent. Toutes les relations ne sont pas linéaires, mais la régression linéaire n'est qu'un exemple de toute une classe de régressions que nous pouvons faire. Donc, si vous vous souvenez, la ligne de régression linéaire que nous avons fini avec était hors de la forme Y égale MX plus B, où nous avons récupéré les valeurs M et B de notre analyse de régression linéaire à partir des moindres carrés ordinaires ou de la méthode que vous choisissez. Maintenant, ce n'est qu'un premier ordre ou un polynôme de premier degré, et l'ordre du degré est la puissance de X, un C. Donc c'est le polynôme de premier ordre. Mais nous pourrions aussi utiliser un polynôme de second ordre, et cela ressemblerait à y égal X carré plus B x plus e. Et si nous faisions une régression en utilisant un polynôme de second ordre, nous obtiendrions des valeurs pour A, B et C. Ou nous pourrions faire 1/3 de l'ordre polynôme qui a un X cube plus B X carré plus e x plus D. Et plus plus les ordres que vous obtenez, plus les courbes que vous pouvez représenter sont complexes. Droit ? Vous connaissez donc les pouvoirs mawr de X. Vous avez mélangé les formes et les relations les plus compliquées que vous pouvez obtenir. Mais plus de diplômes n'est pas toujours mieux, tu sais. Habituellement, il y a une relation naturelle dans vos données qui n'est pas si compliquée. Et si vous vous retrouvez à lancer, vous savez que de très grands degrés d'ajustement de vos données, vous pourriez être trop ajusté. Ok, donc si vous êtes si vous avez des données, c'est un peu partout et a beaucoup de variantes que vous pouvez obtenir, vous pouvez devenir fou et créer cette ligne qui, juste, genre, monte et vers le bas pour essayer d'adapter ces données au mieux possible. Mais en fait, cela ne représente pas la relation intrinsèque de ces données. Il ne fait pas un bon travail de prédire de nouvelles valeurs. Donc, commencez toujours par simplement visualiser vos données et pensez à vous savez, quel point cette courbe a-t-elle vraiment besoin d'être compliquée ? Maintenant, vous pouvez utiliser notre carré pour mesurer le bon ajustement de votre ISS. Mais rappelez-vous, cela ne fait que mesurer la mesure dans laquelle cette courbe correspond à vos données d'entraînement. Les données que vous utilisez pour établir vos prédictions en fonction de celles-ci ne mesurent pas votre capacité à prédire avec précision l'avenir. Plus tard, nous parlerons de quelques techniques de prévention du surajustement appelé test de train. Mais pour l'instant, tu vas juste devoir regarder le regard et t'assurer que tu n'es pas trop ajusté et jettes plus de degrés qu'une fonction. Alors tu dois le faire. Cela rendra Mawr plus logique lorsque nous faisons un exemple. Heureusement, aucun. Pie a une fonction poly fit qui le rend super facile à jouer avec cela et expérimenter avec différents résultats. Alors allons jeter un oeil. Il est temps de s'amuser avec la régression polynôme. Je pense vraiment que c'est amusant, au fait. C' est plutôt cool de voir toutes ces mathématiques du lycée entrer dans une application pratique. Allez-y, ouvrez le carnet de régression polynôme i Python et nous allons nous amuser un peu. Nous allons donc créer une nouvelle relation entre nos vitesses de page et le montant d'achat faux données. Et cette fois, nous allons créer une relation plus complexe. Ce n'est pas linéaire. Nous allons prendre les vitesses payées et en faire une fonction de la division des vitesses de page pour le montant de l'achat. Et si nous faisons un nuage de points, nous finissons avec ça. En passant, si vous vous demandez avec cette ligne de graine de points aléatoires NPR, cela crée une valeur de graine aléatoire , et cela signifie que lorsque je fais des opérations aléatoires ultérieures, ils seront déterministes. Donc en faisant ça, je pourrais m'assurer que chaque fois que je lance ça étant un peu de code, finisse avec les mêmes résultats exacts, ok, et ça va être important plus tard parce que je vais te faire revenir et en fait essayez différents ajustements à ces données pour voir comparé les ajustements que vous obtenez. Il est donc important que vous commenciez avec le même ensemble initial de points. Donc, nous l'avons là. Vous pouvez voir que ce n'est pas vraiment une relation linéaire. Vous savez, nous pourrions essayer de jouer la ligne, et ce serait bien pour beaucoup de données peuvent être ici, mais pas tellement ici. Nous avons vraiment plus d'une courbe exponentielle. Maintenant, il s'avère que la tarte engourdie a une fonction d'ajustement poly qui vous permet d'adapter n'importe quel degré polynôme que vous voulez à ces données. Ainsi, par exemple, nous pourrions dire que notre axe X est un tableau des vitesses de page que nous avons dans notre axe Y est une zone. Les montants d'achat que nous avons. Nous pouvons alors simplement appeler et P, qui est un raccourci pour tarte engourdie, Paul, si elle x y et quatre signifiant que nous voulons 1/4 degré ajustement polynôme à ces données. Alors allons de l'avant et courons. Cela fonctionne assez rapidement, et nous pouvons alors tracer ça. Donc nous allons créer un petit graphique ici que les parcelles sont des points originaux du nuage de points aux points prévus, et ça ressemble à ça. Donc, à ce stade, ressemble à un ajustement raisonnablement bon. Ce que vous voulez vous demander, cependant, cependant, est m I sur-ajustement Est-ce que ma courbe ressemble à elle est en train de sortir de son chemin pour accommoder les valeurs aberrantes et pas vraiment. Tu sais, je ne vois pas vraiment beaucoup de folie qui se passe. Comme si j'avais un polynôme d'ordre très élevé, ça pourrait, tu sais, se faufiler ici pour attraper celui-là et ensuite se faufiler ici pour attraper celui-là et, tu sais, devenir un peu plus stable par ici, où nous avons beaucoup de densité. Et peut-être qu'alors il pourrait potentiellement, vous savez, aller partout en essayant d'adapter cette dernière série de données de visite ici. Alors peut-être que ça ira. Nous courtisons, par exemple. Donc, si vous voyez ce genre d'absurdité, vous savez, vous avez trop d'ordres trop de degrés dans votre polynôme, et vous devriez probablement le ramener, parce que même si cela correspond aux données que vous avez observées, ça ne sera pas utile pour prédire des données que vous n'avez pas vues. Alors imaginez que j'ai une courbe qui s'effondre ici, puis redescendez à nouveau pour adapter ces points de données. Ma prédiction pour quelque chose entre les deux ne sera pas exacte, non ? Il devrait vraiment être au milieu ici donc encore plus tard dans le cours parlera principaux moyens de détecter ce surajustement. Mais pour l'instant, juste le globe oculaire. Maintenant, nous pouvons mesurer l'air carré R. Donc, en prenant le pourquoi et les valeurs prédites, nous n'avons pas à marquer la fonction dans son psychique appris SK appris appris sur les métriques que nous pouvons utiliser qui calcule cette forêt. Donc, fondamentalement, il compare un ensemble d'observations à un ensemble de prédictions et calcule r carré pour vous avec une seule ligne de code et r r code carré pour cela s'avère être 10.8 à 9, qui n'est pas trop mauvais. Souviens-toi, zéro est mauvais. L' un est bon, pointant plutôt proche de celui que vous connaissez, pas parfait. Et intuitivement, cela a du sens. Vous pouvez voir que notre ligne est assez bonne dans cette section des données, mais pas si bon ici et pas si bon ici et pointez a à des sons à propos de droite. Alors je veux que tu te salies avec ce truc. Essayez différents ordres de polynôme. Alors revenez ici à l'endroit où nous avons exécuté la fonction poly fit et essayez différentes valeurs là-bas plus de quatre. Tu sais que tu pourrais en utiliser un, et ça reviendrait à une régression linéaire. Ou vous pourriez essayer une quantité vraiment élevée, comme huit. Et peut-être que vous commencerez à voir trop ajusté, alors voyez quel effet cela a. Tu sais, tu vas vouloir changer ça. Par exemple, passons à 1/3 degré polynôme. Il suffit de continuer à frapper courir pour passer par chaque étape, et vous pouvez voir l'effet qu'il a. Donc notre troisième degré polynôme certainement pas aussi bon d'un ajustement. Et si vous mesurez réellement l'erreur r au carré, c'est en fait pire quantitativement. Mais si je vais en haut, je pourrais commencer à voir que nous sommes en accord. Donc juste avoir un peu de plaisir avec elle, jouer autour de différentes valeurs et obtenir une idée de ce que différents ordres de polynôme en raison de votre ligne ici, régression et se salir les mains et essayer d'apprendre quelque chose. Donc c'est encore une régression polynomiale. Vous devez vous assurer que vous ne mettez pas de degrés mawr au problème que vous devez utiliser juste la bonne quantité pour trouver ce qui ressemble à un ajustement intuitif à vos données. Trop nombreux peuvent conduire à un surajustement trop peu peuvent conduire à un mauvais ajustement. Ainsi, vous pouvez utiliser à la fois vos globes oculaires pour l'instant et la métrique R au carré pour déterminer quel est le bon nombre de degrés. Pour vos données, passons à autre chose. 25. Régression multiple: Plongons dans la régression multiple. C' est juste une régression qui prend en compte plus d'une variable, plus d'une entité. Le concept est en fait assez simple. C' est juste répondre à la question, si j'ai plus d'une variable influençant la chose que j'essaie de prédire. Donc, fondamentalement, je fais une régression que je n'ai pas seulement une fonctionnalité que je mesure pour essayer de prédire une certaine valeur. J' ai beaucoup de fonctionnalités qui pourraient se réunir. Donc, par exemple, cela pourrait être de prédire le prix d'une voiture en fonction de ses nombreux attributs. La voiture a beaucoup de choses différentes que vous pouvez mesurer qui peuvent influencer son prix, comme son kilométrage, son âge, combien de cylindres il a, combien de portes il a, des choses comme ça. Et vous pouvez réellement prendre en compte tous ces éléments et rouler cela dans un grand modèle, nombreuses variables dans le cadre de celui-ci. Maintenant, aussi souvent que dans le domaine de la science des données, il y a une terminologie confuse ici. En plus de la régression multiple, qui utilise plusieurs entités pour prédire une valeur unique, nous avons également le concept de régression multivariée. Et vous penseriez que ça signifierait la même chose, mais ce n'est pas le cas. Généralement, lorsque nous parlons de régression multivariée, nous parlons non seulement d'avoir plusieurs attributs d'entités que nous essayons d'utiliser pour faire une prédiction. Mais nous essayons aussi de prédire plus d'une chose en même temps. Alors peut-être que j'essaie de prédire non seulement le prix d'une voiture fonction de son kilométrage, de son âge et du nombre de portes. J' essaie aussi de prédire combien de temps il faudra pour le vendre ou quelque chose comme ça. Ce serait un exemple de régression multivariée où nous avons plusieurs choses que nous essayons de prédire en plus de plusieurs entités utilisées pour faire ces prédictions. qu'il en soit, la façon dont nous le faisons est en fait assez simple. Donc, nous pouvons juste avoir au lieu d' un seul coefficient attaché à une variable d'entité unique, nous pouvons avoir plusieurs termes avec plusieurs variables. Donc, nous pouvons dire que nous pouvons prédire le prix de la valeur basée sur une valeur constante Alpha fois un coefficient appelé bêta une fois votre première caractéristique, une valeur constante Alpha fois un coefficient appelé bêta une fois votre première caractéristique, ce qui pourrait être le kilométrage plus un coefficient bêta deux, qui pourrait se multiplier avec une autre caractéristique comme l'âge de la voiture plus bêta trois fois le nombre de portes, quoi que vous vouliez faire. Et ces coefficients ne font que mesurer importance de chaque facteur pour le résultat final réel. Maintenant, cela suppose que toutes vos fonctionnalités sont normalisées en y entrant. Donc, vous pouvez réellement comparer ces coefficients ensemble équitablement. S' ils ne sont pas normalisés, ce coefficient fonctionnera également pour mettre à l'échelle cette entité dans le résultat final. Et cela peut aussi être instructif s'il travaille réellement sur les valeurs de bêta-1, bêta-2, bêta-3, et tout ce que vous pourriez avoir. Cela peut également vous dire un peu quelles sont les fonctionnalités qui sont réellement importantes pour votre modèle. Donc, si vous vous retrouvez avec un coefficient très faible pour une entité donnée après que les choses sont normalisées. C' est peut-être une façon de vous dire que cette fonctionnalité n'est pas vraiment très importante pour prédire la chose que vous essayez de prédire. Cela peut vous aider à simplifier votre modèle en éliminant les données d'entités dont vous n'avez pas besoin. Donc c'est une chose très utile. C' est ce qu'on appelle la sélection de fonctionnalités. Et c'est souvent une partie très importante de la construction d'un bon modèle d'apprentissage automatique. Maintenant, tout cela utilise toujours les moindres carrés. Donc, dans notre cahier, nous allons utiliser quelque chose appelé OLS qui signifie moindres carrés ordinaires. Et il peut gérer plusieurs fonctionnalités comme celle-ci. Donc, nous pouvons toujours mesurer l'ajustement de cette chose dans l'ensemble en utilisant R-carré. Rien n'est différent là-bas. Et une autre chose que nous devons souligner est que tout cela suppose qu'il n'y a pas de dépendance entre ces différentes fonctionnalités. Notez que je traite toutes ces fonctionnalités indépendamment avec leurs propres coefficients. Donc, s'il y a en fait une relation entre ces entités, ce modèle ne captera pas cela. Et c'est en fait un exemple de ce qui serait probablement le cas. Par exemple, le kilométrage sur la voiture serait probablement fortement corrélé à l'âge de la voiture. Et ce modèle ne saisira pas cette relation. En fait, vous serez probablement très bien en utilisant le kilométrage ou l'âge indépendamment l'un de l'autre. Mais cela pourrait au moins vous dire lequel d'entre eux est le plus important à garder. Alors avec ça, plongons et lançons un ordinateur portable et voyons comment ça marche. Il y a quelque chose qu'on appelle le paquet Statsmodel qui facilite les choses. Et il offre le modèle OLS que nous pouvons simplement utiliser pour le faire chuter et faire tout pour nous. Alors rendons cet exemple de régression multiple réel. Allez-y et ouvrez le fichier bloc-notes de régression multiple ici, et vous devriez voir quelque chose comme ça. Bon, voyons une régression multiple en action. Heureusement, le paquet Statsmodel a un modèle de régression OLS qui peut gérer la régression multiple. C' est assez facile à utiliser, bien qu'il y ait quelques tribunaux dont nous parlerons ici que vous devez savoir. Ce que nous allons essayer de faire est de prédire les prix des voitures en utilisant une régression multiple sur divers attributs des voitures. Par exemple, le kilométrage, le nombre de cylindres dans le nombre de portes. Et j'ai un vrai jeu de données pour vous ici pour jouer avec que j'ai téléchargé sur notre site Web. Donc, la première chose que nous allons faire est d'importer des pandas et d'appeler sa fonction de lecture Excel pour charger cette feuille de calcul Excel d'un tas de données sur les voitures dans leurs attributs et ce pour quoi ils ont vendu. Et nous allons charger cela dans un DataFrame appelé df. Alors allons de l'avant et Shift Enter pour le faire. Maintenant, si vous avez un échec, ils sont juste essayer à nouveau. Parfois, accéder à Internet à partir d'un ordinateur portable peut être un peu peu peu fiable, mais généralement si vous essayez à nouveau, les choses vont rattraper et cela fonctionnera la deuxième fois. Bon, alors essayons de visualiser ces données. La première chose que vous voulez généralement faire lorsque vous avez affaire à un nouveau jeu de données est d'inspecter les données et de vous assurer que vous pouvez être à l'aise avec elles, de les manipuler et d'en extraire des informations et de vous assurer que c'est ce que vous s'attendre. Donc c'est tout ce qu'on va faire dans ce prochain bloc. Nous allons charger matplotlib afin que nous puissions tracer les choses, importerons le paquet NumPy afin que nous puissions manipuler nos données. Et nous allons créer un nouveau dataframe df qui extrait simplement les caractéristiques de kilométrage et de prix de notre DataFrame d'origine à partir de la feuille de calcul Excel que nous avons chargée en tant que df. Donc maintenant tout ce qu'on va essayer de traiter avec C. Y a-t-il une relation entre le kilométrage et le prix ? Vous penseriez qu'il y en aurait, non ? Vous penseriez que les voitures à kilométrage plus élevé en général coûteraient moins cher que les voitures à faible kilométrage. Voyons si c'est vrai. Allons ramasser ça. Donc, nous allons créer un DataFrame d'un bin et nous allons appeler np.arange. Ce que cela va faire, c'est diviser nos données en 10 000 morceaux entre 0 et 50000 miles. Je l'ai eu. Donc ça va me rendre une plage de données entre 010 000 km, 10000 et 20000 miles, jusqu'à 50 000 miles. Ensuite, nous allons créer ces groupes et prendre ces données de fonctionnalité de kilométrage et de prix, les regrouper en fonction des bacs que nous avons créés et calculer la moyenne pour chacun de ces bacs. Donc maintenant, les groupes vont contenir le prix moyen pour chacune de ces gammes de milles. On imprimera ça, on s'assurera que ça a l'air raisonnable, et on le tracera et on verra ce qu'on a. Alors, appuyez sur Shift Enter. Et vous pouvez voir ici que nous avons ces gammes que nous attendions. Donc, entre 010 000 milles, le kilométrage moyen était de 4588 et le prix moyen était de 24 mille dollars. Faites votre chemin jusqu'à 30 à 40 000 miles et le prix moyen descend à 19 463 miles. Et si vous le complotez, alors vous voyez ce que vous attendez. voitures à kilométrage plus élevé en général coûtent moins cher que les voitures à faible kilométrage. Maintenant, je vais vous avertir qu'il y a des valeurs aberrantes dans ce jeu de données. Et cela pourrait ne pas être vrai jusqu'à plus de 50 000 miles. Il y a peut-être des voitures de sport à collectionner qui ont un kilométrage élevé, mais elles valent encore beaucoup, non ? Donc, ce jeu de données est en fait un bon jeu pour traiter les valeurs aberrantes. Si vous voulez creuser là-dedans et je vous encourage à le faire à la fin de cet exercice. Quoi qu'il en soit, notre objectif était juste de nous assurer que nous sommes à l'aise, que les données étaient capables de les charger, nous sommes capables de les manipuler jusqu'à présent, si bien. Bon, alors construisons un modèle. Nous allons donc commencer par importer l'API Statsmodel en tant que SM. Donc, cela va importer le modèle que nous allons réellement utiliser ici. Nous allons importer le scaler standard à partir du prétraitement des points SKLearn. Et nous allons créer une nouvelle instance de scaler standard appelée scalaire standard scaled standard est et ce que nous allons utiliser pour normaliser toutes nos données d'entités afin qu'elles soient toutes dans la même plage générale. Cela fait que les modèles fonctionnent beaucoup mieux dans certains cas, y compris celui-ci. Commençons donc par extraire les données d'entité que nous voulons. Nous allons revenir à notre dataframe d'origine qui a été chargé directement à partir de cette feuille de calcul Excel. Et il suffit d'extraire trois caractéristiques, kilométrage, le nombre de cylindres et le nombre de portes. Et par convention, nous appelons notre tableau de fonctionnalités X, X majuscules. Donc, nous allons essayer de construire un modèle qui essaie seulement de prédire le prix en fonction du kilométrage, du nombre de cylindres et du nombre de portes. Maintenant, il y a en fait beaucoup d'autres données là-bas et les données source et par exemple, la marque et le modèle de la voiture qui serait assez important aussi vous penseriez. Mais ce type de modèle de régression, vous ne pouvez pas vraiment mélanger et faire correspondre des données ordinales avec des données numériques. On doit donc choisir l'un ou l'autre. Dans ce cas, nous allons aller avec quelques fonctionnalités numériques. Et c'est pour ça qu'on émet des choses comme la marque et le modèle de la voiture. Par convention, y en minuscules est nos étiquettes, les choses que nous essayons de prédire dans notre cas, c'est le prix, ok ? Nous devons maintenant prétraiter ces données de fonctionnalité pour qu'elles fonctionnent bien avec notre modèle. C' est une chose assez courante à faire. Donc, nous allons appeler échelle, qui est notre standard scaler fit transform et passer dans ce cylindre de myéline endosser les caractéristiques de notre rayon X, extraire les valeurs de cela, le passer dans la transformation d'ajustement et qui va nous rendons cylindres et les portes de kilométrage à l' échelle qui avaient été réduites en une distribution normale. Donc, plus ou moins une courbe de cloche entre le négatif 11 et nous allons le coller directement dans la radiographie originale dans les mêmes colonnes que nous avons commencé avec. Cette ligne va à nouveau mettre à l'échelle les entités du cylindre de kilométrage à l'intérieur ce jeu de données en une courbe de cloche entre 11 négatif et une loi normale. Cette diapositive suivante est une sorte de bizarrerie de l'OLS. Donc, vous vous souviendrez de la conférence qu'il y a un terme B, une interception Y constante pour chacun, pour où nous commençons. Et à moins d'ajouter une colonne constante à vos données d'entité, le modèle ne peut pas créer cette colonne. Donc, afin de lui permettre d'avoir une interception y, pour avoir cette constante dans le modèle, nous devons appeler Statsmodel dot add constant et passer dans notre tableau d'entités. Ils sont tout ce qu'il fait est d'ajouter une colonne pleine de celles au début de notre DataFrame. Nous allons l'imprimer et nous assurer qu'il ressemble à ce que nous attendons. Et puis nous formerons le modèle lui-même. Et c'est un seul paquebot ici. Nous appelons simplement Statsmodel dot OLS, transmettons nos données étiquetées, transmettons nos données de fonctionnalité et appelons Fit pour adapter ces données à notre modèle et créer un nouvel estimateur. Nous imprimerons ensuite des renseignements sommaires sur la façon dont cette formation s'est déroulée. Et cela nous dira, cela nous donnera quelques idées sur ce qui se passe réellement à l'intérieur du modèle juste là. Alors, allons Shift Enter et lancer ça assez vite. D' accord, donc la première chose que nous avons imprimée était ce tableau de fonctionnalités qui a été réduit. Et vous pouvez voir que nous avons cette colonne constante que nous avons coincée à l'avant là-bas qui va être utilisée pour modéliser l'interception y du modèle soit 0. Et vous pouvez voir que nos données d'entités ont été mises à l'échelle plus ou moins dans une plage plus ou moins négative 1 dans une loi normale. On dirait que ça a marché. Nous formons ensuite le modèle et imprimons des informations récapitulatives sur le modèle de train. Et en regardant cela, vous pouvez obtenir quelques idées. R-carré et toutes les mesures habituelles ici sont là pour que vous puissiez regarder. Je dois vraiment lire la documentation sur ce que ces statistiques signifient vraiment parce qu'elles ne sont pas toujours ce que vous attendez. Par exemple, r-squared est basé sur une, une mesure pondérée qui n'est pas ce que vous pensez normalement être r-carré, mais elle est toujours comparable car vous exécutez différents modèles différents sur les mêmes données. Jetons un coup d'oeil aux coefficients réels ici. Donc c'est un peu comme la viande de la sortie de notre modèle ici. Ce sont les coefficients réels pour les termes b0, b1, b2, b3 dans notre modèle de régression multiple. Donc, vous pouvez voir que notre terme constant est en fait assez grand. 21 340 ish dollars est notre interception. Le kilométrage a en fait un coefficient négatif. Encore une fois, cela a du sens car à mesure que vous augmentez un kilométrage, le prix diminuerait. Nous voyons aussi que les cylindres ont un impact très important sur elle. Donc, le nombre de cylindres dans la voiture semble en fait être la plus haute amplitude absolue de coefficient que nous voyons ici. Donc, assez étonnamment, le nombre de cylindres semble affecter le modèle plus que tout ce qui est allé à voir cela venir. Mais je suppose que c'est logique. Vous savez, si vous avez des véhicules à très haute cylindrée, vous êtes probablement dans le monde des super voitures exotiques, non ? Donc cela pourrait être provoqué par des valeurs aberrantes où quelqu'un a, vous savez, une supercar de millions de dollars avec dix cylindres. Et ça pourrait fausser tout ce modèle, souvent faire des choses bizarres. Encore une fois, des valeurs aberrantes ou quelque chose à creuser et en parler plus tard. Nombre de portes, étonnamment aussi un coefficient négatif. Le nombre de portes, plus de portes, ce n'est pas moi plus d'argent, il s'avère. Et si vous y repensez, vous savez, les voitures de sport, coopératives de sport, ils ont tendance à être deux portes et ils ont tendance à être chers. Donc, un peu d'un aperçu intéressant et les données juste à partir de regarder ces coefficients et rien de plus. D' accord, aller de l'avant. Donc, c'était en fait une façon assez alambiquée et complexe de comprendre que plus de portes ne signifie pas plus d'argent. Et je tiens à le répéter. Vous voulez toujours opter pour la solution la plus simple quand vous le pouvez. Donc j'aurais pu le comprendre avec une ligne de code ici. Bien plus simplement, si je viens de regrouper mes données par le nombre de portes et d'ordinateur, le prix moyen pour chaque ensemble de numéros de portes. Voyons ce qu'on en arrive. Donc, juste là, je peux juste voir avec cette simple ligne de code sans construire un grand modèle d'apprentissage automatique fantaisie, que le prix moyen d'un véhicule à deux portes est de $23,800, alors que le prix moyen d'un quatre portes est de $20,580. J' aurais donc pu arriver à cette conclusion beaucoup plus facilement et avec moins de complexité si je le voulais. Donc petite parabole de côté là-bas et comment la simplicité est souvent une bonne chose. De toute façon. Donc on a ce modèle qu'on va faire avec. Disons que vous voulez faire une prédiction réelle pour une voiture fictive ou une nouvelle voiture que vous avez rencontrée ? Eh bien, ce n'est pas aussi simple que vous le pensez pour revenir à une prédiction réelle en utilisant ce modèle. Mais voici comment vous allez à ce sujet. Donc, tout d'abord, nous allons fabriquer cette nouvelle fausse voiture qui a 45 000 km, huit cylindres et quatre portes. Donc, c'est ce que ce tableau signifie là. abord, nous devons l'adapter à la même gamme que celle utilisée pour former notre modèle. Donc, nous allons prendre la même instance d'échelle de scalaire standard que nous avions avant et appeler transform dessus pour redimensionner cette voiture particulière dans la même plage que nous utilisons pour former le modèle. Et de cette façon, il sera compatible avec un modèle que nous avons fabriqué. Nous devons également insérer cette colonne constante à nouveau. Donc, nous allons appeler numpy dot insert. Nous allons extraire ces données de fonctionnalités à l'échelle, ce que nous appelons ce tableau résultant de notre voiture fictive. Nous allons dire que nous voulions insérer à la position 0, le numéro un. Ok, c'est tout ce qui se passe ici. ensuite imprimer cela, assurez-vous que c'est ce que nous attendons qu'il soit. Enfin, nous pouvons appeler prédire sur notre estimateur que nous avons créé avec ce véhicule fictif que nous avons créé et obtenir un prix de vente prédit pour cela. Alors allons de l'avant et exécutons ça. On y va. Ainsi, nous pouvons voir que notre tableau d'entités en entrée a cette constante colonne 1 et nos données d'entités mises à l'échelle pour le kilométrage, nombre de cylindres et le nombre de portes. Et il est revenu avec un prix prédit dans ce cas de 27 1658$, ce qui est dans le ballpark de nos données. Donc je pense que c'est une estimation raisonnable. Donc là, vous l'avez. Régression multiple en action en utilisant quelques données réelles de ventes de voitures réelles peu peu. Et je suppose que c'est un vieux jeu de données, mais, vous savez, les prix des voitures n'ont pas beaucoup changé, pas les voitures d'occasion de toute façon. Comme toujours, je vous encourage à jouer avec cela plus loin par vous-même. Essayez de télécharger cette feuille de calcul XLS à partir de notre site Web. Vous pouvez simplement utiliser ce lien qui était dans le premier bloc là-bas et effectivement le télécharger via votre navigateur si vous le souhaitez et vous familiariser avec ce qui se passe. Donc, dans l'activité ici, j'ai suggéré peut-être d'essayer de gâcher avec le nombre de portes et de voir si vous pouvez réellement fabriquer des données pour faire une influence plus intéressante ou peut-être différente sur le nombre de portes sur le prix. Et peut-être que nous pouvons nous amuser avec elle et créer des voitures qui ont 10 portes ou quelque chose comme ça pour essayer de voir si vous pouvez biaiser les choses d'une façon ou d'une autre. Ce serait également une bonne idée de jeter un coup d'oeil aux données et d'essayer d'identifier certains des points aberrants dont nous parlions. Essayez de les retirer et voyez ce que cela fait pour la qualité de votre modèle. Je pense, comme je l'ai dit, il y a peut-être des super voitures là-dedans qui jettent des choses pour les types de voitures les plus courants que les gens achètent généralement. Donc je m'amuse un peu avec ça et bricoler si vous, si vous êtes si enclin. Et c'est une régression multiple en un mot, encore une fois, tout ce que nous faisons est de faire une régression sur plusieurs entités en même temps et d'attribuer des coefficients différents à chaque entité pour avoir un seul modèle de régression que nous pouvons utiliser pour faire des prédictions basées sur plus d'une fonctionnalité. 26. Modèles multi-niveaux: Parlons des modèles à plusieurs niveaux. C' est certainement un sujet avancé, et je ne vais pas entrer dans beaucoup de détails ici. Mon objectif ici est juste de vous présenter le concept de modèles à plusieurs niveaux et de vous comprendre certains des défis et comment y penser. Quand vous les assemblez, c'est tout. Donc, le concept ici est que certains effets se sont produits à différents niveaux de la hiérarchie. Ainsi, par exemple, votre santé votre santé peut dépendre de la santé de vos cellules individuelles. Et ces cellules peuvent être fonction de la santé des organes qu'elles sont à l'intérieur de nos organes et la santé de vos organes peuvent dépendre de la santé de vous dans son ensemble, et votre santé peut dépendre en partie de la santé de votre famille et de l'environnement de votre famille vous donne et la santé de votre famille, à son tour, peut dépendre de certains facteurs de la ville dans laquelle vous vivez. Combien y a-t-il de crime, combien de stress y a-t-il, combien de pollution y a-t-il ? Et même au-delà ? Cela pourrait dépendre de facteurs dans le monde entier que nous vivons peut être juste l'état de technologie médicale dans le monde est un facteur, non ? Un autre exemple de votre richesse. Combien d'argent gagnez-vous ? Eh bien, c'est un facteur de votre dur labeur individuel, mais c'est aussi un facteur de la valeur de vos parents. Saviez-vous combien d'argent ont-ils pu investir dans votre éducation et dans l' environnement dans lequel vous avez grandi ? Et à son tour, que diriez-vous de celle de vos grands-parents ? Quel type d'environnement ont-ils pu créer ? Et quel genre d'éducation étaient-ils en mesure d'offrir à vos parents, ce qui à son tour a influencé les ressources qu'ils ont disponibles pour votre propre éducation et mise à niveau apporté apporter. Ce sont donc tous des exemples de modèles à plusieurs niveaux où il existe une hiérarchie d'effets qui influencent les uns les autres à des échelles plus grandes et plus grandes. Ok, maintenant le défi des modèles à plusieurs niveaux est d'essayer de comprendre pendant que je modélise ces interdépendances ? Comment modéliser tous ces effets différents et comment ils s'affectent les uns les autres ? Vous voyez la ligne de soins de santé, d'ailleurs, donc le défi ici est d'identifier les facteurs à chaque niveau qui affectent réellement la chose que vous essayez de prédire. Donc j'essaie de prédire globalement que vous connaissez un score T, par exemple. Je sais que cela dépend en partie de l'enfant qui passe le test. Mais qu'est-ce que l'enfant compte ? Eh bien, c'est peut-être la génétique que ça pourrait être. Um, vous savez, leur santé individuelle. Vous savez, l'individu, vous savez, priant la taille qu'ils ont. Vous pouvez penser à n'importe quel nombre de facteurs qui affectent l'individu et qui peuvent affecter son score S a T. Et puis, si vous montez à un autre niveau, regardez leur environnement familial pour regarder leur famille. Non. Qu' est-ce que leur famille peut avoir une incidence sur leurs scores S A T ? Combien d'éducation ont-ils pu offrir ? Les parents sont-ils capables de donner des cours aux enfants dans les sujets qui sont sur le S A. T ? Ce sont tous des facteurs à ce deuxième niveau. Ça pourrait être important. Et leur quartier ? Le taux de criminalité dans ce quartier pourrait être important. Vous savez, les installations qu'ils ont pour les adolescents et les garder hors de la rue, des choses comme ça. Maintenant, l'idée est que vous voulez continuer à regarder ces niveaux supérieurs, mais chaque niveau identifie les facteurs qui influent sur les choses que vous essayez de prédire, et je peux continuer à atteindre la qualité des enseignants de leur école, le financement du district scolaire, les politiques éducatives au niveau de l'État. Vous pouvez voir qu'il y a différents facteurs à différents niveaux à tous nourrir dans cette chose que vous essayez de prédire. Et certains de ces facteurs peuvent exister à plus d'un niveau. Ainsi, le taux de criminalité , par exemple, aux niveaux local et étatique. Vous devez comprendre comment ils interagissent tous les uns avec les autres. Lorsque vous faites de la modélisation à plusieurs niveaux. D' accord. Et comme vous pouvez l'imaginer, cela devient très difficile et très compliqué très rapidement. Il est vraiment bien au-delà de la portée de ce cours, pas seulement le point que vous êtes maintenant dans ce cours, mais tout cours d'introduction en science des données, Ceci est dur, leurs livres entiers épais à ce sujet. Tu fais tout un cours à ce sujet. Ce serait un sujet très avancé. La seule raison pour laquelle je parle même de ce cours est parce que je l'ai vu mentionné sur descriptions de travail comme quelque chose qu'ils veulent que vous sachiez. Dans quelques cas, je n'ai jamais eu à l'utiliser en pratique. Mais je pense que l'important du point de vue d'obtenir une journée de carrière dans la science est que vous connaissez au moins le concept, et vous savez ce que cela signifie et certains des défis que pose la création d'un modèle à plusieurs niveaux . J' espère que je vous ai donné ces concepts avec lesquels nous pourrons passer à la section suivante. Donc, là, vous avez les concepts de modèles à plusieurs niveaux. C' est un sujet très avancé, mais vous devez comprendre ce qu'est le concept, au moins, et le concept lui-même est assez simple. Vous regardez simplement les effets que les différents niveaux, différentes hiérarchies lorsque vous essayez de faire une prédiction. Donc peut-être qu'il y a différentes couches d'effets qui ont des impacts les uns sur les autres, et ces différentes couches peuvent avoir des facteurs qui interdépendent aussi. La modélisation à plusieurs niveaux tente de tenir compte de toutes ces hiérarchies et facteurs différents et façon dont ils interagissent les uns avec les autres. C' est tout ce que vous devez savoir. Pour l'instant, 27. Apprentissage, train et test supérieur et non supervisé/test: Parlons d'autres techniques d'apprentissage automatique. Et l'un des concepts fondamentaux derrière l'apprentissage automatique est quelque chose appelé test formé qui nous permet d'évaluer très habilement la qualité d'un modèle que nous fabriquons dans l'apprentissage automatique . Alors apprenons plus à ce sujet. Parlons de l'apprentissage automatique et plus particulièrement de la différence entre l'apprentissage automatique supervisé et non supervisé. On s'intéresse aux choses intéressantes ici, alors allons-y. Alors, qu'est-ce que l'apprentissage automatique ? Eh bien, si vous le cherchez sur Wikipédia ou autre, il dira que ses algorithmes qui peuvent apprendre de l'observation toutes les données et peuvent faire des prédictions basées sur elle semble vraiment fantaisie. Ok, comme des trucs d'intelligence artificielle que vous connaissez, aimeriez que vous ayez un cerveau lancinant dans votre ordinateur. Mais en réalité, ces techniques sont généralement très simples, et nous l'aurions déjà fait correctement. Si vous regardez les régressions, nous avons pris un ensemble de données d'observation. On joue la ligne vers elle, et on pourrait utiliser cette ligne pour faire des prédictions. Donc, par cette définition, c'est l'apprentissage automatique, et c'est assez simple. Et oui, je veux dire, ton cerveau fonctionne comme ça aussi, aussi, donc, tu sais, c'est un peu amusant de penser. Y a-t-il des idées dans ces algorithmes sur la façon dont votre cerveau fonctionne réellement ? Peut-être qu'il y a peut-être en dessous, il y a vraiment une chose très simple qui se passe là-dedans, mais c'est un sujet pour un cours différent. Parlons donc des deux différents types d'apprentissage automatique dont nous parlons, supervisé et non supervisé. Parfois, il peut y avoir une sorte de ligne floue entre les deux, pour être honnête. Mais la définition de base de l'apprentissage non supervisé est que vous ne donnez pas à votre modèle de réponses pour apprendre de votre simple présentation avec un groupe de données, et il essaie d'en tirer un sens, sans informations supplémentaires. Donc, par exemple, disons que je lui donne un tas d'objets différents, vous savez, balles et des cubes et des jeux de dés et autres. Et j'ai un album qui va regrouper ces objets dans les choses qui sont similaires les uns aux autres, fonction d'une mesure de similitude. Ok, maintenant je ne l'ai pas dit à l'avance. Quelles catégories ? Certains objets appartiennent à Teoh. Je n'ai pas une sorte de feuille de triche qu'il peut apprendre de l'endroit où j'ai un ensemble d' objets existants dans ma catégorisation de catégorie correcte de celui-ci. Il doit faire partie de ces catégories tout seul. C' est donc un exemple d'apprentissage non supervisé où je n'ai pas un ensemble de réponses dont je lui laisse apprendre. J' essaie juste de le laisser se rassembler. Sa propre réponse est basée sur les seules données qui lui sont présentées. Ok, donc le problème avec ça, c'est que tu ne sais pas forcément ce que va trouver l'album . Donc si je lui ai donné un tas de ces objets sur cette diapositive, est-ce que ça va regrouper les choses en choses qui sont autour de choses qui sont grandes contre petites choses qui sont rouges contre bleues ? Je ne sais pas. Cela va dépendre de la métrique que je lui donne pour la similitude entre les éléments, principalement. Mais parfois, vous trouverez des clusters qui sont surprenants et émergent que vous ne vous attendiez pas à voir. C' est donc vraiment le but de l'apprentissage supervisé par l'ONU. Si vous ne savez pas ce que vous cherchez, cela pourrait être un outil puissant pour découvrir des classifications dont vous ne saviez même pas qu'elles étaient là. Nous appelons cela une variable latente. Donc, une propriété de vos données que vous ne saviez même pas était là à l'origine, mais l'apprentissage non supervisé peut vous attirer. Donc, un exemple. Disons que je regroupais les gens au lieu de, tu sais, les balles et Dyson. Je dirige un site de rencontres, et je veux voir quels types de gens ont tendance à se rassembler ici. Il y a certains attributs que les gens ont tendance à se regrouper, qu'ils ont tendance à s'aimer et à se dater les uns les autres ou quoi que ce soit. Et vous pourriez constater que les clusters qui émergent ne sont pas conformes à vos stéréotypes prédisposant . Peut-être que ce n'est pas à propos des étudiants de l'université contre, vous savez, personnes d'âge moyen ou des personnes qui sont divorcées et ce qui n'est pas ou de leur police religieuse. Peut-être que si vous regardez le cluster qui émergent réellement de cette analyse, vous apprenez quelque chose de nouveau sur vos utilisateurs et vous comprenez en fait qu'il y a quelque chose de plus important que les fonctionnalités existantes de votre personnel qui comptent vraiment pour s' ils aiment l'un l'autre. C' est donc un exemple d'apprentissage non supervisé qui donne des résultats utiles. Ok, un autre exemple. Clustering des films en fonction de leurs propriétés. Tu sais, si tu faisais du clustering sur une série de films de, genre, genre, IMDB ou autre chose, peut-être que les résultats t'ont surpris. Peut-être qu'il ne s'agit pas seulement du genre du film. Peut-être qu'il y a d'autres propriétés comme l'âge du film ou la durée de course, ou quel pays a été libéré dans qui sont plus importants, vous ne savez tout simplement jamais. Ou nous pourrions analyser le texte des descriptions de produits et essayer de trouver les termes qui ont le plus de sens pour une certaine catégorie. Encore une fois, nous ne savons peut-être pas nécessairement à l'avance quels termes sont les termes les plus révélateurs d'un produit dans une certaine catégorie. Mais grâce à des apprentissages non supervisés, nous pouvons dépister cette information latente maintenant. En revanche, l'apprentissage supervisé est un cas où nous avons un ensemble de réponses dont le modèle peut tirer profit . Donc, nous lui donnons un ensemble de données de formation dans ce cas que le modèle apprend de Hennequin et pour les relations entre les caractéristiques et les catégories que nous voulons, puis appliquer cela à de nouvelles valeurs invisibles et prédire des informations à leur sujet. Donc, pour revenir à notre exemple précédent, où nous essayons de prédire les prix des voitures en fonction des attributs de ces voitures, c'est un exemple où nous formons notre modèle en utilisant des réponses réelles. J' ai donc un ensemble de voitures connues dans leurs prix réels pour lesquelles ils ont vendu. J' ai formé le modèle sur cet ensemble de réponses complètes, puis je peux créer un modèle que je peux utiliser pour prédire les prix des voitures neuves que je n'ai pas vues auparavant. C' est donc un exemple d'apprentissage supervisé. que vous lui donniez un ensemble de réponses pour apprendre de, vous savez, catégories assignées à votre groupe ou quoi que ce soit à un ensemble de données, puis l'utilisiez pour construire un modèle qu'il peut utiliser pour prédire de nouvelles valeurs à partir de ? Alors, comment évaluez-vous l'apprentissage supervisé ? Donc, la belle chose à propos de l'apprentissage supervisé est que je peux utiliser un truc appelé test de train , et l'idée ici est, Et si je devais diviser mon observation toutes les données que je veux mon orteil modèle apprendre en deux regroupe un ensemble d'entraînement et un ensemble de tests. Donc, quand j'ai réellement formé mon modèle lorsque je construis mon modèle en fonction des données que j'ai, je le fais uniquement avec une partie de mes données que j'appelle mon ensemble d'entraînement correctement, et je réserve une autre partie de mes données, et je vais l'utiliser pour afin que je puisse construire mon modèle en utilisant un sous-ensemble de mes données pour les données d'entraînement. Et puis je peux évaluer le modèle qui en sort et voir s'il peut prédire avec succès les bonnes réponses pour mes données de test. Tu vois ce que j'ai fait là-bas ? J' ai un ensemble de données. Où ont déjà la réponse est que je peux former mon modèle, mais je vais retenir une partie de ces données et l'utiliser pour tester mon modèle qui a été généré en utilisant l'ensemble d'entraînement. Ok, donc ça me donne un moyen très concret de tester à quel point mon modèle est bon sur des données invisibles. Parce qu'en fait avoir un peu de journée que j'ai mis de côté que je conteste avec. Et vous pouvez ensuite mesurer quantitativement à quel point il a fait en utilisant R carré ou une autre métrique comme, erreur au carré de routine, des choses comme ça. Et, vous savez, vous pouvez l'utiliser pour tester un modèle par rapport à un autre et voir quel est le meilleur modèle pour un problème donné. Vous pouvez régler les paramètres de ce modèle et utiliser des tests formés pour maximiser la précision de ce modèle sur vos données de test. Très bon moyen d'éviter le surmontage. Il y a quelques mises en garde. Vous devez vous assurer que vos ensembles de données d'entraînement et de test sont suffisamment volumineux pour être réellement représentatifs de vos données. Vous devez vous assurer que vous attrapez toutes les différentes catégories et menteurs qui vous intéressent à la fois dans l'entraînement et les tests. Pour obtenir une bonne mesure de son succès et pour construire un bon modèle, vous devez vous assurer que vous avez sélectionné parmi ces ensembles de données aléatoirement. Donc, vous n'êtes pas seulement sculpter votre ensemble de données et deux et dire que tout ce qui reste d'ici est entraînement et juste d'ici est un test. Vous voulez échantillonner cela de façon aléatoire car il pourrait y avoir dans vos données des motifs séquentiels que vous ne connaissez pas. Mais fondamentalement, c'est comme je l'ai dit, un excellent moyen de se prémunir contre le surajustement. Donc, si vous êtes un modèle est trop ajusté et que vous allez juste en dehors de son chemin pour accepter des valeurs aberrantes dans vos données d'entraînement, eh bien, ça va être révélé quand vous le mettrez contre un inconnu vu des données de test, est-ce pas ? Parce que toutes ces gyrations pour les valeurs aberrantes n'aideront pas avec les alliés qu'il n'a pas vus auparavant . Maintenant, test de train n'est pas parfait, vous pouvez obtenir des résultats trompeurs à partir de ce peut être votre taille d'échantillon air à petit comme nous avons déjà parlé. Ou peut-être la chance pseudo-aléatoire que vos données d'entraînement dans vos données de test semblent remarquablement similaires. Ils ont en fait un ensemble similaire de valeurs aberrantes, et vous pouvez toujours être trop ajusté, qui sait ? Et vous pouvez voir dans cet exemple Oui, ça peut arriver. Donc, il y a un moyen de contourner ce deux appelé K fold validation croisée et fera un exemple de cela plus tard dans le cours. Mais le concept de base est que vous faites des tests de train plusieurs fois. Ainsi, vous divisez réellement vos données et non pas en un seul ensemble d'entraînement dans un seul ensemble de tests, pour placer vos données dans plusieurs segments assignés de manière aléatoire. Segments K. C' est de là que vient le K et que vous réservez l'un de ces segments est vos données de test. Ensuite, vous commencez à former votre modèle sur les segments restants et mesurez leurs performances par rapport à vos tests à définir. Ensuite, vous prenez la performance moyenne de chacun de ces ensembles d'entraînement, les résultats des modèles et prenez leur score moyen au carré R. Ainsi, vous vous entraînez sur différentes tranches de vos données en les mesurant rapport au même ensemble de tests. Et de cette façon, si vous avez un modèle, c'est plus approprié à un segment particulier de vos données d'entraînement qui sera calculé en moyenne par les autres qui contribuent à une validation croisée prudente aura plus de sens plus tard. Au cours de, je veux juste que vous sachiez que cet outil existe pour rendre le test de train encore plus robuste qu'il ne l'est déjà. Donc, allons jouer avec certaines données et réellement évalué en utilisant un test formé. 28. Utiliser le train/test pour éviter le surmontage: mettons le test de train en action afin que vous vous souveniez peut-être qu'une régression peut être pensée comme une forme d'apprentissage automatique supervisé. Prenons donc une régression polynôme, nous avons déjà abordée plus tôt dans ce cours et utilisons des tests formés pour essayer de trouver le polynôme de degré approprié pour s'adapter à un ensemble donné de données. Donc, comme dans notre exemple précédent, nous allons mettre en place un petit ensemble de données de vitesses payantes générées aléatoirement et de montants d'achat , et je vais créer une petite relation bizarre entre eux. C' est une sorte de nature exponentielle. Allons donc de l'avant et générons ces données. Il va utiliser une distribution normale de données aléatoires pour les vitesses payantes et le montant d'achat en utilisant cette relation ici. Ensuite, je vais diviser ces données. Je vais prendre 80% de mes données, et on doit le réserver pour mes données d'entraînement. Ainsi, 80 % seulement de ces points seront utilisés pour la formation du modèle. Et puis je vais réserver les 20% restants pour tester ce modèle par rapport à des données invisibles. OK, donc je vais juste utiliser la syntaxe des pythons ici pour diviser une liste en les 80 premiers points vont aller à l'ensemble d'entraînement et les 20 derniers. Tout après 80 va aller à l'essai. Rappelez-vous donc qu'à partir de notre cours Python Basics, nous couvrons cette syntaxe avant, et je ferai la même chose pour les montants d'achat maintenant sur les diapositives. J' ai dit que vous ne devriez pas simplement découper votre ensemble de données comme ça. Vous devriez l'échantillonner au hasard pour la formation et les tests. Dans ce cas, cela fonctionne parce que mes données originales ont été générées au hasard de toute façon, donc il n'y a vraiment pas de rime ou de raison pour où les choses sont tombées. Mais dans les données du monde réel, vous voudrez mélanger ces données avant de les diviser. Et il y a une méthode aléatoire de points que vous pouvez utiliser à cette fin. En outre, si vous utilisez le package Pandas, il y a quelques fonctions pratiques pour créer automatiquement des ensembles de données d'entraînement et de test pour vous. Mais nous allons juste le faire en utilisant une liste python ici juste pour garder ça simple. Visualisons donc notre ensemble de données d'entraînement que nous avons fini avec. Donc, nous allons faire un nuage de points de notre formation, vitesses payées et des montants d'achat, et il semble que fondamentalement 80 points sélectionnés au hasard à partir de l'original de l'ensemble de données complet a fondamentalement les mêmes formes. C' est une bonne chose. C' est représentatif de nos données. C' est important. Et nos 20 autres pour tester aussi, vous savez, a la même forme générale est nos données d'origine. Donc je pense que c'est ah, test représentatif mis à un peu plus petit que vous voudriez voir dans le monde réel pour sûr, vous obtenez probablement un peu de meilleur résultat si vous aviez, vous savez, 1000 points au lieu de 100 par exemple à choisir et réservé 200 au lieu de 20. Maintenant, je vais essayer d'adapter un polynôme du huitième degré à cette date. Et je ne vais pas juste choisir le numéro huit au hasard parce que je sais que c'est un ordre très élevé est probablement trop approprié. Alors allons de l'avant et adaptons notre polynôme au huitième degré en utilisant un paedo, Polly, Wendy et des gens si elle utilise X y et huit, où X est un tableau des données d'entraînement seulement et sage un tableau des données d'entraînement seulement. Nous ajustons donc notre modèle en utilisant seulement les 80 points que nous réservons pour l'entraînement et maintenant nous avons cette fonction P 4 qui donne des résultats que nous pouvons utiliser pour prédire de nouvelles valeurs. Alors allons de l'avant et tracer le polynôme cela est venu avec les données d'entraînement sur Weaken. Diffusez nos données d'origine ici pour l'ensemble de données d'entraînement. Et puis nous pouvons tracer sont des valeurs prédites contre eux. Donc vous pouvez voir ici. Ça ressemble à un bon ajustement, mais il est clair que ça fait un peu plus d'ajustement ici. C' est quoi cette folie ici ? Je veux dire, je suis sûr que, vraiment Data, si nous l'avions ici, ne serait pas fou comme cette fonction impliquerait. C' est donc un excellent exemple de surajustement de vos données. Il correspond aux données. Vous l'avez très bien donné, mais cela ferait un travail terrible de prédire de nouvelles valeurs au-delà de ce point. Droit ? Alors essayons de taquiner ça. Donnons-lui notre ensemble de données de test. Et en effet, si nous traçons nos données de test par rapport à la même fonction, eh bien, cela n'a pas l'air si mauvais. On a eu de la chance, et aucun de nos testés n'est en fait là pour commencer. Mais vous pouvez voir que vous savez, c'est un ajustement raisonnable, mais c'est loin d'être parfait. Et en fait, si vous mesurez réellement le score R au carré, c'est pire que vous pourriez le penser. Donc on peut le faire ici. En utilisant la fonction sont de score de psych, il apprend des métriques, et nous lui donnons juste nos données d'origine et sont des valeurs prédites. Et il passe juste à travers et mesure toutes les variations par rapport aux prédictions et aux carrés. Je suis tout pour toi et on finit avec un score R au carré de seulement 0,3. Donc pas si chaud. Et vous pouvez voir qu'il correspond beaucoup mieux aux données d'entraînement, ce qui, avec une ce qui, valeur r au carré de 0,6, ce qui n'est pas trop surprenant parce que nous l'avons formé sur les données d'entraînement. Le type d'état du test. C' est inconnu. ITT et il a échoué le test, très franchement, 30%. Ça suffit. C' est donc un exemple d'utilisation d'un test formé pour évaluer un algorithme d'apprentissage supervisé. Et, comme je l'ai déjà dit, pandas ont des moyens de rendre les choses encore plus faciles. Nous examinerons cela un peu plus tard, et nous examinerons également d'autres exemples de tests formés, y compris une validation prudente plus tard dans le cours, et vous pouvez probablement deviner ce que sont vos devoirs. Nous savons donc qu'un polynôme de huitième ordre n'est pas très utile. Tu peux faire mieux ? Donc, je veux revenir en arrière, Exécutez ceci je python pas de livre tout le long, mais utilisez des valeurs différentes pour le nombre pour le polynôme de degré que vous allez utiliser pour adapter. Donc, changez que 82 valeurs différentes et voyez si vous pouvez comprendre quel degré de défaut polynôme note réellement le mieux En utilisant un test formé est une métrique. Alors, où obtenez-vous votre meilleur score r carré pour vos données de test ? Quel degré correspond ici. Alors va jouer avec ça. Avoir des problèmes posés dans les discussions, mais devrait être un exercice assez facile dans un exercice très éclairant pour vous aussi. Alors amusez-vous un peu avec ça. C' est donc un test formé en action. Technique très importante. Les orteils ont. Et vous allez l'utiliser encore et encore et encore pour vous assurer que vos résultats correspondent bien au modèle que vous possédez et qu'ils sont un bon prédicteur de valeurs invisibles. Un excellent moyen d'éviter le surajustement lorsque vous faites votre modélisation. Passons à autre chose 29. Méthodes Bayesian : concepts: vous êtes-vous déjà demandé comment fonctionne le classificateur de spam dans votre email ? Comment sait-il que les courriels peuvent être du spam ou non ? Eh bien, une technique populaire est quelque chose appelé Bayes naïve, et c'est un exemple d'une méthode occupée et occupée. Voyons donc comment cela fonctionne. Discutons de Basie et des méthodes. Nous avons donc parlé du théorème de Bayes plus tôt dans le cours, dans le contexte de la discussion sur la façon dont des choses comme les tests de drogue pourraient être très trompeuses dans leurs résultats. Mais vous pouvez effectivement appliquer la même base ici, um, um, orteil des problèmes plus grands comme le classificateur de spam. Alors plongons dans la façon dont ça pourrait fonctionner. Et ça s'appelle une BZ et une méthode. Donc juste un rafraîchissement sur le théorème de Bayes. Rappelez-vous, la probabilité d'un B donné est égale à la probabilité globale d'une fois la probabilité d'être donné un sur la probabilité globale de B. Alors, comment pouvez-vous l'utiliser dans l'apprentissage automatique ? Je peux en fait construire un classificateur de spam pour cela. Un algorithme qui peut réellement analyser un ensemble de courriels de spam connus et un ensemble connu de courriels non spam et former un modèle pour réellement prédire où leurs nouveaux messages électroniques sont du spam ou non. Et il y en a. C' est une véritable technique utilisée pour le spam naturel. Classifier est dans le monde réel. Donc, titre d'exemple, nous allons simplement comprendre la probabilité qu'un e-mail soit un spam, étant donné qu'il contient le mot free. Vous savez, la plupart des gens vous promettent des trucs gratuits. C' est probablement la travée, alors travaillons-nous. La probabilité d'être spammé, étant donné que vous avez le mot libre dans un e-mail, à la probabilité globale qu'il s'agisse d'un intervalle où le message multiplie la probabilité de contenir le mot free, étant donné que c'est spam sur la probabilité globale d'être libre maintenant, le numérateur et juste la pensée de cela, la probabilité qu'un message soit spam et contenant le mot libre. Mais c'est un peu différent de ce que nous recherchons, parce que ce sont les chances de l'ensemble de données complet, et pas seulement les probabilités dans les choses qui contiennent le mot libre. Ok, et le dénominateur juste la probabilité globale de contenir le mot libre. Parfois, cela ne vous sera pas immédiatement accessible à partir des données que vous possédez. Si ce n'est pas le cas, vous pouvez réellement étendre cela à cette autre expression ici si vous avez besoin de la dériver. Donc, à la fin de la journée, cela vous donne le pourcentage de mails électroniques qui contiennent le mot libre cette plage, ce qui serait une chose utile à savoir quand vous essayez de comprendre si c'est de la famille. Qu' en est-il de tous les autres mots dans la langue anglaise, cependant, Donc, notre classificateur de spam devrait savoir plus que juste le mot libre devrait automatiquement ramasser tous les mots dans le message idéalement, et comprendre Dans quelle mesure cela contribue-t-il à la probabilité que ce courriel soit un spam ? Donc, ce que nous pouvons faire est de former un modèle sur chaque mot que nous rencontrons pendant l'entraînement. Tu sais, jeter des choses comme un et le et et et des mots insignifiants comme ça, bien sûr. Et puis, lorsque nous examinons tous les mots dans un nouvel e-mail, nous pouvons multiplier la probabilité d'être du spam pour chaque mot ensemble. Et puis nous obtenons la probabilité globale que cet e-mail soit du spam. Ça s' appelle Bayes naïve pour une raison. C' est ce qu'on appelle cette technique. Et une raison pour laquelle il est naïf est parce que nous supposons qu'il n'y a pas de relations entre les mots eux-mêmes étaient juste regarder chaque monde, mot isolé, individuellement dans un message et fondamentalement combinant tous les probabilités de chaque contribution de mots à elle. En tant que spam ou non, nous ne regardons pas les relations entre les mots. Ok, donc un meilleur classificateur de spam ferait ça. Mais évidemment, c'est beaucoup plus difficile. Donc, ça ressemble à beaucoup de travail. L' idée globale, et pas que ce n'est pas si dur mais psychique apprentissage Python, c'est en fait assez facile à faire. Il offre une fonctionnalité appelée Count Factor Riser qui rend très simple de diviser un e-mail à tous ses mots composants et de traiter ces mots individuellement. Et puis il a une fonction multi no meal NB où N B signifie Bayes naïves qui fera tout le levage lourd pour base naïve pour nous afin que nous puissions réellement construire un classificateur de spam avec pas beaucoup de manteau. Et inclus dans votre matériel de cours quelques exemples de données qui incluent un ensemble de courriels de spam connus et au lieu de courriels connus. Ham est ce qu'on appelle l'e-mail. Ce n'est pas du spam, et faisons-le. Construisons un classificateur de spam 30. Mettre en place un classificateur de spam avec Naive Bayes: Très bien, écrivons un classificateur de spam. En utilisant Bayes naïve, vous serez surpris à quel point c'est facile. En fait, la plupart du travail finit par lire toutes les données d'entrée que nous allons former et analyser ces données dans la classification réelle du spam. Mais le bit d'apprentissage automatique est en fait juste quelques lignes de code, donc c'est généralement comme ça que cela fonctionne. Vous savez, en fait, lire, masser et nettoyer vos données est généralement la plus grande partie du travail quand vous faites de la science des données, alors habituez-vous à l'idée. Allez-y et ouvrez le cahier Bayes I Python naïf si vous aimez suivre avec moi . Et comme je l'ai dit, la plupart du travail est juste dans la lecture des données. Donc, ce que j'ai ici dans votre matériel de cours, c'est quelques répertoires différents remplis d'e-mails. Et l'un est un tas d'e-mails que je sais déjà où span qui ont été classés à l'avance et un autre répertoire plein de courriels qui sont jambon qui ne sont pas span. Et je vais utiliser cette information pour former mon modèle et le tester. Donc, la première chose à faire est de lire tous ces emails en quelque sorte, et nous allons à nouveau. Utilisez des pandas pour rendre cela un peu plus facile. Encore une fois, les pandas sont un outil utile pour gérer les données tabulaires. Et nous allons, euh, euh, après avoir importé tous les différents paquets que nous allons utiliser dans notre exemple ici, qui inclut la bibliothèque OS, la bibliothèque Iot, numb pie, pandas et count facteur riser et multi pas de repas et être de psych. Il apprend, et nous allons passer par tout ça en les rencontrant. Passons ces définitions de fonction à partir de maintenant et passons à la première chose que notre code fait réellement. Et c'est pour créer un objet de bloc de données Pandas. Et nous allons construire cela à partir d'un dictionnaire qui contient initialement une liste vide pour les messages dans une liste vide de classes. Donc, cette syntaxe dit que je veux dater un cadre qui a deux colonnes, une qui contient le message, le texte réel de chaque e-mail et quand cela contient la classe de chaque e-mail, c'est si c'est du spam ou du ham. Ok, donc fondamentalement, cette ligne dit que je veux créer une petite base de données de mails E, et cette base de données a deux colonnes. Il a le texte théâtral de l'e-mail, et il a si c'est du spam ou non. Ok, maintenant j'ai besoin de mettre quelque chose dans cette base de données dans ce bloc de données dans la syntaxe python. Donc je vais appeler ces deux méthodes pour lancer tous mes mails de spam de mon dossier de spam et tous mes e-mails de main pour mon dossier de ham. Et si vous jouez ici, assurez-vous de modifier ce chemin pour qu'il corresponde à l'endroit où vous avez installé le matériel du cours pour ce cours, accord ? Et vous savez, encore une fois, si vous êtes sur un Mac ou si vous limitez ces dos, faites attention aux barres obliques arrière et aux barres obliques et à tout ce genre de choses dans ce cas, ça n'a pas d'importance. Mais vous n'aurez pas de lettre de lecteur, par exemple, si vous n'êtes pas sous Windows, alors assurez-vous simplement que ces passés pointent vers l'endroit où se trouvent vos dossiers de spam et de ham pour cet exemple. Alors, quelle est cette date d'échéance ? Un cadre des répertoires de fonction que j'ai écrit ici. Fondamentalement, il dit que j'ai un chemin vers un répertoire, et je sais que c'est comme donner des classifications spammer, ham et ce que je vais faire est d'appeler cette fonction de fichiers de lecture que j'ai également écrit qui va littéraliser à travers chaque dans un répertoire, et je ne veux pas entrer dans trop de détails sur la façon dont cela fonctionne. Mais fondamentalement, il utilise la fonction de marche point OS pour trouver tous les fichiers dans un répertoire, construit le nom du chemin complet pour chaque fichier individuel dans ce répertoire, puis il le lit dans. Et pendant qu'il le lit, il saute l'en-tête de chaque e-mail et va directement au texte. Et il le fait en cherchant la première ligne vide ici. Il sait que tout après la première ligne vide est en fait le corps du message, et tout ce qui se trouve devant cette première ligne vide est juste un tas d'informations d'en-tête sur lesquelles je ne veux pas réellement former mon classificateur de spam. Donc, cela me donne à la fois le chemin complet de chaque fichier et le corps du message. Ok, donc c'est comme ça que je lis dans toutes mes données, et c'est la majorité du code. Donc, ce que j'ai à la fin de la journée ici est un objet de bloc de données, essentiellement une base de données de deux colonnes qui contient des corps de message et si c'est du spam ou non. Et nous pourrions aller de l'avant et exécuter cela et nous pouvons utiliser la commande head du bloc de données pour réellement prévisualiser à quoi cela ressemble. Donc, les premières entrées dans notre bloc de données ressemblent à ceci pour chaque chemin d'accès à un fichier donné plein d'e-mails, nous avons une classification et nous avons le corps du message. Ok, accord, maintenant pour la partie amusante. Donc, nous allons utiliser la fonction multi no meal nb de Psychic Learned, réellement effectuer naïve basée sur l'état de ce que nous avons et ce qu'il attend d'obtenir est deux choses. Donc, une fois que nous avons construit un multi multi multi no meal classificateur Bayes naïf dans ces deux entrées et il est les données réelles qui s'entraînaient sur et les cibles pour chaque chose. Donc, ce que c'est essentiellement une liste de tous les mots dans chaque e-mail, ok, et le nombre de fois que ce mot se produit. C' est ce que fait cette chose de comptage de vecteurs. Il le fera. Cette syntaxe signifie prendre la colonne de message pour mon bloc de données et en prendre toutes les valeurs . Je vais appeler Vector riser dot Fit, transformer ce que ça fait. Est-il fondamentalement jeton ise ou convertit tous les mots individuels vus dans mes données en nombres en valeurs, Et il comptera ensuite combien de fois chaque mot se produit. C' est donc une façon plus compacte de représenter combien de fois chaque mot se produit dans un e-mail au lieu de préserver réellement les mots eux-mêmes. Je représente ces mots comme des valeurs différentes dans une matrice clairsemée. Ok, ce qui veut dire fondamentalement que je traite chaque mot est un nombre comme un index numérique dans un tableau. Donc, ce que cela fait est juste en anglais clair. Il se divise. Il Smith chaque message jusqu'à une liste de mots qui sont dedans et combien de fois chaque mot se produit. Donc on appelle ça compte. C' est essentiellement que l'information sur le nombre de fois que chaque mot se produit dans chaque message individuel puis cible est les données de classification réelles pour chaque e-mail que j'ai rencontré. Et je peux appeler classificateur dot fit en utilisant mon multi nobile et être fonction pour réellement créer un modèle en utilisant des Bayes naïves qui prédisent où leurs nouveaux e-mails sont du spam ou non, fonction des informations que je lui ai données. C' est aller de l'avant et courir. Ça fonctionne assez vite, alors essayons-le. Je vais utiliser quelques exemples ici. Essayons un corps de message qui dit juste Viagra libre maintenant probablement assez clairement étendue. Et, ah, un message plus innocent qui dit juste, salut , Bob, et une partie de golf demain ? Donc, nous avons passé que la première chose que nous devons faire est de convertir ces messages dans le même format que j'ai formé mon modèle. Donc, je vais utiliser la même colonne montante vectorielle que j'ai créée lors de la création du modèle pour convertir chaque message en une liste de mots et de leurs fréquences, où les mots sont représentés par des positions dans un tableau. Et puis une fois que j'ai fait cette transformation, je peux utiliser la fonction de prédiction sur mon classificateur sur cette zone, exemples qui se sont transformés en, vous savez, des listes de mots et voir que nous venons avec, et assez sûr que cela fonctionne. Donc, étant donné ce tableau de messages d'entrée, libre Viagra maintenant et haut. Bob me dit que les premiers résultats sont revenus un spam, et le second résultat est revenu sa main, qui est ce que je m'attendais donc c'est assez cool. Donc là, vous l'avez. Maintenant, nous avons un assez petit ensemble de données ici. Donc, vous savez, vous pouvez essayer d'exécuter des e-mails différents à travers elle si vous voulez, et voir si vous obtenez des résultats différents. Mais essayez d'appliquer trois. Ne fais pas attention à toi-même. J' ai essayé d'appliquer le test de train à cet exemple. Donc, la vraie mesure de savoir si mon classificateur de spam est bon ou non n'est pas seulement intuitivement s'il peut comprendre que le Viagra gratuit est maintenant un spam. Vous voulez mesurer cela quantitativement. Donc, si vous voulez un peu d'un défi, allez-y et essayez Teoh diviser l'état en un ensemble d'entraînement dans un ensemble de données de test et vous pouvez réellement rechercher en ligne comment pandas peuvent diviser les données en train de tests et ensembles de tests assez facilement pour vous. Ou vous pouvez le faire à la main, tout ce qui fonctionne pour vous, et voir si vous pouvez réellement appliquer votre multi no meal classification nb à un ensemble de données de test et mesurer ses performances. Donc un peu d'exercice, un peu de défi. Vas-y, essaye ça. Comment cool est que nous venons d'écrire son propre classificateur de spam en utilisant juste quelques lignes de code en Python c'est assez facile en utilisant psychic learn et python. C' est naïf. Bayes en action, et vous pouvez vraiment y aller. Classez certains messages de spam ou de jambon maintenant que vous l'avez sous votre ceinture. Des trucs plutôt cool. Parlons ensuite du clustering. 31. Clustering K-Means: Ensuite, nous allons parler de K signifie clustering, et c'est une technique d'apprentissage non supervisé où vous avez ah, collection de choses que vous voulez regrouper en divers groupes. Peut-être que ce sont des genres de films ou des démographies de gens qui savent, mais c'est en fait une idée assez simple. Alors allons voir comment ça marche. Parlons de K signifie « clustering ». Technique très courante dans l'apprentissage automatique, où vous essayez juste de prendre un tas de données et de trouver des clusters intéressants de choses juste fonction des attributs des données elles-mêmes. Ça a l'air de fantaisie, mais c'est plutôt simple. Tout ce que nous faisons en K signifie que le clustering est d'essayer de diviser nos données en groupes K. C' est de là que vient le K. le nombre de groupes différents que vous essayez de diviser vos données. Et il le fait en trouvant l'affaire Central Lloyds. Donc, fondamentalement, quel groupe de point de données donné appartient est défini par lequel de ces points d'OID centraux il est le plus proche dans votre nuage de points de dispersion, sorte que vous pouvez visualiser qu'ici, cela montre un exemple de K signifie clustering avec K de trois, et les carrés représentent les points de données dans un nuage de points que les cercles représentent le central est que le K signifie algorithme de clustering est venu avec, et chaque point reçoit un cluster basé sur le centre auquel il est le plus proche. Ok, donc c'est tout ce qu'il y a à faire. C' est vraiment un exemple d'apprentissage supervisé par l'ONU. Donc, ce n'est pas un cas où nous avons un tas de données, et nous connaissons déjà le cluster correct pour un ensemble donné de données d'entraînement. Au contraire, on vous donne simplement les données elles-mêmes, et il essaie de converger sur ces clusters naturellement, juste en fonction des attributs des données seules. Donc, c'est un bon cas où vous essayez de trouver des clusters sont des catégorisations que vous ne saviez même pas qu'elles étaient là. C' est Ah, comme avec la plupart des techniques non supervisées ou n'importe quelle technique, le but est de trouver des valeurs latentes. Vous savez, des choses que vous n'avez pas vraiment réalisé où là-bas jusqu'à ce que l'algorithme vous les montre. Ainsi, par exemple, où vivent les millionnaires ? Peut-être, je ne sais pas. Peut-être qu'il y a une grappe géographique intéressante où vous savez que les riches ont tendance à vivre et K signifie que le regroupement pourrait vous aider à comprendre cela. Peut-être que je ne sais pas vraiment si les genres de musique d'aujourd'hui ou de sens Qu'est-ce que cela signifie d'être alternatif ces jours-ci ? Pas beaucoup, c' est ça. Mais en utilisant K signifie clustering sur les attributs des chansons, peut-être que je pourrais trouver des groupes intéressants de chansons qui sont liés les uns aux autres et trouver nouveaux noms pour ce que ces clusters représentent. Ou peut-être que je peux regarder les données démographiques, et peut-être que les stéréotypes existants ne sont plus utiles. Peut-être, tu sais, Hispanique a perdu son sens. Et cela en fait d'autres attributs qui ont défini des groupes de personnes, par exemple, que je pourrais découvrir avec clustering sons fantaisie. Ça ne complique pas vraiment les choses. apprentissage automatique non supervisé avec des clusters K. Cela semble fantaisiste, mais comme avec la plupart des techniques et de la science des données, c'est en fait une idée très simple. Donc, voici l'algorithme que nous commençons par un choix aléatoire au lieu de Central. C' est donc si nous avons un K de trois, nous allons chercher trois grappes dans notre groupe, et nous allons attribuer trois aides centrales au hasard dans notre nuage de points. Nous assignons ensuite le point indiqué au vous assigné de façon aléatoire de manière centralisée qui est le plus proche de, puis nous calculons le cluster de portée centrale que nous venons avec. Donc pour un cluster donné que nous finissons avec. Nous allons déplacer cela de façon centralisée pour être le centre réel de tous ces points. Et puis nous allons tout faire à nouveau jusqu'à ce que l'arrêt central se déplace. Vous savez, nous avons atteint une valeur seuil qui dit, OK, nous avons convergé sur quelque chose ici et ensuite pour prédire les clusters pour de nouveaux points que je n'ai pas vus auparavant. Nous pouvons simplement passer par nos emplacements centraux et déterminer quel centre il est le plus proche de vous pour prédire son cluster. Ok, regardons un exemple graphique ici pour avoir un peu plus de sens. Alors disons que j'ai encore un nuage de points. Ces carrés gris représentent des points de données dans notre nuage de points. Donc, ces rapports ces axes représentent quelques caractéristiques différentes de quelque chose. Peut-être que son âge et son revenu sont un exemple que je continue d'utiliser, mais ça pourrait être n'importe quoi. Et ces carrés représentent des personnes individuelles ou des chansons individuelles ou des individus, quelque chose que je veux trouver des relations entre. Ok, donc je commence par choisir trois points au hasard dans mon nuage de points. Ça pourrait être n'importe où. Il faut commencer quelque part, non ? Donc la prochaine chose que je vais faire c'est pour chaque point. Je vais calculer quel de ces points il est le plus proche afin que vous puissiez voir où cela finit par être en faisant cela, ces points ombrés en bleu sont associés à cet oID sentinelle bleu. Les points verts sont les plus proches du centre vert. Il dans ce seul Redpoint est le plus proche de ce point aléatoire rouge que j'ai choisi. Mais vous pouvez voir que vous savez, ce n'est pas vraiment un reflet de l'endroit où les grappes réelles semblent être. Donc, si je recommence, ce que je vais faire est de prendre les points qui ont fini dans chaque cluster et de calculer le centre réel de ces points. Ainsi, par exemple, et ce cluster vert ici, le centre réel de toutes ces données s'avère être un peu plus bas. Donc nous allons déplacer ça un peu dans cette île de grappe rouge avait un point, donc son centre descend là où ce seul point est correct, et le point bleu était en fait assez proche. Donc ça bouge juste un peu. Et sur cette prochaine génération, nous finissons avec quelque chose qui ressemble à ceci. Donc maintenant, vous pouvez voir que notre groupe pour les choses rouges a un peu augmenté, et les choses ont un peu bougé avec celles qui ont été prises de la grappe verte, fondamentalement. Et si on recommence, tu verras sans doute ce qui va se passer. Filets que Green Central. Ça va bouger ici un peu aussi bleu. sénateur Troy est toujours là où il devrait être, mais à la fin de la journée, vous allez finir avec les grappes que vous attendez probablement à voir. Le groupe rouge finira par être ce groupe, et Blue finira par être ce groupe et Greenwell sur ce groupe, c' est ainsi que k signifie fonctionne. Donc, il continue juste à itérer en essayant de trouver les droits centraux appropriés jusqu'à ce que les choses cessent de bouger et que nous convergeons vers une solution. Donc, il y a évidemment quelques limitations à K signifie clustering. Tout d'abord, nous devons choisir la bonne valeur de K, et ce n'est pas une chose simple de tout faire. Vous savez que la façon dont la méthode fondée sur des principes de choisir K est de commencer à bas et de continuer augmenter la valeur de K. Combien de groupes vous voulez jusqu'à ce que vous arrêtiez d'obtenir de grandes réductions d'erreur au carré. Donc, vous savez, si vous regardez les distances entre chaque point et leurs centrales. Vous pouvez penser qu'il s'agit d'une mesure d'erreur, et au point où vous arrêtez de réduire cette mesure d'erreur, vous savez que vous avez probablement trop de clusters. OK, donc vous ne gagnez pas vraiment plus d'informations en ajoutant des clusters supplémentaires à ce stade. En outre, il y a un problème de minima locaux, sorte que vous pourriez simplement avoir très malchanceux avec ces choix initiaux de droits centraux. Et ils pourraient finir par converger simplement sur le phénomène local au lieu de clusters plus globaux. Donc, généralement, vous voulez exécuter cela quelques fois et peut-être moyenne les résultats ensemble. Tu sais, on appelle ça l'apprentissage de l'ensemble. On en parlera un peu plus tard. Mais vous savez, c'est toujours une bonne idée d'exécuter K signifie plus d'une fois en utilisant un ensemble différent de valeurs initiales aléatoires et juste voir si vous finissez en fait avec les mêmes résultats globaux ou non. Enfin, le principal problème avec K signifie que le clustering est qu'il n'y a pas d'étiquettes pour les clusters que vous obtenez. Il vous dira simplement que ce groupe de points de données est en quelque sorte lié, mais vous ne pouvez pas mettre de nom dessus. Tu sais que tu ne peux pas te dire la signification réelle de cette grappe. Disons, avoir un tas de films que je regarde et K signifie Clustering me dit que ce tas de films de science-fiction est ici, mais ça ne va pas appeler ça des films de science-fiction. Pour moi, c'est à moi de creuser réellement dans les données et de bien comprendre, ce que ces choses ont vraiment en commun et comment je pourrais le décrire en anglais. C' est la partie difficile, et K signifie ne pas t'aider avec ça. Donc, encore une fois, apprentissage psychique rend très facile de le faire. Allons faire un exemple et mettre k signifie clustering en action. 32. Clustering People par revenu et âge: Bon, voyons à quel point il est facile de faire K signifie clustering en utilisant psychic learn et python. Donc, la première chose que je vais faire est de créer des données aléatoires que je veux essayer de mettre en cluster. Et juste pour le rendre plus facile, je vais réellement construire des clusters dans mes fausses données de test. Faisons semblant qu'il y ait une relation fondamentale entre ces données, et qu'il y a de véritables grappes naturelles qui y existent. Donc, pour ce faire, je viens d'écrire cette petite fonction de données en cluster et python, et cela commence par une graine aléatoire cohérente, donc vous obtiendrez le même résultat à chaque fois et cela prend en compte. Je veux créer des clusters de personnes finales dans des clusters K. Donc, il indique combien de points par cluster qui fonctionne en premier, puis construit cette liste X qui commence vide. Donc, pour chaque grappe pour I dans la fourchette K, je vais créer un taux central aléatoire de revenu entre 220 000$ et un siècle aléatoire entre l'âge de 20 et 70 ans. Donc ce que je fais ici est de créer un faux comme un simulateur de dispersion qui montrera le revenu par rapport à l'âge pour N personnes et K. Donc, pour chaque aléatoire centralement que j'ai créé, je vais alors créer un ensemble normalement distribué de données aléatoires avec un écart-type de 10 000 et un revenu et un écart-type de deux et un juge et cela me rendra un tas de des données sur le revenu d'âge qui sont regroupées en quelques grappes pré existantes que j'ai choisies au hasard. Ok, allons-y et lançons ça. Et maintenant faire K signifie que vous verrez à quel point c'est facile. Tout ce que vous faites est d'importer k signifie de psych. Il apprend le paquet de cluster, et nous important également que les lèvres de tracé afin que nous puissions visualiser les choses et aussi les choses d'échelle afin que nous puissions jeter un oeil à la façon dont cela fonctionne en une minute. Donc, je vais utiliser ma fonction de création de données en cluster pour dire que je veux 100 personnes aléatoires autour cinq clusters. Il y a donc cinq grappes naturelles à partir de la date de leur création. J' ai été pour créer un modèle k signifie modèle avec K de cinq. Donc, moi et choisir cinq clusters parce que je sais que c'est la bonne réponse. Mais encore une fois et l'apprentissage sans supervision, vous ne savez pas nécessairement quelle est la valeur réelle de K. Vous devez itérer et converger dessus vous-même. Et puis je pourrais juste appeler la tenue modélisée en utilisant, comme, un modèle moyen, en utilisant les données que j'avais maintenant l'échelle à laquelle j'ai fait allusion plus tôt. C' est normaliser les données. Et une chose importante avec K signifie est que cela fonctionne mieux. Si vos données sont toutes normalisées, cela signifie que tout est à la même échelle. Donc, un problème que j'ai ici, c'est que mes âges vont de 20 à 70 ans, mais que les revenus vont jusqu'à 200,000. Ces valeurs ne sont donc pas vraiment comparables. Les revenus sont beaucoup plus élevés que l'échelle des valeurs d'âge, ils vont prendre toutes ces données et les redimensionner à une échelle uniforme. Donc, je peux réellement comparer ces choses comme des pommes aux pommes, et cela aidera beaucoup avec vos K signifie résultats. Donc, une fois que j'ai appelé ajustement sur mon modèle, j'ai un modèle, et je peux réellement regarder les étiquettes résultantes que j'ai obtenu et ensuite nous pouvons réellement le visualiser en utilisant ce petit peu de Matt Plot Live magie. Vous pouvez voir ici que j'ai un petit truc ici où j'ai signé la couleur, aussi. Les étiquettes que j'ai fini avec converties en un nombre à virgule flottante, et c'est un peu délicat peuvent utiliser pour attribuer des couleurs arbitraires à une valeur donnée. Alors voyons, nous finissons avec n'a pas pris si longtemps. Vous voyez les résultats ici, essentiellement dans quels clusters j'ai tout signé. Et vous pouvez voir que nous savons que nos fausses données sont déjà pré-cluster, il semble donc qu'il et identifier les premier et deuxième clusters assez facilement obtenu un peu confus au-delà de ce point, cependant, parce que notre les grappes ici au milieu sont en fait un peu écrasées ensemble. Ils ne sont pas vraiment si distincts. C' était donc un défi pour les moyens K. Mais quoi qu'il en soit, il a trouvé des suppositions raisonnables à la grappe. Mais nous avons fini avec ici était cluster ici, près d'ici. Cluster là dans un cluster là-bas, cluster ici et ce n'est pas un mauvais choix. Vous savez, c'est probablement un exemple de l'endroit où vous étiez plus naturellement en forme de groupe. Les données. Donc ce que je veux que vous fassiez des activités étrangères pour essayer ça. Essayez une valeur différente de K et CTO finissent par, vous savez, juste regarder ceci. On dirait que quatre fonctionneraient bien, n'est-ce pas vraiment ? Que se passe-t-il si j'augmente K deux grande ? Qu' arrive-t-il à mes résultats là-bas ? En quoi essaie-t-il de diviser les choses et n'a même pas de sens ? Alors jouez avec elle, essayez de trouver des valeurs. OK, donc les clusters de fin fonctionnent ici, changez les cinq à autre chose, exécutez tout à travers et voyez s'ils finissent avec donc jouer autour, amusez-vous avec elle. C' est tout ce qu'il y a à K signifie clustering. C' est aussi simple que ça. Vous pouvez simplement utiliser comme il apprend k signifie chose de cluster et encore une fois le seul vrai gotcha . Assurez-vous de mettre à l'échelle les données, les normaliser ou de les blanchir car le cas peut être un autre nom pour la même chose. Vous voulez vous assurer que les choses sur lesquelles vous utilisez k signifie sont comparables les unes aux autres , et la fonction d'échelle le fera pour vous. Donc, ce sont les principales choses pour K signifie clustering. Concept assez simple, encore plus simple à le faire en utilisant psychique appris. Là, vous l'avez. C' est tout ce qu'il y a. C' est K signifie clustering. Donc, si vous avez un tas de données qui ne sont pas classifiées et que vous n'avez pas vraiment la bonne réponse est à l'avance. C' est un bon moyen d'essayer de trouver naturellement des groupements intéressants de vos données. Et peut-être que cela pourrait vous donner un aperçu de ce que sont ces données. Si bon outil à avoir. Je l'ai déjà utilisé dans le monde réel, et ce n'est vraiment pas si difficile à utiliser, alors gardez ça dans votre coffre à outils. 33. Mesurer l'entropie: d' accord. Bientôt, on va arriver à une des parties les plus froides de l'apprentissage automatique, mais au moins je pense qu'on appelle des arbres de décision. Mais avant de pouvoir en parler, vous devez comprendre le concept d'entropie et de science des données, et c'est un exercice assez simple. Très courte conférence ici. Mais mettons ce concept sous ta ceinture. Parlons de l'entropie, un autre exemple d'un mot fantaisie pour un concept simple. Mais nous devons comprendre cela avant de parler d'arbres de décision. Alors mettons ça sous notre ceinture d'abord. Donc l'entropie, comme en physique. Thermodynamique. C' est une mesure d'un trouble des ensembles de données. Alors comment même ou différent son ensemble de jour. Imaginez donc que nous ayons un ensemble de données de différentes classifications. Par exemple, les animaux. Disons que j'ai un tas d'animaux qui sont classés par espèce. Maintenant, si tous les animaux de mon ensemble de données ne sont pas de l'iguane, j'ai une entropie très faible parce qu'ils sont tous pareils. Mais si chaque animal de mon ensemble de données est un animal différent, avoir des iguanes et des porcs et des fentes, et qui sait quoi d'autre que j'aurais une entropie plus élevée parce qu'il y a plus de désordre. Dans mon ensemble de données, les choses sont plus différentes qu'elles ne le sont. La même entropie est un moyen de quantifier cette même ou cette différence dans mes données. Encore une fois, un zéro d'interview implique toutes les classes et les données sont les mêmes. Alors que si tout est différent, j'aurais une entropie élevée et quelque chose entre les deux serait un nombre entre les deux. C' est donc juste un autre exemple de mot fantaisie pour un concept simple. Entropy décrit simplement à quel point les choses d'un ensemble de données sont identiques ou différentes. C' est tout ce qu'il y a. C' est une conférence très courte parce que c'est un concept très simple. Maintenant, mathématiquement, c'est un peu plus impliqué dans ça. Donc, quand effectivement calculer un nombre pour l'entropie est calculé en utilisant cette expression ici. Donc, pour chaque classe différente que j'ai dans mes données, je vais avoir un de ces termes. Donc morceau d'un morceau de deux et ainsi de suite et ainsi de suite à la fin pour les classes différentes que je pourrais avoir, et chaque terme le DIS P représente la proportion des données qui est cette classe, et si vous tracez réellement avec cela ressemble à pour chaque terme, ce morceau négatif de temps un algorithme de droit naturel de morceau de I. Il va ressembler un peu quelque chose comme ça, et vous additionnez ces pour chaque classe individuelle. Donc, si vous regardez ça, ça a du sens. Vous savez, par exemple, si la proportion des données qui est une classe donnée zéro par rapport à la contribution à l' entropie globale est nulle. Et si tout est cette classe et encore une fois, la contribution à l'entropie globale est nulle. Parce que dans les deux cas, si rien n'est cette classe ou tout est cette classe qui ne contribue pas vraiment à l'entropie globale ? Vous savez, ce sont ces choses au milieu qui contribuent à rendre hommage à la classe, où il y a un mélange de ça, cette classification et d'autres choses, et quand vous ajoutez tous ces termes ensemble, vous vous retrouvez avec une entropie globale pour l'ensemble de données si mathématiquement que c'est comme ça que cela fonctionne. Mais encore une fois, le concept est très simple. Il s'agit simplement d'une mesure de la désordre de votre ensemble de données, même ou de la différence des choses dans vos données. C' est tout ce qu'il y a à l'entropie. Donc, avec ça sous notre ceinture, nous pouvons passer à autre chose et parler d'arbres de décision. Donc c'est l'entropie, juste une mesure du désordre d'un ensemble de données. Quel est le même ou le différent ? Et vous avez juste besoin de le comprendre alors que nous parlons des arbres de décision. 34. Fenêtres : Installation de Graphviz: Donc ça va être la conférence la plus courte au monde sur Windows. Vous n'avez pas à faire quelque chose de spécial pour utiliser réellement les arbres de décision dans Anaconda. Il a déjà installé tout ce dont vous avez besoin pour vous automatiquement. Vous remarquerez peut-être qu'il y a des vidéos configurées ici pour les utilisateurs Mac et Lennox où ils doivent suivre une étape supplémentaire. Mais tu es bon. Continuez donc à la leçon suivante, et nous pouvons réellement commencer à jouer avec nos arbres de décision. 35. Mac : Installation de Graphviz: maintenant, avant que nous puissions réellement afficher les arbres de décision, nous avons besoin d'un paquet appelé graph Viz installé sur votre système et sur Mac. La façon la plus simple de le faire est par Homebrew. Donc, si vous n'avez pas déjà homebrew installé, passez à brasser point s h ici et pour installer Homebrew. On va copier toutes ces informations ici, Commandement. Tu vois ? Accédez à un terminal, invitez à le coller dans la commande V et exécutez cela. Va-t-il revenir ? Il devra s'authentifier. Et ça va bien. Après quelques minutes, ça a fini. Et maintenant, nous pouvons simplement taper le breuvage. Install graph est juste comme ça. D' accord. On dirait qu'on est dans les affaires. Allons de l'avant et fermons cette fenêtre de terminal afin que nous puissions être sûrs que nous prendrons le nouvel environnement la prochaine fois. Et ça devrait être ça. Nous devrions être prêts à partir maintenant. 36. Linux : Installation de Graphviz: ainsi sur Lenox. Avant de pouvoir réellement jouer avec les arbres de décision, nous devons installer un paquet appelé Graph Viz qui nous permettra de dessiner sur Visualize dans notre ordinateur portable. Pour ce faire, c'est vraiment facile, et Lennox, je vais devoir faire est d'ouvrir un terminal et de taper dans sudo Apt Dash obtenir installer graphique viz.Au moins c'est comment cela fonctionne sur une aubaine sur différentes saveurs de winnicks. Vous pouvez avoir des gestionnaires de paquets différents, mais le graphique est probablement là. Alors faites tout ce que vous devez faire pour installer. Graph est sur votre système Lennox. Mais pourquoi continuer et graphique est maintenant installé. C' est aussi facile que ça. Maintenant, nous pouvons continuer et commencer à jouer avec les arbres de décision. 37. Arbres de décisions : concepts: croyez-le ou non. Compte tenu d'un ensemble de données de formation, vous pouvez réellement obtenir python pour générer un organigramme pour que vous puissiez réellement prendre une décision. Donc, si vous avez quelque chose que vous essayez de prédire sur une classification, vous pouvez utiliser un arbre de décision pour réellement regarder plusieurs attributs que vous pouvez décider sur chaque niveau d'un organigramme. Et vous pouvez réellement imprimer un organigramme réel à utiliser pour prendre une décision basée sur l'apprentissage automatique réel. C' est cool ? Voyons comment ça marche. Bon, on va parler d'arbres de décision. C' est l'une des applications les plus intéressantes dans l'apprentissage automatique que je peux penser. Je pense que c'est plutôt cool, mais parlons de comment ça marche. Donc, un arbre de décision vous donne fondamentalement un organigramme de la façon de prendre certaines décisions afin que vous ayez une variable dépendante, comme si oui ou non je devrais aller jouer dehors aujourd'hui ou non en fonction de la météo. Et quand vous avez une telle décision, cela dépend de plusieurs attributs, plusieurs variables. Un arbre de décision pourrait être un bon choix, donc il y a beaucoup d'aspects différents de la météo qui pourraient influencer ma décision de sortir et de jouer. Je pourrais avoir à voir avec l'humidité, la température, qu'il soit ensoleillé ou non. Par exemple, un arbre de décision peut examiner tous ces attributs différents de la météo ou quoi que ce soit d'autre et décider où les seuils, où les décisions que je dois prendre sur chacun de ces attributs avant d'arriver à un décision de savoir si oui ou non je devrais aller jouer à l'extérieur. C' est tout ce qu'est l'arbre de décision. C' est donc une forme d'apprentissage supervisé. La façon dont cela fonctionnerait dans cet exemple serait que j'aurais une sorte d'ensemble de données de temps historique et si oui ou non les gens sortaient pour jouer ce jour-là et je nourrissais le modèle ces données de quoi, qu' il soit ensoleillé ou non sur chaque jour et quelle était l'humidité, par exemple, et s'il y avait du vent ou non, et si c'était une bonne journée pour aller jouer à l'extérieur. Et étant donné que les données d'entraînement, un algorithme d'arbre de décision peut réellement arriver à un arbre qui vous donne ce diagramme de flux que vous pouvez imprimer ressemble exactement à ceci que vous pouvez simplement parcourir et déterminer si c'est un bon jour orteil jouer à l'extérieur en fonction des attributs actuels. Vous pouvez donc l'utiliser pour prédire la décision pour un nouvel ensemble de valeurs. C' est plutôt génial. Je veux dire, quel point c'est cool ? Vous savez, nous avons un algorithme qui fera un organigramme pour vous automatiquement, juste basé sur des données d'observation. Et ce qui est encore plus cool, c'est à quel point tout fonctionne une fois que vous apprenez comment cela fonctionne. Donc, par exemple, on va vraiment faire ça. Disons que je veux construire un système qui filtrera automatiquement les CV et basé sur les informations contenues dans le CV. Donc, un gros problème pour les entreprises technologiques est que nous obtenons des tonnes et des tonnes de curriculum vitae pour nos postes. Ensuite, nous devons décider qui nous amenons pour une entrevue parce qu'il peut être coûteux de faire sortir quelqu'un et de prendre le temps de passer une entrevue . Et s'il y avait un moyen de prendre des données historiques sur qui a réellement été embauché et cartographier les choses qui se trouvent sur leur CV, nous pourrions construire un arbre de décision qui nous laisserait passer par le CV individuel et dire, OK, cette personne a en fait la forte probabilité d'être embauchée ou non. Donc, nous pouvons former un arbre de décision sur ces données historiques et parcourir cela pour les futurs candidats. Serait-ce une chose merveilleuse à avoir ? Alors faisons des données d'embauche totalement fabriquées que je vais utiliser dans cet exemple. Nous avons des candidats qui viennent d'être identifiés par des identificateurs numériques, et je vais choisir des attributs qui pourraient être intéressants pour prédire s' ils sont une bonne embauche ou non. Combien d'années d'expérience ont-ils ? Sont-ils actuellement employés ? Combien d'employeurs ont-ils eu avant celui-ci ? Quel est leur niveau d'éducation ? Quel degré ont-ils ? Ont-ils fréquenté ce que nous qualifions d'école de haut niveau ? Ont-ils fait un stage pendant qu'ils étaient à la fac ? Et nous pouvons jeter un oeil à ces données historiques et la variable dépendante ici est embauchée. Cette personne a-t-elle réellement obtenu une offre d'emploi ou non basée sur cette information Maintenant, évidemment, il y a beaucoup d'informations qui ne figurent pas dans ce modèle. Ça pourrait être très important. Mais l'arbre de décision que nous formons à partir de ces données pourrait en fait être utile pour faire une passe initiale, que la lecture de certains candidats et bien, nous finissons avec pourrait être un arbre qui ressemble à ceci. Donc, il s'avère juste que dans mes données entièrement fabriquées, quiconque a fait un stage à l'université a fini par recevoir une offre d'emploi. Donc mon premier point de décision est, cette personne a-t-elle fait un stage ou pas ? Si oui, allez-y et amenez-le. Et vous savez, après mon expérience, les stages sont en fait un bon indicateur de la qualité d'une personne, vous savez, si elle a l'initiative de sortir et de faire un stage et d'apprendre réellement quelque chose à ce stage, c'est un bon signe. Ont-ils actuellement un emploi ? Eh bien, s'ils sont actuellement employés dans mes très petites données de pensée dit, il s'est avéré qu'ils valent la peine d'embaucher, vous savez, vous savez, juste parce que quelqu'un d'autre pensait qu'ils valaient la peine d'embaucher. Évidemment, ce serait un peu plus une décision nuancée dans le monde réel. S' ils ne sont pas actuellement employés, ont-ils plus d'un employeur de moins d'un employeur antérieur ? Si oui, cette personne n'a jamais occupé d'emploi, et elle n'a jamais fait de stage non plus. Probablement pas une bonne décision d'embaucher. N' engage pas cette personne. Mais, vous savez, s'ils avaient un ancien employeur, est-ce qu'ils vont au moins au sommet de votre école ? Si ce n'est pas le cas, c'est un peu dégoûtant. Si c'est le , alors oui, nous devrions embaucher cette personne en fonction des données sur lesquelles nous avons formé. C' est ainsi que vous marchez à travers les résultats d'un arbre de décision. C' est juste comme passer par un organigramme, et c'est un peu génial qu'un algorithme puisse produire ceci pour vous. L' algorithme lui-même est en fait très simple. Voici comment ça marche. Donc, à chaque étape de l'organigramme de l'arbre de décision, nous trouvons l'attribut sur lequel nous pouvons partitionner nos données. Cela minimise l'entropie des données à l'étape suivante. Ok, donc vous savez que nous avons un ensemble de classifications résultant dans ce cas, plus élevé, je n'embauche pas et nous voulons choisir la décision d'attribut à chaque étape qui réduira l'entrevue à l'étape suivante. Donc, fondamentalement, à chaque étape, nous voulons faire en sorte que tous les choix restants aboutissent soit au plus grand nombre d'embauches connues, soit au plus grand nombre de décisions plus élevées que possible. Nous voulons rendre ce datum ou plus uniforme. Alors que nous faisons notre chemin vers le bas de l'organigramme, nous finissons par obtenir un ensemble de candidats qui sont soit tous embauchés sont tous embauches connues que nous pouvons classer dans, vous savez, oui, aucune décision sur un arbre de décision. Alors c'est tout. Vous savez, nous venons de descendre l'arbre, minimiser l'entropie à chaque étape en choisissant le bon attribut sur lequel décider, et nous continuons jusqu'à ce que nous soyons épuisés. Et il y a un nom de fantaisie pour cet algorithme s'appelle idee trois. Je ne sais même pas ce que cela signifie, mais c'est tout ce que cela signifie c'est ce qu'on appelle un algorithme gourmand. Ainsi, lorsqu'il descend dans l'arbre, il sélectionne simplement l'attribut qui minimisera l'entropie à ce point. Maintenant, cela pourrait ne pas réellement aboutir à un arbre optimal qui minimise le nombre de choix que vous avez à faire, mais cela entraînera un arbre qui fonctionne, compte tenu du jour où vous l'avez donné. Donc c'est tout ce qu'il y a. C' est une idée assez simple. Maintenant, un problème avec les arbres de décision est qu'ils sont très enclins à surajustement. Vous pouvez donc vous retrouver avec un arbre de décision. Un peu comme nous l'avons vu qui fonctionne magnifiquement pour les données sur lesquelles vous l'avez formé. Mais ce n'est peut-être pas si génial pour prédire la classification correcte pour les nouvelles personnes qui n'ont pas vu auparavant. arbres de décision montrent tout pour arriver à la bonne décision pour les données de formation que vous lui avez données. D' accord. Et peut-être que vous n'avez pas vraiment pris en compte les bons attributs. Peut-être n'a pas donné assez d'un échantillon représentatif de personnes pour apprendre de ceux-ci peut entraîner de vrais problèmes. Donc, pour combattre que nous utilisons une technique appelée forêts aléatoires. Et l'idée ici est que nous échantillonnons nos données que nous formons de différentes manières pour plusieurs arbres de décision différents. Ainsi, chaque arbre de décision prend un échantillon aléatoire différent de notre ensemble de données de formation et conduit la vérité, construit un arbre à partir de celui-ci, puis chaque traité résultant peut voter sur le bon résultat. Maintenant, cette technique de re échantillonnage aléatoire de nos données avec le même modèle est un terme appelé bootstrap agrégation ou ensachage à nouveau, un terme fantaisie pour une idée très simple. Et c'est une forme de ce que nous appelons l'apprentissage d'ensemble, qui couvrira prochainement plus en détail. Mais l'idée de base. Nous avons plusieurs arbres, une forêt d'arbres, si vous voulez. Chacun qui utilise un sous-échantillon aléatoire des données sur lesquelles nous devons nous entraîner, puis chacun de ces arbres peut voter sur le résultat final, ce qui nous aidera à nous battre sur l'ajustement pour un ensemble donné de données d'entraînement. L' autre chose que les forêts aléatoires peuvent faire est en fait de restreindre le nombre d'attributs qu'il peut choisir entre à chaque étape est qu'il essaie de minimiser l'entropie est il y a va et nous pouvons choisir aléatoirement quels attributs qui peuvent choisir à chaque niveau. Donc, cela nous donne aussi plus de variation d'arbre à arbre. Et donc nous obtenons plus d'une variété d'algorithmes que nous pouvons rivaliser les uns avec les autres, et ils peuvent tous voter sur les résultats finaux en utilisant des approches légèrement différentes pour arriver à la même réponse. C' est ainsi que fonctionnent les forêts aléatoires. Fondamentalement, c'est une forêt d'arbres de décision où ils dessinent à partir de différents échantillons et aussi différents ensembles d'attributs à chaque étape qu'il peut choisir entre. Ok, donc avec tout ça, allons prendre quelques arbres de décision et nous allons réellement utiliser des forces aléatoires Eh bien, quand nous avons fini parce que comme Hitler et rend vraiment, vraiment facile à faire aussi bien voir en une minute. 38. Arbres de décisions : Predicting des décisions de recrutement: Très bien, prenons quelques arbres de décision. C' est assez facile. En fait, c'est fou à quel point c'est facile. C' est un truc assez excitant. Si nous pouvions simplement créer un organigramme réel à partir de données d'entraînement qui fonctionne vraiment avec quelques lignes de code en Python. Essayons donc. J' ai donc inclus un fichier C S V sur pneus passé avec votre matériel de cours, et cela inclut juste quelques données fabriquées que j'ai inventées sur des personnes qui ont obtenu une offre d'emploi ou qui ne sont pas basées sur les attributs de ces candidats. Alors allez-y et changez ce chemin à quoi que ce soit. Partout où vous avez installé les matériaux pour ce cours, je ne sais pas où vous l'avez mis, mais ce n'est presque certainement pas là. Alors allez de l'avant et la fin de ce fichier étaient dans le fichier de bloc-notes Python de l'arbre de décision ici en ce moment . Et nous allons juste utiliser des pandas pour lire ce qui est ESPN et créer un objet de bloc de données à partir de celui-ci. Ok, alors allons de l'avant et lisons ça, et nous pouvons utiliser la fonction tête sur l'orteil de la trame de données, imprimer les premières lignes et nous assurer que ça a l'air logique, et bien sûr, nous ont certains validés ici. Donc, pour chaque candidat, je d. Nous avons leurs années d'expérience, qu'il y ait eu ou non un emploi, nombre d'employeurs précédents, leur niveau de scolarité le plus élevé, s'ils sont allés à un sommet école de niveau et s'ils ont fait un stage. Et enfin, voici les réponses où nous savions que nous avons étendu une offre d'emploi à cette personne ou non . Ok , comme d'habitude, la plupart du travail consiste à masser vos données, préparer vos données avant d'exécuter les algorithmes dessus. Et c'est ce qu'il faut faire ici. L' apprentissage psychique exige que tout soit nouveau. Miracle. Donc nous ne pouvons pas avoir de sages et de fins et B s et m s est. Et PhDs Nous devons convertir toutes ces choses en chiffres pour le travail des orteils du modèle de l'arbre de décision . Donc, la façon de le faire est d'utiliser un panda en raccourci Ce qui rend ces choses faciles . Fondamentalement, je fais le dictionnaire et python qui mappe la lettre y au numéro un et la fin de la lettre à la valeur zéro. Donc, je veux convertir toutes mes femmes orteils et se termine 20 Alors pourquoi cela signifiera qu'un sera méchant ? Oui, et zéro signifiera non. Et ce que je peux faire est juste de prendre l'appel embauché et à partir du bloc de données, en utilisant cette syntaxe ici et d'appeler la carte sur elle en utilisant un dictionnaire. Et ce que cela fera est de parcourir toute la colonne embauchée dans le bloc de données entier et d'utiliser ce dictionnaire. Recherchez pour transformer toutes les entrées de cette colonne, et il renvoie une nouvelle colonne de bloc de données que je remets dans l'appel supérieur. Donc, cela remplace fondamentalement la colonne supérieure par une qui a été mappé orteils ceux et zéros . Ok, et je fais la même chose pour les employés. Parlez à votre école et aux stagiaires afin que tous ceux qui sont cartographiés à l'aide du dictionnaire oui non afin que les sages et les extrémités deviennent des zéros à la place. Pour le niveau d'éducation, j'ai fait la même astuce que j'ai créé dictionnaire qui a des signes Bs 20 m esto un et un doctorat à et utilise cela pour remapper ces noms de diplômes aux valeurs numériques réelles. Donc, si je fais cela et recommence, vous pouvez voir que tout mon oui est un, mon nez ou des zéros, et mon niveau d'éducation est maintenant représenté par une valeur numérique qui a un sens réel. Donc maintenant, nous avons juste besoin de tout préparer pour entrer dans notre classificateur d'arbre de décision , ce qui n'est pas si difficile à faire ça. Nous devons séparer nos informations de fonctionnalité, qui sont les attributs qui essayaient de prédire à partir de et notre colonne cible. Qu' est-ce qui contient ce que nous essayons de prédire ? Donc, pour extraire la liste des colonnes de nom d'entité allaient juste dire, Créer une liste de colonnes jusqu'au numéro six. Donc, les 6 premières colonnes et nous allons de l'avant et imprimer cela. Et ce sont les noms de colonnes qui contiennent nos informations de fonctionnalité années d'expérience employé, l'éducation de niveau des employés précédents a dominé votre école et à leur tour, ces air les attributs des candidats que nous voulons prédire embaucher sur et nous construisons ensuite R y vecteur ici est affecté à ce que nous essayons de prédire. C' est donc notre rubrique embauchée. Donc, cela extrait la colonne embauchée entière et l'appelle pourquoi, puis il prend toutes nos colonnes pour les données d'entité et les place dans quelque chose appelé X. Donc, il s'agit d'une collection de toutes les données et de toutes les colonnes d'entités. Et ce sont les deux choses qui sont les besoins du classificateur de l'arbre de décision. Donc, il crée réellement le classificateur lui-même. Deux lignes de code que nous appelons traiter classeur d'arbre de décision pour créer notre classificateur. Ensuite, nous l'adaptons à nos données de fonctionnalités, et la réponse est de savoir si des gens ont été embauchés ou non. Alors allons de l'avant et exécutons ça assez vite maintenant pour l'afficher. Je ne veux pas avoir trop de détails. Que se passe-t-il ici ? Fondamentalement, afficher des données graphiques est un peu difficile. Considérez simplement ce code standard sur la façon de le faire. Vous devez comprendre comment le graphe fonctionne dans les fichiers de points sur tout ce genre de choses, mais ce n'est pas important. Fondamentalement, c'est le besoin de Cody pour réellement afficher le résultat final d'un arbre de décision. Alors allons de l'avant et exécutons ça. Et nous l'avons là. C' est cool ? Nous avons un organigramme réel ici. Maintenant, laissez-moi vous montrer comment le lire pour qu'il mange scène. Nous avons une décision. Alors rappelez-vous, la plupart de nos données sont oui. Non, ça va être zéro ou un. Donc, le point de décision ici est employé moins de 10.0.5, ce qui signifie que si nous avons une valeur d'emploi de zéro Non, nous allons aller à gauche. L' emploi est un. Oui, on va y aller. droite. Alors, où ils ont déjà travaillé, sinon, aller à gauche ? Si oui, allez-y. droite. Et il s'avère que dans mes données d'échantillon, tous ceux qui sont actuellement employés ont effectivement reçu une offre d'emploi. Donc, je peux très rapidement dire, si vous êtes actuellement employé, oui, vous en valez la peine. On va le suivre jusqu'à ce niveau ici. Comment interprétez-vous cela ? Le score de Gini est essentiellement une mesure de l'entropie qu'il utilise chaque étape. Rappelez-vous, alors que nous descendons, l'algorithme essaie de minimiser la quantité d'entropie et les échantillons air le nombre restant d'échantillons qui n'ont pas été fondamentalement sectionnés par un précédent décision. Façon de lire les notes finales de feuille ici. Cette colonne de valeur. Donc, cela vous dit à ce stade, nous avons zéro candidat qui n'était pas embauché et cinq qui étaient embauchés. Donc, la façon d'interpréter cela est si un employé en était un. Je vais aller à droite, ce qui signifie qu'ils sont actuellement employés. Et ça m'amène dans un monde où tout le monde a une offre d'emploi. Donc ça veut dire que je devrais engager cette personne. Disons que nous,cette personne, n'avons pas de travail. , La prochaine chose que nous examinerons, c'est qu'ils ont un stage ? Si oui, alors nous sommes à un point où les données de formation d'un artiste, tout le monde a une offre d'emploi. Donc, à ce moment-là, nous pouvons dire que notre entropie est maintenant nulle parce que tout le monde est fou et ils ont tous reçu une offre à ce moment-là. Cependant, si nous continuons à descendre, nous sommes à un point où l'entropie est de 0.0.32 devient de plus en plus faible. C' est une bonne chose. Ensuite, nous allons voir combien d'expérience ils ont moins d'un an d'expérience. Et si le cas est qu'ils ont une certaine expérience et qu'ils sont arrivés jusqu'ici assez bien, pas de décision plus élevée. Donc nous finissons à ce point où nous avons zéro entropie. Mais les trois échantillons restants de notre équipe de formation n'étaient pas des embauches. Ok, nous n'avons pas d'embauche et zéro embauche, mais s'ils ont moins d'expérience qu'ici, probablement sortis de la fac, ils pourraient quand même être examinés. La dernière chose que nous examinerons est de savoir s'ils sont allés ou non dans une école supérieure, et si oui, ils finissent par être une bonne prédiction pour être plus élevé. Et sinon, ils finissent par être un pas plus élevé parce que nous finissons avec un candidat qui est tombé dans cette catégorie qui était un pas plus élevé et zéro qui étaient plus élevés. Alors que dans ce cas, nous avons zéro embauche et un plus haut, donc vous pouvez voir que nous continuons jusqu'à ce que nous atteignions une entrée de zéro, si possible pour chaque cas. Disons maintenant que nous voulons utiliser une forêt aléatoire. Vous savez, nous sommes inquiets que nous puissions être trop ajustés nos données d'entraînement. Il est en fait très facile de créer un classificateur de forêt aléatoire de plusieurs arbres de décision. Pour ce faire, nous pouvons utiliser à nouveau les mêmes données que nous avons créées auparavant. Vous avez juste besoin de votre vecteur X et y, de l'ensemble des fonctionnalités et de l'appel sur lequel vous essayez de prédire, et nous allons juste rendre un classificateur de forêt aléatoire également disponible à partir de psychic learn et tout ce que vous devez passer est comment vous voulez beaucoup d'arbres dans votre forêt ? Alors faisons 10 arbres dans notre forêt aléatoire. Nous pouvons alors nous adapter à cela au modèle, et vous n'avez pas à marcher à travers les arbres à la main. Et quand vous avez affaire à une forêt aléatoire, vous ne pouvez pas vraiment faire ça de toute façon. Donc, au lieu de cela, nous allons utiliser la fonction de prédiction sur le modèle sur le classificateur que nous avons fait. Nous allons passer une liste de toutes les fonctionnalités d'un candidat donné pour lequel nous voulons prédire l'emploi. Donc, si vous vous en souvenez, mappe à ces colonnes. Années d'expérience employé employeurs précédents, niveau de scolarité, haut de votre école et stagiaire interprété comme des valeurs numériques. Nous voulons donc prédire l'emploi des chômeurs de 10 ans d'ancien combattant. Nous pouvons le faire ou nous voulons prédire l'emploi d'un ancien combattant de 10 ans sans emploi. Nous pourrions le faire, et assez sûr que nous obtenons un résultat. Donc, dans ce cas particulier, nous nous sommes retrouvés avec une décision plus élevée sur les deux. Mais ce qui est intéressant, c'est qu'il y a un composant aléatoire à cela, donc vous n'obtenez pas réellement le même résultat à chaque fois. plus souvent, le chômeur ne reçoit pas d'offre d'emploi, et si vous continuez à courir, vous verrez que c'est généralement le cas. Mais la nature aléatoire de l'ensachage de bootstrap agrégation il est un de ces arbres signifie que vous n'obtiendrez pas le même résultat à chaque fois. Donc peut-être que 10 n'est pas assez d'arbres. Donc, de toute façon, bonne leçon à apprendre là-bas pour une activité. Si vous voulez revenir en arrière et jouer avec ce Mesereau jouer données d'entrée. Allez-y et éditez ce fichier CSB à partir duquel nous avons commencé et créez un univers alternatif où c'est un monde de tourbillon. Tous ceux à qui j'ai offert une offre d'emploi n'en ont pas une et vice versa. Voyez ce que cela fait à votre décision Tree rejetée et voyez ce que vous pouvez faire et essayez d'interpréter les résultats. Alors amusez-vous un peu avec ça. C' est un truc intéressant. Je pense que c'est vraiment cool, donc ce sont des arbres de décision et des forêts aléatoires. Ce sont donc des arbres de décision, l' un des éléments les plus intéressants de l'apprentissage automatique. À mon avis, je pense toujours qu'il est assez cool de simplement générer un organigramme à partir d'air mince comme ça, alors j'espère que vous trouverez cela utile. Passons à autre chose 39. Apprentissage d'ensemble: Donc, quand nous avons parlé de forêts aléatoires, c'était un exemple d'apprentissage d'ensemble, où nous combinons et plusieurs modèles ensemble pour arriver à un meilleur résultat que n'importe quel modèle. Alors apprenons à ce sujet un peu plus de profondeur. Parlons un peu plus de l'apprentissage de l'ensemble. Nous avons déjà couvert cela un peu, mais il y a plus d'une façon de le faire, donc je veux juste le couvrir. Certaines des techniques de base qui existent pour l'apprentissage en ensemble sont un sujet important , mais ce sera une courte conférence parce que les idées sont assez basiques. Alors rappelez-vous au hasard pour nous. Nous avions, ah, tas d'arbres de décision qui utilisaient différents sous-échantillons des données d'entrée et différents ensembles d'attributs sur lesquels il se brancherait. Et ils ont tous voté sur le résultat final quand vous essayiez de classer quelque chose à la fin. C' est donc un exemple d'apprentissage d'ensemble. Un autre exemple, quand nous parlions de K signifie clustering, nous avons eu l'idée d'utiliser peut-être différents modèles K moyens avec différents Centrowitz aléatoires initiaux et de les laisser tous voter sur le résultat final aussi, aussi un exemple d'apprentissage d'ensemble. Fondamentalement, l'idée est que vous avez plus d'un modèle, et ce pourrait être le même type de modèle. Il peut s'agir de différents types de modèles, mais vous les exécutez tous de votre côté des données d'entraînement, et ils votent tous sur le résultat final pour ce que vous essayez de prédire. Et souvent, vous constaterez que cet ensemble de différents modèles produit de meilleurs résultats que n'importe quel modèle seul. Un bon exemple d'il y a quelques années a été le prix Netflix. Donc Netflix a organisé un concours où ils ont offert. Je pense que c'était un million de dollars pour n'importe quel chercheur qui pourrait surpasser son algorithme de recommandation de film existant et ceux que l'on était des approches d'ensemble, où ils couraient en fait plusieurs. Recommandez ses algorithmes à la fois et laissez-les tous voter sur le résultat final. Ainsi, l'apprentissage en ensemble peut être un outil très puissant mais simple pour améliorer la qualité de vos résultats finaux et de l'apprentissage automatique. Maintenant, les forêts aléatoires ont de nouveau utilisé une technique appelée ensachage, qui est abrégé pour l'agrégation bootstrap, qui est un autre terme fantaisie pour un concept simple. Tout cela signifie que nous avons pris des sous-échantillons aléatoires de nos données d'entraînement et les avons introduits dans différentes versions du même modèle et que nous les avons tous laissés voter sur le résultat final. Donc, si vous vous souvenez, Random Forest a pris beaucoup d'arbres de décision différents qui utilisent un échantillon aléatoire différent des données d' entraînement pour s'entraîner, et puis ils sont tous réunis à la fin du vote sur le résultat final. Ok, donc c'est ensacher. Boosting est un centre commercial alternatif, et l'idée est que vous commencez le modèle. Mais chaque modèle suivant augmente les attributs qui traitent des zones mal classées par le modèle précédent. Donc vous faites un test de train de course sur un modèle, il a compris, quels sont les attributs que ça se trompe fondamentalement ? Et puis vous booster ces attributs et les modèles suivants dans l'espoir que ces centres commerciaux ultérieurs accorderont plus d'attention à eux et les feront droit. C' est donc l'idée générale derrière le boostage. Vous savez, vous exécutez un modèle, découvrez ses points faibles, amplifiez l'accent sur ces points faibles au fur et à mesure que vous allez et continuez à construire de plus modèles qui affinent ce modèle en fonction des faiblesses de la précédente une autre technique. Et c'est une sorte de ce que le gagnant du prix Netflix a appelé un seau de modèles où vous pourriez avoir des modèles complètement différents qui essaient de prédire quelque chose. Peut-être que j'utilise des moyens K et un arbre de décision et une régression. Je peux exécuter ces trois modèles ensemble sur un ensemble de données d'entraînement et les laisser tous voter sur le résultat final de la classification lorsque j'essaie de prédire quelque chose. Et peut-être que ce serait mieux que d'assouplir l'un de ces modèles isolés. Ok, empiler, même idée. Donc, vous savez, vous exécutez plusieurs modèles sur les données combinées les résultats ensemble d'une manière ou d'une autre. Donc, vous connaissez la différence subtile là, entre le seau de modèles et l'empilement du seau de modèles, vous choisissez essentiellement le modèle qui gagne, sorte que vous exécutiez un test formé. Trouvez le modèle qui fonctionne le mieux pour vos données et utilisez ce modèle ? Où est l'empilage combinera les résultats de tous ces modèles ensemble pour arriver à un résultat final. Maintenant, il y a tout un domaine de recherche sur l'apprentissage d'ensemble qui tente de trouver les moyens optimaux de faire l'apprentissage d'ensemble. Et si vous voulez trouver le son intelligent. Habituellement, cela implique d'utiliser le mot baies beaucoup, que vous verrez sur la diapositive. Il y a donc des méthodes très avancées pour faire l'apprentissage d'ensemble. Mais tous ont des points faibles. Et je pense que c'est encore une autre leçon en ce sens que vous devriez toujours utiliser la technique la plus simple qui fonctionne bien pour vous. Donc ce sont toutes des techniques très compliquées, donc je ne peux pas vraiment entrer dans le cadre de ce cours. Mais à la fin de la journée, il est difficile de surpasser les techniques simples dont nous avons déjà parlé. Donc, en théorie, il y a quelque chose appelé le classificateur optimal de Bays qui sera toujours le meilleur. Mais ce n'est pas pratique. Tu sais que c'est prohibitif de le faire. Les gens ont essayé de faire des variations de l'automne de base un classificateur pour le rendre plus pratique, comme Beijing paramètre publicité moyenne. Mais c'est encore plusieurs surajustement, et il est souvent surpassé par le support, ce qui est la même idée derrière le hasard. Pour nous, vous venez juste de re-échantillonner les données plusieurs fois que nous sommes sur différents modèles et de les laisser tous voter sur le résultat final. Il s'avère que cela fonctionne tout aussi bien, et c'est beaucoup plus simple. Enfin, il y a quelque chose appelé combinaison marguerite et modèle qui tente de résoudre toutes les lacunes des abeilles, classificateur optimal et moyenne occupée et paramètre moyenne. Mais à la fin de la journée, il ne fait pas beaucoup mieux que de se contenter de valider contre une combinaison de modèles contre, vous savez, vous savez, empilement fondamentalement. Encore une fois, vous savez, ce sont des techniques très complexes qui sont très difficiles à utiliser dans la pratique. Vous êtes mieux avec les plus simples dont nous avons parlé plus en détail. Mais vous voulez un son intelligent et utiliser le mot jours beaucoup. Il est bon de se familiariser avec ces techniques, au moins de savoir ce qu'elles sont. Donc c'est l'apprentissage de l'ensemble à nouveau. L' emporter est que les techniques simples comme bootstrap, agrégation ou ensachage ou booosting ou empilage ou seau de modèles, ou généralement, les bons choix. Il y a des techniques beaucoup plus fantaisistes là-bas, mais elles sont largement théoriques, mais au moins vous les connaissez maintenant, toute façon. Apprendre ensemble toujours une bonne idée à essayer, vous savez, il a été prouvé maintes et maintes fois qu'il produira de meilleurs résultats que n'importe quel modèle, alors considérez-le certainement. Même si c'est plus de travail, vous obtiendrez de meilleurs résultats grâce à l'utilisation de l'apprentissage en ensemble 40. [Activité] XGBoost: Maintenant que nous avons parlé de booster et que nous avons parlé d'arbres de décision dans ce cours. Mettons ces concepts ensemble et parlons de XGBoost, qui est sans doute les algorithmes d'apprentissage automatique les plus puissants qui existent aujourd'hui. Chapitre donc très important ici, XGBoost est synonyme d'arbres boostés de gradient extrême. Souvenez-vous maintenant, le boosting est une méthode d'ensemble. L' idée est que nous prenons un modèle et nous avons plusieurs versions de ce modèle enchaînées ensemble. Donc, ce qui se passe, c'est que chaque arbre de notre schéma de boosting va augmenter les attributs qui conduisent à des erreurs de classification de l'arbre précédent. Donc, fondamentalement, nous avons plusieurs arbres sont juste construire sur l' autre pour corriger les erreurs de l'arbre précédent avant. Et il s'avère que cette idée plutôt simple est vraiment, vraiment incroyable. Xgboost remporte régulièrement des compétitions Kaggle. C' est très facile à utiliser. C' est très efficace sur le plan informatique. Donc, cela fait un très bon choix pour qu'un algorithme commence à partir de quel que soit votre problème, classification ou la régression, il y a de très bonnes chances que XGBoost soit le meilleur algorithme pour essayer de créer un modèle pour vos données et faire des prédictions précises basées sur ce modèle. Et c'est vraiment facile à utiliser. Je veux dire, c'est, c'est presque inquiétant comme c'est facile sous le capot a beaucoup de fonctionnalités vraiment cool qui le rendent si bon. La facilité est quelque chose qu'on appelle le boostage régularisé. C' est donc ce qui le distingue des autres méthodes d'arbre boostées là-bas. régularisation est quelque chose qui empêche le suréquipement. Cela garantit donc que le modèle avec lequel nous nous retrouvons est généralisé et qu'il n'est pas vraiment suradapté à l'ensemble des données sur lesquelles vous l'avez formé. Nous parlerons de régularisation plus en détail plus tard dans le cours. Mais sous le capot, il utilise la régularisation L1 et L2, dont nous parlerons encore plus tard. Une autre fonctionnalité vraiment cool est que XGBoost peut gérer automatiquement les valeurs manquantes. Ainsi, il déterminera automatiquement la meilleure façon de gérer les valeurs manquantes dans vos données. Tu n'as pas à y penser trop. C' est une fonctionnalité vraiment cool parce que, vous savez, gérer les valeurs manquantes et imputer ces valeurs manquantes peut être une grande partie de votre travail en tant que scientifique des données. Mais XGBoost fait que ça arrive. Il peut également être exécuté en parallèle. C' est donc la clé de son efficacité. Il peut en fait profiter de tous les cœurs de votre CPU ou même profiter d'un cluster d'ordinateurs. Il peut être exécuté en parallèle sur plusieurs threads. Et cela signifie également que vous pouvez l'utiliser pour le Big Data, pour les grands jeux de données, je ne rentrerai pas nécessairement sur une seule machine. Donc, non seulement XGBoost est vraiment puissant et algorithme précis pour les petits jeux de données. Il se met aussi bien à l'échelle. Alors qu'est-ce qui n'est pas à aimer à ce sujet, n'est-ce pas ? Une autre fonctionnalité intéressante est que vous pouvez faire une validation croisée à chaque itération. Nous n'avons pas encore trop parlé de validation croisée. Mais l'idée est que vous pouvez évaluer la performance de cet algorithme de XGBoost à chaque étape de son entraînement. Et cela vous permet de faire des choses comme dire, Eh bien, je ne vois pas vraiment beaucoup plus profiter d'autres itérations. Donc je vais aller de l'avant et arrêter cette itération tôt. Ou je peux trouver le nombre optimal d'itérations pendant que je l'entraîne. Donc, comme je peux surveiller la précision de mon modèle comme il itère et comprendre quand je devrais l'arrêter et trouver ce point optimal assez facilement. Il prend également en charge la formation incrémentielle. Ce que je veux dire par là, c'est que vous pouvez arrêter l'entraînement d' un modèle XGBoost, puis l'enregistrer et revenir et le ramasser plus tard. Alors. Si vous souhaitez réellement diviser la formation sur une période donnée ou entre plusieurs tâches par lots. C' est aussi une possibilité avec XGBoost. En outre, il vous permet de brancher vos propres objectifs d'optimisation. Cela le rend très flexible dans la nature. Donc, quel que soit le problème que vous avez, si vous pouvez le décrire en termes de quelque chose que vous voulez optimiser, vous pouvez probablement faire fonctionner XGBoost. Et utilise enfin une fonction appelée élagage des arbres. Donc, contrairement aux arbres de décision normaux où il cesse de se ramifier une fois qu'il cesse de chanter, avantage de le faire, il prend une sorte d'approche différente ici, va en fait très profond par défaut et ensuite essayer de tailler cet arbre vers arrière de sorte que se traduit généralement par des arbres plus profonds, mais par des arbres plus optimisés. Et cela fait partie de la clé de son succès. L' utilisation de XGBoost est ridiculement facile à installer. Il suffit de taper pip installer XGBoost à partir de votre invite Anaconda. Et une fois qu'il est installé, vous pouvez simplement commencer à l'utiliser. Il offre également des interfaces sur l'interface de ligne de commande pour C plus plus, qui est ce qu'il est écrit en natif, également pour le langage R Julia, et il a une interface JVM. Ainsi, vous pouvez utiliser XGBoost très efficacement dans des programmes comme Java ou Scala et Spark en utilisant Scala par exemple. Donc, ce n'est pas seulement fait pour les ordinateurs portables scikit-learn et Python. C' est plus général que ça. Et en tant que tel, il a sa propre interface. Donc, ce n'est pas vraiment fait spécifiquement pour scikit-learn. Donc, les choses sont un peu différentes lorsque vous utilisez XGBoost dans scikit-learn dans un ordinateur portable. La principale différence est qu'il utilise quelque chose appelé une structure de données de matrice D pour contenir l'entité et les données étiquetées. Mais l'utiliser est très facile et est un moyen très facile créer une de ces structures de matrice d à partir d'un tableau NumPy. Donc, en pratique, ce n'est pas une grosse affaire. Et vous allez passer tous les paramètres de XGBoost comme un dictionnaire géant et nous en parlerons dans une seconde. Une fois que vous avez fait cela, tout ce que vous avez à faire ce qu'on appelle train sur le modèle , puis appeler prédire sur le modèle formé pour en faire des prédictions. C' est vraiment, vraiment facile. Le plus dur est, est de régler tous ces hyperparamètres de XGBoost. Donc il y a un tas de boutons et de cadrans et XGBoost. Et pour obtenir les meilleurs résultats, vous devez choisir les bons paramètres. Et souvent, c'est juste par l'expérimentation. Quelque chose va être assez simple. Par exemple, vous pouvez choisir votre booster, vos priorités. Un arbre pour les problèmes de classification est linéaire pour les problèmes de régression. Et vous devez également choisir votre type de fonction objective. Donc, par exemple, je pourrais choisir softmax si je veux juste choisir l'une des nombreuses classifications et choisir la meilleure classification pour une chose donnée. Ou je pourrais dire que je veux multi soft prob qui me donne des probabilités réelles pour chaque classification. Donc, cela pourrait potentiellement me permettre d'obtenir une liste de classifications probables, plus d'une pour chaque chose que j'essaie de prédire. Au-delà de cela, le reste doit être appris par l'expérimentation. Donc, eta est probablement le paramètre principal, le plus gros bouton que vous avez dans XGBoost, si vous voulez. Vous pouvez considérer cela comme des taux d'apprentissage. Il va donc ajuster les poids à chaque étape de l'entraînement. Et la valeur par défaut de cela va être 0.3. Et souvent, vous constaterez que dans la pratique, abaisser un peu cela à, pointer vers ou même plus bas produira souvent de meilleurs résultats. C' est donc la principale chose que vous voulez commencer à bricoler. Une fois que vous essayez de régler les performances de votre modèle XGBoost. D' autres paramètres importants ou une profondeur maximale qui sera la profondeur maximale de l'arbre. Et évidemment, si c'est trop petit, vous ne serez pas en mesure de créer un modèle très précis, mais s'il est trop grand, vous risquez de finir plus ajusté. Donc, le réglage qui peut être une chose très importante pour essayer d'obtenir le droit. Il y en a aussi un qui s'appelle le poids min. enfant. Cela peut également être utilisé pour contrôler le surmontage, en vous assurant que votre modèle n'est pas trop spécifique aux données sur lesquelles vous l'avez formé. Mais si tu le mets trop haut, tu finiras sous ajustement. Donc, vous devez trouver le juste équilibre là-dessus aussi. Il y a un grand nombre d'autres paramètres et XGBoost aussi. Mais ce sont les principaux que vous voulez jouer avec et expérimenter. Et encore une fois, parfois vous avez juste besoin d'expérimenter pour comprendre quelle combinaison de valeurs qui fonctionne le mieux. Dans un bloc-notes Python, vous pouvez utiliser des outils tels que GridSearchCV pour essayer automatiquement de tableau de différentes valeurs pour ces paramètres et déterminer automatiquement lequel est le bon. Ou si vous utilisez un système plus grand comme AWS, SageMaker, il aura des choses comme des travaux de réglage automatique des hyperparamètres que vous pouvez définir pour essayer de trouver juste la bonne combinaison de paramètres ici. Donc, régler ces clés juste pilote pour obtenir les meilleures performances de XGBoost. Mais comme vous le verrez, vous n'avez pas à réfléchir trop dur pour obtenir de bons résultats. N' oubliez pas que XGBoost est presque tout ce que vous devez savoir pour l'apprentissage automatique de nos jours en termes pratiques. Pour des problèmes de classification ou de régression simples, il y a des chances que vous obtiendrez les meilleurs résultats de XGBoost et en utilisant son vraiment facile. Donc, avec ça, voyons en fait ça en action. On va le jeter à l'ensemble de données Iris. Il s'agit d'un ensemble de données commun utilisé à des fins éducatives. C' est juste un jeu de données d'un bouquet de fleurs qui mesurent la longueur et la largeur des pétales et des sépales. Les sépales sont juste un type spécifique de pédale. Je pense que c'est celui sur le fond de la fleur d'iris. Et sur la base de ces mesures des pétales, nous n'essayons pas de prédire à quelle sous-espèce de virus cette fleur appartient réellement. Et comme nous le verrons, XGBoost est extrêmement bon à cela. Alors plongons et donnons-lui un coup de feu. Alors jouons avec XGBoost. Nous allons commencer par parler de notre invite Anaconda est toujours ainsi. Je vais aller à mon menu de démarrage ici et aller à l'invite Anaconda ou sur Mac ou Linux, faire apparaître le terminal. La première chose que nous devons faire est de cd dans l'endroit où notre matériel de cours est stocké. Pour moi, ce sera CDC colon backslash ML cours. Et avant de déclencher le Jupyter Notebook, nous devons d'abord installer XGBoost lui-même. Donc j'ai déjà fait ça, mais tu ne l'as probablement pas fait. Alors allez-y et tapez pip installer XGBoost pour prendre soin de cela. Pour moi, cela ne fera rien parce que je l'ai déjà installé. Mais pour vous, il devrait aller là-bas et télécharger et installer la dernière version de XGBoost. Une fois que cela est fait, nous pouvons taper dans Jupiter cahier, Jupiter avec y. Une fois que nous sommes ici, aller de l'avant et trouver le XGBoost, pas de livre et ouvrir cela. Et commençons. Encore une fois, l'utilisation de XGBoost est vraiment facile. n'y a pas grand-chose à regarder ici parce qu'il n'y a pas beaucoup à faire. C' est vraiment facile à utiliser et ça marche juste. Nous l'avons déjà installé, mais pour rappel, c' est comme ça que vous l'installeriez si vous ne le faisiez pas déjà. Et encore une fois, nous allons expérimenter avec le jeu de données Iris. L' idée est que nous avons un ensemble de données de fleurs où nous avons des mesures des pétales et des sépales, ce qui est juste un type spécial de pétales, la longueur et la largeur de chacun. Donc, pour chaque fleur, nous allons avoir quatre mesures pour les attributs ou les caractéristiques, si vous voulez, la longueur et la largeur des pétales ainsi que la longueur et la largeur des sépales. Et ce que nous devons faire est de prédire quelle sous-espèce de fleur il est basé sur ces mesures. Et puis il s'avère qu'il y a trois sous-espèces de fleurs d'iris, setosa, versicolor et virginica. Allons de l'avant et chargeons ces données. Heureusement, cela est déjà intégré dans scikit-learn. Donc on a juste dû dire charger l'iris de soulignement pour charger ça. Et nous pouvons explorer les paramètres et les caractéristiques de ces données ici. Donc, nous allons faire la forme data.dat pour comprendre ce qu'il y a exactement, pour essayer de comprendre ce qu'il y a dedans. Allez-y et appuyez sur Shift Enter pour exécuter cela. Et nous pouvons voir que cela se compose de 150 échantillons, donc il n'y a que 150 fleurs dans notre jeu de données ici. Chaque, chaque fleur a quatre caractéristiques, la longueur et la largeur du pétale, puis les lier avec le sépale. Et un des noms de cibles possibles. Les catégories réelles que nous essayons de prédire les étiquettes sont setosa, versicolor et virginica. Commençons donc par diviser ces données en jeu de données d'entraînement et en jeu de données de test. L' idée ici est que nous voulons nous assurer que nous formons uniquement notre modèle basé sur nos données de formation. Ensuite, nous allons mettre de côté 20% de nos données pour évaluer réellement le modèle avec. Donc, nous voulons nous assurer que nous gardons ces données de test mis côté et ne pas entraîner la date dessus pour que nous puissions dire, modèle Ok, ok, modèle XGBoost. Comment allez-vous bien ? Je prédis des sous-espèces pour des fleurs que vous n'avez jamais vues auparavant. Donc, ça fait en sorte que nous ne nous entraînons pas sur. La réponse est que nous ne sommes pas comme tricher si vous bien, n'est-ce pas, donc l'idée est que nous allons mettre de côté 20% de nos données à des fins de test, former le modèle et les 80 % restants, puis évaluer le modèle en fonction de ces données qui a été retenu. Donc, c'est ce que fait le partage de test de train, c'est juste séparer au hasard ces données. De cette façon, nous transmettons les données d'entité réelles, les données étiquetées. Et nous disons que nous voulons réserver 20 pour cent des données pour les tests. Et nous pouvons lui donner un état aléatoire spécifique pour nous assurer que nous obtenons les mêmes résultats chaque fois que nous exécutons ceci. Cela ira dans un tas de tableaux différents ici, x est fondamentalement par convention les données de fonctionnalité, dans ce cas les longueurs et les largeurs des pétales et des sépales installés. Et y par convention fait référence aux données étiquetées. Donc, ce sera la sous-espèce que c'est. Donc, ce que cela signifie, c'est que les données d'entité, les mesures réelles des pétales vont aller dans le train x pour le jeu de données d'entraînement et le test X pour le jeu de données de test. Et les étiquettes, les réponses, si vous voulez, de quelle sous-espèce il s'agit, nous allons expliquer pourquoi le train de soulignement pour les données d'entraînement et y test de soulignement pour les données de test. Allons-y et courons ça avant que j'oublie. Et maintenant, nous pouvons charger XGBoost lui-même. Donc, comme nous l'avons dit, XGBoost est un peu bizarre et que vous devez utiliser ces choses de matrice d au lieu de simplement utiliser des tableaux numpy. Mais comme vous pouvez le voir ici, il est vraiment facile de les créer à partir d'un tableau NumPy. Donc, nous allons dire que l'ensemble des données d'entraînement sera une matrice D qui se compose des données d'entraînement, des mesures réelles, et des données étiquetées, la sous-espèce réelle. Et nous faisons la même chose pour les données de test. Donc, nous avons fondamentalement incorporé toutes les fonctionnalités et données d' étiquette pour la formation et les tests dans ces deux objets de matrice d. Allez-y et Shift Enter pour exécuter cela. Ensuite, nous devons définir nos valeurs d'hyperparamètres. Et comme nous l'avons dit, c'est souvent la partie la plus difficile de l'ensemble est d'essayer trouver les bonnes valeurs de ces paramètres, si vous voulez. Et donc nous allons commencer par une supposition. Donc, disons que nous allons commencer avec une profondeur maximale de nos arbres de quatre. Eta commencera avec le taux d'apprentissage par défaut de 0,3. Et encore une fois, généralement vous voulez aller un peu plus bas sur ce que si quelque chose, notre fonction objective sera Softmax. Softmax signifie simplement que nous voulons examiner la classification la plus probable pour chaque fleur. Donc, en revanche, nous pourrions utiliser soft prompt pour obtenir les probabilités réelles associées à chaque sous-espèce individuelle. Mais je suis juste intéressé par une réponse par fleur, donc je veux qu'elle choisisse automatiquement la meilleure valeur de classification, et c'est ce que softmax fait. Il fixe la classification avec la probabilité maximale. Et nous préciserons le nombre de classifications que nous avons, dans ce cas trois, car il n'y a que trois sous-espèces à choisir. Votre truc, nous devons deviner ici en accord est le nombre d'époques ou d'itérations, si vous allez l'appeler comme vous voulez. Fondamentalement, combien de fois allons-nous réellement exécuter cet algorithme ? Donc, avec ce Shift Enter et nous pouvons ensuite former notre modèle avec une ligne de code. C' est aussi facile que ça. Donc, en disant le train de points XGBoost, nous passons juste les paramètres du dictionnaire, les données d'entraînement réelles, c'est cet objet de matrice d. Et combien d'époques nous voulons le faire passer. Allez-y et Maj Enter. Et vous pouvez voir que c'est déjà fait. Comme nous l'avons dit, XGBoost est vraiment, vraiment rapide. Donc maintenant, nous pouvons juste faire des prédictions basées sur ce modèle de train. Allons de l'avant et appelons prédire en transmettant les données de test qu'on n'a pas divulguées, non ? Rappelez-vous donc que nous avons pris 20% de notre jeu de données, mis de côté pour que le modèle ne l'ait jamais vu pendant l'entraînement. Et maintenant, nous allons évaluer à quel point il prédit les fleurs qu'il n'a jamais vues auparavant. Et si nous imprimons ces prédictions, nous pouvons voir qu'il est en train d'imprimer les numéros de catégorie de chaque fleur individuelle dans ce jeu de données de test. J' ai oublié à quoi ils correspondent réellement. Je pense que deux signifie une virginica, par exemple, non ? Il s'agit donc des prédictions réelles de la sous-espèce pour chaque point de données dans les données d'essai que le modèle n'a jamais vu auparavant. Voyons voir comment ça s'est bien passé. Donc, je vais juste appeler le score de soulignement de précision du paquet de métriques scikit-learn là, je vais passer les valeurs correctes connues réelles qui vont être en Y et un test de score, sont les bons les classifications que nous connaissons et les valeurs prédites. Et nous comparerons à quel point ils correspondent réellement. Et regarde ça. En fait, c'est parfait. Vous ne voyez pas ça très souvent. Je veux dire, on a juste deviné les bons hyperparamètres pour XGBoost. Et même en devinant, on a obtenu des résultats parfaits. Je veux dire, évidemment, c'est exceptionnellement comme si tu n'obtiendras pas une précision à 100 %, mais wow, c'est une performance incroyable ici. Normalement, c'est une activité pratique. Je vous aurais essayé d'améliorer la précision en jouant avec les hyperparamètres plus loin, mais vous ne pouvez pas améliorer sur un 100 pour cent. Donc, ce que je veux que vous fassiez, c'est d'essayer de rendre ce modèle plus efficace. Pourrait réellement s'échapper avec moins d'époques ou d'itérations, pourrait effectivement s'en sortir avec un arbre plus petit en abaissant le paramètre de profondeur maximale. Alors essayez d'optimiser la simplicité de ce modèle et donc ses performances et de voir comment vous pouvez le rendre simple avant de perdre réellement la précision. Donc, jouez avec cela et obtenez une idée de la façon dont ces hyperparamètres affectent la précision réelle de vos résultats. Mais oui, c'est l'inaction de XGBoost. Comme vous pouvez le voir, il produit des résultats impressionnants. Ce n'est pas difficile à utiliser. Ce devrait être votre algorithme de référence. Et beaucoup de cas. 41. Aperçu des machines vectorielles de l'en série de machines vectorielles (SVM): Enfin, nous allons parler des machines vectorielles de support, qui est une façon très avancée de mettre en cluster ou de classer des données dimensionnelles plus élevées. Que se passe-t-il si vous avez plusieurs fonctionnalités que vous voulez prédire basées sur SPM pourrait être un outil très puissant pour le faire, et les résultats pourraient être effrayants. Bien. C' est très compliqué sous le capot, mais les choses importantes comprendre quand l'utiliser et comment il fonctionne à un niveau élevé. Alors couvrons ça maintenant. Parlons des machines vectorielles de support, et c'est un mot fantaisie pour ce qui est réellement un concept de fantaisie, mais heureusement, c'est assez facile à utiliser. L' important est de savoir ce qu'il fait et à quoi il sert. Soutenez donc les machines vectorielles. Cela fonctionne bien pour classer les données dimensionnelles supérieures, et par là je veux dire beaucoup de fonctionnalités différentes. Donc, il est facile d'utiliser quelque chose comme, Vous savez, K signifie clustering vers des données de cluster qui ont deux dimensions, vous savez, peut-être l'âge sur un axe et le revenu sur un autre. Que se passe-t-il si j'ai beaucoup de fonctionnalités différentes que j'essaie ? Teoh Predict basé sur nous allons soutenir les machines vectorielles pourrait être une bonne façon de le faire, mathématiquement. Ce qu'il peut faire est de trouver ces vecteurs de support dimensionnel plus élevé. C' est là qu'il obtient son nom, qui définissent ces plans dimensionnels supérieurs qui divisent les données en différents clusters. Et évidemment, les méthodes deviennent assez bizarres assez rapidement avec tout cela. Heureusement, le paquet psychique appris fera tout pour vous sans avoir à réellement entrer dedans vous-même sous le capot. Vous devez comprendre, cependant, cependant, qu'il utilise quelque chose appelé le truc du colonel pour trouver ces vecteurs de soutien. Et il existe différents noyaux que vous pouvez utiliser pour le faire de différentes manières. Tout semble très fantaisie. Mais encore une fois, le point principal est que vous devez utiliser SPM, Zahra Bon choix. Si vous avez des données dimensionnelles plus élevées avec beaucoup d'entités différentes, et que vous pouvez utiliser différents noyaux qui ont des coûts de calcul variables et peuvent être mieux adaptés au problème en question. Et je tiens aussi à souligner qu'il s'agit d'une technique d'apprentissage supervisée, donc nous allons réellement l'entraîner sur un ensemble de données de formation, et nous pouvons l'utiliser pour faire des prédictions pour, vous savez, futures données invisibles ou données de test. Donc, c'est un peu différent de K signifie clustering. Et que K signifie était complètement sans supervision avec la machine Vector de soutien. Il s'agit d'une formation basée sur des données de formation réelles où vous avez la réponse de la classification correcte pour certains ensemble de données dont il peut apprendre. Ok, donc le PM est utile pour la classification, vous savez, regroupement si vous voulez. Mais c'est une technique supervisée. Ok, gardez ça à l'esprit. Donc, un exemple que vous voyez souvent c'était le soutien. SPM utilise quelque chose appelé les classifications vectorielles de support, et l'exemple typique utilise l'ensemble de données irlandaises. Donc, l'un de ces ensembles de données d'échantillon qui vient avec psych apprendre, est appelé l'ensemble de données irlandais, et ce qu'il est une classification de différentes fleurs, différentes observations de différentes fleurs d'iris et de leurs espèces. Et l'idée est de les classer en utilisant des informations sur la longueur et la largeur de la pédale sur chaque fleur et la longueur et la largeur de la CEPAL de chaque fleur. Et un CEPAL est apparemment une petite structure de support sous la pédale. Je ne savais pas ça jusqu'à maintenant non plus, non plus, mais vous avez quatre dimensions d'attributs. Là, vous avez la longueur et avec de la pédale et la longueur et la largeur d'un CEPAL, et vous pouvez utiliser cet orteil. Prédire l'espèce d'iris, compte tenu de cette information. Voici donc un exemple de faire cela avec SBC. Fondamentalement, nous avons plusieurs avec et longueur souple projetée vers le bas à deux dimensions, donc nous pouvons réellement le visualiser. Et avec différents noyaux, vous pourriez obtenir des résultats différents. Donc SBC avec un noyau linéaire produit quelque chose comme ça, il s'avère, et puis il y a une méthode SBC linéaire aussi. Aussi le noyau linéaire. Il produit un résultat comme celui-ci, et vous pouvez également utiliser des noyaux polynomiaux ou des noyaux fantaisistes qui peuvent se projeter jusqu'à courbes en deux dimensions. Donc tu pourrais faire des classifications plutôt fantastiques de cette façon, non ? Donc c'est un exemple encore une fois, Ceux-ci ont des coûts de calcul croissants, et ils peuvent produire, vous savez, relations plus complexes. Mais là encore, il s'agit d'un cas où trop de complexité peut donner des résultats trompeurs. Donc, vous devez être prudent et effectivement utiliser un test formé le cas échéant. Puisque nous faisons de l'apprentissage supervisé, vous pouvez réellement faire des tests de formation et trouver le bon modèle qui fonctionne. Ou peut-être que c'est une approche d'ensemble juste. Vous devez arriver au bon colonel pour la tâche à accomplir. Et pour des choses comme le polynôme SBC, quel est le bon degré polynôme à utiliser ? Vous savez, même des choses comme SBC linéaire auront des paramètres différents associés à eux que vous pourriez avoir besoin d'optimiser, donc cela aura plus de sens avec un exemple réel. Plongons dans un code python réel et voyons comment cela fonctionne. 42. Utiliser SVM pour des gens de regroupements: Jouons avec les machines vectorielles de support. Ouvrez l'ordinateur portable S V C dans votre matériel de cours et heureusement, il est beaucoup plus facile d'utiliser des machines vectorielles de support que de comprendre comment elles fonctionnent. Donc, pour cet exemple, revenons aux mêmes données d'exemple de clustering que nous avons créées pour notre conférence K signifie clustering . Nous avons juste cette fonction de données de cluster de caisses ici encore, nous allons mettre dans une graine aléatoire cohérente pour que vous puissiez voir les mêmes résultats que je vois ici . Nous allons passer dans un nombre donné de clusters que nous voulons et un nombre de points par cluster sera calculé par un K. Donc, fondamentalement, nous passons dans le nombre de clusters que vous voulez et le nombre total de points que nous voulons distribuer entre eux. Ici, nous créons ensuite nos rayons X et y ici X conteneur données caractéristiques qui seront deux points D constitués de revenus et d'âges que l'air généré et fabriqué aléatoirement. Et pourquoi les étiquettes représenteront les clusters auxquels ces points sont associés. Donc, pour chaque cluster que nous voulons créer choisira un OID central de revenu aléatoire dans un grand et huit Central avait choisi au hasard entre 20 et 70 ans et 220 000$. Et puis pour chaque point par groupe, nous allons créer un point fictif échantillonné au hasard avec une distribution normale pour un revenu et un âge donnés autour de ces Centrowitz. Ceux-ci seront ajoutés à notre tableau d'entités ex, puis modifieront le cluster réel. Le numéro deux est pourquoi le tableau d'étiquettes convertira ceux en tarte engourdie, soulèvera et les retournera. Bon, donc maintenant nous allons préparer nos données ici pour que nous appelions, créer des données en cluster. Nous allons demander 100 points répartis en cinq clusters différents, et je fonctionnerai le fera pour nous. Et nous allons tracer ce qu'il reviendra avec. Donc, nous allons juste dire que nous voulons créer un diagramme de huit par six ici figure, et nous allons faire un nuage de points avec une couleur en corrélation avec l'étiquette réelle qui lui est associée qui fera en sorte que chaque cluster obtient sa propre couleur sera alors tracé ça. Maintenant, il s'avère que pour que les orteils SBC fonctionnent bien, dans certains noyaux, en particulier le Poly Colonel, nous devons mettre à l'échelle ces données à une plage normalement distribuée entre un négatif et un. Sinon, les solutions pourraient ne jamais converger. Donc, nous allons également mettre à l'échelle l'énoncé jusqu'à la plage négative Oneto un ici. Et pour ce faire, élever quelque chose appelé Min Max Scaler qui sort du module de pré-traitement de psychique Apprendre. Et nous allons juste dire que nous voulons corriger toutes les fonctionnalités de la radiographie, qui contient tous les revenus et les âges de la gamme. Négatif 1 à 1 appliquera cette transformation à nos données d'entité, puis nous traiterons également les données d'échelle résultantes. Maintenant, si jamais vous avez voulu revenir à la plage de données d'origine, il y a aussi une fonction de transformation inverse sur le scaler Min Max que vous pouvez utiliser pour revenir à l' autre direction. Mais pour cet exemple, nous n'aurons pas besoin de le faire de toute façon. Allons-y et exécutons ceux-ci avant d'oublier, donc je vais revenir au bloc de définition de fonction ici et exécuter ce décalage. Entrez et puis dans le bloc de déplacer, entrez à nouveau et vous pouvez voir ici l'intrigue de nos résultats non qualifiés, où les revenus allaient de 20.000 à 200.000 plus ou moins une certaine valeur de fente leur et nos gammes air environ 30 à 70 ans pour l'accès à l'âge. Donc, fondamentalement, nos données de fonctionnalités se composent des revenus sur l'axe des X et des âges sur l'axe des Y année après que nous échelle, il semble exactement le même. Sauf que les nombres réels ont été réduits à la plage Négatif un à un sur les deux axes. Donc, c'est préparé nos données pour être amical à S V C. Maintenant, nous avons juste à appliquer spc, ce qui est incroyablement facile. Tout ce que nous avons à faire est d'importer le paquet SPM de psych il apprendre et appeler SPM acheté spc Spécifiez le colonel que vous voulez. Nous commencerons par un noyau linéaire simple. Le paramètre hyper principal qui compte ici est C, qui est par défaut un point. Oh, cela fonctionne bien et nous allons lui demander de s'adapter à notre fonctionnalité d'un tableau étiqueté et R. Donc, en gros, dire correspondre à notre tableau de tous les deux points D d'âge et de revenu et à toutes nos étiquettes de ce que nous connaissons ceux qui sont assignés à l'origine afin former notre modèle SPC. Allons-y et courons. Ça s'est passé très vite. Jetons donc un coup d'oeil aux résultats que nous allons faire ici est de créer un intrigue où nous pouvons réellement visualiser les plages dans ces deux D espace d'âges et de revenus qui sont des choses de modèle corrélées à des clusters donnés, et en même temps nous traiterons les résultats réels des clusters qui pensent que chaque point individuel est dans ce puits, donc pour construire ce graphique, nous devons d'abord construire un tableau de deux D très dense sur lequel nous pouvons réellement créer des prédictions pour que nous puissions en fait tracer ce que ces grappes sont à chaque point de cet espace. Pour ce faire, nous appelons une grille de maillage sur un tourteau engourdi, disant que nous voulons une grille de points d'échantillonnage ici qui vont entre un négatif et un dans les deux axes x et Y à un espacement de seulement 0,1 l'un de l'autre. Donc, c'est assez proche pour que ça ressemble à une gamme continue de couleurs Quand nous tracons cela, nous devons alors convertir le résultat de maillage super mélodie, course d' arbitre. Nous pouvons les utiliser avec une prédiction de classification et ensuite nous devons convertir cela à tour de rôle en une liste de deux points d'âge du revenu D. Donc, la fonction Raval ici est juste de convertir cela en rayons de tarte engourdis et le trait de soulignement np point c . Voir les soulignements abrégés pour Can Katyn huit. Cela dit, je vais prendre toutes ces valeurs X et toutes ces valeurs y et je peux les classer ensemble dans une liste de points qui ont x y x y y x y y y etcetera. Donc maintenant que j'ai cette liste de points d'échantillonnage, je peux passer ça dans prédire. Maintenant, juste ah, pour clarifier un point de confusion ici, X et Y ici peuvent correspondre aux axes X et Y. Donc N p X va finir par être toutes les données sur le revenu et MP y sera toutes les données sur l'âge . Bon, donc ne laissez pas ça vous embrouiller quand on parle de pourquoi, dans ce contexte, je parle de l'axe des y, pas des données de l'étiquette. Pourquoi ? Donc nous avons ce tableau d'entités que nous allons passer dans prédire, et cela nous donnera des étiquettes prédites, qui sont les numéros de cluster réels pour chaque point dans cet espace. Alors on doit juste le tracer à nouveau. On va faire un chiffre de huit par six. Nous allons remodeler ces résultats pour nous assurer qu'ils correspondent à la dimension X de notre tracé, puis nous appellerons Contour F. Cela passera essentiellement par chaque point que nous avons créé sur cette grille de maillage et prendra ses étiquettes qui étaient prédit. Ce sont donc les étiquettes prédictives, pas les étiquettes réelles, et les tracer à l'aide de la carte de couleurs que nous voulons utiliser associée à ces valeurs. Et après cela, nous allons réellement faire un nuage de points qui va tracer les points d'origine qui vivent encore dans notre tableau X. Il y a encore des données d'entités, c'est-à-dire le revenu et l'âge, et nous les colorierons en fonction des clusters d'origine réels appelant Why, tant que type float pour convertir ces étiquettes d'origine en valeurs de couleur pour le tracé. Allons-y et lançons ça et voyons à quoi ça ressemble. Il faut un peu de temps pour créer autant de prédictions, mais pas trop longtemps. Et vous pouvez voir ici ce qui s'est passé. Souviens-toi de ce qu'on fait. Il tracait les plages réelles de prédictions comme couleur de fond, donc nous utilisons un noyau linéaire. Nous avons donc des lignes droites délimitant chaque région où il croit que ces clusters correspondent. Donc, fondamentalement, tout ce qui se trouve dans ce triangle va être un modèle pour être dans une seule grappe. Tout ce qui est sur un fond rouge sera un autre cluster. Et nous tracons en plus de cela, les vrais clusters d'origine à partir du moment où nous avons réellement créé les données. Maintenant, ces clusters se chevauchent dans une certaine mesure, donc il ne sera vraiment pas possible ou réaliste de s'attendre à ce qu'un algorithme fasse 100% sur ce sujet. Vous pouvez voir que, M. Couples, par exemple, nous avons cette caractéristique bleue ici qui apparaît est d'une couleur différente que les autres qui étaient devraient être dans le même groupe. Entendre les couleurs d'arrière-plan ne sont pas nécessairement corrélées avec un quatre grammes. Vous pouvez voir quand un point ne correspond pas à ses voisins autour d'elle. Pour le reste de ce cluster, ce sera probablement un résultat incorrect. Aussi, nous avons ce point violet ici pour ce cluster qui semblait avoir ah s'être faufilé dans cette région rouge ici qui appartient vraiment à cet autre groupe ici. Donc quelques points qui se sont trompés mais ne peuvent pas vraiment le blâmer trop pour ça. Thea Clusters se chevauchent, en fait, maintenant. Vous pouvez également utiliser la fonction de prédiction sur le modèle de train pour faire des prédictions pour de nouveaux points spécifiques que le modèle n'a pas vus auparavant. C' est en quelque sorte le but de tout ça. Donc, dans cet exemple particulier, nous appelons s V c dot Predict pour prédire un cluster pour quelqu'un avec un revenu de 200 000$ à l'âge de 40 ans. Et il s'avère que les terres et la grappe numéro trois avec notre modèle et pour quelqu' un qui a 50 000$ par jour 65 qui a fini dans la grappe numéro 2 savent maintenant que nous devons réduire ces chiffres pour nous avant de pouvoir faire une prévision en les utilisant. Alors rappelez-vous qu'avant de former ce modèle, nous avons réduit toutes nos entrées en utilisant le scaler Max hommes. Nous devons donc utiliser le même scaler que nous avons nommé scaling et l'utiliser pour transformer nos données d'entrée lorsque nous essayons de faire des prédictions pour de nouveaux points individuels, donc, très important de ne pas oublier cette étape. C' est très facile à faire, et je l'ai fait moi-même. Mais avec cela, je vais vous mettre au défi d'étendre cela et pour votre activité ici, essayez différents noyaux, donc linéaire est juste l'un d'entre eux. Allez chercher la documentation dans le psychique Learn on line pour le modèle de la CPS, qui est lui-même un bon exercice parce que je peux répondre à beaucoup de vos propres questions de cette façon et découvrir quelles sont les autres options possibles du colonel. Voyez si vous pouvez en trouver un meilleur. Lorsque vous entrez dans les noyaux non linéaires. Peut-être que ces conf l'état un peu mieux, en fait, et faire un meilleur travail là-dessus. Alors faites juste quelques expérimentations. Essayez différents noyaux. Voyez quel effet cela a sur les formes des clusters et les régions que pour les trouver vous pourriez trouver intéressant et voir également quel effet cela a sur le temps d'exécution. Certains d'entre eux sont plus compliqués que d'autres, et certains d'entre eux nécessitent plus de ressources de calcul est d'autres, donc c'est aussi un compromis. Tu dois faire consciemment, aussi. En outre, vous voudrez peut-être jouer avec certains des paramètres hyper associés à ces différents modèles. Ils seront documentés dans la documentation en psychologie, il a appris pour chaque type de noyau. Beaucoup d'entre eux ont beaucoup de paramètres différents, et vous avez juste à expérimenter pour trouver les paramètres qui fonctionnent le mieux. Alors jouez avec ça aussi. Hyper, réglage des paramètres, partie très importante de l'apprentissage automatique. Alors va te salir les mains si tu veux, et voir si tu peux faire un meilleur travail en utilisant un autre type de colonel. 43. Filtrage collaboratif des utilisateurs: Parlons de mon domaine d'expertise personnel. Recommander les systèmes. Donc, des systèmes qui peuvent recommander des choses aux gens en fonction de ce que tout le monde a fait. Regardez quelques exemples de cela de quelques façons pour le faire spécifiquement aux techniques appelées filtrage collaboratif basé sur l'utilisateur et sur l'élément. Alors plongons dedans. Je veux parler d'un sujet qui me tient à cœur. Recommandez ses systèmes. Si vous vous souvenez, j'ai réellement passé le plus de ma carrière chez amazon dot com et imdb dot com, et beaucoup de ce que j'ai fait là-bas était de développer des systèmes recommandés, choses comme les gens qui ont acheté, acheté ou recommandé pour vous et les choses qui ont fait des recommandations de films pour les gens. C' est donc quelque chose que je connais beaucoup personnellement, et j'espère partager certaines de ces connaissances avec vous. Alors, qu'entend-on par recommander ses systèmes ? Eh bien, comme je l'ai dit, Amazon est un excellent exemple et un que je connais très bien. Donc, si vous allez à la section de leurs recommandations ici, vous pouvez voir qu'il va réellement recommander des choses que vous pourriez être intéressé à acheter en fonction de votre comportement passé sur le site et qui peuvent inclure des choses que vous êtes évalué ou les choses que vous avez achetées, et parmi d'autres signaux que je pourrais utiliser ce bien peuvent entrer dans les détails parce qu'ils vont me traquer et, vous savez, me faire de mauvaises choses. Mais c'est plutôt cool. C' est plutôt bon, aussi, et tu pourrais aussi penser aux gens qui ont acheté. Également acheté fonctionnalité sur Amazon est une forme de recommander er, système. La différence est que les recommandations que vous voyez ici sont basées sur l'ensemble de votre comportement passé , alors que les personnes qui ont acheté également ou les personnes qui ont vu des choses comme ça sont simplement basées sur la chose que vous regardez à l'heure actuelle, ou la chose que vous envisagez d'acheter en ce moment et de vous montrer des choses qui lui ressemblent . Ça vous intéressera peut-être aussi. Il s'avère que ce que vous faites en ce moment est probablement le signal le plus fort de votre intérêt de toute façon. Un autre exemple de Netflix. Ils ont donc diverses fonctionnalités qui essaient de recommander de nouveaux films ou d'autres films que vous n'avez pas encore vus. Basé sur les films que vous avez aimé ou regardé dans le passé aussi, puis ils décomposent que par John Run Ils ont une sorte de spin différent sur les choses où ils essaient d'identifier les genres ou les types de films qu'ils pensent que vous appréciez la la plupart, et ils vous montrent plus de résultats de ces genres. C' est donc un autre exemple de système recommandé en action. Et le but est de vous aider à découvrir des choses que vous ne saviez peut-être pas auparavant. Donc c'est plutôt cool. Tu sais, ça donne des films, des livres, de la musique ou n'importe quelle chance d'être découvert par des gens qui n'en avaient peut-être pas entendu parler avant. Donc, vous savez, non seulement est une technologie cool, mais aussi un peu égalise le terrain de jeu et aide les masses à découvrir de nouveaux objets . Il joue donc un rôle très important dans la société d'aujourd'hui. Au moins, j'aimerais le penser. Il y a donc quelques façons de le faire. Parlons de recommander des trucs basés sur votre comportement passé. Une technique est appelée un filtrage collaboratif basé sur l'utilisateur, et voici comment cela fonctionne. Filtrage collaboratif, en passant, dit en passant, juste un nom de fantaisie pour recommander des choses basées sur la combinaison de ce que vous avez fait, ce que tout le monde a fait Ok, donc c'est regarder votre comportement et comparer cela à Le comportement de tout le monde pour arriver Les choses qui pourraient vous intéresser et dont vous n'avez pas encore entendu parler. Donc, l'idée ici est que nous construisons une matrice de tout ce que chaque utilisateur que j'ai jamais acheté, vu ou évalué, ou tout autre signal d'intérêt dont vous voulez baser ce système. Donc, en gros, finissez avec une ligne pour chaque utilisateur de mon système. Et cette rangée contient toutes les choses qu'ils ont faites qui pourraient indiquer une sorte d' intérêt pour un produit donné. Imaginez une table. J' ai des utilisateurs pour la Rose et chaque colonne est un élément. Ok, ça pourrait être un film. Ah, produit. Quelle que soit la page Web que vous pouvez. Vous pouvez l'utiliser pour beaucoup de choses différentes. Ensuite, j'utilise cette matrice pour calculer la similitude entre différents utilisateurs. Donc, je traite fondamentalement chaque ligne de ceci comme un vecteur, et je peux calculer la similitude entre chaque vecteur d'utilisateurs en fonction de leur comportement. Donc, vous savez, pour les utilisateurs qui aimaient la plupart les mêmes choses seraient très similaires les uns aux autres, et je peux ensuite trier cela par ces scores de similitude. Donc, si je peux trouver tous les utilisateurs similaires à vous en fonction de leur comportement passé, je peux alors trouver les utilisateurs les plus semblables à moi et ensuite recommander des choses qu'ils ont aimé que je n'ai pas encore regardé. Ok, donc tu sais, regardons un vrai exemple, et ça aura un peu plus de sens. Disons que cette gentille dame a regardé Star Wars et l'Empire frappe, et qu'elle les aimait tous les deux. Donc, nous avons un vecteur utilisateur ici de cette dame aimé, a donné cinq étoiles notation plus spécifiquement à Star Wars, et l'Empire frappe de retour. Disons que M. Edgy Mohawk Man arrive et qu'il n'a regardé Star Wars. C' est la seule chose qu'il a vue qu'il ne sait pas. L' Empire frappe encore. D' une manière ou d'une autre ,il vit dans un univers étrange où il ne sait pas qu'il y a , beaucoup de films Star Wars qui grandissent chaque année, en fait mais on peut dire, , Ce gars est en fait assez similaire à cette autre femme parce qu'ils ont beaucoup aimé Star Wars , donc il y a des similitudes. Le score est probablement assez bon, et on peut dire, OK, OK, eh bien, qu'est-ce que cette dame a apprécié qu'il n'a pas encore vu ? Et l'empire renverse celui-là. Donc, nous pouvons alors prendre cette information que ces deux utilisateurs air similaire en fonction de leur plaisir de Star Wars. Trouve que cette dame aimait aussi les grèves Empire. Et ça pourrait être une bonne recommandation pour M. Edgy Mohawk Man. Et nous pouvons aller de l'avant et le recommander. L' Empire frappe et va probablement l'adorer parce que, à mon avis, c'est en fait un meilleur film. Mais je ne vais pas entrer dans ah G cours avec toi ici. Maintenant, malheureusement, Clara Filter basé sur l' utilisateur a quelques limitations. Lorsque nous pensons aux relations et que nous recommandons des choses basées sur les relations entre les éléments et les gens sur ce que nous n'avons pas tendance, notre esprit a tendance à aller dans les relations entre les gens. Donc, nous voulons trouver des gens qui sont semblables à vous et recommander des choses qu'ils aimaient le genre de chose intuitive à faire. Mais ce n'est pas la meilleure chose à faire. Un problème est que les gens sont incapables, leurs goûts changent toujours. Alors peut-être que cette gentille dame dans les diapositives précédentes avait une sorte de phase de film d'action de science-fiction pendant qu'elle a traversé et qu'elle s'en est remise. Et peut-être plus tard dans sa vie, elle a commencé à s'intéresser davantage, tu sais, aux drames, aux films romantiques ou aux colonnes de Rahm, non ? Alors que se passerait-il si mon mohawk branché je finissais avec une grande similitude avec elle ? Juste basé sur sa première période de SciFi ? Et on a fini par lui recommander des comédies romantiques. En conséquence, ce serait mauvais, non ? Je veux dire, il y a une certaine protection contre cela en ce qui concerne la façon dont nous calculons les scores de similitude pour commencer. Mais c'est toujours polluer nos données que les goûts des gens peuvent changer au fil du temps. Donc, comparer les gens aux gens n'est pas toujours une chose simple à faire parce que les gens changent. L' autre problème est qu'il y a généralement beaucoup plus de gens qu'il n'y a de choses dans votre système. Donc sept milliards de personnes dans le monde et compte. Ce ne sont probablement pas sept milliards de films dans le monde ou sept milliards d'articles que vous pourriez recommander dans votre catalogue. Donc, le problème de calcul de trouver toutes les similitudes entre tous les utilisateurs de votre système est probablement beaucoup plus grand que le problème de trouver des similitudes entre les éléments de votre système. Donc, en concentrant le système sur les utilisateurs, vous rendez votre problème de calcul beaucoup plus difficile qu'il ne devrait l'être parce que vous avez beaucoup d'utilisateurs, au moins j'espère que vous le ferez si vous travaillez pour une entreprise prospère. L' autre problème, c'est que les gens font de mauvaises choses. Il y a une incitation économique très réelle pour s'assurer que votre produit, votre film ou quoi qu'il soit, est recommandé aux gens. Et il y a des gens qui essaient de gagner le système pour que cela arrive pour leur nouveau film, leur nouveau produit, leur nouveau livre ou autre chose. Et quand vous basez cela sur les relations avec les utilisateurs, il est assez facile de fabriquer des faux personnages dans le système en créant un nouvel utilisateur et en leur demandant de faire une séquence d'événements que vous savez aimer beaucoup d'éléments populaires et ensuite aimer votre élément à écrire. C' est ce qu'on appelle une attaque de shilling, et nous voulons que les orteils aient idéalement un système capable de faire face à cela. Il y a des recherches sur la façon de détecter et d'éviter ces attaques de bombardement dans le filtrage de collaboration de base d'utilisateurs . Mais une approche encore meilleure serait d'utiliser une approche totalement différente qui n'est pas si sensible au jeu du système, et nous en parlerons lors de notre prochaine conférence. Il y a un moyen de le faire sur sa tête et de faire mieux que d'habitude. Augmentez le filtrage collaboratif. C' est donc le filtrage collaboratif basé sur l'utilisateur Again, un concept simple. Vous regardez les similitudes entre les utilisateurs en fonction de leur comportement et vous recommandez des choses qu'un utilisateur a appréciées qui étaient similaires à vous que vous n'avez pas encore vues. Maintenant ont ses limites, comme nous l'avons dit. Parlons donc de retourner le tout sur sa tête avec une technique appelée point basé Cloud a grandi le filtrage vers le haut suivant. 44. Filtrage collaboratif d'articles en fonction des éléments: Essayons donc de corriger certaines des lacunes du filtrage Cloudera basé sur l'utilisateur avec une technique appelée filtrage collaboratif basé sur l'élément, et nous verrons comment cela pourrait être plus puissant. C' est en fait l'une des techniques qu'Amazon utilise réellement sous le capot, et ils en ont parlé publiquement, donc je peux vous en dire beaucoup. Mais voyons pourquoi c'est une si bonne idée. Nous avons donc parlé du filtrage collaboratif basé sur les utilisateurs, où nous recommandons des éléments basés sur ce que des gens semblables à vous ont aimé que vous n'avez pas encore vu ou connu. Et nous avons parlé de certains des problèmes liés au filtrage collaboratif de base d'utilisateurs. Et si on le retournait sur sa tête ? Et au lieu de baser nos recommandations sur les relations entre les personnes, nous les basons sur les relations entre les éléments, et c'est ce qu'est le filtrage collaboratif basé sur les éléments. Donc, cela tire quelques idées. D' une part, on a parlé des gens incohérents. Leurs goûts peuvent changer au fil du temps, donc comparer une personne à une autre en fonction de leur comportement passé devient assez compliqué. Vous savez, les gens ont des phases différentes où ils ont des intérêts différents, et vous ne comparez peut-être pas les gens qui sont dans la même phase les uns aux autres, mais un élément le sera toujours. Quoi qu'il en soit, un film sera toujours un film. Ça ne changera jamais. Star Wars sera toujours bien Star Wars, jusqu'à ce que George Lucas bricole un peu avec elle. Mais pour la plupart, les éléments ne changent pas autant que les gens. Nous savons donc que ces relations sont plus permanentes. Et il y a plus d'une comparaison directe que vous pouvez faire lors du calcul de similitude entre les éléments, car ils ne changent pas au fil du temps. L' autre avantage est qu'il y a généralement moins de choses que vous essayez de recommander qu'il y ait des gens à qui vous recommandez. Encore une fois, sept milliards de personnes dans le monde, vous n'offrez probablement pas sept milliards de choses sur votre site web. Pour leur recommander afin que vous puissiez enregistrer beaucoup de ressources de calcul est en évaluant les relations entre les éléments au lieu des utilisateurs, car vous aurez probablement moins d'éléments que vous avez des utilisateurs dans votre système. Cela signifie que vous pouvez exécuter vos recommandations plus fréquemment, afin de les rendre plus à jour. Vous pouvez utiliser des algorithmes plus compliqués parce que vous avez moins de relations à calculer, et c'est une bonne chose. Il est également plus difficile de jouer sur le système. Donc, nous avons parlé de la facilité d'obtenir une approche de filtrage collaborative basée sur l'utilisateur en créant simplement des utilisateurs faux comme un tas de choses populaires. Et puis la chose que vous essayez de promouvoir, avec un nuage de filtrage basé sur l'élément qui devient beaucoup plus difficile. Vous devez jouer le système en pensant qu'il y a des relations entre les objets. Et puisque vous n'avez probablement pas la capacité de créer de faux éléments avec de faux liens à d'autres éléments basés sur de nombreux, beaucoup d'autres utilisateurs, il est beaucoup plus difficile de Gaiman basé sur le système de filtrage collaboratif, ce qui est un bon chose. Pendant que je suis sur le thème du jeu du système, une autre chose importante est de s'assurer que les gens votent avec leur argent. Donc, une technique générale pour éviter les attaques de Schilling ou les gens qui essaient d'obtenir votre système de recommandation er, assurez-vous que le comportement que vous basez sur son basé sur les gens réellement dépenser de l'argent de sorte que vous êtes toujours en quelque sorte d'obtenir meilleurs résultats et plus fiables lorsque vous avez basé recommandations sur ce que les gens ont réellement acheté par opposition à ce qu'ils ont vu ou vous savez, ce qu'ils ont cliqué sur Ok, Ok . Parlons donc de la façon dont fonctionne le filtrage Claverie basé sur les éléments. C' est très similaire au filtrage collaboratif basé sur l'utilisateur, mais au lieu des utilisateurs regardaient les éléments. Revenons donc à l'exemple des recommandations de film. La première chose que nous ferions est de trouver chaque paire de films, chaque jumelage de films qui est regardé par la même personne. Donc, nous passons à travers et trouvons tous les films qui ont été regardés par des personnes identiques. Ensuite, nous mesurons la similitude de toutes les personnes qui ont regardé ce film l'un par rapport à l'autre . Ainsi, nous pouvons calculer les similitudes entre deux films différents en fonction des évaluations des personnes qui ont regardé ces deux films. J' ai donc une paire de films. Ok, peut-être que Star Wars dans l'Empire reviendra. Je trouve une liste de tous ceux qui ont regardé ces deux films comparent leurs notes les unes aux autres. Et s'ils sont semblables à ce que je peux dire, ces deux films sont similaires parce qu'ils ont été évalués de la même manière par les gens qui les ont regardés tous les deux . OK, c'est l'idée générale ici. C' est une façon de le faire. Il y a plus d'une façon de le faire, et puis je pourrais juste tout trier par le film, puis par la force de similitude de tous les films similaires. Et il y a mes résultats pour les gens qui aimaient aussi les gens qui ont noté ce très ulcéré, ce haut et ainsi de suite et ainsi de suite. Et comme je l'ai dit, c'est juste une façon de le faire. C' est donc une sorte d'étape de filtrage collaboratif basé sur les éléments. abord, je trouve des relations entre les films basées sur les relations des gens qui ont lavé chaque paire de films donnée. Tu auras plus de sens quand on passera par l'exemple. Donc, par exemple, disons que notre gentille jeune fille ici a regardé Star Wars et Empire frapper et comme deux, alors lisant les deux étoiles ou quelque chose comme ça. Maintenant vient M. Edgy Mohawk Man, qui a également regardé Star Wars dans The Empire Strikes Back et aussi comme les deux. Donc, à ce stade, affaiblir disons, il y a une relation. Il y a une similitude entre Star Wars et la grève Empire basée sur ces deux utilisateurs qui aiment les deux films. Donc ce qu'on va faire, c'est regarder chaque paire de films. Nous avons une paire de Star Wars et Empire frappe et puis nous regardons tous les utilisateurs qui , comme ça, ont regardé les deux, qui sont ces deux gars. Et s'ils les aiment tous les deux, alors on peut dire qu'ils sont semblables l'un à l'autre ou s'ils ne les aiment pas tous les deux, on peut dire qu'ils sont semblables l'un à l'autre, non ? Donc, nous regardons juste le score de similitude de ces deux utilisateurs comportement lié à ces deux films dans cette paire de films. Alors vient M. Moustache, elle bûcheron, homme hipster, et il regarde l'Empire frappe en arrière, et il vit dans un monde étrange où il veut que l'Empire frappe en arrière, mais n'avait aucune idée que Star Wars le premier film existait. Eh bien, c'est bon. Nous avons calculé une relation entre l'Empire Strikes Back et Star Wars en fonction du comportement de ces deux personnes. Donc nous savons que ces deux films sont semblables l'un à l'autre. Donc, étant donné que M. Hipster Man comme l'Empire frappe en arrière, nous pouvons dire avec confiance qu'il aimerait aussi Star Wars, et nous pouvons alors lui recommander cela comme sa meilleure recommandation de film. Donc vous pouvez voir que vous finissez avec des résultats très similaires à la fin, mais nous avons en quelque sorte retourné le tout sur sa tête. Donc, au lieu de concentrer le système sur les relations entre, gens les concentraient sur les relations entre les éléments. Et ces relations sont toujours basées sur le comportement global de toutes les personnes qui ont regardé. , Mais fondamentalement, on regarde les relations entre les objets et pas les relations entre les gens. ai eu. Bon, alors faisons-le. Nous avons en fait du code python qui utilisera des pandas et tous les autres outils à notre disposition pour créer des recommandations de film avec une quantité étonnamment petite de code. Donc, la première chose que nous allons faire est de vous montrer le filtrage collaboratif basé sur les éléments dans la pratique, donc nous allons construire des gens qui ont regardé. Aussi regardé. Fondamentalement, vous savez, les gens qui ont coté les choses ont aussi très apprécié cette chose. Donc, construire ces relations de film à film et nous allons la baser sur les données réelles que nous avons obtenues du projet de lignes de cinéma. Donc, si vous avez une organisation de point de lentille de film, c' est en fait un film ouvert. Recommander système er là, où les gens peuvent évaluer les films et obtenir des recommandations pour les nouveaux films, et ils rendent toutes les données sous-jacentes accessibles au public pour les chercheurs comme nous. Donc on va utiliser des données sur les évaluations de films Riel. C' est un peu daté. C' est comme 10 ans, alors gardez ça à l'esprit, mais ce sont de vraies données de comportement que nous allons enfin travailler ici. Et nous allons l'utiliser pour calculer les similitudes entre les films. Et ces données en soi sont utiles. Vous savez, vous pouvez utiliser ça pour dire que les gens qui aimaient aussi bien ? Donc, disons que je regarde une page web pour un film que je peux juste là, puis et là. Dites, si vous aimez ce film, étant donné que vous le regardez, il vous intéresse probablement. Vous pourriez aussi aimer ces films, et c'est une forme de système recommandé juste là. Même si nous ne savons même pas qui vous êtes maintenant, c'est un vrai, c'est des données du monde réel. Donc on va rencontrer des problèmes du monde réel avec ça. Nos premiers résultats n'auront pas l'air bien, alors nous allons passer un peu plus de temps à essayer de comprendre pourquoi, ce qui est beaucoup. Ce que vous passez votre temps à faire, c'est un spécialiste des données. Corriger ces problèmes et revenir en arrière jusqu'à ce que nous obtenions des résultats. C' est logique. Et enfin, eh bien, faire réellement le filtrage collaboratif basé sur l'élément utilisateur dans son intégralité, où nous recommandons réellement des films aux individus en fonction de leur propre comportement. Alors faisons ça. Commençons. C' est donc le filtrage collaboratif basé sur l'élément. Une merveilleuse idée de gens beaucoup plus intelligents que moi. Mais, vous savez, il a ses origines chez Amazon, ce qui est plutôt cool. Comme vous pouvez le voir, il corrige beaucoup de lacunes du filtrage collaboratif basé sur l'utilisateur, et cela fonctionne très bien. Mettons-le donc en pratique et commençons à écrire du code python pour le faire arriver . 45. Trouver des similitudes de film: Appliquons donc le concept de filtrage Claverie basé sur des éléments pour commencer par des similitudes de films . Découvrez quels films Air similaire à d'autres films en particulier va essayer de comprendre quels films Air similaire à Star Wars sur la base des données d'évaluation des utilisateurs. Et on verra si on s'en sort. Allons plonger dedans. Ok, Alors allons de l'avant et calculons réellement la première moitié du filtrage Collaboration basé sur l'élément, qui est de trouver des similitudes entre les éléments. Dans ce cas, nous allons examiner les similitudes entre les films en fonction du comportement des utilisateurs, et nous allons utiliser des données de notation de Riel du projet de lentille de groupe. Si vous allez à des lignes de groupe dot org qui rend effectivement accessible publiquement à des chercheurs comme nous rial données de cotes de films par des personnes réelles qui utilisent la lentille de film site de travail fille pour évaluer les films et obtenir des recommandations pour de nouveaux films, il que ils veulent regarder. Nous avons donc inclus les fichiers de données dont vous avez besoin à partir de l'ensemble de données des plans de groupe avec le matériel de cours, matériel de cours, et la première chose que nous devons faire est d'importer ces fichiers dans un bloc de données de pandas, et nous allons vraiment voir toute la puissance des pandas dans cet exemple, c'est plutôt cool. Donc la première chose que nous allons faire est d'importer le fichier de données u dot. Ça fait partie de l'ensemble de données des lignes de film. Et c'est un fichier délimité par des tabulations qui contient toutes les notes de l'ensemble de données. Donc, la façon dont cela fonctionne est si même il y avait appelé lire Voir SV sur Pandas affaiblir spécifier un séparateur différent d'une virgule. Dans ce cas, c'est un onglet. Donc, nous disons fondamentalement, Prenez les 3 premières colonnes dans le fichier de données u point et importées dans un nouveau bloc de données avec trois colonnes. L' utilisateur i d. Le film I d. Et la note. Donc, ce que nous finissons ici est le bloc de données qui a une ligne pour chaque utilisateur I D. qui identifie une personne. Et puis pour chaque film qu'ils ont évalué, on a le film I D. Un nouveau raccourci miracle pour un film donné. Donc Star Wars pourrait être un film 53 ou quelque chose comme ça, et ils évaluent, vous savez, 1 à 5 étoiles. Nous avons donc ici une base de données, un bloc de données de chaque utilisateur, et chaque film qu'ils évaluent. Ok, Maintenant, nous voulons pouvoir travailler avec des titres de films afin de pouvoir interpréter ces résultats plus intuitive. Donc on va utiliser leurs noms lisibles par l'homme à la place. Si vous utilisez un ensemble de données vraiment massif, vous direz cela à la fin parce que vous voulez travailler avec des nombres. Ils sont plus compacts pour le plus longtemps possible, mais dans le but de l'exemple, dans l'enseignement gardera les titres autour de vous afin que vous puissiez voir ce qui se passe. Il y a donc un fichier de données séparé avec le statut Movieland qui a appelé You Don Item, et c'est Piper Limited, et les 2 premières colonnes que nous importons seront le film I D et le titre de ce film. Donc maintenant, nous devons les cadres de données sont des appels, a toutes les évaluations des utilisateurs et M appels a tous les titres pour chaque film I D. Et nous pouvons utiliser cette fonction de fusion magique dans les pandas pour le mush complètement. Ce qu'on finit avec, c'est quelque chose comme ça. J' ai été assez rapide, donc nous nous retrouvons avec un nouveau bloc de données qui contient l'utilisateur I D et la note pour chaque film que l'utilisateur a évalué et nous avons à la fois un film I D et le titre que nous pouvons lire et voir ce qu'il est vraiment. Donc, la façon de lire ceci est d'utiliser votre I.D. I.D. Numéro 308 Lire une histoire de jouets quatre étoiles utilisateur I D à 87 Radio Toy Story, cinq étoiles et ainsi de suite et ainsi de suite. Et si nous devions continuer à regarder de plus en plus l'état du cadre, nous voyons différentes évaluations pour différents films comme nous le faisons maintenant, la vraie magie de Pandas entre en jeu. Donc, ce que nous voulons vraiment, c'est d'examiner les relations entre les films en fonction de tous les utilisateurs qui ont regardé chaque paire de films. Nous avons donc besoin à la fin de la matrice de chaque film et chaque utilisateur et toutes les notes que chaque utilisateur a donné à chaque film et la commande de tableau croisé dynamique dans la culotte. Viens faire ça pour nous. Il peut fondamentalement construire une nouvelle table à partir d'un bloc de données donné à peu près n'importe quelle façon que vous le voulez. Donc, ce que nous disons ici, prenez notre cadre de données de lecture ici, et je veux créer un nouveau bloc de données appelé évaluations de films, et je veux que l'index de celui-ci soit l'utilisateur i d s. Donc, nous aurons Ah, ro pour chaque utilisateur i d. et je vais avoir chaque colonne b les titres du film. Donc je vais avoir une colonne pour chaque titre que je rencontre dans ce bloc de données et dans le Sud. Chaque cellule contiendra la valeur d'évaluation si elle existe. Alors allons-y et faisons-le. Et nous nous retrouvons avec un nouveau bloc de données qui ressemble à ce genre d'étonnant comment cela vient de mettre tout ensemble pour nous maintenant ces valeurs n a n qui représente pas un nombre. Et c'est juste comme ça que les pandas indiquent une valeur manquante. Donc, la façon d'interpréter ceci est l'utilisateur I D un, par exemple, n'a pas regardé le film a gagné 900 mais l'utilisateur I d un a regardé 101 Dalmations et l'a lu aux étoiles. Il a raison. Il a gagné également regardé 12 hommes en colère et a classé cinq étoiles, mais n'a pas regardé le film Deux jours dans la vallée, par exemple. Ok, donc ce que nous finissons ici, c'est une matrice clairsemée, gros, qui contient chaque utilisateur et chaque film et à chaque intersection où un utilisateur a évalué un film. Il y a une valeur d'évaluation. Ok, donc vous pouvez voir maintenant nous pouvons très facilement extraire les vecteurs de chaque film que l'utilisateur de l'air a regardé . Et nous pouvons également extraire les vecteurs de chaque utilisateur qui a évalué un film donné, qui est ce que nous voulons. Donc, c'est utile pour le droit de filtrage du clavier basé sur l'utilisateur et l'élément A Si je veux trouver relations entre les utilisateurs, je pourrais regarder les corrélations entre ces utilisateurs rose. Mais si je veux trouver des corrélations entre les films pour le filtrage collaboratif basé sur les éléments, je peux regarder les corrélations entre les colonnes en fonction du comportement de l'utilisateur. Ok, donc c'est là que le rial renversant les choses sur sa tête pour les similitudes basées sur l'utilisateur par rapport à l'élément entre en jeu. Maintenant, nous allons avec le filtrage collaboratif basé sur les éléments, donc nous voulons extraire les colonnes. Alors faisons-le ensuite. Allons de l'avant et extrayons tous les utilisateurs qui ont évalué Star Wars, et nous pouvons voir la plupart des gens ont en fait regardé et lu. Star Wars et tout le monde l'aimait. Donc, au moins dans ce petit échantillon que nous avons pris à la tête du bloc de données, donc nous nous retrouvons avec un ensemble résultant ici d'ID utilisateur et leurs évaluations pour Star Wars. Et c'est un droitier. Trois n'ont pas évalué Star Wars, par exemple, donc nous avions une valeur non numérique indiquant une valeur manquante là-bas. Mais c'est bon. Vous savez, nous voulons nous assurer de préserver ces valeurs manquantes afin de pouvoir comparer directement les colonnes de différents films. Alors comment on fait ça ? Eh bien, Pandas continue à rendre les choses faciles pour nous et a un noyau avec fonction ici que nous pouvons utiliser et qui va effectivement aller de l'avant et corréler une colonne donnée avec toutes les autres colonnes dans le bloc de données et calculer les scores de corrélation et rends-nous cela. Donc ce que nous allons faire, vous entendez des problèmes de base sur l'ensemble du bloc de données des évaluations de films. Il s'agit d'une matrice complète d'évaluations des utilisateurs et des films en corrélation avec la seule colonne Star Wars Readings. Nous allons ensuite laisser tomber tous les résultats manquants avec tomber dans un afin que nous laisse juste avec des éléments qui avaient effectivement une corrélation. Vous savez où il y avait plus d'une personne qui l'a vu, et nous allons créer un nouveau bloc de données basé sur les résultats et examiner les 10 premiers résultats. Donc, encore une fois, juste pour résumer, nous allons construire le score de corrélation entre Star Wars et chaque autre film déposer tout le et pas une valeur numérique afin que nous ayons seulement des similitudes de films qui existent réellement où plus d'une personne l'a cotée. Et nous allons construire un nouveau bloc de données à partir des résultats et regarder les 10 premiers résultats . Et nous y voilà. Nous nous sommes donc retrouvés avec ce résultat de scores de corrélation entre chaque film individuel pour Star Wars. Et vous pouvez voir, par exemple, une partition étonnamment élevée en corrélation avec le film Jusqu'à ce qu'il y avait vous. Une corrélation négative, en fait, avec le film 1 900 une corrélation très faible avec 101 Dalmations. Donc maintenant, tout ce qu'on devrait faire, c'est trier ça par partition de similarité, et on devrait avoir le top film symbolise Star Wars, non ? Allons-y et faisons-ça. Il suffit d'appeler l'ordre sur le bloc de données résultant. Un Ken Pandas le rend vraiment facile, et nous pouvons dire ascendant égal à faux pour réellement le faire trié dans l'ordre inverse par corrélation Score. Alors faisons ça. Ok, donc Star Wars est sorti assez près du sommet parce que Star Wars est similaire à lui-même. Mais c'est quoi toutes ces autres choses ? Qu' est ce que diable ? Homme à pleine vitesse de l'année hors hors-la-loi. Ce sont tout ce que vous savez, films assez obscurs que la plupart d'entre eux je n'ai jamais entendu parler. Et pourtant, ils ont des corrélations parfaites avec Star Wars. C' est un peu bizarre. Donc, évidemment, on fait quelque chose de mal ici. Qu' est-ce que ça pourrait être ? Parlons de ça dans notre prochaine conférence. s'avère qu'il y a une explication parfaitement raisonnable, et c'est une bonne leçon et pourquoi vous devez toujours examiner vos résultats lorsque vous avez terminé avec des données avec n'importe quelle tâche de science des données. Mettez en question les résultats parce que souvent il y a quelque chose que vous avez manqué. Il peut y avoir quelque chose que vous devez nettoyer dans vos données. C' est peut-être quelque chose que tu as mal fait. Vous devriez également toujours avoir l'air sceptique. Vos résultats ne les prennent pas simplement sur la foi. D' accord ? Si vous le faites, vous allez avoir des ennuis parce que nous les présentons comme des recommandations aux gens qui aiment Star Wars, je me ferais virer, ne me ferais pas virer, faites attention, les résultats . Alors plongons dans ce qui s'est mal passé lors de notre prochaine conférence. C' est donc notre premier filtrage collaboratif basé sur les fissures et les éléments et la recherche d'un film. similitudes basées sur le comportement de l'utilisateur et les résultats initiaux ne sont vraiment pas si grandes. Mais il s'avère qu'il y a une explication parfaitement rationnelle pour expliquer pourquoi, d'une manière parfaitement simple pour en rendre compte. Alors plongons dans ce qui s'est mal passé et réparons ça. 46. Améliorer les résultats de la similitude de film: Donc, comme vous vous en souvenez, nos premiers résultats pour un film similaire à Star Wars, utilisant des techniques de filtrage collaboratif basées sur des éléments n'ont pas été si bons. Voyons pourquoi et voyons si on peut y remédier. Voyons ce qui s'est mal passé avec nos similitudes de films. Là, nous sommes passés par tout ce travail passionnant à très facilement avec des pandas. Calculer les scores de corrélation entre les films en fonction de leurs vecteurs de notation utilisateur et des résultats que nous avons eu un peu sucés. Alors rappelez-vous nous avons cherché des films qui ressemblent à Star Wars en utilisant cette technique, et nous avons fini avec un tas de recommandations bizarres en haut. Cela avait une corrélation parfaite, et la plupart d'entre eux sont des films très obscurs. Alors que croyez-vous qu'il se passe là ? Eh bien, une chose qui pourrait avoir du sens est, disons que nous avons beaucoup de gens qui regardent Star Wars et un autre film obscure. Tu sais, on finit avec une bonne corrélation entre qui et ces deux films parce qu'ils sont liés par Star Wars. Mais à la fin de la journée, voulons-nous vraiment fonder nos recommandations sur le comportement d' voulons-nous vraiment fonder nos recommandations sur le comportement d' une ou deux personnes qui regardent un film obscur ? Probablement pas. Je veux dire, oui, les deux personnes dans le monde ou quoi que ce soit qui regardent le film à pleine vitesse et tous les deux ont aimé en plus de Star Wars. C' est peut-être une bonne recommandation pour eux, mais ce n'est probablement pas une bonne recommandation pour le reste du monde. Vous savez, nous devons avoir un certain niveau de confiance dans nos similitudes en imposant une limite minimale du nombre de personnes qui ont regardé un film donné. Vous savez, nous ne pouvons pas juger qu'un film donné est bon pour espacer le comportement d'une ou deux personnes. Essayons donc de mettre cette idée en action ici. Donc ce qu'on va faire, c'est jeter un oeil, essayer d'identifier les films qui n'ont pas été évalués par beaucoup de gens à ce sujet. Il suffit de les jeter dehors, d'accord et de voir ce qu'on obtient. Donc pour ce faire, nous allons prendre notre cadre de données d'évaluation d'origine, et nous allons dire groupe par titre à nouveau. Pandas a toutes sortes de magie dedans, et cela va fondamentalement crypter construire un nouveau cadre de données qui regroupe toutes les lignes pour un titre donné en une seule ligne, et nous pouvons dire que nous voulons agréger spécifiquement sur la note et nous voulons montrer à la fois la taille, le nombre de notes pour chaque film et le score moyen la note moyenne pour ce film. Donc quand on fait ça, quand c'était quelque chose comme ça. Cela nous dit, par exemple, pour le film 101 Dalmations, 109 personnes ont évalué ce film, et leur note moyenne était de 2,9 étoiles. Donc, pas si grand que ça. Vraiment ? Donc tu le sais. Si on regarde juste ces données, on peut dire OK, eh bien, Movie a dit, je considère obscure comme 1 87 avait 41 évaluations, mais 101 Dalmations. J' en ai entendu parler. Tu sais, 12 hommes en colère dont j'ai entendu parler. On dirait qu'il y a une sorte de valeur de coupure naturelle à environ 100 cotes où c'est peut-être la valeur magique où les choses commencent à avoir du sens. Alors, allons-y et débarrassons des films évalués par moins de 100 personnes. Et oui, vous savez, je fais ça intuitivement à ce stade, comme nous en parlerons plus tard. Il y a plus de façons de le faire. On pourrait vraiment expérimenter. Vous entraînez des expériences de tests sur différentes valeurs de seuil pour trouver celui qui fonctionne réellement le mieux. Mais au départ, utilisons notre bon sens et filtrons les films qui ont été accueillis par moins de 100 personnes. Encore une fois, Pandas rend cela très facile à faire. Donc on pourrait juste dire des films populaires. Une nouvelle image de données va être construite en regardant les statistiques de film, et nous allons seulement prendre Rose digne. La taille de l'évaluation est supérieure ou égale à 100 et je vais ensuite trier cela par une note moyenne juste pour le plaisir, voir les films les mieux notés, largement regardés. Tu sais, je reçois cet avertissement maintenant. Depuis que j'ai créé ce cours, une nouvelle version de Panis est arrivée. Vous pouvez simplement utiliser des valeurs de soulignement de tri là, et cela fonctionnera tout aussi bien, pas d'avertissement. Va-t'en et on finit avec ça. Donc, vous savez, nous avons fondamentalement ici une liste de films qui ont été perquisitionnés par plus de 100 personnes triées par leur score moyen, et cela en soi est un système de recommandation er films populaires hautement cotés. Un rasage de près était apparemment un très bon film, et beaucoup de gens l'ont lavé, et ils l'ont vraiment aimé. Encore une fois, il s'agit d'un ensemble de données très ancien datant de la fin des années 90. Donc, même si vous n'êtes pas, peut ne pas être familier avec le film un rasage de près, il pourrait être utile de revenir en arrière et redécouvrir ajouté à votre Netflix ici, quelle que soit la liste de Schindler. Pas une grande surprise là qui vient sur le haut de la plupart des top listes de films Le mauvais pantalon. Un autre exemple d'un film obscure qui, apparemment, était vraiment bon. Et c'était aussi très populaire. Donc quelques découvertes intéressantes là-bas déjà. Juste en faisant ça, c'est que les choses ont l'air un peu mieux maintenant. Allons donc de l'avant et faisons fondamentalement notre nouveau bloc de données de films de recommandations Star Wars similaire à Star Wars, où nous ne basons que sur les films qui apparaissent dans ce nouveau bloc de données. Donc nous allons utiliser l'opération conjointe pour aller de l'avant et rejoindre notre bloc de données original, similaire, à cette nouvelle image de données de films Onley qui ont plus de 100 évaluations. Ok, donc nous créons un nouveau bloc de données basé sur des films similaires où nous extrayons la colonne Similarité . Joignez-vous à cela avec nos statistiques de films. State of Frame, qui est notre film populaire State of Frame, et nous allons regarder les résultats de la combinaison et nous y allons. Donc maintenant, nous avons limité uniquement aux films qui ont été évalués par plus de 100 personnes. Le score de similitude avec Star Wars. Donc maintenant, tout ce qu'il nous faut faire, c'est mieux. Reprends cet avertissement. Oui, vous permet de trier les valeurs au lieu de trier inversement triées, et nous allons juste jeter un oeil aux 15 premiers résultats. Et, hé, ça commence à paraître un peu mieux. Donc Star Wars sort sur le dessus parce qu'il est similaire à lui-même. Empire frappe en arrière. C' est le numéro deux, tournez à droite les yeux de jet numéro trois Raiders de l'Arche Perdue. Numéro quatre. Tu sais que ce n'est toujours pas parfait, mais ça a beaucoup plus de sens, non ? Vous pouvez donc vous attendre à ce que les trois films Star Wars de la trilogie originale soient similaires les uns aux autres. L' état auquel il remonte avant les trois prochains films et Raiders of the Lost Ark, aussi un Ruby très similaire à Star Wars dans le style sort, c'est le numéro quatre. Je commence donc à me sentir un peu mieux à propos de ces vrais résultats. Il y a encore de la place à l'amélioration. Mais, hé, on a des résultats qui ont du sens. Qui maintenant, idéalement, nous filtrons aussi Star Wars. Vous ne voulez pas regarder les similitudes avec le film lui-même dont vous avez commencé, mais vous inquiétez à ce sujet plus tard. Donc, si vous voulez jouer un peu plus comme je l'ai dit, 100 était la parole d'une coupure arbitraire pour le nombre minimum de notes. Si vous voulez expérimenter avec différentes valeurs de coupure, je vous encourage à revenir en arrière et à le faire Voir ce que cela fait pour les résultats. Vous savez, vous pouvez voir ici que les résultats que nous aimons vraiment avaient en fait beaucoup plus de 100 évaluations en commun. Donc, avec Austin Powers arrive assez haut avec seulement 130 notes, donc peut-être que des centaines n'est pas assez élevé. Pinocchio est resté à 101 pas très similaire à Star Wars, donc vous pourriez envisager un seuil encore plus élevé là-bas et voir ce qu'il fait. Alors gardez à l'esprit ceci est un très petit ensemble de données limité que nous utilisons à des fins d'expérimentation, et il est basé sur des données très anciennes ici, ne va voir que des films plus anciens. Donc, vous savez, interpréter ces résultats intuitivement peut être un peu difficile en conséquence, mais pas de mauvais résultats. Donc, passons à autre chose et faisons réellement un filtrage collaboratif basé sur l'élément complet. Nous recommandons à l'utilisateur de recommander des films aux personnes utilisant un système plus complet fera cela ensuite , sorte que l'apparence est beaucoup mieux. Tu as toujours besoin de travailler. Méfiez-vous des relations fausses, donc il y a un certain degré de confiance ou de soutien que vous devriez avoir. Lorsque vous examinez les relations dans les données et que vous appliquez ce seuil minimum de prise en charge, nous avons obtenu des résultats bien meilleurs et plus raisonnables. Si bonne leçon à apprendre là-bas. Passons au niveau supérieur et faisons réellement un nuage ou un filtrage complet basé sur les éléments et produit des recommandations pour un utilisateur entier en fonction de leur historique entier. Et nous pouvons construire un système qui pourrait le faire pour n'importe quel utilisateur de notre ensemble de données. Nous le ferons ensuite 47. Faire des recommandations de film aux gens: Ok, construisons en fait un système complet de recommandation er qui peut regarder toutes les informations de comportement de tout le monde et quels films ? Ils le lisent sur chaque film et l'utilisent pour produire les meilleurs films de recommandation pour n'importe quel utilisateur donné dans notre ensemble de données un peu incroyable, et vous serez surpris à quel point c'est simple. Allons-y. Ok, allons tout mettre ensemble et en fait faire un filtrage de collaboration basé sur l'élément complet où nous pouvons recommander des films pour n'importe quel utilisateur basé sur tout le comportement de ce que tout le monde a évalué chaque film. C' est incroyable ? Ce qui est vraiment incroyable, c'est la simplicité des pandas. Alors passons à travers ça. Ok, donc commençons par importer l'ensemble de données de l'objectif de film que nous avons à nouveau. Nous utilisons un sous-ensemble qui ne contient que 100 000 évaluations pour l'instant. Mais il existe des ensembles de données plus volumineux que vous pouvez obtenir du groupe Lynn Stott ou aller jusqu'à des millions de notes si vous êtes si enclins. Gardez à l'esprit, cependant, quand vous commencerez à traiter ce gros volume de données, vous allez repousser les limites de ce que vous pouvez faire dans une seule machine dans ce que les pandas peuvent gérer. Donc, vous savez, j'ai d'autres cours sur des techniques comme l'étincelle et la réduction de la carte qui peuvent gérer des recommandations à plus grande échelle. Donc, si vous êtes curieux, allez les voir. Mais pour l'instant, travaillons avec ça. Donc, comme avant, nous allons importer le fichier de données u dot qui contient toutes les évaluations individuelles pour chaque utilisateur quel film ils ont attaqué. Et puis on va lier ça avec le titre du film pour ne pas travailler avec le nouveau film Miracle. I DS. Allez-y et faites cela, et nous finissons avec cette façon de bloc de données pour lire ceci. Par exemple, l'utilisateur I D 308 évalué Toy Story quatre étoiles et l'utilisateur I D 66 a évalué Toy Story trois étoiles, et cela contiendrait chaque évaluation pour chaque utilisateur pour chaque film et encore, comme avant, nous avons utilisé le merveilleux et pandas pour construire un nouveau bloc de données. Basé sur cette information où l'index chaque ligne est l'utilisateur, i D. Et les colonnes étaient composées de tous les titres de film uniques dans mon ensemble de données, et chaque cellule contient une lecture. Donc, ce que nous finissons avec est cette matrice clairsemée incroyablement utile qui contient des utilisateurs pour chaque ligne et des films pour chaque colonne. Et nous avons essentiellement toutes les évaluations des utilisateurs pour chaque film dans cette matrice. Donc l'utilisateur I D un, par exemple, a donné 101 Dalmations deux étoiles. Et encore une fois, toutes ces Entei se termine. Pas un nombre est représente des données manquantes, sorte que indique juste, par exemple, l'utilisateur i D on n'a pas noté le film gagné 900. Ok, donc encore une fois, orteil de la nature très utile ont. Si nous faisions un filtrage collaboratif basé sur les utilisateurs, nous pourrions calculer des corrélations entre les utilisateurs entre chaque utilisateur individuel du vecteur de notation pour trouver des utilisateurs similaires. Et étant donné que nous faisons basé sur des éléments, filtrage collaboratif était plus de relations entre les étudiants entre les colonnes. Donc, comme faire un score de corrélation entre deux colonnes qui nous donnera un score de corrélation pour une paire de films donnée. Alors comment on fait ça ? Il s'avère que les pandas rendent cela incroyablement facile à faire aussi. Il a une fonction de base intégrée qui calculera réellement le score de corrélation pour chaque altération d' appel trouvée dans la matrice entière. C' est presque comme s'ils pensaient à nous, alors allons-y et lançons ça. C' est une chose assez calculatrice, coûteuse à faire. Il faudra donc un moment pour vraiment revenir avec un résultat. Mais nous l'avons là. Alors qu'est-ce qu'on a ici ? Nous avons ici, un nouveau bloc de données où chaque film est sur la ligne et dans la colonne afin que nous puissions regarder l' intersection de deux films donnés et trouver leur score de corrélation les uns avec les autres en fonction de ces données d'évaluation utilisateur que nous avions apparus à l'origine ? C' est cool ? Ainsi, par exemple, le film 101 Dalmations est parfaitement corrélé avec lui-même,bien sûr, bien sûr, car il a des vecteurs de notation d'utilisateur identiques. Mais si vous regardez 101 Dalmations relation avec le film 12 Angry Men, c'est un score de corrélation beaucoup plus faible parce que ces films air plutôt dissemblables, sens, à droite. Donc, j'ai cette matrice merveilleuse maintenant qui va me donner le score de similitude de deux films l'un à l'autre. C' est un peu incroyable et très utile pour ce que nous allons faire maintenant. Tout comme avant, nous devons faire face à des résultats erronés, donc je ne veux pas regarder les relations qui sont basées sur une petite quantité d' informations de comportement . Il s'avère donc que la fonction de base de pandas a en fait quelques paramètres que vous pouvez lui donner . L' un est la méthode de score de corrélation réelle que vous souhaitez utiliser. Donc je vais dire utiliser la corrélation Pearson. Mais il a aussi un paramètre de périodes hommes que vous pouvez lui donner, et c' est essentiellement dire, je veux seulement que vous considérez les scores de corrélation qui sont sauvegardés par, au moins dans cet exemple, 100 personnes qui ont évalué les deux films et cela permettra de se débarrasser de ces relations fausses qui sont basées sur une poignée de personnes un peu différentes de ce que nous avons fait. Et l'exercice de similitudes d'objets où nous venons de jeter n'importe quel film qui a été attaqué par moins de 100 personnes. Ce que nous faisons ici, c'est de jeter des similitudes avec des films où moins de 100 personnes ont évalué ces deux films. Ok, donc vous pouvez voir maintenant que nous avons beaucoup plus dans les extrémités et la matrice qui en résulte. En fait, même les films que j'étais similaire à eux-mêmes sont jetés dehors. Ainsi, par exemple, le film 1 900 a probablement été regardé par moins de 100 personnes, donc il est juste jeté entièrement 101. Dalmations, cependant, survit avec un score de corrélation d'un, et il n'y a en fait aucun film dans ce petit échantillon de la journée est réglé qui sont différents les uns des autres qui avaient 100 personnes en commun qui regardaient les deux. Mais il y a assez de films qui survivent pour obtenir des résultats significatifs. Alors quoi, nous faisons bien ces données, ce que nous voulons faire est de recommander des films pour les gens. Donc, la façon dont nous faisons cela lorsque nous regardons toutes les évaluations ont été données, personne trouve des films similaires à ceux qu'elle a évalués, et ce sont des candidats ou des recommandations à cette personne. Donc, commençons par créer une fausse personne pour créer des recommandations pour Donc j'ai réellement ajouté un faux utilisateur I. D. Numéro zéro à la ligne de film Statut dit que nous traitons à la main, et ce genre de représente quelqu'un comme moi qui aimait Star Wars et l'Empire frappe en arrière mais détestait les films Gone With the Wind. Donc, cela représente quelqu'un qui aime vraiment Star Wars mais n'aime pas le style ancien sur drames romantiques. Ok, donc j'ai donné une note de cinq étoiles à Empire Strikes dans Star Wars et un début de lecture pour Gone With the Wind. Donc je vais essayer de trouver des recommandations pour cet utilisateur fictif. Alors, comment puis-je faire ça ? Commençons par créer une série appelée SIM Candidats, et je vais passer en revue tous les films que j'évalue. Commençons par créer une série appelée SIM Candidats, Donc, pour moi et Rain zéro à travers le nombre de notes que j'ai dans mes notes, je vais ajouter des films similaires à ceux que j'ai évalués. Donc je vais prendre cette matrice centrale State of Frame, cette magique qui a toutes les similitudes de films. Je vais créer une matrice de corrélation avec mes évaluations baissent, toutes les valeurs manquantes. Et puis je vais mettre à l'échelle le score de corrélation qui en résulte en fonction de la façon dont j'ai évalué ce film . Donc, l'idée ici est que je vais passer en revue toutes les similitudes pour les grèves de l'Empire , par exemple, et je vais les échelonner tous de cinq parce que j'ai vraiment aimé les grèves de l'Empire en arrière. Mais quand je passe à travers et obtenir les similitudes pour parti avec le vent, je vais seulement les mettre à l'échelle par un parce que je n'ai pas aimé Vent avec le vent. Donc, cela donnera plus de force aux films qui sont similaires aux films que j'ai aimé et moins force à deux films similaires qui sont similaires à des films que je n'ai pas aimé. Ok, donc je viens juste de passer en revue et d'établir cette liste de candidats à la recommandation de candidats à la similarité . Si vous voulez trier les résultats et le sortir, Voyons ce qu'on obtient. Hey, ça n'a pas l'air trop mauvais, non ? Donc évidemment l'Empire frappe de retour dans Star Wars sortir sur le dessus parce que j'aime ces films explicitement. Je les ai déjà regardés et le taux d'entre eux, mais bouillonnant jusqu'au sommet de la liste est revenu au Jet I, ce que nous nous attendons, et aux Raiders de l'Arche Perdue. Commençons donc à affiner un peu plus ces résultats. Nous voyons que nous récupérons des valeurs en double, donc si nous avons un film semblable à plus d'un film que j'ai évalué, il reviendra plus d'une fois dans les résultats. Nous voulons donc les combiner ensemble. Donc, si je n'ai en fait le même retour de film des Jedi, par exemple, avec similaire à la fois Star Wars et l'Empire frappe de retour. Peut-être que cela devrait être additionné dans un combiné, recommandations plus fortes. Score. Allons-y et faisons-le. Nous allons utiliser le groupe par commande à nouveau pour regrouper toutes les routes qui sont pour le même film, et nous allons résumer là-haut. Corrélation scores et regarder les résultats. Hey, ça a l'air très bien. Donc, le retour des Jedi sort sur le dessus, comme il se doit, avec un score de sept Raiders de l'Arche Perdue, une seconde et cinq. Et puis nous commençons à aller à Indiana Jones et Last Crusade et quelques autres films. Pont sur la rivière Kwai Retour à l'avenir de la Sting. Ce sont tous des films que j'aimerais regarder. Tu sais, en fait, j'aime les films Disney de la vieille école, aussi. Donc ce n'est pas aussi fou que ça puisse paraître. Donc, la dernière chose que nous devons faire est de filtrer les films que j'ai déjà cotés parce qu'ils n'ont pas accès à recommander des films que vous avez déjà vus, donc je peux supprimer toutes les lignes qui se trouvent dans mes notes d'origine. Siri regarde les 10 meilleurs résultats. Là, nous l'avons. Retourne le jet. Je rends les rayons de l'Arche Perdue. Indiana Jones Tous les meilleurs résultats pour mon utilisateur fictif, et ils ont tous du sens de voir quelques films familiaux. Tu sais, Cendrillon était DeVos Dumbo ? Probablement basé sur la présence de Gone avec le vent là-dedans, même si elle a été pondérée mot qu'il est toujours là dedans. C' est toujours compté, et là nous avons nos résultats. Donc là, vous l'avez assez cool. Nous avons effectivement généré des résultats, des recommandations pour donner à l'utilisateur, et nous pourrions le faire pour n'importe quel utilisateur dans l'ensemble de notre bloc de données. Alors allez-y, jouez que si vous voulez ensuite, Je veux parler de la façon dont vous pouvez obtenir vos mains sales petit peu mawr et jouer avec ces résultats essayer d'améliorer sur eux. Très bien, je suis plutôt excité par ces résultats jusqu'à présent. Ils ont l'air vraiment raisonnable. Il y a de la place à l'amélioration, , et ce sera mon défi pour vous lors de notre prochaine conférence. Nous allons parler de quelques façons que vous pourriez réellement étendre et construire sur ce bloc-notes python et en fait faire de meilleures recommandations de film que ce que je vous ai donné pour commencer . Il y a donc un peu d'art à ça. Vous savez, vous devez continuer à itérer et essayer différentes idées et techniques jusqu'à ce que vous obteniez de meilleurs résultats. Et vous pouvez le faire à peu près pour toujours. Je veux dire, j'en ai fait toute une carrière, donc je ne m'attends pas à ce que tu passes la prochaine fois, 10 ans à essayer de peaufiner ça comme je l'ai fait. Mais il y a des choses simples que vous pouvez faire, alors parlons de ça. 48. Améliorer les résultats du Recommender: donc, à titre d'exercice, je tiens à vous mettre au défi d'aller faire encore mieux ces recommandations. Parlons de quelques idées que j'ai, et peut-être que tu auras des vôtres pour ça. Vous pouvez réellement essayer et expérimenter, se salir les mains et essayer de faire de meilleures recommandations de film. Ok, donc il y a beaucoup de place pour l'amélioration. Pourtant, dans ces résultats de recommandation, alors vous pouvez voir qu'il y a une sorte d'art à elle. Il y a beaucoup de décisions que nous avons prises sur la façon dont les résultats de recommandation diffèrent en fonction de votre évaluation de l'article dont il provient, ou sur le seuil que vous voulez choisir pour le nombre minimum de personnes qui ont évalué les films donnés . Il y a donc beaucoup de choses que vous pouvez modifier beaucoup d'algorithmes différents que vous pouvez essayer, et vous pouvez vous amuser beaucoup en essayant de faire de meilleures recommandations de films hors du système. Donc si vous vous sentez à la hauteur, je vous mets au défi d'y aller et de le faire. Donc, voici quelques idées sur la façon dont vous pourriez réellement essayer d'améliorer les résultats dans cette conférence, sorte que vous pouvez juste aller de l'avant et jouer avec le fichier de cahier cf dot i python basé sur l'élément et bricoler avec lui. Ainsi, par exemple, nous avons vu que la méthode de corrélation avait en fait quelques paramètres pour le calcul de la comp de corrélation YouTube. Nous avons utilisé Pearson dans notre exemple, mais il y en a d'autres que vous pouvez rechercher et essayer. Voyez ce que cela fait pour vos résultats. Nous avons utilisé une valeur de période minimale de 100. Peut-être que c'est trop haut. C' est peut-être trop bas. On l'a choisi arbitrairement. Que se passe-t-il si vous jouez avec ça avec cette valeur ? Si vous deviez baisser cela, par exemple, je m'attendrais à ce que vous voyiez de nouveaux films. Peut-être que vous n'avez jamais entendu parler, mais peut-être encore être une bonne recommandation pour cette personne, ou si vous l'élever plus haut, vous verriez que vous ne savez rien d'autre que des blockbusters. Donc, parfois, vous devez penser à ce que le résultat est que vous voulez hors d'un recommander son système. Y a-t-il un bon équilibre entre montrer aux gens des films dont ils ont entendu parler d'un film qui bouge dont ils n'ont pas entendu parler ? Quelle est l'importance de la découverte de nouveaux films pour ces gens par rapport à la confiance dans le système recommandé en voyant beaucoup de films qu'ils ont entendus. Encore une fois, il y a une sorte d'art à ça. Nous pouvons également améliorer le fait que nous avons vu beaucoup de films dans les résultats qui étaient similaires à Gone With the Wind, même si je n'ai pas aimé Gone with the Wind. Tu sais, on a attendu ces résultats plus bas que les films de similitudes que j'aimais. Mais peut-être que ces films devraient être pénalisés si je détestais autant Gone with the Wind . Peut-être que les similitudes avec Gone With the Wind, comme The Wizard of Oz , devraient être pénalisées et , vous savez, réduites dans leur score au lieu de tout augmenter. C' est donc une autre modification simple que vous pourriez faire et jouer avec. Il y a probablement des valeurs aberrantes dans notre ensemble de données d'évaluation des utilisateurs. Et si nos orteils jetaient des gens qui ont attaqué une quantité ridicule de films, peut-être qu'ils faussent tout ? Vous pourriez essayer d'identifier ces utilisateurs et de les jeter comme une autre idée. Et si vous voulez vraiment un grand projet, si vous voulez vraiment vous enfoncer les dents dans ce truc, vous pouvez réellement évaluer les résultats de cette recommandation mais moteur recommandé en utilisant les techniques de test formé. Que se passe-t-il si, au lieu d'avoir un score de recommandation arbitraire qui résume la corrélation, scores de chaque film individuel ont réellement réduit cela à une évaluation prédite pour chaque film donné. Donc, si la sortie de mon système de recommandation er étaient film et ma note prédite pour ce film dans un système de test de train, je pourrais effectivement essayer de comprendre comment puis-je prédire les films que cet utilisateur a en fait , regardé et le lire avant ? Ok, donc je pourrais, genre, mettre de côté certaines données d'évaluation et voir à quel point mon système recommandé est capable de prédire. Les évaluations des utilisateurs étaient ces films, et ce serait un moyen quantitatif et principal de mesurer l'erreur de ceci. Recommande son moteur. Mais encore une fois, il y a un peu plus d'art qu'une science à cela. Même si le prix Netflix a effectivement utilisé cette zone, métrique appelée Route Me signifie des erreurs au carré. Ce qu'ils avaient l'habitude d'être assez particulier est que vraiment une mesure d'un bon système de recommandation er . Fondamentalement, vous mesurez la capacité de votre système de recommandation er pour prédire les évaluations des films qu'une personne a déjà regardé, mais n'est pas le but d'un moteur recommandé pour recommander des films qu'une personne n'a pas regardé qu'ils pourraient apprécier ? Il y a deux choses différentes. Donc, malheureusement, pas très facile de mesurer la chose que vous voulez vraiment mesurer. Donc, parfois, vous devez aller avec votre instinct intestinal et la bonne façon de mesurer les résultats d'une recommandation. Son moteur est de mesurer les résultats que vous essayez de promouvoir à travers elle. Peut-être que j'essaie d'amener les gens à regarder plus de films ou de grands nouveaux films plus haut ou à acheter plus de choses. Exécuter des expériences contrôlées réelles sur un site Web réel serait la bonne façon d'optimiser pour cela, au lieu d'utiliser des tests formés. Donc, tu sais, j'y suis allé un peu plus de détails que j'aurais dû. Mais la leçon est, vous pouvez toujours penser à ces choses en noir et blanc. Vous savez, parfois vous ne pouvez pas vraiment mesurer les choses directement et quantitativement, et vous devez utiliser un peu de bon sens, et c'est un exemple de cela. Quoi qu'il en soit, voici quelques idées sur la façon de revenir en arrière et d'améliorer les résultats de ce moteur de recommandation er que nous avons écrit. Alors s'il vous plaît n'hésitez pas à bricoler avec. Voyez si vous pouvez l'améliorer. Cependant, vous le souhaitez et vous amuser avec elle. C' est en fait une partie très intéressante du cours, donc j'espère que vous apprécierez. Alors va essayer. Voyez si vous pouvez améliorer nos résultats initiaux. Là. Il y a quelques idées simples pour essayer d'améliorer ces recommandations et d'autres beaucoup plus compliquées, aussi. Il n' y a pas de bonne ou de mauvaise réponse. Je ne vais pas te demander de retourner ton travail, et je ne vais pas revoir ton travail. Vous savez, vous suffit de jouer avec elle et de vous familiariser avec elle et d'expérimenter et voir quels résultats vous obtenez. C' est tout le point juste pour vous familiariser avec l'utilisation de python pour ce genre de chose et vous familiariser avec les concepts derrière le filtrage collaboratif basé sur les éléments. Alors amusez-vous un peu avec ça. Tu vois ce que j'ai trouvé ? Si vous obtenez de très bons résultats, assurez-vous de poster ceux pour tous nos autres étudiants à voir dans les discussions ici je serais curieux de voir ce que vous venez avec. Donc, avoir à elle 49. K-Nearest-Neighbors: : concepts: Parlons d'autres techniques d'exploration de données et d'apprentissage automatique que les gens s'attendent à ce que vous sachiez. Nous allons commencer par un très simple appelé K voisins les plus proches Air Cannon pour court. Et vous serez surpris de voir à quel point une bonne technique d'apprentissage automatique supervisé peut être simple . Jetons un coup d'oeil. Parlons donc d'autres techniques d'apprentissage automatique d'exploration de données que les employeurs s'attendent à ce que vous sachiez sur quelques autres techniques que nous n'avons pas encore couvertes. L' un des plus simples est appelé K voisins les plus proches, alors commençons par cela. Ça a l'air de fantaisie, mais c'est en fait l'une des techniques les plus simples. L' idée est, disons que vous avez un nuage de points et que vous pouvez calculer la distance entre deux points sur ce tracé Skylar, non ? Donc, l'idée de K voisins les plus proches est Disons que vous avez un tas de données que vous avez déjà classées, que vous pouvez former le système à partir de si j'ai un nouveau point de données. Tout ce que je fais est de regarder les K voisins les plus proches en fonction de cette mesure de distance et de les laisser tous voter sur la classification de ce nouveau point. Alors prenons l'exemple ici. Imaginons que cet intrigue de dispersion est en train de tracer des films, et peut-être que les Blue Squares représentent des films de science-fiction, et les triangles rouges représentent des films dramatiques. Ok, et peut-être que c'est le calcul des notes par rapport à la popularité ou tout ce que vous pouvez imaginer. Nous avons donc une sorte de distance que nous pouvons calculer en fonction de l'évaluation et de la popularité entre deux points sur le nuage de points. Disons qu'un nouveau point arrive dans un nouveau film que nous ne connaissons pas le John R. Four. Mais nous pourrions faire est de dire, Mettons K 23 et prenons les trois voisins les plus proches à ce point sur le nuage de dispersion. Ils pourront tous voter sur les classifications afin que vous puissiez voir si je prends les trois voisins K les plus proches . Je dois des films dramatiques et un film de science-fiction, et je les laisserais alors tous les votes et nous choisirions la déclassification du drame pour ce nouveau point basé sur ce que ces trois voisins les plus proches. Maintenant, si je devais élargir ce cercle pour inclure cinq voisins les plus proches K sur cinq, j'aurai une réponse différente. Donc, dans ce cas, je ramasse trois science-fiction dans des films dramatiques Si je les laissais tous voter, je finirais juste avec une classification de science-fiction à la place, sorte que vous pouvez voir que le choix de K peut être très important. Vous voulez vous assurer qu'il est assez petit pour ne pas avoir à aller trop loin et devenir Commencez à ramasser vos voisins pertinents, mais il doit être assez grand pour et fermer suffisamment de points de données pour obtenir un échantillon significatif si souvent vous devrez utiliser un test formé ou une technique similaire pour déterminer réellement quelle valeur de K est pardonnée. Ensemble de données. Mais à la fin de la journée, vous devez commencer votre intuition et travailler à partir de là. C' est tout ce qu'il y a. C' est aussi simple que ça. Donc, même si c'est une technique très simple, comment allez-vous ? Est littéralement prendre DK voisins les plus proches sur un nuage de points et les laisser tous voter sur la classification. Il qualifie un apprentissage supervisé parce qu'il utilise les données de formation d'un ensemble de points connus et de classifications connues pour éclairer la classification d'un nouveau point. Mais faisons quelque chose d'un peu plus compliqué avec elle et jouons avec des films basés uniquement sur leurs métadonnées. Voyons donc si nous pouvons réellement trouver les voisins les plus proches d'un film basé uniquement sur les valeurs intrinsèques de ces films de que les évaluations pour le John ou les informations pour cela . Donc, en théorie, nous pourrions recréer quelque chose de similaire aux clients qui ont regardé. Laver aussi, Vous savez, c'est une capture d'écran d'Amazon dot com. Juste en utilisant la canne voisins les plus proches et je pourrais aller un pas plus loin. Une fois identifié les films qui sont similaires à un film donné basé sur l' algorithme K voisins les plus proches , je peux les laisser tous voter sur une évaluation prédite pour ce film. C' est ce que nous allons faire dans notre prochain exemple. Allons-y. Donc, là, vous avez les concepts de Can et K voisins les plus proches. Allons de l'avant et appliquons cela à un exemple de recherche de films similaires les uns aux autres et d'utilisation de ces films voisins les plus proches pour prédire la note d'un autre film que nous n'avons pas vu auparavant. 50. Utiliser KNN pour prédire une liste pour un film: Très bien, nous allons prendre l'idée simple des voisins les plus proches de Cayenne NK et l'appliquer à un problème plus compliqué. Et c'est prédire la note d'un film, compte tenu de son genre et des informations de lecture. Alors nous allons plonger dans et faire que nous allons nous amuser avec K et N et essayer de prédire les évaluations de films juste en fonction de l'algorithme K plus proche voisins et voir où nous en arrivons. Donc, si vous voulez suivre le long, allez-y et ouvrez le cahier Python haut canon et vous pouvez jouer avec moi. C' est ce que nous allons faire, c'est définir une mesure de distance entre les films juste en fonction de leurs métadonnées et de leurs métadonnées, juste moi et des informations qui sont intrinsèques aux informations du film associées au film. Plus précisément, nous allons examiner les classifications de genre du film. Chaque film de notre ensemble de données Lens contient des informations supplémentaires sur ce à quoi il appartient , et un film peut appartenir à plus d'un genre. Un tirage au sort est quelque chose comme la science-fiction ou le drame ou la comédie. Vous savez ce que vous avez animé des films, et nous allons également examiner la popularité globale du film donné par le nombre de personnes qui l'ont perquisitionné. Et nous connaissons aussi la note moyenne de chaque film. Donc, je peux combiner toutes ces informations ensemble pour créer fondamentalement une métrique de distance entre deux films juste basée sur l'information de notation et john ou information. Alors voyons ce que nous obtenons. Nous utilisons donc à nouveau des pandas pour simplifier la vie. Et si vous suivez à nouveau, assurez-vous de changer le chemin d'accès aux données des lignes de film à l'endroit où vous l'avez installé, ce qui ne sera certainement pas ce qui est dans ce bloc-notes python. Alors allez-y et changez ça. Si vous allez suivre comme avant, nous allons juste importer le fichier de données de notes réelles lui-même, qui est que vous pointez les données en utilisant la fonction See SV lecture et Pandas, où jusqu'à ce qu'il ait réellement un onglet, délimité ou pas, une virgule. Et nous allons importer les 3 premières colonnes, qui représentent l'utilisateur I d film I D et la note pour chaque évaluation de film individuelle dans notre ensemble de données. Alors, nous allons de l'avant et regardons le dessus. On peut voir que ça marche. Nous nous retrouvons avec un cadre de données qui a l'utilisateur I. D. Idée de film et note, par exemple, l'utilisateur I D évalué film I D 50 qui je crois est Star Wars, cinq étoiles et ainsi de suite et ainsi de suite. Donc, si vous voulez obtenir des informations agrégées sur le film d'évaluation atteint, c'est la prochaine chose que nous devons comprendre. Nous allons donc utiliser le groupe par fonction dans Pandas pour regrouper tout par idées de film . Donc nous allons combiner ensemble toutes les notes atteignant chaque film, et nous allons mettre le nombre de notes et le score moyen qui signifie pour chaque film. Alors allons de l'avant et faire ça revient assez vite. Donc, cela nous donne un autre cadre de données qui nous dit, par exemple, film I D un avait 452 notes, ce qui est une mesure de sa popularité. Combien de personnes l'ont regardé et l'ont perquisitionné et une note moyenne de 3,8. Donc, 14 52 personnes ont regardé le film I D un, et ils lui ont donné une évaluation moyenne de 3,87 ce qui est assez bon maintenant. Le nombre brut de notes n'est pas si utile pour nous ? Je veux dire, je ne sais pas, 452 veut dire que c'est populaire ou pas. Donc, pour normaliser que ce que nous allons faire est fondamentalement mesurer cela contre le nombre maximum et minimum de notes atteindre film. Et nous pourrions le faire en utilisant cette petite fonction lambda ici afin que nous puissions appliquer une fonction à un bloc de données entier de cette façon et nous allons faire est d'utiliser les fonctions NUM Pie Min et Max pour trouver le nombre maximum de notes dans le nombre minimum de notes trouvées dans l' ensemble des données. Donc, nous allons prendre le film le plus populaire dans le film le moins populaire et trouver la gamme là-bas et normaliser tout par rapport à cette gamme. Donc, ce que cela nous donne, nous l'exécutons. C' est essentiellement une mesure de popularité pour chaque film sur une échelle de 0 à 1. Donc un score de zéro ici signifierait que personne ne l'a regardé. C' est le film le moins populaire, et un score d'un signifierait que tout le monde l'a regardé. C' est le film le plus populaire où il est spécifiquement le film le plus populaire, le film que le plus populaire a regardé. Ok, donc nous avons une mesure de la popularité du film maintenant qu'on peut utiliser pour notre distance. Métrique. Suivant. Extraits des informations de Jonah. Il s'avère donc qu'il existe un fichier d'élément Utah qui contient non seulement les noms des films, mais aussi tous les genres auxquels chaque film appartient. Donc, ce petit morceau de code va réellement passer par. Chaque ligne de votre point point point fait cela de la manière difficile que nous n'utilisons pas. Vous savez que tous les dysfonctionnements panoramiques allaient juste utiliser un python cette fois encore, Assurez-vous de changer ce chemin à l'endroit où vous avez installé ces informations. Donc, nous allons ouvrir notre fichier de points, et ensuite nous allons écrire à travers chaque ligne dans le fichier une à la fois, Russ, enlever la nouvelle ligne à la fin et la diviser en fonction du tuyau. Les limiteurs dans ce fichier et nous allons extraire le film I D. Le nom du film et tous les champs de genre individuels. Donc, fondamentalement, il y a un tas de zéros et de ceux dans 19 champs différents dans la portée des données source . L' un de ces champs représente un genre donné, alors voyons à quoi cela ressemble, et nous allons construire un dictionnaire python à la fin qui mappe le film I DS à leurs noms, genres, et ensuite nous allons aussi retourner dans nos informations de notation. Donc, nous aurons nommé la popularité du genre sur une échelle 01 et la note moyenne. C' est donc ce que fait ce petit extrait de code. Laissons ça et juste pour voir ce que nous finissons avec, nous pouvons extraire la valeur du film I. D. One, qui se trouve être Toy Story. Il sera film Pixar de 1995 que vous avez probablement entendu parler, et ce que nous avons dans notre dictionnaire est pour l'entrée. Un coup, le I D Won. Le nom est Toy Story. Voici une liste de tous les genres où un zéro indique qu'il ne fait pas partie de ce genre, et on indique qu'il fait partie de ce genre. Et il y a un fichier de données dans l'ensemble de données de l'objectif vidéo qui vous indiquera à quoi chacun de ces John ou Fields correspond réellement. Mais pour nos besoins, ce n'est pas vraiment important, non ? Nous essayons juste de mesurer la distance entre les films en fonction de leur genre, donc tout ce qui compte mathématiquement, c'est à quel point ce vecteur de genres est similaire à un autre film . Ok, le vrai Jonah est eux-mêmes. Pas important. On veut juste voir à quel point deux films sont identiques ou différents. Et là, John ou les classifications de coûts. Donc vous avez ce John Relist. Nous avons le score de popularité que nous avons calculé, et nous avons là la moyenne ou la moyenne de Toy Story. Allons donc de l'avant et voyons comment combiner toutes ces informations ensemble dans une mesure de distance . Donc, nous avons confiné les K voisins les plus proches pour une histoire de jouets, par exemple. J' ai donc plutôt calculé arbitrairement cette fonction de distance qui prend deux films I DS et calcule un score de distance entre les deux. Et nous allons nous baser tout d'abord sur la similitude, en utilisant une mesure de similarité de signe colique entre les deux Reflecteurs John. Donc, comme je l'ai dit, nous allons juste prendre la liste des genres pour chaque film et voir à quel point ils sont similaires les uns aux autres. Un zéro indique qu'il ne fait pas partie de ce genre. L' un indique que c'est le cas. Nous allons ensuite comparer les scores de popularité et prendre simplement la différence brute valeur absolue de la différence entre ces deux scores de popularité et l'utiliser aussi pour la mesure de distance , et nous allons utiliser cette information seule pour définir la distance entre deux films. Ainsi, par exemple, si nous devions calculer la distance entre les idées de film deux et quatre, cette fonction renverrait une fonction de distance basée sur Lee sur la popularité de ce film et sur les genres de ces des films. Ok, alors imaginez que c'est un nuage de points, si vous voulez, revenez à notre exemple original dans les diapositives où un accès pourrait être une mesure de similitude de genre basée sur la métrique de signe co, l'autre l'accès peut être la popularité. Ok, on trouve juste la distance entre ces deux choses. Donc, pour cet exemple, où nous essayons de calculer la distance en utilisant notre métrique de distance entre les films deux et quatre, nous finissons avec un score de 40,8. Et rappelez-vous, une distance éloignée signifie que ce n'est pas similaire, est-ce pas. Nous voulons les voisins les plus proches avec la plus petite distance. Donc, un score de 0,8 nombre assez élevé sur une échelle de 0 à 1. Donc ça me dit que ces films ne sont vraiment pas similaires. Nous faisons juste un contrôle de santé mentale rapide et voyons ce que sont vraiment ces films. Il s'avère que ce sont les films GoldenEye et Get Shorty, qui sont des films assez différents. Vous savez que vous avez James Bond aventure d'action ici dans un film comique et pas très similaire du tout. Ils sont en fait comparables en termes de popularité. Mais la différence John R. l'a fait. Ok, alors mettons-nous tout ensemble ensuite. On va corriger un peu de code pour prendre un film donné I D et trouver les voisins K les plus proches. Donc, tout ce que nous avons à faire est de calculer la distance entre Toy Story et tous les autres films de notre dictionnaire de films et de trier les résultats en fonction de leur score de distance. Et c'est ce que fait ce petit extrait de code ici. Prenez un moment pour envelopper votre tête autour de lui. C' est assez simple, mais comme nous disons, nous avons une petite fonction get voisins qui prendra le film qui nous intéresse et les K voisins que nous voulons vous trouver analphabètes à travers chaque film que nous avons. Si ce n'est pas le cas, si c'est en fait un film différent de celui que nous regardons, il calculera ce score de distance à partir d'avant un stylo, cela à la liste des résultats que nous avons triés ce résultat et ensuite nous arracherons le K meilleurs résultats. Ok, donc dans cet exemple, on doit prendre le Rosset K à 10. Trouvez les 10 voisins les plus proches. Nous allons trouver les 10 voisins les plus proches en utilisant obtenir des voisins, puis nous allons écrire à travers tous ces 10 voisins les plus proches et calculer la note moyenne pour chacun de chaque voisin. Et cette note moyenne nous informera de notre prédiction de lecture pour le film en question . Et comme effet secondaire, nous obtenons également les 10 voisins les plus proches basés sur notre fonction de distance, que nous pourrions appeler des films similaires. Donc, cette information elle-même est utile. En revenant à ça. Les clients qui ont regardé ont également regardé l'exemple. Si vous voulez faire une fonctionnalité similaire qui était juste basée sur cette mesure de distance et non données de comportement réelles, cela pourrait être un endroit raisonnable pour commencer, non ? Alors allons de l'avant et allons voir si nous finissons avec et si les résultats ne sont pas déraisonnables. Donc, nous utilisons comme exemple du film Toy Story, qui est le film I. D. Un et ce que nous sommes revenus avec pour les 10 voisins les plus proches sont, ah, ah, assez bonne sélection de la comédie et des enfants des films. Donc, étant donné que l'histoire de jouet est une comédie populaire et des films pour enfants. On a un tas d'autres comédies populaires et des films pour enfants, donc ça semble marcher. Nous n'avions pas besoin d'utiliser un tas d'algorithmes de filtrage collaboratifs fantaisistes. Ces résultats ne sont pas si mauvais. Et si nous voulons juste prédire utiliser Cannon pour prédire la cote, où nous pensons à une lecture sont les classifications. Dans cet exemple, nous nous retrouvons avec une note prédite de 3,34 qui n'est pas si différente de la note réelle pour ce film, qui était de 3,87 Donc pas génial. Ce n'est pas trop mal non plus. Je veux dire, cela fonctionne étonnamment bien, étant donné à quel point cet algorithme est simple. La plupart de la complexité dans cet exemple était juste de déterminer notre métrique de distance et, vous savez, nous avons intentionnellement eu un peu de fantaisie là juste pour garder ça intéressant, mais vous pourriez faire tout ce que vous voulez. Donc, si vous voulez jouer avec ça, je vous encourage vraiment à le faire. Notre choix de 10 pour K était complètement hors d'air mince. J' ai inventé ça. Comment le ferais-tu ? Comment cela répond-il à différentes valeurs K ? Vous obtenez de meilleurs résultats avec une valeur plus élevée de K ou avec une valeur inférieure K N'a pas d'importance, Pouvez-vous ? En fait, et moi ? Si vous voulez vraiment orteil faire un exercice plus impliqué, vous pourriez effectivement essayer d'impliquer le test de train pour réellement trouver la valeur K qui peut le plus efficacement prédire la note d'un film donné basé sur kn n, et vous pouvez utiliser juste différent métriques de distance. J' ai un peu inventé que pour jouer autour de la métrique de distance peut peut-être utiliser différentes sources d'information ou de façon que les choses différemment pourraient être chose intéressante à faire. Peut-être que la popularité n'est pas aussi importante que l'information de Jonah. Ou peut-être que c'est l'inverse. Voyez à quel impact cela a des résultats. Alors allez-y et gâchez avec ces algorithmes gâchés avec co. Et courez avec elle et voyez ce que vous pouvez obtenir. Et si vous trouvez un moyen significatif d'améliorer cette part qu'avec vos camarades de classe, cela peut se terminer en action. Donc un concept très simple, mais il peut en fait être assez puissant. Donc là, vous l'avez, et là vous l'avez. Films similaires juste basé sur le genre et la popularité et rien d'autre fonctionne étonnamment bien. Et nous utilisons le concept de peut finir en fait utiliser ces voisins les plus proches pour prédire une note pour un nouveau film, et cela a vraiment fonctionné assez bien, aussi. Donc c'est K et l'inaction. Technique très simple, mais souvent cela fonctionne assez bien. 51. Réduction de dimension ; Analyse du composant principal: d' accord. Il est temps d'avoir tous les trippy. On va parler de dimensions supérieures et de réduction dimensionnelle. Ça semble effrayant. Il y a des maths fantaisistes en jeu, mais conceptuellement, ce n'est pas aussi difficile à comprendre que vous pourriez le penser. Parlons donc de la réduction dimensionnelle et de l'analyse des composants principaux. Ensuite, parlons de la malédiction de la dimensionnalité. très dramatique. Habituellement, lorsque les gens parlent de cela, ils parlent d'une technique appelée analyse des composants principaux et d'une technique spécifique appelée décomposition des valeurs singulières. RSVP. Donc PC et S V. T. S V. D sont les sujets de cette conférence. Allons y plonger. Quelle est donc la malédiction de la dimensionnalité ? Eh bien, beaucoup de problèmes peuvent être pensés à avoir beaucoup de dimensions différentes. Ainsi, par exemple, lorsque nous faisions des recommandations de films, nous avions des attributs de différents films, et chaque film individuel pouvait être pensé à sa propre dimension dans cet espace de données. Donc, si vous avez beaucoup de films, c'est beaucoup de dimensions, et vous ne pouvez pas vraiment vous enrouler la tête autour de plus de trois, pas vrai, vrai, parce que c'est ce que nous avons grandi pour évoluer à l'intérieur. Ou vous pouvez avoir une sorte de données qui a de nombreuses fonctionnalités différentes qui vous intéressent. Dans un instant, nous allons regarder un exemple de fleurs que nous voulons classer et que les classifications parient sur la base de quatre mesures différentes des fleurs et de ces quatre caractéristiques différentes. Ces quatre mesures différentes peuvent représenter quatre dimensions, ce qui est encore très difficile à visualiser. Il existe donc des techniques de réduction dimensionnelle pour trouver un moyen de réduire les informations dimensionnelles supérieures en informations dimensionnelles inférieures. Et non seulement cela peut faciliter l'examen et la classification des choses, mais il doit être utile pour des choses comme la compression des données. Donc, en préservant la quantité maximale de variance tout en réduisant le nombre de dimensions, représentaient de manière plus compacte un ensemble de données tout en essayant de préserver la variance dans cet ensemble de données. L' application très courante de la réduction dimensionnelle n'est donc pas seulement destinée à la visualisation, mais aussi à la compression et à l'extraction de fonctions. On en parlera un peu plus dans un instant. Un exemple très simple de réduction dimensionnelle peut être pensé à son K signifie clustering . Vous savez donc, par exemple, vous pouvez commencer par de nombreux points qui représentent de nombreuses dimensions différentes dans un ensemble de données . Mais finalement, nous pouvons réduire cela à k différents Centrowitz et votre distance à ceux centralisés. C' est donc une façon de faire bouillir les données vers une représentation dimensionnelle inférieure. Mais généralement, lorsque les gens parlent de réduction dimensionnelle, ils parlent d'une technique appelée analyse des composants principaux. Et c'est une technique beaucoup plus fantaisie. Il entre dans quelques mathématiques assez impliqués, mais à un niveau élevé. Tout ce que vous devez savoir, c'est qu'il faut un espace de données dimensionnel plus élevé et qu'il trouve des plans dans cet espace de données dans des dimensions supérieures. Et ces plans de dimensions supérieures de l'air appelés hyper plans. Et ils sont définis par des choses appelées vecteurs Eigen, et vous prenez autant de plans que vous voulez dimensions. En fin de compte, projettez ces données sur ces hyperplans, et ceux-ci deviennent les nouveaux axes dans votre espace de données dimensionnel inférieur. Tu sais, à moins que tu ne sois familier avec les maths de dimensions supérieures et que tu y penses avant, ça va être dur de t'envelopper la tête. Mais à la fin de la journée, cela signifie que nous choisissons des plans dans un espace dimensionnel supérieur qui conservent le plus de variance dans nos données et projetons les données sur ces plans dimensionnels supérieurs que nous introduisons ensuite dans un espace dimensionnel inférieur. Ok, tu sais, je veux dire, tu n'as pas vraiment besoin de comprendre tous les calculs pour l'utiliser. Le point important est qu'il s'agit d'une manière très fondée sur des principes de réduire une donnée définie dans un espace dimensionnel inférieur tout en préservant la variance à l'intérieur. Nous avons parlé de la compression d'image est une application de cela. Donc vous savez, si je veux réduire la dimensionnalité d'une image, je pourrais utiliser PC A pour la réduire à son essence. La reconnaissance faciale en est un autre exemple. Donc si j'ai ah, ensemble de données de visages, vous savez, peut-être que chaque face représente 1/3 dimension de deux images D et je veux faire bouillir ça. L' analyse SPD et des composants principaux pourrait être un moyen d'identifier les caractéristiques qui comptent vraiment dans un visage afin qu'il finisse par se concentrer davantage dans les yeux. Et la bouche, par exemple, est des fonctions importantes qui sont nécessaires pour préserver la variance au sein de cet ensemble de données. Donc, il peut produire des résultats très intéressants et très utiles qui viennent de sortir naturellement des données, ce qui est un peu cool pour le faire. Vraiment, nous allons utiliser un exemple plus simple, en utilisant ce qu'on appelle le jeu d'états IRA. Et c'est un ensemble de données qui est inclus avec l'apprentissage psychique. Il est utilisé assez couramment dans les exemples, et voici l'idée derrière elle. Alors quoi ? Iris a en fait deux types de pédales sur sa fleur appelée une pédale, qui est, vous savez, les pétales de fleurs que vous connaissez. Et il a aussi quelque chose appelé un CEPAL, qui est une sorte de cet ensemble inférieur de pédales de soutien sur la fleur. Et nous pouvons prendre un tas de virus dans différentes espèces de virus et mesurer l' allongement de la pédale avec et la longueur CEPAL. Et avec ainsi ensemble, la longueur et la largeur de la pédale sur l'allongement avec du CEPAL sont quatre mesures différentes qui correspondent à quatre dimensions différentes dans notre ensemble de données. Et je veux utiliser ça pour classer à quelles espèces et Iris pourraient appartenir. Maintenant, P.C. P.C. A. va nous permettre de visualiser qu'il est en deux dimensions au lieu de quatre, tout en conservant la variance dans cet ensemble de données. Voyons donc comment cela fonctionne bien et écrivez réellement du code python pour faire un PC sur l'ensemble de données irlandais. Voilà donc les concepts de réduction dimensionnelle, analyse des composants principaux et de valeur singulière. Décomposer tous les grands mots de fantaisie. Et pourtant, c'est quelque chose de fantaisie. Vous savez, nous avons affaire à réduire, réduire les espaces dimensionnels plus élevés jusqu'à des espaces dimensionnels plus petits, d'une manière qui préserve leurs variantes. Heureusement, psychique appris nous rend extrêmement facile à faire, comme trois lignes de code sont tout ce dont vous avez besoin pour réellement appliquer PC A. Alors faisons cela arriver. 52. Exemple PCA avec le jeu de données Iris Data Set: Alors appliquons. L' analyse des composantes principales de l'ensemble de données irlandaises est un ensemble de données quadridimensionnelles que nous allons réduire à deux dimensions, et nous allons voir que nous pouvons en fait conserver la plupart des informations contenues dans cet ensemble de données, même en jetant la moitié des dimensions. C' est plutôt cool. C' est assez simple de, Alors plongons dans. Bon, faisons une analyse des composants principaux et guérissons la malédiction de la dimensionnalité. Donc, il est en fait très facile à faire en utilisant psychique apprendre comme d'habitude et encore une fois PC ese technique de réduction de dimensionalité. Ça sonne très science-fiction. E comment tout cela parle de dimensions supérieures, mais juste pour le rendre plus concret et réel à nouveau. Ah, les applications courantes de compression d'image. Donc, vous pensez à une photographie en noir et blanc, une image d'une image en noir et blanc comme trois dimensions, où vous avez avec votre X et votre axe Y de hauteur, puis chaque cellule individuelle a une certaine valeur de luminosité sur une échelle de 0 à 1 que vous savez , est orteil noir blanc ou une valeur entre les deux. Ce serait donc des données tridimensionnelles. Vous savez que vous avez des dimensions spatiales, puis une dimension de luminosité et d'intensité. En plus de cela, si vous étiez mort jusqu'à ce que vers le bas pour dire deux dimensions seulement, ce serait une image compressée. Et si vous deviez le faire dans une technique qui préserve autant que possible la variance dans cette image , vous pourriez toujours reconstruire l'image sans beaucoup de perte en théorie. Donc c'est la réduction dimensionnelle, vous savez, distillée à un exemple pratique. Maintenant, nous allons utiliser un autre exemple ici, en utilisant l'ensemble de données irlandaises et psychique appris inclut ceci. Il s'agit d'un ensemble de données de diverses mesures de fleurs d'iris et de la classification des espèces pour chaque iris de cet ensemble de données. Et il a aussi, comme je l'ai dit, avant la mesure de la longueur et de la largeur du pétale et du souple pour chaque échantillon d'iris . Donc, entre la longueur et la largeur de la pédale et la longueur et la largeur de la CEPAL, nous avons quatre dimensions de données de caractéristiques ah d'information. Dans notre ensemble de données, nous voulions rester cela jusqu'à quelque chose que nous pouvons réellement regarder et comprendre, parce que votre esprit ne traite pas très bien quatre dimensions, mais vous pouvez regarder deux dimensions sur un morceau de papier assez facilement. Alors allons-y et chargeons ça. Ici, il y a une fonction d'iris de chargement dandy pratique intégrée dans psych. Il a appris que va juste charger cela pour vous sans travail supplémentaire, sorte que vous pouvez juste vous concentrer sur la partie intéressante. Et si nous regardons à quoi ressemble cet ensemble de données, vous pouvez voir que nous extrayons la forme de cet ensemble de données, ce qui signifie combien de points de données nous y avons 150. Et combien d'entités ou combien de dimensions cet ensemble de données a, et c'est quatre. Nous avons donc 100 50 échantillons d'iris dans notre ensemble de données avec quatre dimensions d'information. Encore une fois, c'est la longueur et la largeur du souple dans l'allongement, avec de la pédale pour un total de quatre caractéristiques, que l'on peut penser à ses quatre dimensions. Et nous pouvons également imprimer la liste des noms de cibles dans l'ensemble de statuts, qui sont les classifications, et nous pouvons voir que chaque iris appartient à l'une des trois espèces différentes, Sentosa versus Color ou Virgin Icka. Voilà donc les données que nous travaillons avec 150 spécimens IRA classés dans l'une des trois espèces, et nous avons quatre caractéristiques associées à chaque iris étant la longueur et la largeur de la pédale dans la longueur et la largeur du souple. Alors regardons à quel point PC A est facile, même si c'est une technique très compliquée sous le capot. Le faire est juste quelques lignes de code assignées à l'ensemble de statut IRA, et nous allons l'appeler X. Nous allons ensuite créer un PC, un modèle, et nous allons dire et les composants sont égaux à deux. Donc, nous voulons dimensions. On va passer de 4 à 2. Nous allons utiliser des égaux blanchis. Certes, cela signifie que nous allons normaliser toutes les données et nous assurer que tout est agréable et comparable. Normalement, vous voudrez le faire pour obtenir de bons résultats, et ensuite nous allons adapter le PC un modèle à notre jeu de données irlandais X, et ensuite nous pouvons utiliser ce modèle. Ensuite, transformez aussi ces données définies en deux dimensions sur. Allons de l'avant et faire ça s'est passé assez vite. Alors pense à ce qui vient de se passer là-bas. En fait, nous avons créé un PC un modèle pour réduire quatre dimensions à deux. Et il l'a fait en choisissant de quatre vecteurs dimensionnels pour créer des hyper plans autour projeter ces données de doute à quatre dimensions, et vous pouvez réellement voir ce que sont ces vecteurs à quatre dimensions. Ces vecteurs Eigen en imprimant les composants réels des PC OPC A représente l'analyse des composants principaux . Ces composants principaux sont les vecteurs i n sur lesquels nous avons choisi de définir nos plans. Ok, et vous pouvez vraiment regarder ces valeurs ici. Ça ne signifiera pas grand-chose pour vous parce que vous ne pouvez pas vraiment imaginer pour les dimensions de toute façon. Mais juste pour que vous puissiez voir qu'il fait quelque chose avec des composants principaux. Alors nous allons avoir ah, évaluons nos résultats. Le PC un modèle nous donne quelque chose appelé le rapport de variance expliqué, et fondamentalement qui vous indique combien de la variance dans les données quatre dimensions originales a été préservée lorsque je l'ai réduite à deux dimensions. Alors allons-y et jetons un coup d'oeil à ça. Ce qu'il vous donne en retour est en fait ah, liste de deux éléments pour les deux dimensions que nous avons préservées. Donc, cela me dit que dans la première dimension, je peux réellement préserver 92% de la variance dans les données. Et la deuxième dimension ne m'a donné que 5% de variantes supplémentaires. Et si je sommet ensemble, ces deux dimensions dans lesquelles j'ai projeté mes données ont conservé plus de 97% de la variance dans les données source, donc quatre dimensions n'étaient pas vraiment nécessaires pour capturer toutes les informations contenues dans ces données était assez intéressant. C' est plutôt cool. Donc si tu y penses, qu' est-ce que tu penses que ça pourrait être ? Eh bien, peut-être que cette taille globale de la fleur a une certaine relation avec l'espèce en son centre. Peut-être, est le rapport de la longueur à la largeur pour la pédale et le souple. Vous savez, certaines de ces choses se déplacent probablement ensemble pour une espèce donnée ou la taille globale d'une fleur pardonnée. Il y a peut-être des relations entre ces quatre dimensions que PC A extrait seul. C' est joli, assez cool et assez puissant. Allons voir ça. Donc, le but tout entier de réduire cela à deux dimensions est que cela afin que nous puissions en faire un joli petit nuage de dispersion trop tooty de celui-ci. C' est au moins notre objectif pour ce petit exemple ici. Donc on va faire un petit peu de magie Matt ici pour faire ça. Il y a une sorte de trucs fantaisistes qui se passent ici que je devrais au moins mentionner. On va donc créer une liste de couleurs rouge, vert et bleu. On va créer une liste de cibles. Donc, la valeur 01 en eux après les différentes espèces IRA à trois espèces différentes que nous avons. Et ce qu'on va faire, c'est regrouper tout ça avec les noms réels de chaque espèce. Donc, cette petite ligne ici pour je vois l'étiquette dans les idées de cible zip, couleurs, iris, noms de cible signifie que nous allons analphabètes à travers les trois espèces différentes IRA. Et au fur et à mesure, nous aurons à la fois l'index de cette espèce ah, couleur qui lui est associée et le nom d'étiquette lisible par l'homme pour cette espèce. Donc, nous allons prendre une espèce à la fois et tracé sur notre nuage de points juste pour cette espèce avec une couleur donnée et l'étiquette donnée que les gens ajoutent ensuite dans notre légende et montrent les résultats, et c'est ce que nous finissons avec. Voilà donc nos données d'iris quadridimensionnelles projetées à deux dimensions. Des trucs assez intéressants que vous pouvez voir. C' est encore des grappes assez bien ensemble. Vous savez, vous avez tous les nègre vierges assis ensemble ici. Tous les versets couleur est assis au milieu de ce toast est loin sur le côté ici, et il est vraiment difficile d'imaginer ce que les valeurs réelles représentent. Mais le point important est que nous avons projeté 40 données à deux D et de manière préserver la variance. Et nous pouvons encore voir des délimitations claires entre ces deux espèces, peu intermittentes, qui se mêlent à l'intérieur. Ce n'est pas parfait, tu sais. Mais dans l'ensemble, c'était assez efficace. Donc, si vous voulez jouer avec ce petit rappel de la variance expliquée , nous avons capturé la plupart des roulements dans une seule dimension. Vous savez, peut-être la taille globale des fleurs tout ce qui compte vraiment et le classer, et vous pourriez spécifier cela avec une seule caractéristique. Alors allez-y et modifiez les résultats. Si vous vous sentez à la hauteur. Voyez si vous pouvez vous en sortir avec deux dimensions ou une au lieu de deux. Alors allez changer cela et les composants orteil un et voir quel genre de ratio divers vous obtenez. Ce qui se passe, c'est qu'il a du sens alors jouez avec elle, familiarisez-vous avec elle, et c'est la réduction dimensionnelle, analyse des composants principaux et la valeur singulière. Décomposer tout en action. très, termes très,très fantaisistes. Et, vous savez, pour être juste, c'est des maths fantaisistes sous le capot. Mais comme vous pouvez le voir, c'est une technique très puissante. Et avec l'apprentissage psychique, ce n'est pas difficile à appliquer, alors gardez cela dans votre coffre à outils. Donc là, vous l'avez, un ensemble de données en quatre dimensions d'informations de farine réduit à deux dimensions que nous pouvons fois facilement visualiser et aussi voir encore des délimitations claires entre les classifications qui étaient intéressés par So PC A fonctionne très bien dans cet exemple, et encore une fois, c'est un outil utile pour des choses telles que la compression ou l'extraction de fonctionnalités ou la reconnaissance faciale . Alors gardez ça dans votre boîte à outils. Non, c'est là pour toi. 53. Stockage de données ETL et ELT: ensuite, nous allons parler un peu de l'entreposage de données, et c'est un domaine qui a vraiment été dérangé récemment par l'avènement de Hadoop et de certaines techniques de Big Data et de l'informatique en nuage. Donc beaucoup de gros mots de buzz là-bas, mais des concepts qui sont importants pour vous de comprendre. Alors plongons et explorons ces concepts. Parlons de E, L T et E T. L et d'entreposage de données. En général, c'est plus de, ah, concept, par opposition à une technique pratique spécifique, que nous allons en parler conceptuellement. Mais c'est quelque chose qui risque de surgir dans le cadre d'un entretien d'embauche. Alors assurons-nous que vous comprenez ces concepts. Commençons par parler de l'entreposage de données en général. Qu' est-ce qu'un entrepôt de données ? Eh bien, c'est essentiellement une base de données géante qui contient des informations provenant de nombreuses sources différentes et les relie pour vous. Donc, par exemple, peut-être que vous travaillez dans une grande entreprise de commerce électronique, et qu'ils pourraient avoir un système de commande qui alimente des informations sur les choses que les gens ont achetées dans votre entrepôt de données. Et vous pouvez également avoir des informations provenant des journaux de serveur Web qui sont ingérés dans l' entrepôt de données une houle, ce qui vous permettrait de lier les informations de navigation sur le site Web avec ce que les gens ont finalement commandé. Par exemple, peut-être pourrait également des informations italiennes de vos systèmes de service à la clientèle et mesurer s' il ya une relation entre le comportement de navigation et la façon dont les clients sont heureux à la fin de la journée. Un entrepôt de données a donc le défi de prendre des données provenant de nombreuses sources différentes, les transformant en une sorte de schéma qui nous permet d'interroger ces différentes sources de données simultanément. plus, il nous permet d'obtenir des informations grâce à l'analyse de données à l'aide de ces sources de données disparates. Donc les grandes sociétés et les organisations ont ce genre de chose assez communément ce genre de chose. Nous entrons dans le concept du Big Data, n'est-ce pas ? Et vous pouvez avoir une base de données Oracle géante , par exemple, qui contient tous ces éléments. Vous savez, peut-être que c'est partitionné d'une certaine façon et répliqué et toutes sortes de complexité là-bas. Et vous pouvez simplement interroger cela via le langage de requête structuré suite ou à travers des outils. outils graphiques tels que Tableau sont très populaires de nos jours, et c'est ce qu'un analyste de données fait. Ils interrogent des ensembles de données volumineux en utilisant des choses comme tableau. C' est une sorte de différence entre un analyste de données dans un data scientist. Vous pouvez réellement écrire du code à fournir pour effectuer ou des techniques avancées sur des données qui bordent un I, par opposition à simplement utiliser des outils pour extraire des graphiques et des relations à partir d'un entrepôt de données . Et c'est un problème très compliqué. Tu sais, chez Amazon, on avait tout un département pour l'entreposage de données qui s'occupait de tout ça à temps plein, et ils n'avaient jamais assez de gens, je peux vous dire que c'est un gros boulot, tu sais, il y a beaucoup de défis à faire l'entreposage de données, on est la normalisation des données. Vous devez donc comprendre comment tous les champs dans ces différentes données. Les sources sont en fait liées les unes aux autres. Et comment puis-je m'assurer qu'une colonne d'une source de données est comparable à une colonne d'une autre source de données et a le même ensemble de données à la même échelle en utilisant la même terminologie ? Comment traiter les données manquantes ? Comment puis-je gérer des données corrompues ou, vous savez, vous savez, des données provenant de valeurs aberrantes ou de robots et d'autres choses comme ça ? Tous de très grands défis. Maintenir ces flux de données est également un très gros problème. Beaucoup de choses peuvent mal tourner lorsque vous importez toutes ces informations dans votre entrepôt de données, en particulier. Nous avons une très grande transformation qui doit arriver pour prendre les données brutes en sécurité des Weblogs dans une table de base de données de structure réelle qui pourrait être importée dans votre entrepôt de données . mise à l'échelle peut également devenir difficile lorsque vous avez affaire à un entrepôt de données monolithique. Vous savez, éventuellement vos données deviendront si volumineuses qu'il y avait des transformations elles-mêmes commencent à devenir un problème, et cela commence à entrer dans l'ensemble E l T vs CTL chose. Donc, nous allons d'abord parler de E. T. L était que représente le sens de l'extrait, de transformation et de la charge. Et c'est là que la façon conventionnelle de faire l'entreposage de données. Donc, fondamentalement, vous extrayez d' abord les données que vous voulez des systèmes opérationnels que vous voulez. Ainsi, par exemple, je peux extraire tous les journaux Web de nos serveurs Web chaque jour dont j'ai besoin pour transformer toutes ces informations en une table de base de données de structure réelle que je peux importer dans mon entrepôt de données . Donc, cette étape de transformation pourrait passer par chaque ligne de celle de ces journaux de serveur Web transformer cela en une table nationale où je suis arraché de chaque ligne Weblog webs . Vous savez, des choses comme la Session I D et quelle page ils ont regardé, quelle heure il était et quelle était la référence. Et des choses comme ça. Et je peux organiser cela en une structure tabulaire que je peux ensuite charger dans l' entrepôt de données lui-même en tant que table réelle dans la base de données. Ainsi, à mesure que les données deviennent de plus en plus volumineuses, cette étape de transformation peut devenir un véritable problème. Vous savez, pensez à combien de travail de traitement est nécessaire pour passer par tous les journaux Web sur Google ou Amazon ou tout autre site Web important, et transformez cela en quelque chose qu'une base de données peut ingérer. Cela devient un défi d'évolutivité et quelque chose qui peut introduire, vous savez, vous savez, problèmes de stabilité à l'ensemble du pipeline d'entrepôt de données. C' est là que le concept de E. L. T. entre en jeu, et ça tourne tout sur sa tête. C' est écrit. Et si nous n'utilisons pas une énorme instance oracle ? Et si, au lieu de cela, nous utilisons certaines de ces techniques plus récentes qui nous permettent d'avoir une base de données plus distribuée sur un cluster Hadoop et qui nous permet de prendre la puissance de ces bases de données distribuées. Vous savez, ces choses construites sur Hadoop comme haute pour étincelle ou une carte réduisent et utilisent cela pour faire la transformation après qu'il a été chargé. Donc l'idée ici est que nous allons extraire l'information que nous voulons, comme nous l'avons fait auparavant, vous savez, disons, disons, à partir d'un ensemble de journaux de serveur Web. Mais nous allons charger ça directement dans notre référentiel de données, et nous allons utiliser la puissance du référentiel lui-même pour faire la transformation en place. Donc, l'idée ici est au lieu de faire un processus hors ligne pour transformer mes weblogs comme un exemple dans un format structuré, je vais juste les sucer sous forme de fichiers texte bruts et les parcourir une ligne à la fois, en utilisant la puissance de quelque chose comme Hadoop pour réellement les transformer en un format plus structuré que je peux ensuite interroger sur toute ma solution d'entrepôt de données. Donc, des choses comme la ruche vous permettent d'héberger une base de données massive sur un cluster Hadoop. Et il y a des choses comme une suite étincelle qui vous permet aussi de faire. Query est dans une suite très semblable à l'entrepôt de données sur un entrepôt de données qui est réellement distribué sur un cluster Hadoop. Il y a également distribuer aucun magasin de données suite, deuxième equerry en utilisant étincelle et la carte réduire. Et trois idées est qu'au lieu d'utiliser une base de données monolithique pour un entrepôt de données, vous utilisez plutôt quelque chose construit sur Hadoop ou une sorte de cluster qui peut en fait non seulement augmenter le traitement et l'interrogation de ces données, mais aussi à l'échelle de la transformation de ces données. Encore une fois, vous avez d'abord extrait des données brutes. Mais nous allons le charger dans le système d'entrepôt de données lui-même tel quel, puis utiliser la puissance de l'entrepôt de données, qui pourrait être construit sur Hadoop pour faire cette transformation comme la troisième étape. Ensuite, je peux interroger les choses ensemble. C' est donc un très grand projet, très grand sujet. Vous savez, entreposage de données est une discipline entière et en soi. Et on va parler d'étincelles amore dans ce cours très bientôt. Ce qui est une façon de gérer ce truc. C' est quelque chose appelé Spark suite, en particulier, qui est pertinent. En outre, des choses comme la carte de ruche réduisent les techniques de Big Data en général qui sont plus modernes que nous pouvons couvrir, et il y a d'autres cours que j'offre sur étincelle et carte réduire. Cela vous donnera plus d'informations sur cette maison d'un cours gratuit sur les bases du Big Data. Vous pouvez vérifier, hum, mais beaucoup à apprendre sur leur. Encore une fois, le concept global, cependant, est si vous passez d'une base de données monolithique construite sur Oracle ou ma suite à l'une de ces bases de données distribuées plus modernes construites sur Hadoop. Vous pouvez prendre cette étape de transformation et le faire après avoir chargé les données brutes par opposition à avant. Et cela peut finir par être plus simple et plus évolutif et profiter de la puissance des clusters informatiques de grande taille qui sont disponibles aujourd'hui. Donc c'est E T. L vs CLT. Un peu comme la façon héritée de le faire. Auparavant, nous avions beaucoup de clusters partout dans le monde et l'informatique basée sur le cloud par rapport à une façon logique aujourd'hui, alors que nous disposons de grands nuages de calcul pour transformer des ensembles de données volumineux. C' est le concept. Encore une fois , c'est la façon de le faire à l'ancienne école. Vous transformez un tas de données hors ligne avant de l'importer et de le charger dans un entrepôt de données géant . données monolithique. Mais les techniques actuelles avec les bases de données basées sur le cloud et Hadoop et ruche, étincelle et carte réduisent vous pouvez réellement le faire un peu plus efficacement et prendre la puissance d'un cluster pour réellement faire cette étape de transformation après avoir chargé les données brutes dans votre entrepôt de données. Donc, cela change vraiment le champ. Il est important que vous le sachiez à nouveau. Il y a beaucoup d'autres choses à apprendre sur ce sujet, donc je vous encourage à explorer plus à ce sujet. Mais c'est le concept de base, et maintenant vous savez de quoi les gens parlent quand ils parlent de E T l vs E L T. 54. Apprentissage de renforcement: Notre prochain arrêt est amusant. Renforcement de l'apprentissage, et nous pouvons réellement utiliser cette idée avec un exemple de Pac Man. Nous pouvons réellement créer un petit agent Pacman intelligent qui peut jouer le jeu Pac Man vraiment bien seul. Et vous serez surpris à quel point la technique est simple pour construire les smarts derrière ce Pac Man intelligent. Jetons un coup d'oeil. Parlons de l'apprentissage du renforcement. C' est une sorte de, ah, petit concept amusant ici que vous pouvez penser en termes de jeu Pac Man, l' un de mes favoris de tous les temps. Donc l'idée derrière l'apprentissage du renforcement est que vous avez une sorte d'agent dans ce cas , Pacman, qui explore une sorte d'espace. Et dans notre exemple, cet espace sera le labyrinthe dans lequel se trouve Pac Man. Et au fur et à mesure, il apprend la valeur des différents changements d'état dans différentes conditions. Ainsi, par exemple, ici l'état de Pac Man pourrait être défini par le fait qu'il a un fantôme au sud et un mur à l'ouest et des espaces vides au nord et à l'est, ce qui pourrait définir l'état actuel de Pac Man et les changements d'état qu'il peut prendre serait de se déplacer dans une direction donnée, et je peux alors apprendre la valeur d'aller dans une certaine direction. Donc, par exemple, si je déménageais vers le nord, rien ne se passerait vraiment. n'y a pas de vraie récompense associée à ça. Mais si je déplaçais vers le sud, je serais détruit par le fantôme, et ce sera une valeur négative. Alors que je vais explorer tout cet espace, je peux construire un ensemble de tous les états possibles que Pacman transmet et les valeurs associées au déplacement d'une direction donnée dans chacun de ces états. Et c'est l'apprentissage du renforcement. Alors qu'il explore tout cet espace, il affine les valeurs de récompense pour un état donné, et il peut ensuite utiliser ces valeurs de récompense de magasins pour choisir la meilleure décision à prendre, compte tenu d'un ensemble de conditions actuelles. Donc, en plus de Pac Man, c'est aussi un jeu appelé souris de chat. C' est un exemple que d'utiliser communément qui regardera plus tard. Et l'avantage de cette technique est qu'une fois que vous avez exploré l'ensemble des états possibles dans lesquels votre agent peut être, vous pouvez très rapidement avoir une très bonne performance lorsque vous exécutez différentes itérations de ceci. Donc vous savez, vous pouvez fondamentalement faire un PacMan intelligent en exécutant renforcement, apprenant et en le laissant explorer les valeurs de différentes décisions qui peuvent prendre dans différents états, puis en stockant ces informations très rapidement prendre la bonne décision , compte tenu d'un état futur qu'il voit dans un ensemble inconnu de conditions. Donc, une mise en œuvre très spécifique de l'apprentissage du renforcement s'appelle Q learning et cela formalise ce dont nous venons de parler un peu plus. Donc encore une fois, vous commencez avec un ensemble d'états environnementaux que nous allons appeler ça s et possible States Air. Vous savez, les conditions environnantes des agents. Il y a aussi Ah, le fantôme à côté de moi. Il y a une pilule en face de moi ? Des choses comme ça et j'ai un ensemble d'actions possibles que je peux prendre dans ces États. Nous allons appeler cet ensemble d'actions A et dans le cas de Pac Man, actions possibles sont déplacées vers le haut, vers le bas, gauche ou à droite, et ensuite nous avons une valeur pour chaque paire d'actions d'état qui appellera Q. lesactions possibles sont déplacées vers le haut, vers le bas,à gauche ou à droite, et ensuite nous avons une valeur pour chaque paire d'actions d'état qui appellera Q. est pourquoi nous l'appelons Q learning Donc, pour chaque état, vous savez, un ensemble donné de conditions entourant l'action donnée par Pacman aura une valeur. Q : déplacement vers le haut peut donc avoir une valeur donnée. Que se déplaçant vers le bas pourrait avoir une valeur Q négative si cela signifie rencontrer fantôme, par exemple, donc nous commençons par une valeur Q de zéro pour chaque état possible que Pac Man pourrait être dans. Et alors que Pacman explore l'étonnement que de mauvaises choses arrivent à Pac Man, nous avons réduit la valeur Q pour l'état dans lequel Pac Man était dans le temps. Ok, donc si Pac Man finit par se faire manger par un fantôme, on pénalise tout ce qu'il a fait dans cet état actuel. Et comme de bonnes choses arrivent à Pac Man quand il mange une pilule de puissance ou mange un fantôme augmentera la valeur Q pour cette action pour l'état dans lequel il était. Ok, et alors ce que nous pouvons faire est d'utiliser ces valeurs Q pour éclairer les choix futurs de Pac Man et construire un petit agent intelligent capable de fonctionner de manière optimale et de faire un testament parfait. Pacman. Donc, en revenant à un vrai exemple ici quelques actions de l'Etat ici, Pac Man, nous pourrions définir l'état actuel de Pac Man par le fait qu'il a un mur à l'ouest, espace vide au nord et à l'est de Ghost au sud, et nous pouvons examiner les mesures qu'il peut prendre. Vous savez qu'il ne peut pas bouger à gauche du tout, mais il peut avancer vers le haut, vers le bas ou vers la droite, et nous pouvons attribuer la valeur à toutes ces actions. Donc, en montant ou à droite, rien ne se passe vraiment du tout. n'y a pas de pilule ou de points à consommer, mais s'il va à gauche, c'est certainement une valeur négative. Donc, vous pouvez dire, pour l'état, donné par les conditions actuelles que Pac Man est entouré par un déplacement vers le bas serait un vraiment mauvais choix. Il devrait y avoir une valeur Q négative pour ce déplacement à gauche ne peut tout simplement pas être fait et déplacer vers le haut ou vers la droite ou tout simplement neutre. Donc, la valeur clé resterait zéro pour ces choix d'action pour cet état donné. Maintenant, vous pouvez aussi regarder un peu vers l'avenir pour le rendre encore plus intelligent, agent. Donc je suis en fait à deux pas d'avoir une pilule de puissance ici. Donc, comme Pac Man devait explorer cet état, si je devais frapper le cas de manger cette pilule de puissance sur l'état suivant. Je pourrais en fait tenir compte dans la vallée Q pour l'état précédent. Et vous savez, si vous avez juste une sorte de facteur de réduction basé sur la distance à laquelle vous êtes dans le temps, à combien de pas vous êtes, vous pouvez tenir compte de tout cela ensemble. C' est donc une façon de construire un peu de mémoire dans le système. Donc, la valeur Q que j'ai connu quand j'ai consommé cette pilule de puissance pourrait effectivement donner un coup de pouce aux vallées de Qué précédentes que j'ai rencontré le long du chemin. C' est donc une façon de vous faire apprendre encore mieux. Donc, l'un des problèmes que nous avons dans l'apprentissage du renforcement est le problème de l'exploration. Comment puis-je m'assurer de couvrir efficacement tous les états et toutes les actions au sein ces États pendant la phase d'exploration ? Donc sorte des approches naïves de toujours choisir l'action pour un état donné avec le plus haut Qué Valley que j'ai calculé jusqu'à présent. Et s'il y a une égalité, suffit de choisir au hasard donc initialement, toutes mes vallées de cue pourraient être nulles, et je vais juste choisir des actions aussi aléatoires que d'abord et que je commence à obtenir des informations sur de meilleures valeurs de cue pour un donné des actions et des états donnés, je vais commencer à utiliser ceux que je vais. Mais cela finit par être assez inefficace, et je peux en fait manquer beaucoup de passé de cette façon si je me lie juste dans cet algorithme rigide de toujours choisir la meilleure Q Valley qui a calculé jusqu'à présent. Donc, une meilleure façon d'introduire un peu de variation aléatoire dans mes actions pendant que j' explore. On appelle ça un terme Epsilon. Donc nous avons une certaine valeur que je lance un dé. J' ai un nombre aléatoire, et si cela finit par être moins dans cette valeur Epsilon, je ne suis pas réellement la valeur Q la plus élevée. Je ne fais pas ce qui a du sens. Je prends juste un chemin au hasard pour l'essayer et voir ce qui se passe. Et cela me permet en fait d'explorer un éventail beaucoup plus large de possibilités, un éventail beaucoup plus large d'actions pour un plus large éventail d'États plus efficacement au cours de cette phase d'exploration. Donc, ce que nous venons de faire peut être décrit en termes mathématiques très fantaisistes, vous savez, conceptuellement est assez simple j'explore un ensemble d'actions que je pourrais prendre pour un ensemble donné d'états. Je l'utilise pour informer les récompenses associées à l'action donnée pour un ensemble donné d'états. Et une fois cette exploration terminée, je peux utiliser ces informations ces valeurs Q pour naviguer intelligemment dans un tout nouveau labyrinthe, par exemple. Ok, mais ça peut aussi s'appeler un processus de décision de Markov, donc je peux, ah, beaucoup de données scientifiques, c'est juste attribuer des noms fantaisistes, intimidants, des concepts simples. Et il y a une tonne de ça dans l'apprentissage du renforcement. Donc, si vous regardez la définition des processus décisionnels Markov, c'est un cadre mathématique pour la modélisation, la prise de décision, la prise de décision. Quelles mesures sommes-nous prises, compte tenu d'un ensemble de possibilités pour l'état donné dans des situations où les résultats air partiellement aléatoire genre de comme notre expiration aléatoire là-bas, et en partie sous le contrôle d'un décideur, le décideur étant nos valeurs Q que nous avons calculées ? Donc, les processus de décision M DPS Markov sont une façon fantaisie de décrire notre algorithme d'exploration que nous venons de décrire pour un apprentissage de renforcement, et la notation est même des états similaires ou encore décrit son S et S. Prime est le prochain déclarer que nous rencontrons. Nous avons des fonctions de transition d'état qui sont définies comme pièce d'un état pardonné de SNS prime, et nous avons nos valeurs Q sont fondamentalement des représentants ou fonction de récompense, donc une certaine valeur pour un premier sns donné. Donc, passer d'un état à un autre a donné une récompense récente qui lui est associée, et passer d'un état à un autre est défini par une fonction de transition d'état. Encore une fois, décrivant ce que nous venons de faire. Seule une notation mathématique et il plus fantôme sonne mot Markov processus de décision. Et si vous voulez paraître encore plus intelligent, vous pouvez également appeler un processus de décision Markov par un autre nom. Un processus de contrôle stochastique dans le temps discret. Vache sainte. Cela semble intelligent, mais le concept lui-même est la même chose que nous venons de décrire. Donc encore plus de mots fantaisie programmation dynamique peut être utilisé pour décrire. Ce que nous venons de faire, c'est bien, wow, ça ressemble à des ordinateurs d'intelligence artificielle, programmes eux-mêmes, Terminator 2, trucs Skynet. Mais non, c'est juste ce qu'on vient de faire. Donc, si vous cherchez la définition de la programmation dynamique, c'est une méthode pour résoudre un problème complexe, comme la création d'un homme Pac intelligent. C' est un assez compliqué et les résultats en le décomposant en une collection de sous-problèmes plus simples . Donc, par exemple, quelle est l'action optimale à prendre pour un état donné dans lequel Pac Man pourrait se trouver ? Il y a beaucoup d'états différents dans lesquels Pac Man pourrait se trouver. Mais chacun de ces états représente un problème secondaire plus simple où il y a un nombre limité de choix que je pourrais faire. Et il y a une bonne réponse pour la meilleure façon de faire et de stocker leurs solutions. Ces solutions étant les valeurs Q que j'ai associées à chaque action possible dans chaque état, idéalement en utilisant une structure de données basée sur la mémoire. Eh bien, bien sûr, je dois stocker ces valeurs Q et les associer à l'état en quelque sorte juste la prochaine fois le même problème secondaire se produit la prochaine fois que Pac Man est dans un état donné que j'ai un ensemble de valeurs Q. Quatre. Au lieu de recalculer sa solution lorsqu'il s'agit simplement de rechercher, la solution précédemment calculée que la valeur Q a déjà à partir de l'étape de l'exploration, ce qui permet d'économiser du temps de calcul au détriment d'un espace de stockage d'expansion modeste. C' est exactement ce qu'on vient de faire avec l'apprentissage du renforcement. Nous avons une phase d'exploration compliquée qui trouve l'ID d'association de récompenses optimales avec chaque état d'action pardonné et était, nous avons cette table de la bonne action pour prendre état pardonné. Nous pouvons l'utiliser très rapidement pour faire de notre Pacman un mouvement optimal et un tout nouveau labyrinthe qu'il n'a jamais vu auparavant. L' apprentissage du renforcement est donc aussi une forme de programmation dynamique. Wow. Donc, pour résumer, vous pourriez faire un agent PacMan intelligent en ayant juste son semi-aléatoire explorer différents choix de mouvement compte tenu des conditions différentes où ces choix ou actions, ces conditions ou états, nous gardons une trace de la récompense de la pénalité associée à chaque action ou état au fur et à mesure que nous allons, et nous pouvons effectivement réduire, vous savez, réduire, vous savez,en remontant plusieurs étapes si vous voulez améliorer la situation. Et puis nous stockons ces valeurs Q que nous finissons par associer à chaque état. Et nous pouvons l'utiliser pour éclairer ses choix futurs afin que nous puissions aller dans un tout nouveau maïs et avoir un pacman vraiment intelligent capable d'éviter les fantômes et de le manger assez efficacement tout propre. Concept assez simple. Très puissant, cependant, Et vous pouvez aussi dire que vous comprenez un tas de termes fantaisistes parce que tout est appelé la même chose. Que l'apprentissage, le renforcement, l'apprentissage processus de décision Markov est la programmation dynamique tous liés dans le même concept. Donc je pense que c'est assez cool que vous puissiez réellement faire une sorte de Pacman artificiellement intelligent à travers une technique si simple, et cela fonctionne vraiment. Si vous voulez aller le regarder plus en détail, voici quelques exemples que vous pouvez regarder. Il a un code source réel que vous pouvez regarder et potentiellement jouer avec. Il y a donc une boîte à outils de processus de décision Python Markov que vous connaissez et que vous l'enroulez. Dans toute cette terminologie dont nous avons parlé, il y a un exemple. Vous pouvez regarder un exemple de travail du jeu de chat et de souris, qui est similaire, et il y a en fait un exemple de Pacman que vous pouvez regarder en ligne aussi bien. Cela relie plus directement ce dont nous parlions, alors n'hésitez pas à explorer ces liens et à en apprendre davantage à ce sujet. Mais c'est l'apprentissage du renforcement en un mot. Donc c'est du renfort. apprenant plus généralement, c'est une technique utile pour créer un agent qui peut naviguer dans un ensemble d'états différents possibles qui ont un ensemble d'actions qui pourraient être associées à chaque état . Nous en avons donc parlé surtout dans le contexte d'un jeu de labyrinthe. Mais vous pensez plus largement. Et chaque fois que vous avez une situation où vous devez prédire le comportement de quelque chose, compte tenu d'un ensemble de conditions actuelles et d'un ensemble d'actions qui peuvent prendre du renforcement, l'apprentissage et l'apprentissage Q peuvent être une façon de le faire, alors gardez que à l'esprit. 55. Hands-On avec l'apprentissage Q-: donc le renforcement L'apprentissage est devenu beaucoup plus populaire ces dernières années alors que l'excitation à l'égard de l'apprentissage automatique en général s'est accrue. Et heureusement, il y a un nouveau paquet appelé Open Ai Jim. Il est donc assez facile pour vous de mettre en place des cas de test pour l'apprentissage du renforcement. Donc, faisons en fait quelques mains sur la pratique en l'utilisant. Tout d'abord, cependant, nous devons installer Jim. Donc, pour ce faire, allez à votre invite anaconda sur Windows ou votre terminal sur Lennox ou Mac OS et tapez simplement pip Install Jim. Assurez-vous de contrôler See out of Jupiter notebook. Si c'est toujours le premier, bien sûr. Et Jim fonctionne mieux sur les machines Lenox que Windows. Les machines vous permettront de faire des choses comme l'espace de jeu, envahisseurs et la formation, comment jouer aux envahisseurs de l'espace et les choses de jeu vidéo malheur ou graphique sur Windows. Ce sera plus limité parce qu'il n'a pas l'accès au système graphique, mais comme vous le verrez, nous pouvons toujours l'utiliser. Bon, donc nous avons au moins la version de Jim nus installée ici. Allons de l'avant et commençons notre cahier. Jupiter un cahier et bien sûr, je suis déjà dans le dossier de cours ML où sont mes supports de cours, et chercher le cahier d'apprentissage Q. C' est là. Et voyons si ça marche. Très bien, donc ce qu'on va jouer ici, c'est ce qu'on appelle le problème du taxi aura plus de sens quand on le regardera ici. Mais fondamentalement, nous modélisons un taxi autonome qui peut prendre des passagers à l'un des endroits fixes, les déposer à un autre endroit et essayer d'y arriver le plus rapidement possible tout en évitant les obstacles. Donc, nous allons essentiellement former notre taxi sur la façon d'amener les passagers d'un point à un autre de la manière la plus rapide possible, en utilisant l'apprentissage du renforcement. Donc, commençons par importer l'environnement dont nous avons besoin va importer le paquet de gym que nous venons d'installer et nous donner au hasard une graine aléatoire cohérente. Donc, nous obtenons les mêmes résultats à chaque fois, et nous allons rendre notre environnement appelé Taxi V à qui juste contenir une sorte de règles de ce jeu, si vous voulez, sur la façon dont tout fonctionne. Nous appellerons ça les rues modèles qui en résultent, puis les rendrons dehors. Nous pouvons visualiser à quoi ressemble cet environnement, alors allons de l'avant et décalons Entrée et là nous l'avons. Voici comment interpréter ce que vous voyez ici. Fondamentalement les lettres RGB et pourquoi ils sont quel correspondant ? Rouge, vert, bleu et jaune ou quelque chose comme ça. Tout ce que tu veux. Celles-ci affichent les emplacements de ramassage et de dépôt valides. Ainsi, un passager peut choisir d'être pris en charge à n'importe quel endroit qui peut choisir d'être déposé une journée. Ces endroits sont des besoins en taxi pour apprendre à les amener d'un point à un autre le plus rapidement possible. Quelle que soit la lettre de couleur,le bleu est l'endroit où nous devons venir chercher quelqu'un et chaque fois que la lettre est colorée en magenta indique où le passager veut aller. Quelle que soit la lettre de couleur, bleu est l'endroit où nous devons venir chercher quelqu'un et chaque fois que la lettre est colorée en magenta D' accord, alors rappelez-vous que la lettre bleue est d'où nous venons. Les lettres magenta où nous allons. Donc, dans ce cas, nos clients sont pris en charge à B et veulent aller à G. Maintenant, ces lignes solides représentent des murs, donc le taxi ne peut pas traverser ces lignes. C' est un peu comme, tu sais, le bord de la route là-bas ou quoi que ce soit. Et le rectangle rempli que ah orangy Jaune Square est en fait le taxi lui-même. Cela représente l'endroit où le taxi est maintenant, quand il est vide, sera jaune. Et quand il est vert, ça veut dire que c'est, transporter un passager. Donc nous avons ce petit jeu de taxi virtuel ici, et nous devons former notre taxi. Comment les orteils jouent le jeu. Donc nous avons un petit monde ici, et nous l'avons appelé rues. C' est essentiellement une grille de cinq par cinq, et nous pouvons définir l'état de ce monde à tout moment, avec juste quelques choses où se trouve le taxi, qui est l'un des 25 endroits possibles quelle est la destination actuelle, qui est l'un des quatre possibilités et où se trouve le passager, ce qui est cinq possibilités. En fait, il pourrait être soit l'une des destinations ou à l'intérieur du taxi pour 1/5 possibilité. Donc, au total, cela correspond à 500 états possibles qui pourraient décrire notre monde à un moment donné. C' est un nombre gérable pour chaque état possible, chacun de ces cinq états. Il y a six actions possibles associées à cet état, et nous devons savoir lesquelles de ces actions ont du sens pour chaque État, est-ce pas ? Donc, pour chaque état, on peut se déplacer au sud-est, l'ouest du nord. On pourrait prendre un passager ou déposer le passager. Donc, comme notre taxi virtuel ici explore cet environnement et apprend à ce sujet, nous devons fondamentalement associer des récompenses et des pénalités car il fait des choses car il applique différentes actions à ces différents états. Donc, nous allons les définir ainsi. Si notre taxi a réussi à déposer quelqu'un là où il appartient, nous vous donnerons une récompense de 20 points. Si vous faites un pas de temps pendant que vous conduisez un passager mais que vous ne les laissez pas tomber, vous obtenez une pénalité négative d'un point qui servira à vous assurer que nous récompensons le trajet le plus court au fil du temps. Et si vous faites quelque chose de mal, comme ramasser ou déposer dans un endroit illégal, cela vous donne une pénalité négative de 10 points afin qu'il n'ait pas d'intelligence intégrée pour savoir ce que vous savez à l'avance, où vous sont autorisés à ramasser et déposer des passagers. Il doit l'apprendre aussi. Et en ce qui concerne les murs, oui, ça sait pour les murs. Nous ne permettons pas que cela se produise du tout. Vous ne pouvez pas traverser le mur quoi que ce soit. C' est physiquement impossible. Bon, alors commençons par un état initial. Notre état initial ici sera juste avec un taxi à l'endroit x deux et pourquoi trois ? Le passager sera un point de ramassage numéro deux, et la destination sera à zéro. Nous encodons cet état comme l'emplacement du taxi, A à trois passagers et l'emplacement de destination. Nous allons mettre nos rues, rester à ça et la rendre pour que nous puissions la visualiser à nouveau. Et là, vous l'avez. Triez les taxis à cet emplacement initial à trois. Le lieu initial de prise en charge du passager indiqué par la lettre bleue est l'emplacement à, et ils veulent aller à l'emplacement zéro, qui est coloré en magenta. Donc, fondamentalement, vous voulez orteil. Notre taxi commence par ici. Il doit prendre un passager ici, et je veux les déposer là-haut. Jetons un coup d'oeil à notre table de récompense initiale pour cet état initial. Alors, voici comment interprétez-vous la table de récompenses ici maintenant ? Chaque rose va correspondre à une action potentielle à cet état ? Comme nous l'avons dit, il y a six actions potentielles pour chaque État afin qu'ils puissent se déplacer vers le sud, le nord , l' est ou l'ouest, ramasser ou déposer et les quatre valeurs dans chaque rangée ou les probabilités assignées à cette , puis l'état suivant résultant de cette action. La récompense de cette action et la question de savoir si cette action indiquait qu'elle avait été abandonnée avec succès a eu lieu. Ainsi, par exemple, nous pouvons voir que le déplacement vers le nord de cet état nous placerait dans l'état numéro 368. Cela entraînerait une pénalité négative pour simplement prendre un pas de temps. Et cela ne se traduit pas par un dépôt réussi et sont d'abord les probabilités sont tous un point. Oh, parce qu'on n'a encore rien appris. Prenons soin de ça. Donc nous allons faire un peu d'apprentissage Qué ici comme nous avons parlé des diapositives. La première chose que nous devons faire est de former notre modèle. Donc, à un niveau élevé, nous allons entraîner 10 000 pistes de taxi simulées et, pour chaque course, nous passerons à travers le temps avec 10 % de chances de simplement faire une étape exploratoire aléatoire au lieu d'utiliser les valeurs Qs apprises pour guider nos actions. Donc, fondamentalement, nous avons un facteur d'exploration de 10% ici que nous utilisons pour faire la phase d'apprentissage rapidement, parcourir le code ici. Ah, nous commençons par définir une table que, qui est un bûcher engourdi, A et qui contient ah deux tableau D qui représente chaque état possible et l'action dans notre espace virtuel ici et initialiser. Est-ce que ces valeurs Q sont toutes égales à zéro ? Nous avons quelques hyper paramètres ici, c'est , c' le taux d'apprentissage. C' est essentiellement à quelle vitesse nous essayons d'apprendre le facteur de réduction. Tout cela conduit à cette équation d'apprentissage Q que nous avons examinée dans les diapositives et notre taux d'exploration, qui, comme nous l'avons dit, est de 10 % et le nombre de blocs F qui allaient entraîner plus de 10 000. Donc, nous allons sur les 10 000 pistes de taxi. Nous réinitialisons notre terrain de jeu virtuel ici, et bien que nous ne soyons pas bien fait, abord, dessinez un nombre aléatoire entre zéro et un. Si ce nombre est moins le taux d'expiration du centre, qui est 10.1, alors nous allons en fait simplement explorer une action aléatoire. Sinon, nous allons simplement aller avec la valeur Q la plus élevée associée aux actions qui sont disponibles pour nous. Ok, donc puisque l'exploration est 0,1, c'est essentiellement 10% de chances qu'un nombre aléatoire soit inférieur à ça, auquel cas nous choisissons juste une action d'échantillon aléatoire. Sinon, nous allons avec la valeur Q maximale disponible pour les actions que nous avons à portée de main. Nous avons ensuite appelé ST Starts stepped, appliquer effectivement cette action qui nous donne l'état suivant qui résulte de cette action . La récompense qui en résulte, que nous ayons terminé ou non à ce moment où nous avons réussi à déposer notre passager et quelques informations supplémentaires aussi. À ce stade, nous devons réellement faire l'équation Q learning. C' est essentiellement la version de code de l'équation que nous avons examinée dans les diapositives. Il y avait juste jeter un oeil à la valeur Q actuelle Thea que l'un de l'état suivant, puis calculer la nouvelle valeur Q, basée sur l'équation Q d'apprentissage qui prend sont le taux d'apprentissage et le facteur d'actualisation en compte. Et puis nous assignons la table Q pour cet état donné en action à la valeur Q nouvellement apprise , et nous définissons notre état à l'état suivant et le refaisons jusqu'à ce que nous ayons réellement fini et effectivement déposer pour un passager et je vais et ensuite nous le faisons 10 000 fois, donc cela pourrait prendre un peu de effectuer une seule course du taxi, et ensuite nous le faisons 10 000 fois, donc cela pourrait prendre un peu detemps à courir. Essayons en fait. Nous allons cliquer ici et changer, entrer et juste regarder aller. Dommage que ça ait pris quelques secondes. C' est assez impressionnant, non ? Bon, alors voyons ce qu'on a. Donc maintenant, nous aurions dû construire une table de valeurs Q que nous pouvons rapidement utiliser pour déterminer l' action suivante optimale pour n'importe quel état donné. Alors jetons un coup d'oeil. Jetons un coup d'oeil à la table mignonne pour notre état initial d'où nous avons commencé. Donc, ici, vous pouvez voir que la valeur Q la plus basse correspond à l'action. C' est assez proche ici, mais ça correspond à l'action. Va vers l'ouest, il s'avère, donc ça a du sens. Si vous regardez en arrière notre état initial, euh, ouais, je veux dire, nous voulons y aller, non ? Donc, comme, nous voulons ramasser notre gars autour de ce mur comme si la seule direction qui a du sens est aller vers l'ouest. On dirait que ça a fonctionné jusqu'à présent. C' est plutôt cool. Bon, alors voyons ça en action. Une chose cool à propos de l'ei ouverte Jim, c'est que ça vous permet d'animer ce qui se passe, et c'est vraiment amusant à regarder. Donc ce que nous allons faire dans ce bloc de code, c'est en fait simuler Ah, 10 voyages différents ici à chaque étape, pour chaque voyage va réinitialiser l'état des rues, et nous allons juste marcher à travers ça un pas à la fois, appliquer toute action que nous avons appris de cette table apprendre que. Donc, il n'y a pas d'apprentissage qui doit se produire ici, et que nous avons déjà appris l'action optimale pour chaque état possible que nous pourrions avoir dans ce monde. Nous pouvons très rapidement guider notre taxi à travers n'importe quelle situation. C' est donc vraiment le pouvoir de Q learning. Vous savez, une fois que vous avez appris que Q table réellement alimenter une IA pour passer dans votre environnement virtuel est super rapide et super simple, et la partie vraiment amusante ici est que nous pourrions appeler ST Stop rendu, en fait animer ce taxi qui se déplace à travers que nous allons. Alors regardons. Voilà, ramasser notre passager à ah, pourquoi l'endroit l'a ramassé et l'a livré à G cool et nous sommes sur le voyage numéro 3 maintenant ramasser son passager à nouveau. C' est dans la boîte verte maintenant. Il est dans le taxi et a été déposé avec succès, recommencant, ramassant un passager à l'endroit bleu et descendant à Magenta le plus rapidement possible . C' est vraiment amusant. Encore une fois, on a pris un pasteur un g, et maintenant on l'a déposé là-bas. Pourquoi a commencé ? Il a pris un chemin très rapide. Donc, cela semble vraiment fonctionner. Les gars, c'est cool ? Donc, nous avons en fait formé un taxi virtuel sur la façon de trouver le chemin le plus rapide entre deux points pour prendre un passager et le déposer à un endroit donné. Des trucs tellement amusants. Nous avons appris à un petit véhicule virtuel comment naviguer seul dans ce monde. C' est des trucs amusants, les gars. Tu peux juste regarder ça pour toujours. Mais de toute façon, si vous voulez jouer avec ça, Samora vous met certainement au défi de le faire. Eso essaie de modifier ce petit bloc expérimental ici pour garder une trace du nombre total de fois que cela prend pour réellement passer à travers les 10 voyages. Et ce sera en fait une mesure utile quant à la qualité de notre système, en gros, s'il passe ces 10 voyages dans le minimum de temps, ce qui signifie qu'il fait vraiment du bon travail, est-ce pas ? Donc, si vous voulez réellement échantillonner sur un plus grand nombre de trajets, vous pouvez supprimer cette fonction de veille là pour la rendre plus rapide, et cela vous permettra de parcourir plus d'échantillons plus rapidement. Donc, une fois que vous avez cette métrique à la place du nombre d'étapes qu'il faut pour passer à travers ces trajets , vous pouvez commencer à jouer avec ces paramètres hyper-hyper. Alors essayez de voir à quel point vous pouvez faire passer le nombre de boîte F avant que le modèle ne commence à souffrir . Ai-je vraiment besoin de 10 000 étapes de formation ? Pouvez-vous trouver une meilleure vallée pour le taux d'apprentissage ou le facteur de réduction ou les facteurs d'expiration pour rendre la formation encore plus efficace ? Ces facteurs peuvent-ils influencer comment les époques maney ? Vous avez vraiment besoin d'obtenir un bon résultat. Donc, ces bonnes choses d'air pour obtenir une sensation intuitive pour et voir comment ces valeurs influencent votre modèle résultant. Le taux d'exploration en particulier va être intéressant à expérimenter. Donc, si vous avez seulement le temps de jouer avec une seule valeur. Je recommanderais celui-là. C' est un bon exemple, hein ? Donc, c'est que l'apprentissage en action formation un taxi virtuel. Et vous avez maintenant appliqué l'apprentissage du renforcement sur un exemple réel. 56. Comprendre une matrice de confusion: Quelque chose que vous pourriez rencontrer est le concept de matrices de confusion. Alors plongons dans ce qu'il s'agit de tout ça. À quoi sert la matrice de confusion ? Eh bien, le fait est parfois la précision ne raconte pas toute l'histoire et une matrice de confusion peut vous aider à comprendre les résultats les plus nuancés de votre modèle. Par exemple, un test pour une maladie rare pourrait être précis à 99,9 % en devinant, non, tout le temps je dis que vous ne l'avez pas. Un modèle qui fait cela aurait l'air sur le papier d'avoir une très grande précision, mais en réalité, c'est pire que inutile, non ? Donc, vous devez comprendre avec un cas comme celui-ci, quel point un vrai négatif positif ou vrai est important. Quelle est l'importance d'un faux positif ou d'un faux négatif pour ce que vous essayez d'accomplir. Et pour être en mesure de mesurer à quel point votre modèle est bon que chacun de ces cas. Et une matrice de confusion est juste un moyen d'illustrer ces nuances dans la précision de votre modèle. On pourrait ressembler à ça. C' est le format général de celui-ci. Imaginez que nous ayons une situation binaire où nous prédisons simplement oui ou non. Comme si j'avais cette maladie ou si je n'avais pas cette maladie d'identification ou si j'ai un test positif pour ce médicament, n'est-ce pas ? Ne testez pas positif pour ce médicament. Cette image a une armoire ou cette image n'a pas d'armoire. C' est le format de ce à quoi il ressemblerait. Donc, vous voyez que sur les lignes, nous avons des valeurs prédites et dans les colonnes, nous avons des valeurs réelles. Alors passez par là. Si nous avons prédit que quelque chose est vrai et qu'il l'est vraiment, alors c'est un vrai positif. Si nous avions prédit oui, mais c'est en fait non, en fait négatif. Ce sera un faux positif si on le prédit, non, mais c'est oui et c'est un faux négatif. Et si on a prédit non et c'est non, c'est un vrai négatif. Je veux dire, ça devient un peu déroutant, mais si tu réfléchis à ce que tout ça a du sens, non ? Une matrice de confusion réelle, ces cellules contiendront des nombres réels de la fréquence votre modèle a réellement fait cela sur son jeu de données de test. Alors gardez à l'esprit aussi que vous devez faire attention aux étiquettes. n'y a pas de véritable convention sur la façon dont cela est ordonné. Parfois, vous verrez des prédictions ici et les valeurs réelles ici. Ne vous contentez pas de supposer qu'une matrice de confusion donnée est d'un certain format. Faites attention à la façon dont il est étiqueté et assurez-vous de comprendre ce qu'il vous dit avant d'en tirer des conclusions. Quelque chose d'autre à noter ici est que vous êtes sourds veulent généralement avoir la plupart de vos valeurs ici et ici, non ? Donc la diagonale ici, si votre matrice de confusion est où la plupart de vos résultats devraient être, c'est là que vit la précision, non ? C' est là que j'ai un vrai positif. C' est là que j'ai un vrai négatif. Vous voulez que ce soient de beaux nombres, des faux négatifs et des faux positifs soient des nombres relativement bas, j'espère ? Donc, un modèle précis aurait des nombres élevés le long de cette valeur diagonale ici. Branchons quelques chiffres réels pour voir à quoi cela pourrait ressembler. Donc, disons que j'ai un modèle d'apprentissage automatique qui essaie de déterminer si une image contient une image d'un chat ou non. Si nous avons prédit qu'un avait un chat et il a vraiment eu un chat qui avait été 50 fois dans mon ensemble de test. Mais parfois, j'ai prédit que c' était une capitale, pas un chat, c'était un chien ou un poisson. Et ça n'a pas 5 fois, ils ont prédit que ce n'était pas un compte, mais ce n'était vraiment pas un chat. Cela avait été 10 fois cet exemple. Et si je disais que ce n'était pas un chat dans, ce n'était vraiment pas un chat qui avait été un 100 fois dans ce cas. Donc c'est comme ça que vous interprétez une matrice de confusion. Et nous allons vous parler de la façon d'extraire des mesures de ces données qui sont plus utiles pour l'analyse. Peu de temps. Parfois, vous verrez des matrices de confusion dans un format différent où nous ajoutons également des choses sur chaque ligne et colonne. C' est quelque chose que vous pourriez voir de temps en temps. Tout cela, c'est l'addition du nombre de nœuds réels que nous avons, nombre de oui réels que nous avons, du nombre de prédits non que nous avons et de la façon dont il a prédit oui comme nous l'avons fait au total. Donc juste pour que vous ayez vu ce format avant, C'est à quoi ça ressemble. La partie intérieure de celui-ci est cependant juste la même matrice de confusion que nous avons examinée auparavant. Et encore une fois, rappelez-vous, les choses peuvent être retournées jusqu'à l'endroit où se trouvent les valeurs prédites et les valeurs réelles. Assurez-vous donc de faire attention aux étiquettes sur ces choses. Et tu sais, que puis-je dire ? matrices de confusion peuvent être déroutantes. Parfois, vous les verrez aussi dans ce genre de format. Donc peut-être que nous avons un modèle de classification multi-classes ici pour imaginer que nous avons un système de reconnaissance de l'écriture manuscrite qui essaie d'identifier quelqu'un qui écrit les valeurs 0 à 9. Donc, une matrice de confusion plus compliquée pourrait ressembler à ceci, où au lieu de juste oui, aucune réponse est que nous avons effectivement plusieurs classifications, mais cela fonctionne de la même manière. Donc, ici, nous avons prédit les étiquettes sur cet axe et les vraies étiquettes sur cet axe. Donc nous disons que si je prédisais que quelque chose était un cinq et que c'était vraiment un cinq, eh bien cette nuance de bleu correspond à un certain nombre ici. Donc deux choses qui sont différentes dans cet exemple. Tout d'abord, nous avons plus que oui, pas d'options ici nous avons une classification multiple, donc notre matrice de confusion est plus grande. Plongons dans un autre exemple juste pour conduire cette maison. Parfois, j'ai prédit que c'était un, mais c'était vraiment un huit qui a une sorte de bleu plus clair là-bas. Peut-être que c'est arrivé, vous savez, une vingtaine de fois dans cet exemple. Et nous utilisons aussi ce qu'on appelle une carte thermique. Donc, au lieu de simplement afficher des nombres dans ces cellules individuelles, nous mappons ces nombres à des colonnes où l'obscurité de cette couleur correspond à la hauteur d'un nombre. Vous vous attendez à voir une sorte de ligne sombre descendant la diagonale ici représentant une bonne précision sur les vrais positifs et les vrais négatifs. Et des couleurs plus clairsemées et plus claires à l'extérieur, idéalement. Mais cette couleur va correspondre à une valeur réelle et il est juste facile de visualiser comment votre matrice de confusion est disposée. Très bien, prenez du sens, les gars, c'est ce qu'est une matrice de confusion. Et cela peut être un peu déroutant, mais juste regarder ces exemples un peu et cela devrait avoir du sens pour vous. 57. Mesurer des classifiers (Precision, Recall, F1, ROC, Measuring Measuring: Parlons de certaines mesures que vous pouvez dériver d'une matrice de confusion. Revoyons donc notre ami la matrice de confusion à nouveau, dans cet exemple particulier d'un, nous avons des valeurs réelles descendant les colonnes et des valeurs prédites à travers les lignes. Ça peut être différent. Mais dans ce format, nous avons le nombre de vrais positifs dans le coin supérieur gauche. Le nombre de vrais négatifs dans le coin inférieur droit, le nombre de faux négatifs dans le coin inférieur gauche et le nombre de faux positifs dans le coin supérieur droit. D' accord ? Assurez-vous donc de comprendre où se trouvent vos vrais positifs et négatifs, où se trouvent vos faux positifs et négatifs lorsque vous commencez à regarder une matrice de confusion. Et encore une fois, peut varier en fonction de la mise en page de la matrice de confusion elle-même. Commençons par le rappel. Le rappel est donc calculé comme les vrais positifs sur les vrais positifs plus les faux négatifs. Tu devrais sérieusement mémoriser ça. Tu dois savoir ça. Il va aussi par d'autres noms juste pour rendre les choses plus confuses. C' est donc aussi connu sous le nom de sensibilité, taux positif réel et d'exhaustivité. Et l'exhaustivité est une sorte d'écoute de son utilisation originale dans le monde de la recherche d'informations. Donc c'est un bon choix de métrique quand vous vous souciez beaucoup de faux négatifs, ok, donc la détection de la fraude est un excellent exemple de l'endroit où vous pourriez vous concentrer sur le rappel, parce qu'un faux négatif dans le monde de la fraude signifie que quelque chose était de la fraude, mais vous ne parvenez pas à l'identifier comme une fraude. Vous avez eu une transaction frauduleuse qui a été signalée comme étant parfaitement acceptable, c'est le pire résultat possible dans son système qui est censé détecter la fraude, non ? Vous voulez vous tromper du côté des faux positifs et faux négatifs dans ce cas. Alors rappelez-vous, bon choix symétrique quand vous vous souciez de faux négatifs. La détection de la fraude en tant qu'exemple, est de vrais positifs par rapport aux vrais positifs et aux faux négatifs. Rendons cela réel d'un exemple ici. Donc, dans cet exemple particulier d'une matrice de confusion, encore une fois, rappel est de vrais positifs sur les vrais positifs plus les faux négatifs. On enlève les valeurs de cette matrice de confusion. Dans cette mise en page particulière, deux positifs seront cinq, faux négatifs seront 10. Donc on dit juste 5 sur 5 plus 10, ce qui est 5 sur 15 ou 1 tiers ou 33,3, 33, 33, 33 pour cent, non ? Donc c'est le rappel. Rappelle qu'un partenaire dans le crime est la précision, et la précision est calculée en tant que vrais positifs sur les vrais positifs plus faux positifs. Cela porte également d'autres noms, y compris le taux positif correct ou le pourcentage de résultats pertinents. Il s'agit donc d'une mesure de la pertinence dans le monde de la recherche d'informations. Quand devriez-vous vous soucier de la précision ? C' est une mesure importante quand on se soucie des faux positifs. On peut citer par exemple le dépistage médical ou le dépistage de drogues. Tu ne veux pas dire que quelqu'un, tu sais, de la cocaïne ou autre chose quand ce n'est pas le cas, ça aurait de très mauvais effets sur sa vie et sa carrière, n'est-ce pas ? Encore une fois, la précision quand vous vous souciez des faux positifs, plus que des faux négatifs. Le dépistage des drogues en est un exemple classique. Encore une fois, il est calculé comme des vrais positifs sur des vrais positifs plus des faux positifs. Et encore une fois, nous allons plonger dans un exemple ici. Dans cette matrice de confusion particulière, les vrais positifs seront cinq, les faux positifs dans cet exemple ou 20. Donc, la précision est calculée comme cinq sur 25, ce qui est de 20 pour cent. Il y a aussi d'autres mesures. Par exemple, la spécificité, qui est les vrais négatifs sur les vrais négatifs plus faux positifs. Également connu sous le nom de taux négatif réel. Aussi le score F1 est une chose très courante qui est utilisé. C' est deux fois plus que les vrais positifs sur deux fois les vrais positifs plus les faux positifs plus les faux négatifs. Vous pouvez également le calculer comme deux fois les temps de précision rappellent plus de 2, au-dessus de la précision. Rappel dans les deux sens fonctionne. Mathématiquement, c'est la moyenne harmonique de précision et de sensibilité. Donc, si vous vous souciez de la précision et du rappel, rappelez-vous, rappelez-vous, rappelez-vous et sensibilité sont la même chose. Le score F1 est une mesure qui équilibre les deux. Si vous savez que votre modèle ne se soucie pas seulement précision et que vous voulez capturer à la fois la précision et le rappel. score de F1 peut être une façon de le faire. Mais dans le monde réel, vous allez probablement vous soucier de la précision ou vous rappeler plus que l'autre. Donc, il est vraiment payant de penser à ce qui vous intéresse le plus. Utiliser le score F1, à mon avis, est un peu un raccourci, un peu de paresse. Le RMSE est également souvent utilisé comme mesure. C' est juste une mesure directe de la précision et c'est exactement ce que ça ressemble, la racine signifie erreur au carré. Vous additionnez donc toutes les erreurs au carré de chaque prédiction à partir de sa valeur réelle réelle et prenez la racine carrée de celui-ci. C' est ça. Donc, il ne se soucie que des bonnes et mauvaises réponses. Il n'entre pas dans les nuances de précision et de rappel. Donc, si tout ce qui vous intéresse est la précision, RMSE est une mesure courante utilisée pour cela. Une autre façon d'évaluer vos modèles est la courbe ROC, qui représente la courbe caractéristique de fonctionnement du récepteur. Et ce qu'il fait est de tracer votre taux positif réel ou votre rappel par rapport votre taux de faux positif à différents paramètres de seuil dans votre modèle. Alors que vous choisissez différents seuils de choix entre vrai et faux, que cette courbe ressemblait ? Fondamentalement, la façon d'interpréter une courbe ROC est que vous voulez qu'elle soit au-dessus de la ligne diagonale là-bas. Donc, la courbe idéale serait juste un seul point dans le coin supérieur gauche, juste un grand angle à droite où le, où le tout est dans ce côté supérieur gauche du graphique, si vous voulez, à gauche de cette ligne diagonale. Donc, plus la courbe est courbée ou ROC vers ce coin supérieur gauche, mieux c'est. C' est comme ça que vous interprétez ces choses. Nous pouvons également parler de la zone sous la courbe, qui est la zone sous la courbe ROC, exactement ce que cela ressemble. Vous pouvez donc réellement interpréter cette valeur comme la probabilité qu'un classificateur classe une instance positive choisie au hasard supérieure à une instance négative choisie au hasard. Donc une ASC de 0,5 serait ce que vous attendiez à voir si vous étiez à cette ligne diagonale, n'est-ce pas ? Donc, si vous aviez réellement la zone sous cette ligne diagonale où les choses ne sont pas meilleures que aléatoires. Ça s'avère être une zone de 0,5, non ? Donc ça a du sens. Donc, si vous voyez une ASC de 0,5 ou moins, C'est inutile ou pire que inutile. Le classificateur parfait aurait une zone sous la courbe et l'ASC de 1. Ce serait encore une fois le cas parfait où la courbe est juste à droite, un angle droit avec un 1 à 01 là-haut dans le coin supérieur gauche. Cela inclurait toute la zone, ce graphique entier, qui fonctionne à un seul. Ainsi, l'ASC peut être une mesure utile pour comparer différents classificateurs ensemble. Où sont plus la valeur est élevée, mieux c'est ? Donc là, vous l'avez. Certaines mesures courantes pour évaluer le rappel de précision des classificateurs, score F1, le ROC et l'AUC sont les plus importantes à retenir. 58. Préjugés / variance Tradeoff: dans la prochaine section, nous allons parler des défis que pose la gestion des données du monde réel et de certaines des bizarreries que vous pourriez rencontrer. Commençons donc par parler du biais des variantes. Tradeoff Juste une sorte de façon plus basée sur des principes de parler des différentes façons dont vous pourriez trop intégrer dans les données sous forme et comment tout cela est lié les uns aux autres. Jetons un coup d'oeil. Donc, l'un des principaux défis auxquels nous sommes confrontés lorsque nous traitons des données du monde réel est le surajustement par rapport à la sous-adaptation de vos régressions à ces données ou à vos modèles de vos prédictions. Et quand nous parlons de sous-ajustement et de surajustement, nous pouvons souvent en parler dans le contexte du biais et de la variance et des compromis de variance de biais . Alors parlons de ce que ça veut dire. Donc conceptuellement biais et variance air biais assez simples biais juste à quel point vous êtes loin des valeurs correctes. Alors, à quel point vos prédictions dans l'ensemble dans la prévision de la bonne valeur globale pour prendre la moyenne de toutes vos prédictions ? Sont-ils plus ou moins au bon endroit ? Ou vos erreurs sont-elles toujours biaisées dans une direction ou une autre ? Si Alors alors vos prédictions air biaisé dans une certaine direction. La variance n'est qu'une mesure de la répartition de vos prédictions. Donc, si vos prédictions sont partout, c'est une variance élevée. Mais s'ils sont très étroitement concentrés sur ce que sont les valeurs correctes, ou même une valeur incorrecte dans le cas d'un biais élevé, votre variance est faible. Alors regardons ces exemples ici. Imaginons que ce jeu de fléchettes représente un tas de prédictions faites là où la valeur réelle que nous essayons de prédire est au centre de l'œil du taureau. Donc, en commençant dans le coin supérieur gauche, vous pouvez voir que nos points sont tous dispersés autour du centre. Donc, dans l'ensemble, vous connaissez le sens. L' erreur se révèle être, vous savez, vous savez, réalité assez proche des orteils. Notre parti pris. En fait, c'est très bas parce que nos prédictions sont toutes autour du même point correct. Cependant, nous avons une variance très élevée parce que ces points sont dispersés partout dans l'endroit. C' est donc un exemple de biais faible et de variance élevée. Si nous passons à celui-ci dans le coin supérieur droit, nous voyons ici que ce sont des points, ils sont tous constamment biaisés de l'endroit où ils devraient se trouver au nord-ouest ici. C' est donc un exemple de biais élevé dans nos prédictions où elles sont constamment désactivées d'un certain montant, et nous avons une faible variance parce qu'elles sont toutes regroupées étroitement autour de ce mauvais endroit. Mais au moins ils sont proches ensemble, donc nous sommes cohérents. Nos prédictions et c'est une faible variance. Mais les biais élevés donc encore une fois, c'est un biais élevé. Variance faible dans cet exemple. Dans le coin inférieur gauche, vous pouvez voir que nos prédictions sont dispersées autour du mauvais point moyen. Donc nous avons un biais élevé, tout est biaisé vers un endroit où ne devrait pas être. Mais notre variance est aussi élevée, donc c'est un peu le pire des deux mondes. Ici, nous avons un biais élevé et une variance élevée dans cet exemple. Et enfin, dans unmonde merveilleux et parfait, monde merveilleux et parfait, nous aurions un exemple, comme l'image en bas à droite ici, où nous avons un faible biais, où tout centré autour de l'endroit où il devrait être et faible variance, où les choses sont regroupées assez étroitement autour où elles devraient être. Donc, dans un monde parfait, c'est ce que tu finis avec. Mais en réalité, vous avez souvent besoin de choisir entre l'un ou l'autre Alors regardons cet exemple un peu d' une façon différente de penser de biais et de variance ici. Donc, ici, nous avons une ligne droite et vous pouvez penser que cela a une très faible variante par rapport à ces observations. Ok, donc il n'y a pas beaucoup de variantes dans cette ligne faible variance pour le biais. Vous savez, l'erreur de chaque point individuel. En fait, c'est haut. Ok, maintenant contraste ça avec ces données sur-ajustées ici où nous sommes en quelque sorte partis pour adapter ces observations. Cette ligne a une variance élevée mais un biais faible parce que chaque point individuel est assez proche de l' endroit où il devrait être. Voici donc un exemple de l'endroit où nous l'échangeons, variance pour le biais. Maintenant, à la fin de la journée, vous n'êtes pas juste pour réduire les biais ou simplement réduire les variantes. Vous voulez réduire les erreurs, n'est-ce pas ? C' est ce qui compte vraiment. Et il s'avère que vous pouvez exprimer l'erreur en fonction du biais et de la variance, donc l'erreur est égale à acheter un carré plus variantes. Donc, ces 10 choses contribuent à l'erreur globale avec le biais en fait plus, mais gardez à l'esprit, c'est la zone que vous voulez vraiment minimiser, pas le biais ou la variante spécifiquement et trop complexe. Le modèle finira probablement par avoir une variance élevée et un biais faible, alors qu'un modèle à deux modèles simples aura une variance faible et un biais élevé mais élevé. Mais ils pourraient tous les deux avoir des termes d'erreur similaires à la fin de la journée. Vous n'avez donc qu'à trouver le bon médium heureux de ces deux choses lorsque vous essayez adapter vos données et nous parlerons d'autres moyens principaux d'éviter le surajustement dans nos conférences à venir. Mais c'est juste le concept de biais et de variance que je veux faire passer parce que les gens en parlent. On s'attend à ce que tu saches ce que ça veut dire si on relie ça à des concepts antérieurs . Dans ce cours. Par exemple, dans K voisins les plus proches, si nous augmentons la valeur de K, nous commençons à étaler notre quartier qui était en moyenne à travers pour alerter une plus grande zone . Cela a donc pour effet de diminuer les variantes parce que nous sommes en quelque sorte de lisser les choses sur un espace plus grand, mais pourrait augmenter notre biais parce que nous allons ramasser une population plus importante qui peut être moins en moins pertinente au point nous avons commencé à partir de. Donc, en lissant la boîte et sur un plus grand nombre de voisins, nous pouvons diminuer la variance parce que nous lissons les choses sur plus de valeurs. Mais nous pourrions introduire un biais parce que nous introduisons de plus en plus de points qui sont moins d'être liés au point que nous avons commencé avec des arbres de décision et d'autres exemples. Donc, nous savons qu'une seule décision arborescence proto sur l'ajustement, sorte que cela pourrait impliquer qu'il a une variance élevée. Mais les forêts aléatoires cherchent à négocier une partie de cette variance pour réduire les biais. Et il le fait en ayant plusieurs arbres qui sont aléatoirement variants et moyennes toutes les solutions là ensemble. Un peu comme quand on fait la moyenne des choses. En augmentant K et K et N, nous pouvons calculer la moyenne des résultats d'un arbre de décision en utilisant plus d'un arbre de décision en utilisant des forêts aléatoires. Idée similaire. C' est donc l'idée de base de la variance de biais dans le compromis de variance de biais. J' espère que ça a peu de sens. Allons passer à autre chose. Donc c'est biaisé. Différents échanges, Vous savez, encore une fois, il y a parfois la décision que vous devez prendre entre la précision globale de vos valeurs et la répartition ou le degré de regroupement qu'elles sont. Donc, c'est la différence de variance de biais et ils contribuent tous les deux à l'erreur globale, ce qui est la chose que vous vous souciez vraiment de minimiser, alors gardez ces termes à l'esprit. 59. Validation K-Fold Cross: Plus tôt dans le cours, nous avons parlé du test de train comme un bon moyen de prévenir le surajustement et de prévoir réellement, mesurer la performance de votre modèle sur les données. On ne l'a jamais vu avant. Nous pouvons passer cela au niveau suivant avec une technique appelée k-fold cross-validation. Et nous en parlerons ensuite est un outil important dans votre coffre à outils pour lutter contre le surajustement. Parlons donc d'un autre outil puissant dans votre arsenal pour lutter contre le surajustement, la validation croisée K-fold. Et vous vous souvenez peut-être que nous avons parlé d'un test de train plus tôt dans ce cours sur une bonne façon de se battre pour l'ajustement. La validation croisée en K rend le test de train encore meilleur. Alors apprenons comment ça marche. Donc, si vous vous souvenez du test de train, l'idée était que nous divisions toutes les données que nous construisons un modèle d'apprentissage automatique basé sur en deux segments, un jeu de données d'entraînement et un jeu de données de test. L' idée est que nous formons notre modèle en utilisant uniquement les données de notre jeu de données d'entraînement. Ensuite, nous évaluons ses performances en utilisant les données que nous avons réservées pour un jeu de données de test qui nous empêche de surajuster les données que nous possédons parce que nous testons le modèle par rapport à des données qu'il n'a jamais vues auparavant. Cependant, formé a encore ses limites. Vous pourriez toujours finir par vous raccorder à votre scission d'essai de train spécifique. Peut-être que votre jeu de données d'entraînement n'est pas vraiment représentatif de l'ensemble de données et que trop de choses se sont retrouvés dans votre jeu de données d'entraînement qui faussent les choses. C' est là que la validation croisée k-fold intervient. Il faut le test de train et le coup de pied d'un cran. Donc, l'idée, bien que cela semble compliqué, c'est assez simple. Au lieu de diviser nos données en deux compartiments, un pour la formation et l'autre pour les tests. Nous le divisons en seaux k. Pour chaque compartiment, nous utiliserons ce compartiment comme jeu de données de test, et nous utilisons les données restantes comme données d'entraînement. Nous mesurons ensuite le score d'erreur r carré résultant en utilisant ce compartiment comme données de test. Ensuite, nous passons au prochain de nos compartiments K et nous l'utilisons comme données de test et les compartiments k moins 1 restants comme données d'entraînement et nous mesurons à nouveau l'erreur. Nous continuons à faire cela jusqu'à ce que nous ayons essayé d'utiliser tous les seaux k comme ensemble de test. Et nous faisons simplement la moyenne de tous les scores R au carré que nous avons pour obtenir une mesure plus robuste de la précision de notre modèle. Et c'est tout ce que c'est. La validation croisée K-fold est une façon plus robuste de faire le test de train, et c'est une façon de le faire. Il y a d'autres variations à ce sujet. Par exemple, vous pouvez réserver un compartiment comme données de test, puis vous entraîner par rapport aux compartiments individuels restants et faire la moyenne de ces scores ensemble. Mais la technique décrite dans cette diapositive est la façon dont scikit-learn le fait, et c'est ce que nous allons jouer ensuite. Heureusement, scikit-learn rend cela très facile à faire et c'est encore plus facile que de faire des tests de train normaux. Il est extrêmement simple de faire k fold cross-validation, donc vous pouvez aussi bien le faire. Maintenant, comme tout cela fonctionne dans les pratiques, vous aurez un modèle que vous essayez d'ajuster et vous aurez différentes variations de ce modèle ou différents paramètres que vous pourriez vouloir modifier. Par exemple, le degré de polynôme pour un ajustement polynôme. L' idée est donc d'essayer différentes valeurs de votre modèle. Différentes variations, mesurez-les toutes en utilisant validation croisée k fold et trouvez celle qui minimise les erreurs par rapport à votre jeu de données de test. Et c'est un peu ton point doux là-bas. Ainsi, dans la pratique, vous souhaitez utiliser la validation croisée k fold pour mesurer la précision de votre modèle par rapport à un jeu de données de test. Et continuez à affiner ce modèle. Continuez à essayer différentes valeurs à l'intérieur, continuez à essayer différentes variations de ce modèle ou peut-être même des modèles différents entièrement jusqu'à ce que vous trouviez la technique qui réduit l'erreur du plus utilisant k-fold la validation croisée. Allons plonger dans un exemple et voir comment cela fonctionne. Nous allons l'appliquer à nouveau à notre jeu de données Iris, en revisitant SVC. Et nous allons jouer avec la validation croisée k fold et voir à quel point c'est simple. Mettons effectivement k fold la validation croisée et le train-test en pratique ici, utilisant un vrai code Python, vous verrez qu'il est en fait très facile à utiliser, qui est une bonne chose parce que c'est une technique que vous devriez être pour mesurer l'exactitude, l'efficacité de vos modèles et l'apprentissage supervisé. Alors allez-y et ouvrez la validation croisée k-fold aucun livre et suivez si vous voulez. Et nous allons regarder à nouveau le jeu de données Iris. Encore une fois, rappelez-vous que nous avons introduit cela lorsque nous avons parlé de la réduction dimensionnelle. Et juste pour rafraîchir votre mémoire, le jeu de données Iris contient un ensemble de 150 mesures de fleurs d'iris. Chaque fleur a une longueur et une largeur de sa pédale et une longueur et une largeur de son sépal. Et puis nous savons aussi à laquelle appartient l'une des trois espèces d'iris différentes chaque fleur. Donc, le défi ici est de créer un modèle capable de prédire avec succès l'espèce de fleur d'iris juste compte tenu de la longueur et de la largeur de ses pétales et sépales. D' accord. Alors allons-y et faisons-le. On va utiliser le modèle SVC. Si vous vous souvenez à nouveau, c'est juste une façon de classer les données qui est assez robuste. Il y a une conférence à ce sujet si vous avez besoin d'aller rafraîchir votre mémoire. Donc ce qu'on va faire, c'est utiliser la bibliothèque de validation croisée de scikit-learn. Et nous allons commencer par faire un essai de train conventionnel. Juste un seul test de train divisé et voir comment cela fonctionnera. Pour ce faire, nous avons une fonction de partage de test de train qui le rend assez facile. Donc, la façon dont cela fonctionne est que nous pouvons alimenter, former, tester, diviser, un ensemble de données d'entité. Les données de points d'iris ne contiennent que toutes les mesures réelles de chaque fleur. Et la cible de points Iris, ce qui est fondamentalement la chose que nous essayons de prédire. Donc, dans ce cas, il contient toutes les espèces pour chaque fleur. Et notre taille de test ici, il est dit, quel pourcentage voulons-nous former par rapport aux tests. Donc 0.4 signifie que nous allons extraire 40% de ces données aléatoirement à fins de test et vous 60% à des fins de formation. Et ce que cela nous ramène, c'est pour les jeux de données, essentiellement une formation à un jeu de données d'entraînement et un jeu de données de test pour les données d'entité et les données cibles. Donc, x train finit par contenir 60% de nos mesures d'iris et X test contient 40% des mesures utilisées pour tester les résultats de notre modèle. Et y train et y test contiennent les espèces réelles pour chacun de ces segments. Donc, nous allons aller de l'avant et construire un modèle SVC pour prédire les espèces d'Iris compte tenu de leurs mesures ici. Et vous verrez que nous construisons cela uniquement en utilisant les données d'entraînement. Nous allons donc adapter ce modèle SVC à l'aide d'un noyau linéaire utilisant uniquement les données d'entités d'entraînement et les données cibles de données d'espèces d'entraînement. Et nous allons appeler ce modèle NSI. Maintenant, nous pouvons appeler la fonction de score sur NSI pour simplement mesurer sa performance par rapport à notre ensemble de données de test. Nous allons donc coter ce modèle par rapport aux données d'essai que nous avons réservées pour les mesures de l'iris et les espèces d'Iris testées et voir comment il fonctionne bien. Et il s'avère que ça fait très bien. Plus de 96 % du temps, notre modèle est capable de prédire correctement les espèces d'iris qu'il n'avait jamais vues auparavant, se basant uniquement sur les mesures de l'iris. Donc c'est plutôt cool. Mais c'est un jeu de données assez petit, un 150 fleurs, si je me souviens bien, Donc, nous utilisons seulement 60% d'un 150 fleurs pour formation et seulement 40% d'un 150 fleurs pour les tests. Ce sont encore assez petits nombres, donc. Nous pourrions encore être surajustés à notre scission d'essai de train spécifique que nous avons faite. Donc, nous allons utiliser k-fold la validation croisée pour protéger contre cela. Et il s'avère que l'utilisation de la validation croisée k fold, même si c'est une technique plus robuste, est en fait encore plus facile à utiliser que le test de train. Donc c'est plutôt cool. Voyons comment ça marche. Nous avons donc déjà un modèle, le modèle SVC que nous avons défini pour cette prédiction. Et tout ce que vous devez faire est d'appeler le score de Val sur le paquet de validation croisée. Donc, vous le passez dans un modèle d'un type donné et l'ensemble de données que vous avez. C' est donc toutes mes données d'entités et toutes mes données cibles, toutes les mesures, toutes les espèces. Et nous allons dire, je veux une validation croisée de cinq plis. Et ça veut dire qu'il va utiliser cinq ensembles de données d'entraînement différents, d'accord ? Tout en réservant un pour les tests. Fondamentalement, ça va l'exécuter cinq fois. Et c'est tout ce que nous devons faire pour évaluer automatiquement notre modèle par rapport à l'ensemble des données, diviser cinq façons différentes et nous rendre les résultats individuels. Donc, si nous imprimons la sortie de cela, cela nous donne une liste de la métrique d'erreur réelle de chacune de ces itérations, chacune de ces plis. Et nous pouvons faire la moyenne ensemble pour obtenir une mesure d'erreur globale basée sur la validation croisée k-fold. Et quand nous faisons cela plus de cinq fois, nous pouvons voir que nos résultats sont encore meilleurs que nous ne le pensions précision de 98 pour cent. Donc c'est plutôt cool. En fait, dans quelques courses, nous avons eu une précision parfaite. Des trucs tellement incroyables. Voyons si on peut faire encore mieux. On utilise un noyau linéaire ici. Et si on utilisait un noyau polynôme ? Et Dieu, même plus fantaisiste, sera-t-il surapproprié ou sera-t-il mieux adapté aux données que nous avons ? Un peu dépend de l'existence d'une relation linéaire ou d'une relation polynôme entre ces mesures de pétales et l'espèce réelle ou non. Alors essayons ça. Nous allons lancer tout cela à nouveau en utilisant la même technique, mais cette fois nous allons utiliser un noyau polynôme et nous ferons la même chose, nous l' adapterons à notre jeu de données d'entraînement. Et est-ce vraiment important ? Nous l'adaptons à vous dans ce cas, parce que cross Val score va juste continuer à le relancer pour vous. Et il s'avère que les films ont un ajustement polynôme, nous finissons avec un score global encore plus bas que nos essais originaux. Donc, cela nous dit que le noyau polynôme est probablement suradapté. Lorsque nous utilisons k-fold la validation croisée, révolte révèle à un score réel inférieur à celui de notre noyau linéaire. Et le point important ici, c'est que si nous utilisions simplement une seule division de test de train, nous sommes allés se rendre compte que nous aurions obtenu le même résultat si nous venions de faire un seul test de train ici comme nous l'avons fait sur le noyau linéaire. Donc, nous pourrions par inadvertance suréquiper nos données là-bas et ne pas l'avoir même su si nous n'avions pas utilisé k-fold la validation croisée. Donc, bon exemple ici de l'endroit où k-fold vient à la rescousse et avertit que vous avez un sur-ajustement où un seul locataire test de train pourrait ne pas avoir attrapé cela. Alors gardez ça dans votre coffre à outils. Vous voulez jouer avec ça un peu plus. Allez-y et essayez différents degrés. Alors on a essayé. Vous pouvez en fait spécifier un nombre différent de degrés. La valeur par défaut est de trois degrés pour le noyau polynôme. Mais vous pouvez essayer différent, vous pouvez essayer. Est-ce que ça fait mieux ? Si vous descendez à un noyau qui se dégrade fondamentalement en un noyau linéaire, non ? Donc peut-être qu'il y a encore une relation polynôme et peut-être que ce n'est qu'un polynôme de deuxième degré. Alors allez le découvrir, essayez-le et voyez ce que vous récupérez. Alors va jouer avec ça. C' est une validation croisée K-fold. C' est une validation croisée K-fold. Comme vous pouvez le voir, c'est très facile à utiliser grâce à scikit-learn. Alors utilise-le. Il s'agit d'un moyen important de mesurer la qualité de votre modèle d'une manière très robuste. 60. Nettoyage et normalisation des données: Maintenant, c'est l'un des plus simples, mais pourtant c'est peut-être la conférence la plus importante de tout ce cours. Nous allons parler du nettoyage de vos données d'entrée, ce que vous allez passer beaucoup de votre temps à faire et à quel point vous nettoyez vos données d'entrée et comprenez que vos données d'entrée brutes auront un impact énorme sur la qualité de vos résultats, peut-être encore plus que le modèle que vous choisissez ou la façon dont vous réglez vos modèles. Alors faites attention. C' est important. Parlons donc d'une vérité gênante de la science des données. Et c'est ce que vous passez la plupart de votre temps, en fait, juste nettoyer et préparer vos données et en fait relativement peu de celles-ci à les analyser et essayer de nouveaux algorithmes. Donc, ce n'est pas aussi glamour que les gens pourraient le faire tout le temps. Mais c'est une chose extrêmement importante à laquelle prêter attention, donc il y a beaucoup de choses différentes que vous pourriez trouver dans les données brutes qui viennent en vous juste les données brutes vont être très sales. Il va être pollué en mai de différentes manières. Et si tu ne t'en occupes pas. Cela va fausser vos résultats, et en fin de compte, votre entreprise prendra les mauvaises décisions. Et si vous savez ce qui revient, vous avez fait une erreur où vous avez ingéré un tas de mauvaises données sans en tenir compte, cela n'a pas nettoyé ces données. Et ce que vous avez dit à votre entreprise, c'est de faire quelque chose en se basant sur ces résultats qui se révèlent complètement faux. Tu vas avoir beaucoup d'ennuis, alors fais attention. Il y a beaucoup de différents types de problèmes en Inde que vous devez surveiller. L' un est sur les menteurs. Donc peut-être que vous avez, vous savez, des gens qui se comportent bizarrement dans vos données. Et quand vous les fouillez, ils se révèlent être, vous savez, des données que vous ne devriez pas regarder en premier lieu. Un bon exemple serait si vous regardez les données du journal Web et que vous voyez une session I d. Cela ne cesse de revenir encore et encore, continue à faire quelque chose à un rythme ridicule qu'un humain ne pourrait jamais faire. Mais vous voyez probablement qu'il y a un robot, vous savez, un script qui est exécuté quelque part pour gratter votre site Web, ou même une sorte d'attaque malveillante. Mais en tout cas, vous ne voulez pas que les données de comportement renseignent vos modèles qui sont censées prédire le comportement des êtres humains réels utilisant votre site Web. Donc, surveiller les valeurs aberrantes est un moyen d'identifier les types de données que vous pourriez vouloir supprimer si votre modèle, lorsque vous créez des données manquantes, que faites-vous lorsque la date n'est tout simplement pas là ? Revenir à l'exemple d'un weblog ? Vous pourriez avoir une référence dans cette ligne ou vous ne pourriez pas. Que faites-vous si elle n'est pas là ? Créer une nouvelle classification A pour les classifications manquantes ou non spécifiées ? Ou est-ce que tu jettes entièrement cette ligne ? Vous devez penser à ce que la bonne chose à faire. Y a-t-il des données malveillantes comme on a parlé ? Il y a peut-être des gens qui essaient de jouer sur votre système. Il y a peut-être des gens qui essaient de tromper le système, et vous ne voulez pas qu'ils s'en sortent avec ça. Disons que vous faites un système de recommandation er. Il pourrait y avoir des gens là-bas qui essayent de fabriquer des données de comportement dans ou juste pour promouvoir leur nouvel élément. droite ? Vous devez donc être à l'affût de ce genre de chose et vous assurer d' identifier les attaques de bombardement ou d'autres types d'attaques sur vos données d'entrée et les filtrer à partir des résultats. Et ne les laissez pas gagner des données erronées. Et s'il y a un logiciel ? Mais quelque part dans un système, c'est juste écrire les mauvaises valeurs dans certaines situations. Cela peut arriver, malheureusement, n' est pas un bon moyen pour vous de savoir à ce sujet, Mais si vous voyez des données qui semblent tout simplement fishy ou que les résultats n'ont pas de sens pour vous, creuser assez profondément peut parfois révéler un bogue qui provoque l' écriture des données erronées en premier lieu. Peut-être que les choses ne sont pas combinées correctement à un moment donné. Peut-être que les sessions n'ont pas lieu tout au long de la session. Les gens peuvent abandonner leur session i D et obtenir de nouvelles idées de session lorsqu'ils passent par un site Web, par exemple, des données non pertinentes. Tu sais, très simple. L' un ici peut être votre seul intérêt intéressé par les données des gens de New York City ou autre chose. Pour une raison quelconque. Dans ce cas, toutes les données provenant de personnes du reste du monde ne sont pas pertinentes. Ce que vous essayez de découvrir et la première chose que vous vouliez était de jeter toutes ces données façon et de restreindre vos données. Récupérez les données qui vous tiennent réellement à cœur. Données incohérentes. C' est un énorme problème. D' accord. Par exemple, dans les adresses, les gens peuvent écrire la même adresse de différentes manières. Ils pourraient abréger Street ou ne pas abréger Street. Ils pourraient ne pas mettre la rue à la fin du nom de la rue du tout. Ils peuvent combiner les lignes de différentes manières. Ils pourraient épeler les choses différemment. Ils pourraient utiliser un code postal aux États-Unis ou uncode postal plus quatre codes aux États-Unis. un Ils pourraient avoir un pays dessus. Il se peut qu'ils n'aient pas de pays dessus. Vous devez comprendre quelles sont les variations que vous voyez, et comment puis-je les normaliser tous ensemble ? Peut-être que je regarde des données sur des films et un film peut avoir des noms différents dans différents pays ou un livre peut avoir des noms différents dans différents pays, mais ils signifient la même chose. Donc, vous devez trouver que vous devez surveiller ces choses où vous devez normaliser vos données, où les mêmes données peuvent être représentées de nombreuses façons différentes, et vous devez les combiner ensemble afin d'obtenir les bons résultats. Ok, le formatage qui peut aussi être un problème. Les choses pourraient être formatées de façon incohérente. Prenons l'exemple des dates aux États-Unis, nous faisons toujours mois, jour année. Mais dans d'autres pays, ils pourraient faire jour, mois, année, qui sait ? Mais vous devez être conscient de ces différences de formatage peuvent être des numéros de téléphone. Avoir des parenthèses autour de l'indicatif régional. Peut-être qu'ils ne le font pas. Peut-être qu'ils ont des tirets entre chaque section des numéros. Peut-être qu'ils ne le font pas. Peut-être que les numéros de sécurité sociale ont des tirets. Peut-être qu'ils ne le font pas. Ce sont toutes les choses que vous devez surveiller. Et vous devez vous assurer que les variations de mise en forme ne sont pas traitées comme des entités différentes ou des classifications différentes au cours de votre traitement. Donc beaucoup de choses à surveiller. Et c'est juste ah, ce sont juste les principaux dont il faut être conscient. Ok, souviens-toi des ordures. Votre modèle est seulement aussi bon que le jour où vous lui donnez, et c' est extrêmement, extrêmement vrai. Vous savez que vous pourriez avoir un modèle très simple qui fonctionne très bien si vous lui donnez une grande quantité de données propres et qu'il pourrait réellement surpasser un modèle complexe sur un ensemble de données plus sale . Donc, vous savez, s' assurer que vous disposez de suffisamment de données et de données de haute qualité est souvent la plus grande partie de la bataille. Vous seriez surpris à quel point certains des algorithmes les plus réussis utilisés dans le monde réel sont simples . Et il n'y a de succès que grâce à la qualité des données qui y sont entrées et à la quantité de données qui y sont entrées. Vous savez, vous n'avez pas toujours besoin de techniques de fantaisie pour obtenir de bons résultats. Souvent, la qualité et la quantité de vos données comptent autant que tout le reste. Et toujours remettre en question vos résultats. Vous savez, vous ne voulez pas revenir en arrière, chercher des anomalies et vos données d'entrée. Juste quand vous obtenez un résultat que vous n'aimez pas, vous savez que cela introduira un biais involontaire dans vos résultats, où vos résultats principaux que vous aimez ou que vous attendez, passeront incontestés, est-ce pas ? Vous voulez questionner les choses tout le temps pour vous assurer que vous êtes toujours à l'affût de ces choses parce que même si vous trouvez un résultat que vous aimez. S' il s'avère que c'est faux, c'est toujours faux. Il va toujours informer votre entreprise dans la mauvaise direction, et cela pourrait revenir vous mordre plus tard. Par exemple, j'ai un site Web appelé No Hate News. Ce n'est pas un profit, donc je n'essaie pas de gagner de l'argent en te racontant ça. Mais disons que je veux juste trouver les pages les plus populaires sur ce site que je possède. Ça a l'air d'un problème assez simple, n'est-ce pas ? Je devrais juste être capable de parcourir mes journaux Web et de compter combien de visites chaque page a et de les trier correctement. À quel point ça peut être dur ? Eh bien, s'avère que c'est vraiment dur. Nous allons donc plonger dans cet exemple et voir pourquoi et voir quelques exemples de nettoyage des données du monde réel qui doit se produire. Voyons donc à quel point le nettoyage des données peut être important. Nous avons une tâche très simple devant nous. Retrouvez les pages de vue supérieure sur un très petit site Web. À quel point ça peut être dur ? Eh bien, nous allons plonger dans ce prochain et voir à quel point c'est dur 61. Nettoyer des données de journal Web: Nous allons donc montrer l'importance de nettoyer vos données. Avoir des données de journal Web provenant d'un petit site Web que je possède, et nous allons simplement essayer de trouver les pages les plus consultées sur ce site Web. Cela semble assez simple, mais comme vous le verrez, c'est en fait assez difficile. Alors passons à travers un exemple simple. En fait, ce n'est pas si simple où je veux juste comprendre Les pages Web les plus consultées sur mon site Web. Ça a l'air assez facile, n'est-ce pas ? Eh bien, voyons voir. Donc, si vous voulez suivre le long des pages supérieures, je cahier Python est celui que nous travaillons à partir d'ici. Et commençons donc vraiment avoir un journal d'accès que j'ai pris à partir de mon site Web réel. C' est un journal d'accès http riel d'Apache, et c'est dans votre matériel de cours. Donc, je suis allé et j'ai obtenu ce petit extrait de code hors d'Internet qui analysera une logline d' accès Apache dans un tas de champs. Donc, il contient des choses comme l'hôte et l'utilisateur et l'heure et les demandes de page réelles et l'état, et ils se réfèrent, et l'agent utilisateur, ce qui signifie quel navigateur a réellement été utilisé pour afficher cette page. Donc, cette accumulation a été appelée une expression régulière, et nous utilisons la bibliothèque Ari pour l'utiliser. Et c'est fondamentalement un langage très puissant pour faire la correspondance de motifs sur une grande chaîne. Donc, en utilisant cette expression régulière, nous pouvons effectivement l'appliquer à chaque ligne de notre journal d'accès et regrouper automatiquement les bits de données, les bits d'information de cette logline d'accès dans ces différents champs. Ok, donc si vous voulez jouer ici, assurez-vous de mettre à jour le chemin pour déplacer le journal d'accès à l'endroit où vous avez enregistré le matériel du cours pour ce cours et continuons et exécutons ceci. Bon, donc nous avons un chemin vers notre fichier de données. Donc la chose évidente à faire ici, nous allons juste préparer un petit script qui compte chacun. Vous êtes l que nous rencontrons qui a été demandé et tient compte du nombre de fois il a été demandé. Alors on peut trier cette liste et trouver nos premières pages ? Ça a l'air assez simple. Donc, nous allons construire un petit dictionnaire python ici appelé vos comptes, et nous allons ouvrir notre fichier journal et pour chaque ligne, nous allons appliquer notre expression régulière. Et si cela revient réellement avec une correspondance réussie pour le modèle que nous essayons de faire correspondre, dira, OK, OK, cela ressemble à une ligne décente dans notre journal d'accès. Extrayons le champ de requête hors de celui-ci, qui est la requête http réelle. Quelle page est réellement demandé par le navigateur divisé en ses trois composants. Un concours consiste en, ah, action comme obtenir notre poste, l'année réelle L demandée et le protocole utilisé. Donc, étant donné cette information divisée, nous pouvons alors juste voir si vous êtes l existe déjà dans mon dictionnaire. Si c'est le cas, j'augmenterai le nombre de fois que l'Europe a été rencontrée. Sinon, j'introduirai une nouvelle entrée de dictionnaire. Pour cela, votre Ellen l'initialise à la valeur hors un. Je le fais pour chaque ligne dans le journal, triez les résultats en sens inverse, commandez numériquement et imprimez-le. Alors allons de l'avant et exécutons ça. Oups. Nous nous retrouvons avec cette grosse vieille erreur ici, et cela nous dit que nous avons besoin de plus d'une valeur pour avoir un impact. Donc apparemment, nous obtenons des champs de requête qui ne contiennent pas d'action par an sur un protocole. Il contient autre chose. Voyons ce qui se passe là-bas. Donc, si nous imprimons toutes les demandes qui ne contiennent pas trois éléments, nous pouvons voir ce qui apparaît réellement ici. Donc nous allons faire ici est un petit extrait de code similaire, mais nous allons vraiment le faire. Divisez le champ de demande et imprimez les cas où nous n'obtenons pas les trois champs attendus et voyez ce qui est réellement dedans. Je veux dire, donc un tas de champs vides, c'est notre premier problème. Mais alors nous avons ce sentiment suivre, juste des ordures. Tu sais, qui sait d'où ça vient. C' est clairement des données erronées, alors ok, très bien. Modifions notre script va en fait simplement jeter toutes les lignes qui n'ont pas les trois champs attendus dans la requête. Et cela semble être une chose légitime à faire, parce que cela, en fait, en fait, y a des données complètement inutiles à l'intérieur de celui-ci. Ce n'est pas comme si nous manquions quelque chose ici en faisant ce script modificateur si bien. Pour ce faire, nous avons introduit ceci si prêter des champs est égal à trois lion avant qu'il essaie réellement de le traiter , et nous allons exécuter ce Hey, nous avons un résultat, mais cela ne ressemble pas vraiment au top sur mon site Web. Souviens-toi, c'est un site de nouvelles. Donc, nous obtenons beaucoup de fichiers PHP hits. C' est, vous savez, des scripts PERL. Qu' est-ce qui se passe ? Il y a le meilleur résultat Est-ce que xml rpc dot script PHP, puis WP se connecte au point PHP suivi la page d'accueil. Donc, pas très utile robots dot texte à tas de fichiers XML. Tu sais, quand j'ai regardé ça plus tard, il s'est avéré que ma légère était en fait victime d'une attaque malveillante. Quelqu' un essayait d'y pénétrer, et ce script RPC XML était la façon dont ils essayaient de deviner mes mots de passe, et ils essayaient de se connecter en utilisant le script de connexion, et heureusement, je les ai éteints avant ils pourraient en fait accéder à ce site Web. Mais c'était un exemple de données malveillantes introduites dans mon flux de données que je dois filtrer. Donc, vous savez, regardant cet affaiblissement, voyez que non seulement était cette attaque malveillante, vous savez, regardant des fichiers PHP, mais il essayait aussi d'exécuter des choses. Donc, il ne faisait pas seulement une demande get. Il faisait une demande de poste sur le script. En fait, essayez d'exécuter du code sur mon site Web. Maintenant, je sais que les données que je tiens à vous savent, dans l'esprit de ce que j'essaie de comprendre, sont les gens qui obtiennent des pages Web de mon site Web. Donc une chose légitime pour moi est de filtrer tout ce qui n'est pas une demande get de ces pertes. Faisons ce nid. Donc, nous allons vérifier à nouveau si nous avons trois champs dans notre champ de demande, et ensuite nous allons également vérifier si l'action est obtenir. Et si ce n'est pas le cas, nous allons juste ignorer cette ligne entièrement. Nous devrions donc nous rapprocher de ce que nous voulons maintenant. Et, ouais, ça commence à paraître plus raisonnable, mais ça ne passe toujours pas vraiment un chèque de sable. Il s'agit d'un site de nouvelles. Les gens y vont pour lire des nouvelles, et est-ce qu'ils lisent vraiment mon petit blogueur là-dessus ? Ça a juste quelques articles ? Je ne pense pas. Ça semble un peu pétillant, alors plongons un peu et voyons qui regarde réellement ces pages blawg. si vous voulez vraiment aller dans ce fichier et l'examiner à la main, vous verrez que beaucoup de ces requêtes Blawg n'ont pas réellement d'agent utilisateur sur GFT . Ils ont juste un utilisateur. Agent de Dash, qui est très inhabituel à cause d'un vrai être humain avec un vrai navigateur, essayait d'obtenir cette page. Ça dirait quelque chose comme Mozilla ou Internet Explorer ou quelque chose comme ça, non ? Ou chrome ? Donc, il semble que ces demandes air venant d'une sorte de racleur à nouveau, trafic potentiellement malveillant qui n'identifie pas qui il ISS. Donc d'accord, peut-être que nous devrions regarder les agents utilisateurs pour voir si ce sont de vrais humains qui font des demandes ou non. Allons de l'avant et imprimons tous les différents agents utilisateurs qui rencontraient. Donc, dans le même esprit du code qui résume réellement la différence que vous ou d'autre nous voyons. Nous pouvons regarder tous les différents agents utilisateurs que nous avons vu et les trier par les chaînes d'agents utilisateurs les plus populaires dans ce journal et vous pouvez voir que la plupart d'entre eux semble légitime, donc vous savez que c'est au moins si c'est un grattoir, et dans ce , ce n'était pas une attaque malveillante, mais ils faisaient semblant d'être un navigateur légitime. Mais cet agent utilisateur de tableau de bord apparaît beaucoup à, donc je ne sais pas ce que c'est, mais je sais que ce n'est pas un navigateur naturel. Un vrai navigateur, vous savez, ressemblerait à quelque chose de plus comme ça. L' autre chose que je vois est beaucoup de trafic des araignées de webcrawler. Donc par faire est un moteur de recherche en Chine. Google vous a acheté avis, rampant la page. Euh, tu sais, je crois que j'ai vu Yandex ici pour, tu sais, le moteur de recherche russe. Donc, nos données sont polluées par beaucoup de robots qui essaient juste d'extraire notre site Web à fins de moteur de recherche. Et encore une fois que le trafic ne devrait pas compter dans le but visé de mon analyse de voir quelles pages les êtres humains réels regardent sur mon site Web. Ce sont tous des scripts automatisés. D' accord, donc ça devient un peu délicat. Vous savez, il n'y a pas de vrai bon moyen d'identifier les araignées ou les robots simplement basés sur la chaîne utilisateur seule, mais nous pouvons au moins prendre une fissure légitime et filtrer tout ce qui a le mot botnet ou tout ce qui provient de mon bouchon d'encaissement pourrait être demander des pages à l'avance aussi. Et nous dépouillerons aussi notre ami Single Dash. Donc, nous allons encore une fois affiner notre script pour, en plus de tout le reste dépouiller et un agent utilisateur qui avait l'air poisson et ce que nous obtenons. D' accord, donc nous voilà Oh ho, ça commence à paraître plus raisonnable pour les 1er 2 entrées. La page d'accueil est la plus populaire, ce qui serait attendu. Orlando Headlines est également populaire parce que j'utilise ce site plus que quiconque, et je vis à Orlando. Mais on a un tas de trucs qui ne sont pas du tout des pages blanches. Un tas de scripts de beaucoup de fichiers CSS. Ce ne sont pas des pages Web. Donc encore une fois, je pourrais simplement appliquer quelques connaissances sur mon site où il se trouve de savoir que toutes les pages légitimes sur mon site Justin avec une barre oblique dans leur euro. Alors allons de l'avant et modifions ceci à nouveau pour enlever tout ce qui ne se termine pas par une barre oblique . Enfin, nous obtenons des résultats qui semblent avoir du sens. Donc, il semble que la page supérieure demandée à des êtres humains réels sur mon petit site de nouvelles pas de haine est la page d'accueil, suivie par les titres d'Orlando suivis par World News suivi par les bandes dessinées que la météo à propos de l'écran. Donc, cela commence à paraître plus légitime. Si vous deviez creuser encore plus profondément, , vous voyez qu'il y a encore des problèmes avec cette analyse. Par exemple, ces pages de flux d'air toujours provenant de robots qui essayent juste d'obtenir des données X RSS de mon site Web . C' est donc une excellente parabole et comment une analyse apparemment simple nécessite une énorme quantité de pré-traitement et de nettoyage des données source avant d'obtenir des résultats qui ont un sens. Et encore une fois, assurez-vous que les choses que vous faites pour nettoyer vos données en cours de route ou selon des principes et que vous n'êtes pas seulement en train de choisir des problèmes qui ne correspondent pas à vos idées préconçues. Alors, remettez toujours en question vos résultats. Regardez toujours vos données source et recherchez des choses bizarres qui y sont. D' accord. Si vous voulez, genre, genre, envoyer un message plus, vous pouvez résoudre ce problème de flux. Allez-y et supprimez les choses qui incluent le flux, parce que nous savons que ce n'est pas une vraie page Web et juste pour se familiariser avec le code ou aller regarder la loi un peu plus attentivement, vous savez, gagner quelques la compréhension de l'origine de ces pages de flux. Et peut-être qu'il existe un moyen encore plus efficace et plus robuste d'identifier ce trafic comme une classe plus importante. Alors n'hésitez pas à vous embêter avec ça. Mais j'espère que vous avez appris votre leçon. Le nettoyage des données est extrêmement important, et ça va prendre beaucoup de temps. Donc, il est assez surprenant à quel point il était difficile d'obtenir des résultats raisonnables sur la simple question comme, Quelles sont les premières pages de mon site Web ? Et vous pouvez imaginer si beaucoup de travail a dû aller dans le nettoyage des données pour un problème aussi simple . Pensez à toutes les façons nuancées que les données sales pourraient réellement affecter les résultats de problèmes plus complexes et d'algorithmes complexes. Très important pour comprendre vos données sources. Regardez-le. Regardez un échantillon représentatif de celui-ci. Assurez-vous de bien comprendre ce qui arrive dans votre système et de toujours remettre en question vos résultats et de les lier aux données sources d'origine pour voir d'où proviennentles résultats douteux proviennent 62. Normaldes données numériques: C' est une conférence très rapide. Je veux juste vous rappeler que parfois vous avez besoin de normaliser ou blanc dans vos données entrant dans un algorithme. Il suffit de garder cela à l'arrière de votre tête parce que parfois cela affectera la qualité de vos résultats. Si vous ne faites pas une conférence si rapide ici. Je veux juste vous rappeler l'importance parfois de normaliser vos données, m' assurant que vos différentes données d'entités en entrée sont sur la même échelle et qu'elles sont comparables. Et parfois c'est important, et parfois ce n'est pas le cas. Mais tu dois juste être conscient de quand c'est le cas. Donc, parfois, les centres commerciaux seront basés sur plusieurs attributs numériques différents. Rappelez-vous, comme les modèles multi-variants. Vous savez, nous pourrions avoir différents attributs d'une voiture que nous examinons, et ils pourraient ne pas être des mesures directement comparables ou, par exemple, si nous examinons les relations entre les âges et les revenus. Les âges peuvent varier de 0 à 100, mais les revenus et les dollars peuvent varier de zéro à milliards, et selon la devise, il pourrait être encore plus important. Certains modèles sont d'accord avec ça. Vous savez, si vous faites comme une régression, généralement ce n'est pas une grosse affaire, mais d'autres modèles ne fonctionnent pas si bien à moins que ces valeurs soient réduites pour nous à une échelle commune. Donc, si vous n'êtes pas prudent, vous pouvez vous retrouver avec certains attributs qui comptent plus que d'autres. Peut-être que le revenu finirait par compter beaucoup plus que l'âge si vous essayez de traiter ces deux valeurs comme des valeurs comparables dans votre modèle, sorte que peut également émettre un biais et les attributs qui peuvent également être un problème. Donc peut-être que vous un ensemble de vos données est biaisé. Vous savez, parfois vous devez normaliser les choses par rapport à la plage réelle vue pour cet ensemble de valeurs , et pas seulement, ah, ah, zéro à quel que soit le maximum soit l'échelle. Et vous savez qu'il n'y a pas de règle pour savoir quand vous ne devriez pas faire ne devrait pas faire ce genre de normalisation. Mais tout ce que je peux dire, c'est toujours lire la documentation pour la technique que vous utilisez. Ainsi, par exemple, en psychologie, il apprend leur implémentation PC a un blanc et l'option qui va automatiquement normaliser vos données pour vous. Vous devriez probablement utiliser cela, et il a également quelques modules de pré-traitement disponibles qui vont normaliser et mettre à l'échelle à partir des choses pour vous automatiquement. Une houle, tu sais. Soyez égalementconscient des également données textuelles qui devraient être représentées de manière ordonnée numériquement. Donc, si vous avez oui ou pas de données, vous devrez peut-être convertir cet orteil un ou zéro et le faire dans une affaire cohérente. Encore une fois, il suffit de lire la documentation. La plupart des techniques fonctionnent bien avec des données brutes normalisées. Mais avant de commencer à utiliser une nouvelle donnée, une nouvelle technique pour la première fois, suffit de lire la documentation et de comprendre si les entrées doivent être mises à l'échelle ou normalisées ou blanchies en premier, et si oui, laïque rendra probablement très facile pour vous de le faire, vous avez juste à vous rappeler de le faire . N' oubliez pas de re les résultats Scalea lorsque vous avez terminé, si vous mettez à l'échelle les données d'entrée. Donc, si vous voulez être en mesure d'interpréter les résultats que vous obtenez, vous devez parfois les redimensionner à leur plage d'origine une fois que vous avez terminé. Donc, si vous mettez à l'échelle des choses et peut-être même les biaiser vers une certaine quantité avant les entrer dans un modèle, assurez-vous que vous les avez non qualifiés et les avez impartiaux avant de réellement présenter ces résultats à quelqu'un ou d'autre qu'ils n'aura aucun sens. Ok, donc juste un petit rappel. Un peu d'une parabole si vous allez toujours vérifier pour voir si vous devriez la normaliser. Blanchissez vos données avant de les transmettre dans un modèle donné. Donc aucun exercice associé à cette conférence n'est juste quelque chose que je veux que tu te souviennes. J' essaie juste de ramener le point à la maison. Certains algorithmes nécessitent un blanchiment d'une normalisation. Certains ne lisent pas toujours la documentation. Si vous avez besoin de normaliser les données entrant dans un algorithme, il vous le dira généralement et le rendra très facile à faire. Alors soyez conscient de cela. 63. Détection des points: Parfois, votre monde réel aux données contiendra des valeurs aberrantes, et elles peuvent être des valeurs aberrantes légitimes. Ils peuvent être causés par de vraies personnes, et non par une sorte de trafic malveillant ou de fausses données, et vous devrez décider comment vous allez les traiter. Donc, parfois, il est approprié de les enlever. Parfois, ce n'est pas le cas. Assurez-vous de prendre cette décision de façon responsable. Donc, par exemple, si je fais un filtrage collaboratif et que j'essaie de faire des recommandations de films ou quelque chose comme ça, vous pourriez avoir quelques utilisateurs puissants qui ont regardé tous les films jamais réalisés et évalué chaque film jamais fait. Et ils pourraient finir par avoir une influence excessive sur les recommandations pour tout le monde . Et vous ne voulez pas vraiment qu'une poignée de gens aient autant de pouvoir dans votre système. Cela pourrait être un exemple d'où il serait légitime de filtrer une valeur aberrante et de les identifier en fonction de la façon dont Maney notations qu'ils ont réellement mises dans le système. Ou peut-être un aberrant serait quelqu'un qui n'a pas assez de notes. Ou nous pourrions examiner les données du journal Web comme nous l'avons vu dans notre exemple précédemment, où nous faisons le nettoyage des données aberrantes pourrait vous dire qu'il y a quelque chose de très mal avec vos données pour commencer. Ça pourrait être un trafic malveillant. Il pourrait s'agir de robots ou d'autres agents qui devraient être jetés et qui ne représentent pas des êtres humains réels que vous essayez de modéliser. Mais si quelqu'un voulait vraiment, disons le revenu moyen moyen aux États-Unis et non le moyen, ils veulent précisément la moyenne. Tu ne devrais pas jeter les milliardaires du pays juste parce que tu ne les aimes pas . Le fait est qu' il y a des milliards de dollars qui vont augmenter ce montant, même si cela ne bouge pas beaucoup la médiane. Alors ne fuyez pas vos chiffres en jetant des menteurs, mais tout au long des menteurs. Si ce n'est pas compatible avec ce que vous essayez de modéliser maintenant, comment identifier les menteurs ? Eh bien, vous vous souvenez de notre vieil ami écart-type ? Nous avons abordé cela très tôt dans ce cours. C' est un outil très utile pour détecter les valeurs aberrantes d'une manière très fondée sur des principes. Il calcule l'écart type d'un ensemble de données qui devrait avoir une distribution plus ou moins normale . Et si vous voyez un point de données qui est en dehors d'un ou deux écarts-types, il y a une valeur aberrante. Rappelez-vous, nous avons parlé de la boîte et des diagrammes moustaches à, et ceux-ci ont également une façon intégrée de détecter et de visualiser les menteurs. Et ceux-ci définissent les valeurs aberrantes comme se trouvant à l'extérieur de 1,5 l'intervalle inter quartile. Alors, quel multiple choisissez-vous ? Eh bien, vous devez utiliser le bon sens. n'y a pas de règle dure et rapide quant à ce qui est aberrant. Vous devez regarder vos données et le genre de globe oculaire il. Regardez la distribution. Regarde l'histoire de Graham. Voyez s'il y a des choses réelles qui vous restent sont des valeurs aberrantes évidentes et comprenez ce qu'elles sont avant de les jeter. Alors regardons un exemple de code et voyons comment vous pouvez le faire dans la pratique. Si vous souhaitez suivre, retournez au carnet de notes aberrantes dans votre matériel de cours et nous allons revoir notre exemple de données sur la répartition du revenu. Donc, comme avant, nous allons utiliser n p point aléatoire pour créer une distribution normale centrée autour de 27 000$ par année avec un écart-type de 15 000$ va créer 10 000 de ces revenus normalement distribués et maintenant juste un gâchis. Les choses se passent un peu bien, à travers un milliardaire dans le mélange. Que Jeff Bezos , qui que vous voulez imaginer cela dépendra juste que de la liste des données de revenu que nous avons maintenant vous pouvez voir que cela gâche les choses assez rapidement, même juste essayer de visualiser ces données. Donc, ce sont les étudiants. Nous essayons de tracer un Graham historique de ces données. Nous voyons que tous les soi-disant, gens normaux qui gagnent environ 27,000$ par année ici, dans ce gros pic ici et là , un milliard de dollars. Nous avons un seul point de données que vous ne pouvez même pas voir, mais cela a déjà gâché notre capacité à visualiser ces données de sorte qu'un milliardaire a fini par serrer tout le monde dans cette petite ligne de notre histoire. Graham et il a aussi faussé notre moyenne assez significativement. Alors allons de l'avant et exécutons ceci pour réellement obtenir ces données dans le système ici. Si vous calculez la moyenne, nous verrons que ce n'est pas 27 000$ du tout. C' est plus comme 127 000$ juste à cause de cette valeur aberrante. Donc, il est très important dans cette affaire de creuser dans le remorquage ce qui cause vos valeurs aberrantes et de comprendre d'où elles viennent ? Vous voulez vous assurer que si vous jetez des données, c'est justifiable. C' est basé sur quelque chose de principe, non ? Donc, si le but de cette analyse était de vraiment comprendre les revenus de citation sans citer les Américains typiques, filtrer cette poignée de milliardaires semblerait être une chose légitime à faire, Vous voulez juste vous assurer que vous êtes transparent, que vous avez fait ça quand vous présentez vos données Maintenant il y a quelque chose de plus robuste que vous pourriez faire dans le dicton juste, si vous êtes milliardaire, je vais vous jeter dehors. Nous pourrions dire, par exemple, tout ce qui dépasse deux écarts-types de la valeur médiane dans l'ensemble de données sera défini comme un aberrant, et nous pouvons choisir la valeur de l'écart-type que nous voulons là. Donc voici une petite fonction qui détermine ça pour nous. Je l'ai appelé rejeter des valeurs aberrantes. Il commence par calculer la médiane d'un ensemble de données et l'écart-type de cet ensemble de données , et cette petite ligne de code ici vérifie simplement si ou non où soufflent deux écarts-types de la médiane ou au-dessus de deux types déviations de la médiane et renvoie le jeu de données de filtre qui les jette tous. Donc, nous appelons Filtered equals, rejetons les revenus aberrants, et cela applique simplement cette fonction de filtre à l'ensemble de données et retourne l' ensemble filtré à sa place. Nous pourrions alors tracer cet ensemble de données filtrantes, et nous verrons si cela fonctionne. Bien sûr, c'est le cas. Et la bonne chose ici, c'est que ça ne m'aime pas à travers beaucoup de données, non ? Donc, nous avons toujours une belle petite courbe de cloche propre ici, mais notre milliardaire est parti sans avoir à écrire une logique spéciale qui dit, si vous faites plus de 1 000 000 000 000 000$ pour vous jeter dehors à la place, c'est basé sur un multiple d'écarts-types, ce qui est un peu plus d'une chose de principe pour Dio et notre moyenne sera, eh bien, plus significative maintenant aussi. Allons-y et courons ça avant que j'oublie. Donc maintenant, si nous calculons la moyenne de l'ensemble de données filtrées qui est de retour à près de 27 000$, vos résultats seront un peu différents en raison du caractère aléatoire impliqué. Mais nous avons réussi à filtrer sont milliardaires sans avoir à coder un cas spécial pour eux. Nous sommes juste une manière très fondée sur des principes rejetant les valeurs aberrantes au-delà de deux écarts-types de la médiane. C' est, ah, une chose raisonnable à faire. Donc, voici l'activité, car si vous voulez jouer avec cela un peu plus au lieu d'un seul allié milliardaire, ou ajouter plusieurs menteurs générés aléatoirement aux données, vous savez, choisissez une plage de valeurs là et juste Jetez-les là-dedans. Expérimentez avec différentes valeurs du multiple, l'écart-type pour identifier ces valeurs aberrantes et voir quel effet il a sur les résultats finaux . C' est juste, ah, l'occasion de mettre la main sur ça et de jouer un peu plus directement, si vous voulez. Alors donnez ça un coup si vous voulez, et ensuite on passera 64. Ingénierie des caractéristiques et Curse de dimension: Plongons dans le monde de l'ingénierie des fonctionnalités, dans le monde de l'apprentissage automatique. Qu' est-ce que l'ingénierie des fonctionnalités de toute façon ? Eh bien, fondamentalement, c'est le processus d'application de ce que vous savez sur vos données pour réduire les fonctionnalités que vous utilisez ou peut-être créer nouvelles fonctionnalités ou transformer les fonctionnalités que vous possédez. Ce que je veux dire par fonctionnalité aussi. Ce sont les attributs de vos données d'entraînement que les éléments que vous entraînez, la largeur de votre modèle. Prenons un exemple. Donc, disons que nous essayons de prédire combien d'argent les gens gagnent en fonction des divers attributs des gens. Donc, vos caractéristiques dans ce cas pourraient être l'âge d'une personne, leur taille, leur poids, leur adresse, quel genre de voiture ils conduisent, un certain nombre de choses, non ? Certaines de ces choses vont être pertinentes par rapport aux choses que vous essayez de prédire et certaines d'entre elles ne le seront pas. Donc, le processus d'ingénierie des entités est en partie, il suffit de sélectionner les entités qui sont importantes pour ce que j' essaie de prédire et de choisir ces entités avec sagesse. Beaucoup de fois, vous devez transformer ces fonctionnalités d'une manière ou d'une autre. Peut-être que les données brutes ne sont pas utiles pour ce modèle spécifique que vous utilisez. Peut-être que les choses doivent être normalisées ou mises à l'échelle d'une manière ou d'une autre, sont encodées d'une manière spécifique. Souvent, vous aurez des choses comme des données manquantes. Dans le monde réel, souvent, vous n'avez pas de données complètes pour chaque point de données. Et la façon dont vous choisissez de traiter cela peut grandement influer sur la qualité du modèle résultant que vous avez. Aussi parfois, vous voulez créer de nouvelles entités à partir des entités existantes que vous possédez. Peut-être que les tendances numériques dans les données que vous avez pour une entité donnée sont mieux représentées en prenant le journal de là, le carré de celui-ci ou quelque chose comme ça. Ou peut-être que vous feriez mieux de prendre plusieurs fonctionnalités et de les combiner mathématiquement en une seule pour réduire votre dimensionnalité. C' est tout ce qu'est l'ingénierie des fonctionnalités. Vous ne pouvez pas simplement prendre toutes les données que vous avez et les jeter dans cette grande trémie d'apprentissage automatique et vous attendre à ce que de bonnes choses sortent de l'autre bout. C' est vraiment l'art de l'apprentissage automatique. C' est là que votre expertise est appliquée pour obtenir de bons résultats. Il ne s'agit pas seulement d'un processus mécanique où vous suivez ces étapes, prenez toutes les données que vous avez, jetez-les dans cet algorithme et voyez quelles prévisions vous faites. C' est ce qui sépare les bons praticiens de l'apprentissage automatique des mauvais. Ceux qui peuvent réellement faire de l'ingénierie de fonctionnalités sont ceux qui sont les plus performants et les plus précieux sur le marché du travail, bien sûr. Et ce n'est pas des trucs qui sont généralement enseignés, non ? Donc, c'est en grande partie beaucoup de choses qui sont apprises grâce à l'expérience et en fait d'être là-bas dans le monde réel et de pratiquer l'apprentissage automatique. Pourquoi l'ingénierie des caractéristiques est-elle importante en premier lieu ? Eh bien, c'est à propos de la malédiction de la dimensionnalité. Qu'est-ce qu'on veut dire par là ? Eh bien, comme je l'ai dit, vous ne pouvez pas simplement jeter toutes les fonctionnalités que vous avez dans la machine et vous attendre à ce que de bonnes choses se produisent. Trop de fonctionnalités peuvent en fait être très problématiques pour quelques raisons différentes. Tout d'abord, c'est qu'au moins une donnée clairsemée. Encore une fois, revenez à l'exemple d'essayer de former un modèle sur les attributs des gens. Il y a des centaines d'attributs sur une personne que vous pourriez trouver, non ? Comme on l'a dit, l'âge, taille, le poids, quelle voiture conduisez-vous ? Combien d'argent gagnez-vous ? Où habites-tu ? Qui sait ? Où êtes-vous allé à la fac ? La liste continue et continue. Et vous pouvez réellement envisager chaque personne comme un vecteur dans l'espace dimensionnel de toutes ces entités. Ok, donc reste avec moi ici. Imaginez, par exemple, que la seule caractéristique que nous avons est l'âge d'une personne. Vous pouvez représenter une personne par un vecteur le long d'un seul axe d'âge , à droite, allant de 0 à 100 ou autre. Maintenant, nous jetons une autre dimension, disons leur hauteur. Nous avons une autre dimension et un autre axe sur lequel nous avons ce vecteur pointant qui code à la fois leur âge sur un axe et leur hauteur sur un autre, non ? Donc maintenant, nous avons un vecteur bidimensionnel jeté une troisième dimension là, dire combien d'argent ils gagnent. Maintenant, nous avons un vecteur en trois dimensions où une dimension est leur âge, une dimension est leur taille, une dimension est l'argent qu'ils gagnent. Et alors que nous ajoutons de plus en plus de dimensions, l'espace disponible avec lequel nous devons travailler ne cesse d'exploser, non ? C' est ce que nous appelons la malédiction de la dimensionnalité. Ainsi, plus vous avez de fonctionnalités, plus l'espace dans lequel nous pouvons trouver une solution est grand. Et avoir un grand espace pour essayer de trouver la bonne solution rend beaucoup plus difficile de trouver cette solution optimale. Ainsi, plus vous disposez de fonctionnalités, plus vos données deviennent rares dans cet espace de solution. Et plus il est difficile de trouver la meilleure solution. Vous feriez donc mieux de faire passer ces fonctionnalités à celles qui comptent le plus, ce qui vous donnera moins de données clairsemées et facilitera grandement la recherche de la bonne solution. Aussi, juste du point de vue de la performance, imaginez essayer de créer un réseau neuronal qui a des entrées pour chacune de ces fonctionnalités codées de la manière dont il a besoin, n'est-ce pas ? Ce réseau neuronal devrait être massif, extrêmement large au fond, probablement extrêmement profond aussi bien pour trouver toutes les relations entre ces nombreuses caractéristiques. Et ça va être ridiculement difficile d'obtenir que ça converge sur quoi que ce soit. Donc, une grande partie du succès de l'apprentissage automatique n'est pas seulement d'utiliser l'algorithme, non seulement de nettoyer vos données, mais aussi de choisir les données que vous utilisez en premier lieu. Et c'est ce qu'est l'ingénierie des fonctionnalités. Encore une fois, beaucoup de choses se réfèrent à la connaissance du domaine et à l'utilisation de votre bon sens sur ce qui fonctionnera et ce que l'on ferait améliorer votre modèle et simplement expérimenter avec différentes choses. Qu' est-ce qui fait un effet et ce qui ne le fait pas, ce qui aide, ce qui blesse les choses ? Donc, beaucoup de cela va et vient juste avec cette fonctionnalité aide-t-elle les choses ? Non. D'accord. On ne l'utilisera pas. Il fait cette fonctionnalité aide les choses ? Non. D'accord. Essayez autre chose. Maintenant, vous n'avez pas toujours à deviner pour être juste, il y a des façons plus fondées sur des principes de réduire la dimensionnalité. Donc, l'un d'eux est appelé PCA Principal Component Analysis. Pca est une façon de prendre toutes ces dimensions supérieures, toutes ces différentes caractéristiques que vous possédez et de les distiller en un plus petit nombre d'entités à un plus petit nombre de dimensions. Et il essaie de le faire d'une manière qui préserve autant que possible l'information. Donc, je veux dire, si vous avez assez de puissance de calcul pour réellement utiliser PCA sur un grand ensemble de fonctionnalités, c'est une façon plus basée sur des principes de le distiller jusqu'aux fonctionnalités qui comptent réellement. Et les fonctionnalités avec lesquelles vous vous retrouvez ne sont pas des choses sur lesquelles vous pouvez mettre une étiquette. Ce ne sont que des fonctionnalités créées artificiellement qui capturent l'essence des fonctionnalités que vous avez commencé avec. K-signifie le clustering est une autre façon de le faire. Ce qui est bien, c'est que ce sont les deux techniques non surveillées, donc vous n'avez pas à les former sur quoi que ce soit. Vous pouvez simplement jeter les données d'entité que vous avez l'un de ces algorithmes et il sera épuisé si vous voulez, un plus petit ensemble de dimensions qui fonctionnera tout aussi bien, espérons-le de près aussi. Mais encore une fois, plus de fonctionnalités n'est pas mieux. Cela conduit à ce que nous appelons la malédiction de la dimensionnalité. Et c'est l'une des principales raisons pour lesquelles nous voulons faire de l'ingénierie des fonctionnalités. Et l'une des principales choses que vous allez faire dans ce processus. 65. Techniques d'imputation pour les données manquantes: Donc, une grande partie de l'ingénierie des fonctionnalités est l'imputation des données manquantes. Que faites-vous lorsque vos données contiennent des éléments de données manquants ? C' est ce qui se passe dans le monde réel. Pour chaque observation que vous avez, il y aura des points de données manquants plus que probable. Eh bien, c'est une solution simple est juste appelé remplacement moyen. L' idée est que si vous avez attributs ou des entités manquants dans l'une des lignes de vos données, remplacez-le simplement par la moyenne de la colonne entière. Et rappelez-vous, nous parlons de colonnes, pas de lignes ici. Vous voulez prendre la moyenne de toutes les autres observations de cette même fonctionnalité, cela n'a pas vraiment de sens de prendre la moyenne de toutes les autres fonctionnalités pour cette rangée, n'est-ce pas ? Donc, le remplacement moyen consiste à prendre la moyenne de cette colonne et à remplacer toutes les valeurs vides par cette moyenne. Donc c'est fascine facile. Voilà quelques-uns des avantages de cette approche. Elle n'affecte pas non plus la moyenne ou la taille de l'échantillon de votre ensemble de données, car vous remplacez simplement les données manquantes par la moyenne. Cela n'affectera pas la moyenne globale de l'ensemble de données, ce qui peut être agréable. Maintenant, une nuance est que si vous avez beaucoup de valeurs aberrantes dans votre jeu de données, ce qui est également quelque chose que vous devez traiter lors de la préparation de vos données. Vous pourriez trouver que la médiane est en fait un meilleur choix que la moyenne. Donc, si vous avez un ensemble de données d'un tas de personnes et peut-être une de ces colonnes comme revenu. Et certaines personnes ne déclarent pas leur revenu parce qu'elles pensent que c'est sensible. Vous pourriez avoir votre moyenne faussée par un groupe de millionnaires et de milliardaires dans votre jeu de données. Donc, si vous voulez dire imputation et c'est une sorte de situation où vous avez des valeurs aberrantes. Vous pouvez vous retrouver avec une valeur trop élevée ou trop faible que vous utilisez pour le remplacement. Donc, si vous avez des valeurs aberrantes qui faussent votre moyenne, vous pouvez penser à utiliser la médiane à la place. Ce sera moins sensible à ces valeurs aberrantes. Mais en général, ce n'est pas le meilleur choix pour l'imputation. Tout d'abord, cela ne fonctionne qu'au niveau de la colonne. Donc, s'il y a des corrélations entre d'autres entités dans votre jeu de données, il ne va pas les reprendre. Donc, s'il y a une relation entre disons, l'âge et le revenu, cette relation va être totalement oubliée. Donc vous pouvez finir par dire qu'un gamin de 10 ans fait, vous savez, 50 000$ par an parce que c'est la moyenne de votre jeu de données, mais ça n'a vraiment pas de sens, non ? Je veux dire, un gamin de 15 ans ne ferait pas encore autant d'argent. C' est donc une approche très naïve de ce point de vue. L' autre problème est que vous ne pouvez pas vraiment l'utiliser sur des fonctionnalités catégoriques. Comment prenez-vous la moyenne d' une donnée catégorique qui n'a tout simplement pas de sens, non ? Bien que vous puissiez utiliser la valeur la plus fréquente qui apparaît la catégorie la plus couramment vue serait une chose raisonnable à faire dans ce cas, c'est en quelque sorte dans le même esprit est le remplacement moyen, mais pas vraiment la même chose. Dans l'ensemble, bien que ce ne sera pas une méthode très précise. C' est une tentative de faire l'imputation. Donc, bien que ce soit rapide et facile et présente quelques avantages dans la pratique. Si quelqu'un vous demande de dire à un examen de certification, quelle est la meilleure façon de procéder à l'imputation des données ? Un moyen de remplacement, n'est-ce pas ? Il ne s'agit probablement pas seulement de laisser tomber les lignes manquantes. Bien que, comme nous l'avons vu parfois, c'est une chose raisonnable à faire. Si vous avez suffisamment de données de telle sorte que supprimer quelques lignes n'a pas d'importance si vous n'avez pas trop de lignes qui contiennent des données manquantes. Ça ne semble pas déraisonnable. L' autre chose aussi est que vous voulez vous assurer que laisser tomber le Rosetta avoir des données manquantes ne biaisera pas votre jeu de données. Et d'une certaine façon, que se passe-t-il s'il y a une relation réelle entre les lignes qui manquent des données et un autre attribut de ces observations. Par exemple, disons que nous examinons le revenu. Encore une fois. Il pourrait y avoir une situation où les gens qui ont revenus très élevés ou très faibles sont plus susceptibles de ne pas le déclarer. Donc, en supprimant ou en supprimant toutes ces observations, vous supprimez de votre modèle un grand nombre de personnes qui ont des revenus très élevés ou faibles. Et cela pourrait avoir un très mauvais effet sur la précision du modèle avec lequel vous vous retrouvez. Donc, vous voulez vous assurer que si vous allez supprimer des données, qu'il ne va pas biaiser l'ensemble de données en tant que sous-produit, n'est-ce pas ? C' est donc une chose très rapide et facile à faire. Probablement la chose la plus rapide et la plus facile à faire. Vous pouvez littéralement le faire dans une ligne de code en Python, mais ce ne sera probablement jamais la meilleure approche. Encore une fois, si un examen vous demande quelle est la meilleure façon d'imputer des données manquantes ? suppression de données n'est probablement pas la bonne réponse. Presque tout va être mieux. Peut-être que vous pourriez juste remplacer un champ similaire, non ? Je veux dire, ce serait aussi une façon simple de le faire. Par exemple, je pourrais avoir un jeu de données d'avis clients sur les films, n'est-ce pas ? Peut-être que si j'ai aussi un résumé de l'évaluation et une révision du texte intégral, il serait plus logique de simplement prendre le résumé de l'examen et de le copier dans le texte intégral pour les personnes qui ont laissé le texte intégral vide. À titre d'exemple, presque tout est mieux que de simplement laisser tomber des données. Mais dans le monde réel, si vous essayez juste de faire quelque chose de rapide et sale et un peu comme commencer à expérimenter avec des données juste pour commencer à jouer avec. Cela peut être une chose raisonnable à faire. Je ne laisserais pas ça en place pour la production forcément. La chose que vous voulez probablement vraiment faire en production est d'utiliser l' apprentissage automatique lui-même pour imputer données manquantes dans votre formation Machine Learning. Donc c'est une sorte de Meta truc. Il y a différentes façons de le faire. L' un est appelé KNN, qui signifie k voisins les plus proches. Et si vous avez une expérience de l'apprentissage automatique, vous savez probablement ce que c'est déjà. L' idée générale est de trouver le k où k est un certain nombre de la rose la plus similaire à celles que vous regardez qui a des données manquantes et juste la moyenne ensemble des valeurs de ces lignes les plus similaires. Vous pouvez donc imaginer avoir une sorte de mesure de distance entre chaque ligne. Peut-être que c'est juste la distance euclidienne entre les entités normalisées dans chaque ligne ou quelque chose comme ça. Et si vous trouvez, disons, les 10 lignes les plus proches qui sont les plus semblables à celle qui manque des données. Vous pouvez simplement prendre la moyenne de cette entité à partir des dix lignes les plus similaires et en imputer la valeur. Cela profite donc des relations entre les autres entités de votre jeu de données, ce qui est une bonne chose. Un problème avec cela cependant, est que cette idée suppose que vous avez des données numériques que vous essayez d'imputer et non des données catégoriques. Il est difficile de prendre la moyenne d'une catégorie, mais il y a des façons de le faire avec des techniques comme la distance de martelage. Mais N est généralement un meilleur ajustement pour les données numériques, pas catégorique. Si vous disposez de données catégoriques, vous êtes probablement mieux servi en développant un modèle d'apprentissage profond. Les réseaux neuronaux sont excellents pour faire des problèmes de catégorisation. Donc, l'idée serait de construire un modèle d'apprentissage automatique pour imputer les données pour votre modèle d'apprentissage automatique, n'est-ce pas ? C' est un peu un cycle là-bas. Et cela fonctionne très bien pour les données catégoriques. C' est très bien, c'est difficile d'apprendre en profondeur ces jours-ci. Cependant, bien sûr, c'est compliqué. Il y a beaucoup de code impliqué dans beaucoup de tuning aussi. Mais il est difficile d'être les résultats si vous avez réellement un modèle d'apprentissage profond qui tente prédire ce qu'une entité manquante est basée sur d'autres entités de votre jeu de données. Ça va marcher. Beaucoup de travail, beaucoup d'effort de calcul, mais ça va vous donner les meilleurs résultats. Vous pouvez également effectuer une régression multiple sur les autres entités qui se trouvent dans votre jeu de données. C' est aussi une chose tout à fait raisonnable à faire. Et trois régressions permettent de trouver relations linéaires ou non linéaires entre votre entité manquante et les autres entités qui se trouvent dans votre jeu de données. Et il existe une technique très avancée le long de ces lignes appelée souris, qui représente une imputation multiple par des équations enchaînées. C' est un peu l'état de l'art dans cet espace en ce moment pour imputer des données manquantes. Donc, d'accord, et enfin, probablement la meilleure façon de traiter les données manquantes est d'obtenir plus de données. Donc, si vous avez un tas de lignes qui ont des données manquantes, peut-être que vous avez juste à essayer plus fort pour obtenir des données plus complètes des gens. Et il est difficile d'obtenir juste plus de données réelles afin que vous ne puissiez tout simplement pas avoir à vous soucier de toutes les routes qui avaient des données manquantes. Encore une fois, vous voulez faire attention à ce que si vous supprimez des données, vous ne biaisez pas votre jeu de données d'une manière ou d'une autre. Mais vraiment la meilleure façon de faire face à ne pas avoir assez de données est que vous obtenez juste plus de données, parfois vous avez juste à revenir en arrière et à déterminer d'où proviennent ces données et à collecter des données de meilleure qualité. Et donc, plus les données sont de meilleure qualité dans votre système, plus vous obtiendrez de résultats. Et alors que les techniques d'imputation sont un moyen de couvrir les problèmes où vous n'avez tout simplement pas assez de données et que vous ne pouvez pas en obtenir davantage. C' est toujours une bonne idée d'obtenir des données plus nombreuses et meilleures si vous le pouvez. 66. Gestion des données déséquilibrées : amplification en contournement, Oversampling, le soudage et SMOTE: Un autre problème dans le monde de l'ingénierie des fonctionnalités est la gestion des données déséquilibrées. Qu' est-ce qu'on veut dire par là ? Supposons que nous avons un écart important entre nos cas positifs et négatifs dans nos données d'entraînement. Un exemple courant est donc dans le monde de la détection des fraudes. La fraude réelle est assez rare, non ? Donc, la plupart de vos données d'entraînement vont contenir des lignes de formation qui ne sont pas frauduleuses. Cela peut entraîner de la difficulté à construire un modèle capable d'identifier la fraude, car il avait si peu de points de données à apprendre par rapport à tous les points de données non frauduleux. Donc c'est très facile pour un modèle de dire, ok, eh bien, puisque la fraude n'arrive en fait que 0,01 % du temps, je vais juste prédire que ce n'est pas de la fraude tout le temps. Et hé, ma précision est géniale maintenant, non ? Donc, si vous avez un jeu de données déséquilibré comme celui-ci, vous pouvez vous retrouver dans une situation comme celle où vous avez un modèle d'apprentissage automatique qui semble avoir une grande précision, mais il est juste de deviner non à chaque fois. Et ce n'est pas utile, n'est-ce pas ? Il y a donc des façons de traiter cela dans l'ingénierie des entités. Tout d'abord, ne laissez pas la terminologie vous confondre. C' est en fait quelque chose que j'ai été raccroché sur beaucoup au début quand je dis des cas positifs et négatifs, je ne parle pas de bon et de mauvais, alors ne confondez pas positif et négatif avec un résultat positif, négatif. Positif signifie simplement, est-ce la chose pour laquelle je teste ? C'est ce qui s'est passé ? Ça pourrait être de la fraude, non ? Donc si moi, si mon modèle essaie de détecter la fraude, alors la fraude est le cas positif. Même si la fraude est une chose très négative. Souvenez-vous que le positif est juste la chose que vous essayez de détecter, quoi que ce soit. Alors, battez ça dans votre tête parce que si vous continuez à confondre positif et négatif avec des jugements moraux. Maintenant, de quoi il s'agit dans ce contexte, c'est principalement un problème avec les réseaux neuronaux d'ailleurs. Donc, c'est un vrai problème que si vous avez un jeu de données déséquilibré comme celui-ci, il ne va probablement pas apprendre la bonne chose et nous devons faire face à cela d'une manière ou d'une autre. Quelle est une façon d'y faire face ? Le suréchantillonnage est une solution simple. Alors prenez des échantillons de votre classe minoritaire. Dans cet exemple de fraude, il suffit de prendre plus de ces échantillons connus pour être de la fraude et de les copier encore et encore. Faites une armée de clones, si vous voulez, de vos cas de test frauduleux. Et vous pouvez le faire au hasard. Vous penseriez que cela n'aiderait pas vraiment, mais c'est le cas avec un réseau neuronal. C' est une chose très simple que vous pouvez faire. Il suffit de fabriquer plus de votre affaire minoritaire en faisant des copies d'autres échantillons de cette affaire minoritaire. Dans l'autre sens, vous pouvez aller comme sous-échantillonnage. Donc, au lieu de créer plus de cas minoritaires, supprimez les cas majoritaires. Donc, dans le cas de fraude, on parlerait juste de supprimer certaines de ces affaires non frauduleuses pour équilibrer les choses un peu plus. Cependant, jeter des données n'est généralement pas la bonne réponse. Je veux dire, pourquoi voudrais-tu faire ça ? Vous jetez des informations, n'est-ce pas ? Donc, le seul moment où le sous-échantillonnage peut avoir du sens est si vous essayez spécifiquement d'éviter un problème de mise à l'échelle avec votre entraînement, n'est-ce pas ? Peut-être que vous avez juste plus de données que vous pouvez gérer et le matériel qui vous est donné. Et si vous avez trop de données à traiter et à gérer, bien, jetez une partie du cas majoritaire que je pourrais être une chose raisonnable à faire, mais la meilleure solution serait d'obtenir plus de puissance de calcul, non ? Et en fait à l'échelle sur un cluster ou quelque chose comme ça. Donc le sous-échantillonnage, généralement pas la meilleure approche. Quelque chose qui est encore mieux que sous-échantillonnage ou le suréchantillonnage est quelque chose qu'on appelle fumé. Et c'est quelque chose que vous pourriez voir représente une technique de suréchantillonnage de minorité synthétique, un acronyme créatif. Ce qu'il fait, c'est qu'il génère artificiellement nouveaux échantillons de la classe minoritaire en utilisant les voisins les plus proches. Donc, comme nous avons parlé d'utiliser KNN pour l'imputation, la même idée ici. On dirige les voisins les plus proches sur chaque échantillon de la classe minoritaire. Et puis nous créons de nouveaux échantillons à partir de ces résultats KNN en prenant la moyenne de ces voisins. Donc, au lieu de simplement, vous savez, faire naïvement des copies d'autres cas de test pour la classe minoritaire. En fait, nous fabriquons de nouveaux modèles basés sur les moyennes d' autres échantillons et les fabriquons de cette façon fonctionne assez bien. Donc, il génère tous les deux de nouveaux échantillons. Et sous les échantillons la classe majoritaire du fumier, ce qui est bon. C' est donc mieux que de simplement suréchantillonner en faisant des copies, car il s'agit en fait fabriquer de nouveaux points de données qui ont encore une base dans la réalité. Alors rappelez-vous, si vous avez affaire à des données déséquilibrées, fumé est un très bon choix. Une approche plus simple consiste à ajuster les seuils lorsque vous faites inférences et que vous appliquez réellement votre modèle aux données que vous possédez. Donc, quand vous faites des prédictions pour une classification, disons fraude ou non fraude, vous aurez une sorte de seuil de probabilité à laquelle vous dites, Ok, c'est probablement de la fraude. La plupart des modèles d'apprentissage automatique, donc juste sortir une fraude ou non fraude. En fait, cela vous donnera une sorte de probabilité que c'est de la fraude ou pas de la fraude. Et vous devez choisir un seuil de probabilité auquel vous dites, Ok, c'est probablement une fraude, ça mérite une enquête. Donc si vous avez trop de faux positifs, quand on répare ça, ça augmente ce seuil, non ? Donc, cela est garanti pour réduire votre taux de faux positifs, mais cela vient au prix de plus de faux négatifs. Donc, avant de faire quelque chose comme ça, vous devez penser à l'impact de ce seuil. Donc, si je lève mon seuil, cela signifie que je vais avoir moins de choses réelles qui sont signalées comme des fraudes, cela signifie que je manque une transaction frauduleuse réelle sehr, mais je ne vais pas déranger mes clients autant dire, Hey, je vole ça comme une fraude, j'ai fermé ta carte de crédit. Vous voudrez peut-être l'effet inverse, non ? Peut-être que je veux être encore plus libérale et quand je signale comme fraude, donc je réduirais ce seuil pour obtenir plus de cas de fraude signalés. Et la fraude pourrait être un cas où vous feriez mieux de deviner mal si ce n'est pas une fraude que l'inverse, non ? Vous devez donc penser au coût d'un faux positif par rapport à un faux négatif et choisir vos seuils en conséquence. 67. Bossement, Binning, encodage, encodage et shuffling: Examinons rapidement d'autres techniques que vous pourriez utiliser dans le processus d'ingénierie des entités. L' un s'appelle binning. L' ID ici est juste pour prendre vos données numériques et les transformer en données catégoriques en combinant ces valeurs ensemble en fonction de plages de valeurs. Par exemple, peut-être que j'ai l'âge des gens dans mon jeu de données. Je pourrais mettre tout le monde dans la vingtaine dans un seau, tout le monde dans une trentaine dans un autre seau et ainsi de suite. Ce serait un exemple de binning où je mets tout le monde dans une plage donnée dans une certaine catégorie. Au lieu de dire que nous devons nous entraîner en raison du fait que vous avez 22 et 3 mois. Je vais juste te plonger dans l'interdiction des enfants de 20 ans, pas vrai. J' ai donc changé ce nombre de 22, quoi que ce soit, en une catégorie de 20. Donc, c'est tout ce que l'enchère est. Pourquoi voudriez-vous faire ça ? Eh bien, il y a quelques raisons. La première est que parfois vous êtes, vous avez une certaine incertitude dans vos mesures. Donc peut-être que vos mesures ne sont pas exactement précises et que vous n'ajoutez aucune information en disant que cette personne a 22,37 ans contre 22,38 ans. Peut-être que certaines personnes se souviendraient du mauvais anniversaire ou autre chose, ou vous leur demandez à des jours différents et vous avez des valeurs différentes en conséquence. binning est donc un moyen de couvrir avec précision vos mesures. C' est une façon de vous, c'est une raison. Une autre raison peut être que vous voulez vraiment utiliser un modèle qui fonctionne sur des données catégoriques à la place des données numériques. C' est un peu douteux à faire parce que vous jetez des informations en binning, non ? Donc si tu fais ça, tu devrais réfléchir à la raison pour laquelle tu fais ça. La seule raison vraiment légitime de le faire est s'il y a l'incertitude ou des erreurs dans vos mesures sous-jacentes réelles dont vous essayez de vous débarrasser. Maintenant, il y a aussi quelque chose appelé quantile binning que vous devriez comprendre. La bonne chose à propos de quantile binning est qu'un catégorise vos données par leur place dans la distribution de données. Ainsi, il garantit que chacun de vos bacs a un nombre égal d'échantillons à l'intérieur. Donc, avec la flexion des quantiles, je m'assure que j'ai mes données distribuées telle sorte que j'ai le même nombre d'échantillons dans chaque été résultant. Parfois, c'est une chose utile à faire pour ne pas oublier, quantile binning aura des tailles égales dans chaque bac. Une autre chose que nous pourrions faire est de transformer nos données. Appliquer une sorte de fonction à notre fonctionnalité est de la rendre mieux adaptée à nos algorithmes. Par exemple, si vous avez des données d'entités qui ont une tendance exponentielle à l'intérieur, cela pourrait bénéficier d'une transformation logarithmique pour rendre ces données plus linéaires. Cela pourrait aider votre modèle et trouver des tendances réelles. Parfois, les modèles éprouvent des difficultés avec l'entrée de données non linéaires. Un exemple concret est YouTube. Ils ont publié un document sur le fonctionnement de leurs recommandations, ce qui est une excellente lecture en passant, il y a une référence à cela dans la diapositive ici. Ils ont toute une section sur l'ingénierie des fonctionnalités que vous pourriez trouver utile. Et une chose qu'ils font est pour n'importe quelle sortie numérique qu'ils ont, vous savez, par exemple, depuis combien de temps avez-vous vu la vidéo ? Ils se nourrissent aussi dans le carré de cela et la racine carrée de celui-ci. Et l'idée est qu'ils peuvent apprendre fonctions super et sous-linéaires dans les données sous-jacentes de cette façon. Donc, ils ne sont pas seulement jeter dans, les valeurs brutes sont également jeter dans le carré et la racine carrée juste pour, juste pour être prudent et voir si elles sont en fait des tendances non linéaires là qu'ils devraient être ramasser sur. Ils ont trouvé que, qui en fait améliorer leurs résultats. C' est donc un exemple de transformation des données. Il ne s'agit pas nécessairement de remplacer les données par une transformation. Parfois, vous créez réellement une nouvelle fonctionnalité à partir de la transformation d'une entité existante. C' est ce qui se passe ici. Donc, ils alimentent à la fois l'entité d'origine x et x carré et la racine carrée de x. Vous pouvez voir dans ce graphique pourquoi vous pourriez vouloir le faire. Donc, si je commence avec une fonction de x ici et la ligne verte, vous pouvez voir qu'en prenant le LN, le logarithme de cela, je finis avec une relation linéaire à la place, ce qui pourrait être plus facile pour les miles à ramasser. Je pourrais également effacer cela à une puissance plus élevée, qui ferait en fait empirer les choses dans ce cas, mais, parfois, plus de données est mieux. Encore une fois, nous parlons de la malédiction de la dimensionnalité, donc il y a une limite à cela, mais c'est ce qui est l'ingénierie des fonctionnalités. Essayer de trouver cet équilibre entre avoir juste assez d'informations et trop d'informations. Une autre chose très courante que vous ferez lors de la préparation de vos données est l'encodage. Et vous voyez cela beaucoup dans le monde de l'apprentissage profond. Donc, souvent, votre modèle nécessitera un type d'entrée très spécifique et vous devez transformer vos données et les encoder dans le format dont votre modèle a besoin. Un exemple très commun est appelé encodage à chaud. Ok, alors assurez-vous de comprendre comment ça marche. L' idée est qu'il a créé un seau pour chaque catégorie que j'ai. Et fondamentalement, j'en ai une qui représente cela, cette catégorie existe et est 0 qui représente que ce n'est pas cette catégorie. Regardons cette image comme un exemple. Disons que je construis un modèle d'apprentissage profond qui essaie de faire reconnaissance de l' écriture manuscrite sur les personnes qui dessinent les nombres 0 à 9. C' est un exemple très commun que nous examinerons plus tard. Donc, pour encoder cette information à chaud. Je sais que cette chose représente le nombre huit et pour représenter que d'une manière codée à chaud, fondamentalement j'ai 10 seaux différents pour chaque chiffre possible qui, cela pourrait représenter 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. Maintenant, je commence habituellement à compter à 0 ici. Donc vous pouvez voir ici que dans la neuvième fente là-bas, il y en a un qui représente le numéro huit. Et tous les autres emplacements il y a un 0 représentant que ce n'est pas cette catégorie. C' est tout ce que l'encodage à chaud est. Donc encore une fois, si j'en avais un dans cette première fente, cela représenterait le nombre 0. Si j'en avais un dans la deuxième fente qui représentent le numéro un et ainsi de suite et ainsi de suite. Nous le faisons parce que dans l'apprentissage profond, les neurones sont généralement activés ou désactivés, ils sont activés ou ils ne sont pas activés. Donc je ne peux pas juste alimenter le nombre huit sont le numéro un dans un neurone d'entrée et m'attendre à ce qu'il fonctionne. Ce n'est pas comme ça que ces choses fonctionnent. Au lieu de cela, j'ai besoin d'avoir ce schéma d'encodage à chaud où chaque valeur d'entraînement unique cette étiquette, il va réellement être introduit dans 10 neurones d'entrée différents étaient seulement l'un d'eux représente la catégorie réelle que j'ai. Nous pouvons également vous parler de la mise à l'échelle dans la normalisation de vos données. Encore une fois, à peu près tous les modèles l'exigent aussi. Beaucoup de modèles préfèrent que leurs données d'entités soient normalement distribuées autour de 0. Et cela est également vrai pour la plupart des réseaux d'apprentissage profond et de neurones. Et au minimum, la plupart des modèles nécessitent que vos données d'entité soient au moins mises à l'échelle à des valeurs comparables. Je veux dire, il y a des modèles là-bas qui ne se soucient pas tant, tels que les arbres de décision, mais la plupart d'entre eux seront sensibles à l'échelle de vos données d'entrée. Sinon, si vous avez des entités qui ont des grandeurs plus grandes finissent par avoir plus de poids sur votre modèle qu'elles ne le devraient. Revenons à l'exemple des gens, si j'essaie de former un système basé sur leur revenu, qui pourrait être un très grand nombre comme, vous savez, 50000 et aussi leur âge, qui est un nombre relativement petit comme 30 ou 40. Je ne normalisais pas ces données dans des fourchettes comparables avant de m'entraîner, que le revenu aurait un impact beaucoup plus important sur le modèle que leur âge. Et cela va donner lieu à un modèle qui ne fait pas un très bon travail. Maintenant, il est très facile de le faire, surtout avec scikit-learn en Python, il a un module de préprocesseur qui vous aide avec ce genre de choses. Il a quelque chose appelé minmax scalaire qui le fera pour vous très facilement. La seule chose est que vous devez vous rappeler de mettre à l'échelle les résultats de sauvegarde si ce que vous prédites, ce ne sont pas seulement les catégories et les données numériques réelles. Donc, parfois, si vous prédites quelque chose, vous devez vous assurer de réappliquer cette mise à l'échelle et d'inverser pour obtenir un résultat significatif de votre modèle à la fin de la journée. Enfin, nous allons parler de mélange. De nombreux algorithmes profitent du mélange de vos données d'entraînement. Sinon, il y a parfois une sorte de signal résiduel dans vos données d'entraînement résultant de l'ordre dans lequel ces données ont été collectées. Vous voulez donc vous assurer d'éliminer tous les sous-produits de la façon dont les données ont été effectivement collectées en les mélangeant et en randomisant simplement l'ordre qui est introduit dans votre modèle. Si souvent cela fait une différence dans la qualité aussi. Il y a beaucoup d'histoires que j'ai vu où quelqu'un a obtenu un très mauvais résultat de son modèle d'apprentissage automatique, mais en mélangeant l'entrée et les choses se sont beaucoup mieux. Alors n'oubliez pas de le faire aussi. Et c'est le monde de l'ingénierie des fonctionnalités en un mot. 68. Notes d'installation importantes au spark: façon. - Pas moyen, moyen, Pas moyen, pas moyen. 69. Installation du spark - Partie 1: jusqu' à présent, dans ce cours, nous avons parlé de nombreuses techniques d'exploration de données générales et d'apprentissage automatique que vous pouvez utiliser votre carrière en science des données. Mais ils ont tous fonctionné sur votre bureau. Et en tant que tel, vous savez, vous ne pouvez exécuter que autant de données qu'une seule machine peut traiter en utilisant certaines de ces techniques en utilisant python et psychique learning et ce que tout le monde ne parle pas maintenant du Big Data, et vous savez ce qu'il est. Vous travaillez peut-être pour une entreprise qui, en fait, dispose de Big Data pour traiter les Big Data, ce qui signifie que vous ne pouvez pas vraiment tout contrôler. Vous ne pouvez pas vraiment tout gâcher sur un seul système que vous devez réellement calculer. L' utilisation de cette ressource est d'un nuage entier. Un cluster de ressources informatiques est, et c'est là qu'Apache Spark entre en jeu. Donc, dans cette prochaine section, je vais vous mettre en place en utilisant Apache Spark et vous montrer quelques exemples d' utilisation réelle d'Apache Spark pour résoudre certains des mêmes problèmes que nous avons résolus en utilisant un seul ordinateur dans ce Bien sûr. Mais la première chose que nous devons faire est de mettre des étincelles sur votre ordinateur, donc nous allons vous expliquer comment faire ça. Les deux prochaines conférences. C' est assez simple, mais il y a quelques gouaches, alors ne passez pas à travers ces conférences. Il y a quelques choses auxquelles vous devez accorder une attention particulière pour faire fonctionner l'étincelle avec succès, en particulier sur un système de fenêtre. Et encore une fois, nous allons développer ces exemples en utilisant votre propre ordinateur. Mais les mêmes exemples peuvent être mis à l'échelle pour s'exécuter réellement sur un cluster Hadoop plus tard, si vous le souhaitez. Alors commençons. Ok, installons Apache étincelle sur votre système pour que vous puissiez réellement plonger et commencer à jouer avec elle. Un outil très puissant pour la gestion du Big Data et l'apprentissage automatique sur des ensembles de données volumineux. Maintenant, nous allons exécuter ceci juste sur votre propre bureau pour l'instant pendant ce cours, mais les mêmes programmes qui allaient écrire dans cette section pourraient être exécutés sur un cluster Hadoop réel . Donc, si vous prenez les mêmes scripts qui étaient en écriture et en cours d'exécution localement sur votre bureau et en mode autonome, vous pouvez prendre ces mêmes scripts et les exécuter à partir du nœud maître d'un réel qui fait un cluster, puis le laisser mettre à l'échelle jusqu'à la puissance totale d'un cluster et d'un processus Hadoop. ensembles de données massifs de cette façon. Donc, même si nous allons configurer les choses pour qu'elles s'exécutent localement sur votre propre ordinateur, gardez à l'esprit que les mêmes concepts que nous faisons vont évoluer pour s'exécuter sur un cluster également. Maintenant, obtenir étincelle installée sur les fenêtres implique plusieurs étapes qui vous guèneront à travers ici. Et je vais juste supposer que vous êtes sous Windows, parce que la plupart des gens suivent ce cours à la maison. Nous parlerons un peu de la gestion des autres systèmes d'exploitation dans un instant. Mais ici, les étapes de base. Donc, si vous êtes déjà familier avec, vous savez, l'installation de choses et la gestion des variables d'environnement sur votre ordinateur, alors vous pouvez simplement prendre cette petite feuille de triche et partir et le faire. Mais je vais vous guider un pas à la fois. Dans les vidéos à venir, les choses que vous devez faire vous devez d'abord installer sur J. D. K. C'est un travail, un kit de développement pour que vous puissiez simplement aller sur le site Web de Dio Sons et ne pas télécharger cela et installé si vous le souhaitez. Nous avons besoin du J. D. K parce que même si nous allons développer et python pendant ce cours qui traduit sous le capot en code Scalia, qui est ce que l'étincelle est développée dans nativement et Scalia, à son tour, s'exécute au-dessus de l'interpréteur Java. Donc, pour exécuter du code python, vous avez besoin d'un système de Scala, qui sera installé par défaut avec la meilleure partie de Smarck. Et aussi nous avons besoin de Java. Job est interpréteur pour réellement exécuter ce code érudit. Donc, c'est comme ce gâteau de couche de technologie. Évidemment, vous n'êtes que python, Mais si vous êtes allé à ce point dans le cours, vous avez déjà un environnement python configuré. Et heureusement, étincelle. Le site Web Apache met à disposition des versions pré-construites de Spark qui vont juste manquer de la boîte qui sont pré-compilées pour que les dames fassent la version afin que vous n'ayez rien à construire . Vous pouvez simplement télécharger cela sur votre ordinateur et le coller au bon endroit et être bon pour aller pour la plupart. Ensuite, nous avons quelques choses de configuration à prendre en charge. Donc, une chose que nous voulons faire est d'ajuster notre niveau d'alerte, sorte que nous n'obtenons pas un tas d'avertissements lorsque nous exécutons nos tâches et nous allons parcourir la façon de le faire . Fondamentalement, vous devez renommer l'un des fichiers de propriétés, puis ajuster l'erreur, le définissant à l'intérieur. Ensuite, nous décidons de certaines variables d'environnement pour nous assurer que vous pouvez réellement exécuter étincelle à partir de n'importe quel chemin que vous pourriez avoir. Donc, nous allons ajouter un environnement de la maison étincelle, variable pointant vers l'endroit où vous avez installé étincelle, puis nous allons ajouter Spark maison Slash été à votre chemin système de sorte que lorsque vous exécutez étincelé , soumettre ou étincelle de tarte ou quelle que soit la commande étincelle dont vous avez besoin, nous savons où la trouver. Enfin, sur Windows, il y a une autre chose que nous devons faire. Nous devons étudier Hadoop Home Variable. C' est bien, parce qu'il va s'attendre à trouver un peu de Hadoop, même si vous n'utilisez pas Hadoop sur votre système autonome, et ensuite nous devons installer un fichier appelé Win You tills dot egg e sur ce chemin, et il y a un lien pour gagner. Vous tills dot xy dans la ressource est pour cette conférence afin que je puisse y arriver. Donc, si vous voulez le parcourir plus en détail, nous pouvons faire cette note rapide sur l'installation d'étincelle sur d'autres systèmes d'exploitation afin que les mêmes étapes s'appliquent essentiellement. La principale différence sera et comment vous définissez des variables d'environnement sur votre système de telle sorte qu'elles seront automatiquement appliquées chaque fois que vous vous connectez. Donc c'est une sorte de varier de O esto s. Mac OS ne diffère pas des différentes saveurs de Linux. Vous devrez donc être au moins un peu familier avec l'utilisation d'une invite de commande de terminal UNIX et comment manipuler votre environnement pour le faire. Mais vous savez, la plupart des utilisateurs de Mac OS ou Lennox qui faisaient du développement ont déjà ces fondamentaux sous leur ceinture. Et bien sûr, vous n'aurez pas besoin quand vous tills dot oeufs e si vous n'êtes pas sur Windows. Donc ce sont les principales différences pour l'installation sur différents systèmes d'exploitation est d'accord, commençons par installer réellement un J. D. K. Donc, je vais vous expliquer cela très rapidement et puis dans notre prochaine conférence, passera par tous les autres détails de se mettre en place avec étincelle. Donc, comme je l'ai mentionné avant que l'étincelle s'exécute sur le dessus du pétoncle, qui à son tour s'exécute au-dessus de l'environnement Java. Donc, si vous n'avez pas déjà un travail un kit de développement installé sur votre système, vous devrez aller en obtenir un et juste marcher à travers cela très rapidement. Il suffit d'aller à votre moteur de recherche préféré et de chercher J. D. K. devrait venir. Il suffit de prendre le plus récent que vous avez confiné, et cela devrait vous rediriger vers vous, le site Web Oracle. Et vous voulez juste sélectionner la version qui convient à votre système. Donc, sous Windows, je vais accepter le contrat de licence. Je vais chercher la version de Windows X 64 dans mon exemple. Donc, je cours une version 64 bits de Windows. Allez-y et descendez ça. Il vient et 100 87 mégaoctets plus tard. Nous devrions avoir quelque chose que nous pouvons installer, donc rien de spécial ici. Vous savez que c'est juste votre installateur standard, mais c'est l'étape une pour obtenir java oubliant spark installé en haut sur votre système. Maintenant, dans notre prochaine conférence va aller de l'avant et parler des étapes restantes qui sont l'installation d'étincelle elle-même et puis tous les fichiers de configuration associés et aussi un petit gotcha et fenêtres supplémentaires . Le fichier de sortie de point lorsque vous tills qui doit être installé dans un endroit spécial. Donc, nous y arrivons, et ce téléchargement y arrive aussi. Vous cliquez dessus. Elle vient de vous guider à travers un installateur standard pour le kit de développement Java SC. Alors allez-y et probablement d'accord. Il acceptait toutes les valeurs par défaut et le laissait faire son truc, et c' est tout ce qu'il y a. Passons donc aux étapes suivantes. Ok, on est sur le point d'installer Spark sur votre ordinateur. On a un J.D. J.D. K. C' est la première étape. Passons donc aux étapes restantes de la prochaine conférence. 70. Installation du spark - Partie 2: D' accord. Il y a un tas de petits détails que nous devons élaborer pour que l'étincelle fonctionne réellement sur votre bureau en mode autonome. Alors passons à travers eux tous et sors-le du chemin. Donc, jusqu'à présent, nous avons installé Python. Nous avons installé Java la semaine prochaine besoin d'installer Spark lui-même. Donc, revenez à un nouvel onglet de navigateur ici juste dit d'étincelle point Apache ou GTA et cliquez sur le grand bouton d'étincelle de téléchargement amical. Ok, maintenant, ce cours a été testé avec étincelant 2.1 point 1. Donc, vous savez, étant donné le choix de quelque chose au-delà de 2.0, devrait fonctionner très bien. Mais c'est là que nous en sommes aujourd'hui. Assurez-vous d'avoir une version pré-construite, d' accord ? Et on va juste faire un téléchargement direct. Donc, tous ces défauts air parfaitement bien. Allez-y et téléchargez ce paquet. Maintenant, ce qui est en train de télécharger est un fichier T GZ qui sonne pour tar et Jesus. Encore une fois, étincelle, vous savez, fenêtres sont une sorte de réflexion après coup avec étincelle, honnêtement. Et sur Windows, vous n'allez pas avoir un utilitaire intégré pour réellement décompresser le fichier t gz. Vous devrez donc peut-être en installer un. Si vous n'en avez pas déjà, celui que j'utilise s'appelle un rugissement du vent. Et vous pouvez le récupérer sur un site appelé Raw ou nos labos dot com comme ça. Et il suffit d'aller à la page de téléchargement si vous en avez besoin et de télécharger l'installateur pour wind rar 32 bits ou 64 bits, en fonction de votre système d'exploitation, et cela vous permettra de décompresser réellement. Teague Easy fichiers sur Windows si vous en avez besoin. Alors appuyez, faites une pause et allez l'installer si nécessaire. Si ce n'est pas le cas, revenons sur notre téléchargement d'étincelle Apache. Ici. On dirait qu'il est tombé. Donc, je vais aller de l'avant et montrer que dans mon dossier Téléchargements et allons de l'avant et faire un clic droit sur cela et l'extraire dans un dossier de mon choix Encore une fois. Winrow fait ça pour moi à ce stade, ok, donc je devrais maintenant avoir un dossier associé à ce paquet. Bien sûr, il est là. Ouvrons ça, accord. Et il y a l'étincelle elle-même, donc j'ai besoin de l'installer quelque part où je m'en souviendrai. Vous ne voulez pas le laisser dans votre dossier de téléchargements, évidemment. Alors allons de l'avant et ouvrons une nouvelle fenêtre de l'explorateur de fichiers ici, et je vais aller sur mon lecteur C et je vais créer un nouveau dossier et appelons ça étincelle. Donc, mon installation d'étincelle va vivre sous le dos du côlon C dernière étincelle à nouveau. Agréable et facile à retenir. Ouvre ça. Je vais aller dans le contrôle A pour sélectionner tout dans le contrôle de la distribution des étincelles. Voir, pour le copier à l'endroit où je veux le mettre dans voir étincelle et contrôler V pour le coller. Bon, maintenant, une petite chose qu'on doit faire ici. Ouvrez le dossier contenant où nous avons installé Sparked à et renommé Log pour Jadot propriétés point modèle de sorte que vous venez de retirer le modèle. Donc, il devrait juste être enregistré pour les propriétés Jadot à la place. Oui, je suis sûr que je veux le changer. Et maintenant, je peux ouvrir ça si vous en avez besoin. droite, cliquez là et dites ouvrir avec et sélectionnez le pavé de mots. Et ce que je veux faire est de changer cette ligne ici où il est dit informations sur la catégorie d'itinéraire. Je veux changer cela en erreur. Et cela va juste enlever l'encombrement de toute la loi expansion qui est imprimé quand je cours des trucs. Alors changez cela dans les erreurs de photo. Enregistrez-le et fermez votre éditeur. Ok, alors maintenant où sommes-nous ? C' est un peu épuisant. Nous avons installé python. Nous avons installé Java. On a installé Spark. Maintenant, la prochaine chose que nous devons faire est d'installer quelque chose qui va tromper votre PC en pensant que sa dupe existe. Et encore une fois, cette étape n'est nécessaire que sur les fenêtres. Donc vous pouvez sauter cette étape si vous êtes sur le maquereau Lennix. Mais pour les quelques gens de Windows, je veux que vous alliez à ce lien ici. Vous devriez nous trouver. La ressource est associée à cette conférence sur les plates-formes qui ont une telle chose. Mais si tu veux, tu peux taper ce lien à la main, accord ? Et si vous téléchargez cela, cela vous donnera une copie de ah, petit four extrait exécuter à base de plantes. Cela pourrait être utilisé pour tromper l'étincelle en pensant que vous avez réellement Hadoop. Maintenant, puisque nous allons exécuter nos scripts localement sur notre bureau, ce n'est pas une grosse affaire. Nous n'avons pas besoin d'avoir un dupe installé pour de vrai. Il est juste à nouveau se débrouille encore une autre bizarrerie de l'étincelle en cours d'exécution sur les fenêtres. Alors maintenant que nous avons cela, montrons ce contrôle, Voir, pour le copier hors de mon dossier de téléchargements et allons sur notre lecteur C et créer un endroit pour qu'il vive. Je vais donc créer un nouveau dossier. Nous allons l'appeler gagner, vous tills, et je vais ouvrir ce dossier quand vous tills que j'ai fait et créer un autre dossier dans celui-ci appelé Ben. Et dans ce dossier bin, je vais coller le fichier que je viens de télécharger. Ok, cette étape suivante n'est requise que sur certains systèmes, mais juste pour être sûr, ouvrez une invite de commande dans Windows afin que vous puissiez le faire en allant dans votre menu Démarrer et descendant à la commande système Windows invite. Et à partir d'ici, je veux que vous tapez CD C colon backslash win. Vous tills barre oblique inverse avait été qui est l'endroit où nous avons collé notre vent util arrêté E X fichiers Si vous faites un d i r. Vous devriez voir qu'il et maintenant taper ce qui suit lorsque vous tills point t X, c c h m o d espace 777, barre oblique arrière TMP inverse ruche et que juste assurez-vous que toutes les autorisations de fichier dont vous avez besoin pour exécuter étincelle avec succès sont en place sans aucune erreur. Vous pouvez donc fermer cette invite de commande maintenant que vous avez terminé avec cette étape. Wow, on a presque fini, on a cru ou non. Maintenant, la dernière chose que nous avons besoin de mettre en place une variable d'environnement. Donc tout le logiciel sait où se trouver. Donc, pour ce faire, il est fermé hors de ce navigateur. Sortez de toutes ces choses, je vais faire un clic droit sur mon icône Windows et à nouveau sur différents systèmes d'exploitation. Vous allez définir les variables d'environnement de différentes manières, mais sous Windows, vous le faites via votre panneau de configuration et en cliquant sur système et système de sécurité , puis sur les paramètres système avancés. Et à partir d'ici, vous cliquez sur les variables d'environnement. Donc nous devons en installer quelques-uns ici. Commençons. Donc, je vais appuyer sur le nouveau bouton pour mes variables d'environnement utilisateur, et je vais commencer par en définir un pour une maison de soulignement étincelle. Et ça va être l'étincelle du répertoire installé dans lequel est C deux-points backslash spark. D' accord, puis en créer un autre. Celui-ci s'appellera la maison de soulignement Java. Et c'est là que j'ai installé le J. D. K. et ça va être la barre oblique inverse du côlon J D. K. et enfin, j'ai besoin d'installer une maison en dupe. Ce serait là que je mettais la victoire Util étude, voir dossier. Et ce ne sera que du côlon C. Backslash vous gagnez des tills comme ça. Et je dois enfin mettre à jour mon chemin. Donc, je vais cliquer sur la variable d'environnement de chemin d'accès, éditer et je vais ajouter un nouveau chemin. Ça va être signe pour cent, spark underscore Accueil pourcentage barre oblique inverse été je vais ajouter un autre signe pour cent signe Java soulignement Accueil pour cent Sign back barre oblique été tout droit. Qui ? Je crois que c'est tout. 71. Introduction au spark: Commençons par un aperçu de haut niveau d'Apache Spark et de ce qu'il s'agit, ce qui est bon pour son fonctionnement. Allons plonger dedans. Permettez-moi de vous donner un bref aperçu de haut niveau de l'étincelle d'Apache. Introduction civile de l'ensemble du concept. Alors qu'est-ce que l'étincelle ? Eh bien, si vous allez sur le site Spark, ils vous donnent une réponse ondulée à la main de très haut niveau. Un moteur rapide et général pour le traitement des données à grande échelle. Il tranche. Il est coupé en dés. Il fait votre lessive. Eh bien, pas vraiment, mais c'est un cadre pour écrire des travaux ou des scripts qui peuvent traiter de très grandes quantités de données. Et il gère la distribution de ce traitement à travers un cluster de calcul pour vous donc essentiellement étincelle fonctionne en vous permettant de charger vos données dans ces objets volumineux appelés magasins de données distribués résilients RTG et il peut automatiquement effectuer des opérations qui transformer et créer des actions basées sur ces RTG, que vous pourriez penser. C' est comme de gros blocs de données, gros, et la beauté de celui-ci est que l'étincelle répartira automatiquement et de manière optimale ce traitement parmi un cluster entier d'ordinateurs. Si vous en avez un disponible afin de ne plus vous limiter à ce que vous pouvez faire sur une seule machine ou la mémoire d'une seule machine. Vous pouvez en fait répartir l'ensemble des capacités de traitement et de la mémoire disponibles pour un cluster de machines. Et à cette époque, l' informatique est assez bon marché. Vous pouvez louer du temps sur un cluster à travers des choses comme la carte élastique d'Amazon, réduire le service et simplement louer du temps sur un cluster entier d'ordinateurs pour seulement quelques dollars et exécuter votre travail que vous ne pouviez pas exécuter sur votre propre bureau. Alors, comment est-il évolutif ? Eh bien, c'est un peu plus précis ici et comment tout fonctionne. Donc, la façon dont cela fonctionne est que vous écrivez un programme pilote. C' est juste un petit script qui ressemble à n'importe quel autre script python, vraiment, et il utilise la bibliothèque Spark pour vraiment bien. Vous êtes votre script avec et dans cette bibliothèque que vous définissez a été appelé un contexte d'étincelle, qui est une sorte de l'objet de route dans lequel vous travaillez lorsque vous développez et étincelle, et à partir de là, le type de framework d'étincelle prend le relais et distribue des choses pour vous. Donc, si vous êtes en mode autonome sur votre propre ordinateur comme nous le ferons lors ces prochaines conférences. Tout reste sur votre ordinateur, évidemment. Mais si vous exécutez sur une étincelle de gestionnaire de cluster et que vous comprenez cela et en tirez automatiquement profit, Spark a en fait ses propres gestionnaires de cluster intégrés. Vous pouvez réellement l'utiliser seul sans même avoir un dupe installé. Mais si vous avez un cluster Hadoop à votre disposition, il peut également l'utiliser. Donc, Hadoop est plus que des réducteurs de carte, en fait un composant d'un do appelé un fil qui se sépare juste. L' ensemble de la gestion de cluster morceau de Hadoop et Spark une interface avec yard effectivement utilisé cela pour distribuer de manière optimale. Les composants de votre traitement parmi la ressource sont disponibles pour ce cluster Hadoop . Par conséquent, au sein d'un cluster, vous pouvez avoir des tâches d'exécuteur individuelles qui sont en cours d'exécution, et celles-ci peuvent être exécutées sur différents ordinateurs. Ils peuvent être exécutés sur différents cœurs du même ordinateur, et ils les uns les autres sur des espèces individuelles et leurs propres tâches individuelles qu'ils exécutent et le programme pilote qui déclenche le contexte dans le gestionnaire de cluster travaillent ensemble pour coordonner tous les cet effort et vous retourner le résultat final. La beauté de celui-ci est. Tout ce que vous avez à faire est d'écrire ce petit script ici qui utilise un contexte d'étincelle pour décrire à un niveau élevé le traitement que vous voulez faire sur ces données et étincelle de travailler avec le gestionnaire de cluster que vous utilisez, détermine comment pour étaler cela et distribuer, sorte que vous n'avez pas à vous soucier de tous ces détails bien, jusqu'à ce que cela ne fonctionne pas. Évidemment, vous pourriez avoir à faire quelques ennuis pour savoir si vous avez suffisamment de ressources disponibles pour la tâche à accomplir. Mais en théorie, c'est juste de la magie. Maintenant. Quel est le problème avec Spark ? Je veux dire, il y a des technologies similaires comme la réduction de la carte qui ont été autour plus longtemps. Smart est rapide, cependant, cependant, et sur le site Web, ils affirment que l'étincelle est jusqu'à 100 fois plus rapide que la réduction de la carte lors exécution d'un travail en mémoire ou 10 fois plus rapide sur disque. Bien sûr, les mots clés ici sont à votre kilométrage peuvent varier. Je ne pense pas avoir jamais vu quelque chose courir beaucoup plus vite que ce produit depuis, euh, bien conçu map pretties co. Peut en fait être encore assez efficace. Mais je dirai que Spark facilite beaucoup d'opérations courantes. Vous savez, réduction de la carte vous oblige à décomposer les choses en cartographes et réducteurs. Là où il a déclenché est un peu plus haut niveau, donc vous n'avez pas à toujours réfléchir à faire la bonne chose avec Spark. Et une partie de cela conduit à une autre raison pour laquelle étincelle le marché si vite. Il a un ingénieur Dag dirigé une ferraille cycliste. C' est dur à dire. A dirigé un graphique cyclique. Dis ça 10 fois vite. Et bien que ce soit un autre mot fantaisiste, qu'est-ce que ça veut dire ? Ce que cela signifie, c'est que la façon dont Spark fonctionne, c'est que vous écrivez un script qui décrit comment traiter vos données et que vous pourriez avoir sur RTD. C' est fondamentalement comme un bloc de données, et vous pourriez faire une sorte de transformation ou une sorte d'action dessus. Mais rien ne se passe réellement tant que vous n'exécutez pas réellement en action sur ces données. Donc, ce qui se passe à ce stade est étincelle dira OK, donc c'est le résultat final que vous voulez sur ces données. Quelles sont les autres choses que j'ai dû faire pour atteindre ce point et quelle est la façon optimale de l' orteil ? Précisez cette stratégie pour en arriver à ce point. Donc, sous le capot, il trouvera la meilleure façon de diviser ce traitement et distribuer cette information pour obtenir le résultat final que vous recherchez. Donc, l'aperçu clé ici est que l'étincelle attend jusqu'à ce que vous lui disiez de produire réellement un résultat . Et ce n'est qu'à ce moment-là qu'il va vraiment trouver comment produire ce résultat. Donc c'est un peu, Ah, concept cool là-bas, et c'est la clé de beaucoup de son efficacité. intelligente, Technologieintelligente, très chaude, relativement jeune. Donc, il est encore très émergent et change rapidement. Mais beaucoup de grandes personnes l'utilisent. Ainsi, Amazon, par exemple, est prétendu qu'ils utilisent sur eBay, groupe Jet Propulsion Laboratories de la NASA sur le conseiller en voyage Yahoo et bien d'autres. Je suis sûr qu'il y a beaucoup de l'utiliser qui ne se fout pas à la hauteur. Mais si vous allez sur la page wiki Spark Apache ici, c'est en fait une liste que vous pouvez rechercher des grandes entreprises connues qui utilisent Spark pour résoudre problèmes de données du monde réel. Donc, si vous avez peur d'entrer dans le bord saignant ici. Ne crains pas. Vous êtes en très bonne compagnie avec de très grandes personnes qui utilisent étincelle dans la production pour résoudre de vrais problèmes, et c'est assez stable à ce stade. Ce n'est pas aussi dur. Vous avez votre choix de programmation en Python, Java ou Scalia, et ils sont tous construits autour du même concept que je viens de décrire plus tôt. La résistance aux données distribuées ensemble RTD en bref, et nous en parlerons beaucoup plus en détail dans les conférences à venir. Spark a en fait beaucoup de composants différents qui est construit de Donc il y a un noyau d' étincelle qui vous permet de faire beaucoup. Vous savez, vous pouvez faire à peu près tout ce que vous pouvez rêver en utilisant uniquement les fonctions de base d'étincelle. Je veux dire, j'ai un cours où je fais tout un système de recommandation er juste en utilisant étincelle ou mais il y a ces autres choses construites sur le dessus de l'étincelle qui sont également utiles. Par exemple, streaming d' étincelle est une bibliothèque qui vous permet de traiter les données en temps réel afin que les données puissent circuler dans un serveur, disons continuellement à partir de Weblogs, et le streaming d'étincelle peut vous aider à traiter ces données dans temps réel que vous allez pour toujours Sparks égal, vous permet de traiter les données comme une base de données de suite et effectivement émettre des requêtes de suite sur elle. Ce qui est plutôt cool si vous êtes familier avec la suite Déjà Ml Live est l'endroit où nous allons nous concentrer dans cette section. C' est donc en fait une bibliothèque d'apprentissage automatique qui vous permet d'effectuer des algorithmes d'apprentissage automatique courants avec une étincelle sous le capot pour répartir réellement ce traitement sur un cluster afin que vous puissiez effectuer un apprentissage automatique sur des ensembles de données beaucoup plus volumineux que vous auriez pu autrement. Et enfin, les graphismes. Ce n'est pas pour vous faire savoir, jolis graphiques et graphiques qui font référence au graphique dans le de jolis graphiques et graphiques qui font référence au graphique dans lesens de la théorie des réseaux. Pensez donc à un réseau social, par exemple. C' est un exemple de graphique. Et le graphique a juste quelques fonctions qui ont conduit à analyser les propriétés d'un graphique d' information. Maintenant, je reçois un peu de flak, parfois sur l'utilisation de python quand j'enseigne aux gens sur Apache Spark. Mais il y a une méthode à ma folie maintenant. Il est vrai que beaucoup de gens utilisent Kala quand ils écrivent du code étincelle parce que c' ce que Spark est développé en natif. Donc, vous encourez un peu de surcharge par une étincelle forçante pour traduire votre code python en Scala , puis en, vous savez, commandes d'interpréteur Java à la fin de la journée, mais les pythons beaucoup plus faciles, et vous n'avez pas besoin de compiler des choses. La gestion des dépendances est beaucoup plus facile, sorte que vous pouvez libérer concentrer votre temps sur les algorithmes et ce que vous faites et moins sur les minuties de réellement le faire construire dans l'exécution et la compilation et toutes ces bêtises. De plus, évidemment, ce cours a été axé sur Python jusqu'à présent, et il est logique de continuer à utiliser ce que nous avons appris et de rester avec python. Tout au long de ces conférences, Cependant, je dirai que si vous deviez faire une programmation d'étincelle dans le monde réel, il y a de bonnes chances que les gens utilisent Scalia. Cependant, ne vous inquiétez pas trop, car dans pie dans le code Spark python et scallop et certains semblent très similaires parce que c'est autour du même concept de RTD. La syntaxe est très légèrement différente, mais ce n'est pas si différent. Donc, vous savez, si vous pouvez comprendre comment faire pour faire étincelle en utilisant python, apprendre à l'utiliser dans Scala n'est pas si grand saut, vraiment ? Alors allons regarder quelques exemples et plonger dans. Donc, ce sont les concepts de base de l'étincelle elle-même et pourquoi c'est si important et comment il est si puissant en vous permettant d'exécuter des algorithmes d'apprentissage automatique sur de très grands ensembles de données ou n'importe quel algorithme, Vraiment ? Parlons donc un peu plus de détails sur la façon dont il fait cela et sur le magasin de données distribué résilient suivant. 72. Spark et les données distribuées résilientes (RDD) (RDD): Allons un peu plus en profondeur dans le fonctionnement de Spark. Nous allons parler du stockage de données résilient à distribué connu sous le nom de notre DDS. C' est une sorte de noyau que vous utilisez une fois la programmation et l'étincelle, et nous aurons quelques extraits de code pour essayer de le rendre réel. Alors jetons un coup d'oeil. Donc on va vous donner un cours d'accident à Apache Spark ici. Il y a beaucoup plus de profondeur que ce que nous allons aborder dans ces prochaines conférences, mais je vais juste vous donner les bases. Vous devez réellement comprendre ce qui se passe dans ces exemples et espérons que vous commencerez et pointez dans la bonne direction. Donc, la pièce la plus fondamentale de l'étincelle est appelée l'ensemble de données résilient à distribuées dans notre d. D. Et ce sera l'objet que vous utilisez pour réellement charger et transformer et obtenir les réponses que vous voulez hors de la que vous essayez de traiter. Ce qui est très important à comprendre, c'est qu'il représente unensemble de données résilient et distribuées, ensemble de données résilient et distribuées, donc c'est un ensemble de données. À la fin de la journée. C' est juste un tas de rangées d'informations qui peuvent contenir à peu près n'importe quoi. Mais la clé est le sont dans le premier D, donc il est résilient dans cette étincelle. Assurez-vous que si vous exécutez ceci sur un cluster et que l'un de ces clusters tombe en panne, il peut automatiquement récupérer de cela et recommencer. Maintenant que la résilience ne va que si loin vous rappelez que si vous n'avez pas assez de ressources est disponible pour le travail que vous essayez d'exécuter. Il échouera toujours, vous savez, et vous devrez courir à plus. La ressource est à elle, et il n'y a que tant de choses qui peuvent récupérer de. Je veux dire, il y a une limite à combien de fois il va réessayer une tâche donnée, mais il fait tout son possible pour s'assurer que face à un cluster instable ou instable ou à un réseau instable, il continuera à faire de son mieux pour courir jusqu'à l'achèvement. Et évidemment, il est distribué. Le but de l'utilisation d'étincelle est que vous pouvez l'utiliser pour les problèmes de Big Data où vous pouvez réellement répartir le traitement sur l'ensemble du processeur et de la puissance de mémoire d'un cluster d' ordinateurs, et qui pourrait être distribué horizontalement. La recherche était beaucoup d'ordinateurs. Comme vous voulez un problème donné. le problème est grand, plus il y a d'ordinateurs Il n'y a vraiment pas d'orteil supérieur ce que vous pouvez faire là maintenant vous commencez toujours vos scripts d'étincelle en obtenant un objet de contexte d'étincelle, et c'est l'objet qui incarne en quelque sorte les tripes de l'étincelle. C' est ce qui va vous donner votre rgds à traiter. C' est donc ce qui génère les objets que vous utilisez dans votre traitement. Vous savez, vous ne pensez pas vraiment au contexte d'étincelle quand vous écrivez programmes d' étincelle, mais c'est une sorte de substrat qui les exécute pour vous sous le capot. Si vous exécutez dans le shell d'étincelle de manière interactive, il a déjà un objet SC disponible pour vous que vous pouvez utiliser pour créer des RTG et autres. Mais dans un script autonome, vous devrez créer explicitement ce contexte d'étincelle, et vous devrez faire attention aux paramètres que vous utilisez car vous pouvez réellement dire au contexte d'étincelle comment vous voulez que cela soit distribué. Devrais-je tirer parti de chaque noyau dont je dispose, devrais-je être en cours d'exécution sur un cluster ou tout simplement autonome sur mon ordinateur local ? C' est là que vous définissez les paramètres fondamentaux du fonctionnement de l'éclat. Alors regardons quelques petits extraits de code de création de RTG, et je pense que cela aura un peu plus de sens. Voici donc un exemple très simple. Si je veux juste faire une RTD à partir d'une ancienne liste Python plan, je peux appeler la fonction paralysée et Spark, et cela va convertir une liste de choses dans ce cas, juste les numéros 1234 en un objet RTD appelé numbs afin que c'est le plus simple créer un RDD juste à partir sont une liste codée en dur de choses et cela pouvait venir de n'importe où. Il n'a pas besoin d'être codé en dur non plus. Mais tu sais que ce genre va à l'encontre du but du Big Data, non ? Je veux dire, si je dois charger l'ensemble des données en mémoire avant de pouvoir en créer un déjà d , quel est le point ? Donc, je peux aussi charger un rdd à partir d'un fichier texte, et cela pourrait être n'importe où. Donc, dans cet exemple, peut-être que j'ai un fichier texte géant. C' est, tu sais, l'encyclopédie entière ou quelque chose comme ça. Et je lis cela à partir de mon disque local dans cet exemple, mais cela va réellement convertir chaque ligne de ce fichier texte dans sa propre ligne dans un r d Donc vous pouvez penser que la RTD est une base de données de Rose, et dans cet exemple, il chargera mon fichier texte dans une RTD où chaque ligne, chaque ligne contient une ligne de texte, et je peux ensuite faire un traitement ultérieur de cette RTD pour analyser ou, vous savez, décomposer les er de délimitation dans ces données. Mais c'est là que je commence. Rappelez-vous quand nous avons parlé de E T l et E L t. Donc, ceci est un bon exemple de l'endroit où vous pourriez réellement charger des données brutes dans un système et faire la transformation sur le système lui-même que vous avez utilisé pour interroger vos données afin que vous puissiez prendre Donc, ceci est un bon exemple de l'endroit où vous pourriez réellement charger des données brutes dans un système et faire la transformation sur le système lui-même que vous avez utilisé pour interroger vos données afin que vous puissiez prendre qui n'ont pas tous été traités et utilisent la puissance de l'étincelle. Il les transforme en données plus structurées. Il peut aussi parler à des choses comme l'urticaire. Donc, si vous avez, vous savez, un niveau élevé de base de données existant mis en place dans votre entreprise, vous pouvez créer un contexte élevé basé sur votre contexte d'étincelle. Et c'est cool ? Vous pouvez réellement créer une RTD dans ce cas appelé Rose qui est généré en exécutant réellement une requête de suite sur votre base de données de ruche. C' est donc un exemple de création d'un RDD. Et il y a d'autres façons de créer des RTG aussi. Vous pouvez les créer à partir de connexions J. D. D. BC Donc, fondamentalement, toute base de données qui supporte J DBC peut également parler, étincelle et avoir rgds créé à partir de lui. Cassandra H. Base deCassandra H. La dernière recherche également des fichiers au format Jason. Voir les fichiers de séquence au format SV, les fichiers objets et tas d'autres fichiers compressés comme Orc ou ce qui vous a. Je ne veux pas entrer dans les détails de tous ceux que tu peux, tu sais, aller chercher un livre et les chercher si tu en as besoin. Mais le fait est, il est très facile de créer un D déjà à partir de données où qu'il se trouve. Que ce soit sur un système de fichiers local ou un stockage de données distribué est d'attirer l'attention sur cela à nouveau. Apparaît que je charge à partir d'un fichier local en utilisant le système File Earl, mais je pourrais également utiliser s trois. Et si je veux une hôtesse de le classer sur un seau Amazon distribué trois ou H DFS si je veux faire référence à des données qui sont stockées sur un cluster H DFS distribué qui signifie système de fichiers Hadoop distribué. Si vous n'êtes pas familier avec H DFS, lorsque vous traitez du Big Data et que vous travaillez avec un cluster Hadoop, c'est généralement là que vos données vivront. Encore une fois, RTD juste un moyen de charger et de maintenir de très grandes quantités de données et de garder une trace de tout à la fois, mais conceptuellement dans votre script. Et la RTD est juste un objet qui contient un tas de données. Et vous devez penser à l'échelle parce que Spark fait ça pour vous. Maintenant, il existe deux types différents de classes de choses que vous pouvez faire sur notre DDS. Une fois que vous les avez, vous pouvez faire des transformations, et vous pouvez faire des actions. Parlons d'abord des transformations, donc les transformations sont exactement à quoi ça ressemble. C' est une façon de prendre un rdd et de transformer chaque ligne de cette RTD en une nouvelle valeur basée sur une fonction que vous fournissez, donc la carte et la carte plate sont celles que vous verrez le plus souvent. Les deux vont prendre n'importe quelle fonction que vous pouvez rêver qui prendra son entrée une RTD roven , et il sortira une ligne transformée. Ainsi, par exemple, vous pouvez prendre l'entrée brute d'un fichier See SV et vous êtes l'opération de mappage peut prendre cette entrée et la diviser en champs individuels en fonction du limiteur commun et retourner une liste python, par exemple, cela a ces données dans un format plus structuré sur lequel vous pouvez effectuer un traitement ultérieur. Et vous pouvez enchaîner les opérations de carte afin que la sortie d'une carte puisse finir par créer une nouvelle RTD sur laquelle vous effectuez ensuite une autre transformation, etc. et ainsi de suite et encore. La clé est d'allumer distribuer ces transformations à travers le cluster afin qu'il puisse faire partie de votre RTD et la transformer sur une machine et une autre partie de vous déjà en transformant sur une autre. Comme je l'ai dit, carte et la carte plate sont la transformation la plus courante à voir. La seule différence est qu'ils diffèrent dans cette carte vous permettra de générer une seule valeur pour chaque ligne où elle est plate. Map laissera la sortie réelle multiple nouvelle rose pour une rose donnée, sorte que vous pouvez réellement créer une RTD plus grande ou une RTD plus petite que vous avez commencé avec l'utilisation de la carte plate . En outre, filtre peut être utilisé si ce que vous voulez faire est juste de créer une fonction booléenne qui dit, Est-ce que Roby doit être conservé ou non ? Oui ou non ? Et il y avait aussi des transformations moins couramment utilisées, comme distinctes, qui ne reviendront qu'aux valeurs puantes dans votre échantillon RTD que vous en tirez un échantillon aléatoire . Ensuite, vous pouvez effectuer des opérations d'intersection comme Unit An intersection, soustraire ou même produire chaque combinaison cartésienne qui existe dans une RTD. Voici un petit exemple de la façon dont cela pourrait fonctionner. Disons que j'ai créé un RDD juste à partir de la liste. 1234 Je peux appeler alors la carte de points RTD avec une fonction lambda de X qui prend dans chaque ligne chaque valeur de cette RTD l'appelle X, puis elle s'applique à la fonction. X fois x deux carrés il Donc la sortie de ceci si j'étais alors recueillir la sortie de cette RDT serait 149 et six parce qu'il prendrait chaque entrée individuelle que la RDT et le carré et mettre dans une nouvelle RDT. Ok, ça sens maintenant si vous ne vous souvenez pas de ce que sont les fonctions de Lambda. Nous avons parlé un peu plus tôt dans ce cours, mais en tant que rafraîchisseur, la fonction Lambda est juste un raccourci pour définir une fonction en ligne. Donc Lambda X Colon X Times X est exactement la même chose que de définir une fonction distincte que nous avons nommée Square It qui renvoie X Times X et dire rdd dot map le carré. Donc, c'est juste une main courte pour les fonctions très simples que vous voulez passer. C' est une transformation élimine la nécessité de déclarer cela comme une fonction nommée distincte de sa propre. Et vous savez que c'est toute la fonction de Ah, c'est toute l'idée de la programmation fonctionnelle. Donc, vous pourriez dire que vous comprenez la programmation fonctionnelle maintenant, d'ailleurs. Mais vraiment, c'est juste une notation abrégée pour définir une fonction en ligne dans le cadre des paramètres d'une fonction de carte ou de toute transformation, d'ailleurs. Vous pouvez également effectuer des actions en RTD, donc quand vous voulez réellement obtenir des résultats, vous pouvez appeler collecte sur un R D D. Et cela vous donnera un ancien objet python ordinaire que vous pouvez, puis il passe par un tableau et imprime les résultats, ou enregistrez-les dans un fichier ou tout ce que vous voulez faire. Vous pouvez également appeler count, ce qui le forcera à aller réellement compter. Combien d'entrées ? Aaron, la RTD à ce stade, comptage par valeur vous donnera une ventilation du nombre de fois chaque valeur unique dans ce qui se produit déjà. Et vous pouvez également échantillonner à partir de l'Arditti en utilisant prendre, qui vous prendra savoir, un certain nombre aléatoire d'entrées de l'Arctique à votre sommet, ce qui vous donnera les premières entrées dans ce déjà. Si vous voulez juste avoir un petit aperçu de ce qui est là à des fins de débogage, l'action plus puissante est réduite, et cela vous permettra en fait de combiner des valeurs ensemble pour la même valeur de clé commune. Ainsi, vous pouvez également utiliser des RTG dans le contexte des données de valeur clé, et la fonction réduite vous permet de définir un moyen de combiner ensemble toutes les valeurs d' une clé donnée. Donc très similaire et l'esprit une carte produire. Donc, en utilisant reduce reduce, vous savez fondamentalement que l'opération analogique avec un réducteur et une carte reduce est analogue aux mappers, donc il est souvent très simple de prendre une carte, réduire le travail et converti en étincelle en utilisant ces fonctions. Rappelez-vous, aussi, que rien ne se passe réellement en étincelle jusqu'à ce que vous appeliez une action. Donc, une fois que vous appelez l'une de ces méthodes d'action, c'est quand Spark sort et fait sa magie avec des graphiques cycliques dirigés et calcule réellement la façon optimale d'obtenir la réponse que vous voulez. Mais rappelez-vous, rien ne se passe vraiment tant que cette action n'aura pas lieu. Donc, cela peut parfois vous remonter lorsque vous écrivez des scripts Sparks parce que vous pouvez avoir une petite instruction d'impression là-dedans et que vous pouvez vous attendre à obtenir une réponse là, mais elle n'apparaît pas en fait tant que l'action n'est pas réellement exécutée. Alors allons dans certains. Parlons un peu plus de Ml lib ensuite, et pour entrer dans plus de détails sur la façon dont cela fonctionne conceptuellement, donc c'est étincelle, un en un mot. Ce sont les bases dont vous avez besoin pour la programmation d'étincelles. Fondamentalement, qu'est-ce qu'un rdd et l'une des choses que vous pouvez faire à une RTD et une fois que vous obtenez ces concepts et vous pouvez écrire quelques pièces étincelle code. Ensuite, nous allons parler de ML lib et de certaines fonctionnalités spécifiques et étincelle qui vous permet de faire des algorithmes d'apprentissage automatique en utilisant Spark. 73. Présentation MLLib: donc, heureusement, vous n'avez pas à faire les choses à la dure et à l'étincelle lorsque vous faites de l'apprentissage automatique. Il a un composant intégré appelé ml lib qui vit au-dessus de spark core, ce qui rend très facile d'effectuer des algorithmes d'apprentissage automatique complexes en utilisant des ensembles de données massifs et en distribuant ce traitement sur un cluster entier d'ordinateurs. Des trucs tellement excitants. Apprenons-en plus sur ce qu'il peut faire. Encore une chose que je dois couvrir avant de commencer à plonger dans un vrai code. Et à ce stade, choses comme beaucoup plus de sens est ml ebb, et c'est un composant construit sur le dessus de l'étincelle pour l'apprentissage automatique, la bibliothèque d'apprentissage automatique. donc évident que cela est très pertinent pour ce cours. Donc, où certaines des choses que ml lib peut bien faire, une est l'extraction de fonctionnalités, donc une chose qu'il peut faire à l'échelle est la fréquence des termes et les fréquences de documents inverses, et c'est utile pour créer, par exemple, index de recherche. Et nous allons en faire passer un exemple dans quelques conférences à partir de maintenant. Donc, la clé est encore une fois qu'il peut le faire à travers le cluster en utilisant des ensembles de données massifs afin que vous savez, vous pouvez faire votre propre moteur de recherche pour le Web avec cela potentiellement, il offre également, vous savez, votre fonctions statistiques de base Chai Square tests, Pearson ou Spearman, Correlation et quelques choses plus simples comme les hommes et Max, moyenne et variance de ceux air terriblement excitant en et d'eux-mêmes. Mais ce qui est excitant, c'est que vous pourriez réellement calculer les variantes ou la moyenne ou autre, ou le score de corrélation à travers un ensemble de données massives et que les données mises en place en différents morceaux s'exécutent sur un cluster entier de nécessaire. Donc, même si certaines de ces opérations ne sont pas terriblement sexy, ce qui est sexy à ce sujet est une échelle à laquelle il peut opérer. Il peut également prendre en charge des choses comme la régression linéaire et la régression logistique. Donc, si vous devez adapter une fonction à un ensemble massif de données et l'utiliser pour les prévisions, vous pouvez le faire aussi. Il prend également en charge la machine vectorielle de support, Donc, nous entrons dans certains des algorithmes plus ah fantaisie ici. Certains des trucs les plus avancés dans le fait que deux peuvent évoluer jusqu'à des ensembles de données massifs en utilisant des étincelles , une lib l. Il y avait un classificateur Bayes naïf construit dans les lèvres Emma. Tu te souviens du classificateur de spam que nous avons construit il y a quelques conférences ? Vous pouvez réellement le faire pour un système de messagerie entier en utilisant étincelle et l'échelle que jusqu'à ce que vous voulez des arbres de décision, une de mes choses préférées dans l'apprentissage automatique qui, aussi, aussi, est supporté par étincelle dans la volonté en fait avoir un exemple de cela plus tard. Dans ce cours, K signifie clustering. En outre, faites un exemple de cela plus tard dans le cours, et vous pouvez faire le clustering. L' utilisation de K signifie utiliser des ensembles de données massifs en utilisant une lib ML, même l'analyse de composants principaux Out et S VD. Nous pouvons aussi le faire avec étincelle, et nous en aurons un exemple aussi. Et enfin, il y a un algorithme de recommandations intégré appelé l'alternance des moindres carrés qui est intégré dans NL lib. Personnellement, j'ai eu des résultats mitigés avec ça. Tu sais, c'est un peu trop d'une boîte noire à mon goût, mais je suis un peu recommandé son système snob. Alors prenez ça avec un grain de sel. L' utilisation de ML live est généralement assez simple. Vous savez, il y a juste quelques fonctions de bibliothèque que vous devez appeler. Il introduit quelques nouveaux types de données, cependant, que vous devez savoir à propos d'un est un vecteur et un exemple de vecteur. Tu te souviens quand on faisait des similitudes avec des films et des recommandations ? Par exemple, un vecteur peut être une liste de tous les films d'un utilisateur donné évalué correctement et la différence entre un facteur clairsemé dans un vecteur dense. Donc, disons que nous nous souvenons, il y a beaucoup, beaucoup de films dans le monde, et un vecteur dense représenterait en fait des données pour chaque film que cet utilisateur a regardé, qu'ils soient ou non réellement regardé le Donc, par exemple, disons que j'ai un utilisateur qui regarde Toy Story. Évidemment, je stockerais leur note pour Toy Story, mais s'ils ne regardaient pas le film Star Wars, je stockerais en fait le fait qu'il n'y a pas un numéro. Tu sais qu'il n'y a pas de valeur. Il y a des données manquantes pour Star Wars, donc nous finissons par prendre de la place pour tous ces points de données manquants avec un vecteur dense, un facteur clairsemé. Onley stocke les données qui existent, sorte qu'il ne gaspille pas d'espace mémoire sur les données manquantes. OK, donc c'est une forme plus compacte de représenter un vecteur en interne, mais évidemment cela introduit une certaine complexité lors du traitement. Donc, c'est un bon moyen d'économiser de la mémoire si vous savez que vos vecteurs vont avoir beaucoup de données manquantes. Il y a aussi un type de données ponctuelles étiqueté qui apparaît. Et c'est exactement ce que cela ressemble, un point qui a une sorte d'étiquette associée à lui qui transmet la signification de ces données en termes lisibles par l'homme. Et il y a un type de données d'évaluation que vous rencontrerez si vous utilisez des recommandations avec ML lip. Donc, vous savez que peut réellement prendre une note qui représente un 1 à 5 ou 1 à 10 quelle que soit lecture d'une personne peut avoir et l'utiliser pour informer automatiquement les recommandations de produit . Donc je pense que tu as enfin tout ce dont tu as besoin pour commencer ici. Plongons dans et regardons en fait du code lib riel ml et lancez-le. Et puis cela aura beaucoup plus de sens. Donc, c'est ml lib rend très facile d'effectuer des algorithmes d'apprentissage automatique compliqués potentiellement sur de très grands ensembles de données et de distribuer ce traitement sur un cluster entier . Comme je l'ai déjà dit, étincelle est encore jeune et elle grandit chaque jour, donc je m'attends à ce que ces capacités continuent d'évoluer et d'évoluer au fur et à mesure que le temps passe. Des trucs cool. Mettons-nous Ah, salissons les mains et écrit sur le code moelleux et faisons un vrai apprentissage machine en utilisant étincelle suivante. 74. Arbres de décisions dans Spark: Alors rendons ça réel. Regardons un code étincelle réel pour faire un arbre de décision en utilisant ML live qu'il peut réellement évoluer vers un cluster si vous le souhaitez. En fait, c'est assez simple. Jetons un coup d'oeil. Alors jouons avec étincelle un ml lib. Ouvrez votre invite anaconda votre terminal en fonction de votre système d'exploitation. Et au fait, si vous l'avez fait, il suffit d'installer une étincelle. N' oubliez pas nous définissons certaines variables d'environnement, vous devrez donc fermer et rouvrir votre invite anaconda si vous en avez déjà une ouverte pour les ramasser. Bon, alors voyons dans notre dossier de matériel de cours, comme nous le faisons toujours. Et ici, il y a quelques scripts Python que nous pouvons utiliser avec étincelle. Maintenant, contrairement à avant, on peut faire ça dans un cahier. Eso était au lieu d'utiliser n'importe quel éditeur de texte, nous devons regarder ces fichiers et passer par ce qu'ils font. Nous pouvons aussi bien utiliser Spider That est l'éditeur Python qui vient avec Anaconda. Alors allez-y et tapez araignée avec pourquoi et nous pour que cela arrive et nous sommes là. Alors allez-y, appuyez sur l'icône ouverte et accédez à votre cours sur les LNC. Et nous voulons que le script spark arbre de décision point p y, alors passons à travers ce qui se passe ici ? On doit ? Maintenant, encore une fois, nous n'utilisons pas un cahier python oeil cette fois. Nous utilisons simplement un script python autonome. D' où l'extension point p y au lieu de i p y N b. Il est en fait possible d'exécuter du code étincelle dans un ordinateur portable, mais cela implique encore plus d'étapes de configuration. Et je pense que nous en avons assez fait pour l'instant, juste pour avoir donné quelques exemples d'étincelles ici. Alors gardons ceci comme un script autonome dans le monde réel. La façon dont vous exécuterez ceci sur un cluster sera généralement. Vous allez copier le script dans la note principale de ce cluster, et il y a un script appelé Spark Dash Submit qui vient avec Spark, qu'il interprétera réellement ce script et le détruira dans le reste du cluster pour vous. Donc c'est vraiment la façon dont vous voudriez le faire dans le monde réel de toute façon, Vous Il est possible de le lancer avec un ordinateur portable, mais c'est juste un peu plus de problèmes que je veux traiter en ce moment. Bref, passons à travers ce que fait ce script. C' est assez simple eso. C' est peut-être nouveau pour toi, alors je vais tout faire un peu lentement. Nous commençons par importer tous les paquets dont nous avons besoin, bien sûr, et nous avons besoin de quelques trucs de M l live. Évidemment, si on doit faire du code M l love, on a besoin d'un truc appelé un point labellisé et de l'arbre de décision lui-même d'Emma Live, dont on a parlé tout à l'heure. Et à peu près chaque script d'étincelle va également importer le contexte du parc de conférence d'étincelle . Nous allons également à un tableau important de num pie, ce qui permet d'utiliser la course de tarte engourdie car nous manipulons nos données et les préparons ici. Maintenant, gardez à l'esprit que l'étincelle ne va pas faire par magie tout à partir d'aucune tarte et psych il apprend un distribuable et paralysé à travers un cluster. Si vous appelez numb baye, psychic learn fonctions dans ce script, il va juste l'exécuter dans le savoir spécifique que cela est en cours d'exécution donc il ne va pas distribuer automatiquement ce travail sur votre cluster pour vous. Vous devez utiliser les fonctions réelles dans ml live pour que cela arrive. Alors gardez ça à l'esprit. Oui, vous pouvez toujours utiliser une tarte engourdie. C' est comme s'il apprenait ici mais ces méthodes ne seront pas distribuées. Si vous voulez un apprentissage automatique distribué, vous devez vous en tenir à ce qui est en eux. Je vis. D' accord. Donc, pour lancer un script d'étincelle pour nous, nous avons besoin de mettre en place un contexte d'étincelle, qui est l'environnement dans lequel nous exécutons étincelle. Et cela prend essentiellement soin de tous les détails niggly de la façon de réellement distribuer ces choses et comment orteil organiser l'ordre dans lequel les choses sont assemblées à travers votre cluster. La beauté de l'étincelle est qu'elle fait tout ce qui pense pour vous. Tu n'as pas à t'inquiéter pour ça. Une partie de cela a mis en place un contexte d'étincelle. Cependant, nous avons d'abord besoin d'un objet de configuration. Et ce qui se passe ici, c'est que nous envoyons le nouveau jeu d'objets Spark Conobject Master signifie que nous allons seulement l'exécuter sur notre PC local pour cet exemple parce que je n' ai pas un cluster à portée de main. Si vous étiez en cours d'exécution sur un vrai cluster, vous changeriez cela en autre chose. Et nous allons également définir un nom d'application de sorte que lorsque vous affichez ceci et la console d'étincelle , si nous en avions un en cours d'exécution, vous verrez qu'il est fait référence à ce nom. Donc, avec cela, nous avons mis en place notre contexte d'étincelle et nous allons sauter les fonctions pour l'instant, nous allons revenir à eux et quand nous les appelons réellement et si nous descendons en dessous de ces fonctions, vous commencez à atteindre les lignes réelles de code qui sera réellement exécuté ici. Nous commençons donc par charger nos données brutes du passé. Fichier CSP de démarrage supérieur. Nous l'avons vu plus tôt dans notre exemple d'arbre de décision. Allons de l'avant et ouvrons ça pour nous rafraîchir sur ce à quoi ça ressemble. Donc, si vous êtes du matériel de cours, nous devrions le trouver ici, pneus passés à CSB. Ouvrons cela et cela s'ouvrira dans Excel pour moi. Donc, tout va ressembler à une jolie table, même si c'est juste un fichier de valeurs séparées par des virgules. Encore une fois, nous avons notre structure. Voici la première ligne est les en-têtes des colonnes réelles ici. Donc notre première ligne nous dit ce que signifient ces colonnes. Années d'expérience, qu'elles soient employées ou non. Nombre précédent d'employeurs, niveau de scolarité. Ainsi de suite et ainsi de suite. Et comme avant, nous avons ici beaucoup de données qui doivent être converties en données numériques. Comme n'importe quel algorithme d'apprentissage automatique. Il traite mieux avec les chiffres et les lettres. Donc nous allons devoir transformer ces sages et finis en zéros. Et ces niveaux de Ph D. D. et M s d'éducation devront être convertis en un nouveau miracle. Données d'origine à la place. Donc c'est à ça qu'on a affaire ici. Revenons à notre script. Bon, donc la première chose que nous devons faire est de supprimer cet hétéro parce que ce n'est pas vraiment information utile pour les algorithmes. Droit. Pour ce faire, le truc que nous faisons est le suivant. Nous disons que la tête r est égal au point de données brutes en premier. Donc, ce qui s'est passé quand nous l'appelons s fichier texte point C. Est-ce qu'il est chargé chaque rangée individuelle de ça ? Voir le fichier SV dans un rdd appelé données brutes. Ok, donc maintenant nous avons une donnée brute déjà appelée qui ne contient que les chaînes brutes, séparées par des virgules de chaque ligne de ces données. Ce que nous faisons ici est d'extraire la première ligne de ces données, qui va être notre hétéros qui contient juste les noms des colonnes. Et puis nous pouvons appeler la fonction de filtre sur nos données brutes déjà d avec une fonction lambda à nouveau. Il s'agit d'une fonction en ligne. Fondamentalement, cela dit tant que la route donnée n'est pas égale, l'hétéro-hétéro-la préservera. Donc, en faisant cela, nous faisons essentiellement une copie de données brutes qui filtrent réellement ce premier hétéroclite. Et nous disons cela dans une nouvelle donnée brute. Donc, fondamentalement, nous avons déjà une donnée brute à ce stade où la première avait une ligne a été filtrée. Maintenant, c'est un bon moment pour mentionner que dans le code étincelle moderne, il y a quelque chose appelé un ensemble de données au lieu d'un rdd, et qui tend à être utilisé plus largement ces jours parce qu'il a un peu meilleures performances dans certains cas, eh bien, il a beaucoup meilleures performances dans certains cas Cela dépend. Comment vous l'utilisez ? Et il vous permet également juste d'exécuter suite contre les données en place. Donc, à cause de ces commodités, les gens migrent mawr vers l'utilisation de jeux de données au lieu de déjà DS. C' est fondamentalement une structure de niveau supérieur, mais dans ce cas, cela ne fait pas vraiment une grande différence. Donc, nous pouvons utiliser notre travail libéral DDS ml fondamentalement de la même manière avec elle. Hum, donc on va rester avec les RTG pour l'instant. C' est ma façon de le regarder est, si vous avez une solution simple et une solution plus compliquée et qu'il n'y a pas de grande différence de performance, restez avec la solution simple. Donc je vais rester avec RGD ici. Mais juste pour que vous sachiez, quand vous parlez aux gens aujourd'hui à propos de Spark, ils vont probablement travailler avec des ensembles de données ou des blocs de données au lieu de RGD. même concept général a juste plus de fonctionnalités. Bon, donc maintenant nous devons réellement diviser nos valeurs séparées par des virgules en champs réels ici. Et pour ce faire, nous allons appeler une fonction de carte et nous allons juste à un peu en ligne fonction lambda ici encore, qui appelle divisé sur la ligne réelle en utilisant la virgule qui prendra chaque ligne de données et diviser en fonction des commentaires dans des champs individuels de la liste. Nous avons donc une nouvelle RDT appelée See SV Data, où nous avons structuré ces données quelque peu. Nous avons en fait retiré les virgules au lieu d'une seule valeur qui contient une grande virgule, une liste séparée de choses. Nous avons une route qui contient des champs individuels qui étaient intéressés. Maintenant, nous devons réellement convertir ces champs à ce que nous voulons, donc nous allons appeler une carte avec une fonction réelle à ce stade appelée Créer des points étiquetés. Alors passons à cette fonction et voyons ce qu'elle fait. Très bien, Donc, créer des points d'étiquette prend une liste de champs qui sont venus des données RCs V après l' avoir séparé en fonction des commentaires, et il les convertit dans le format dont nous avons réellement besoin pour former notre arbre de décision. Donc, la première chose que nous faisons est de convertir les premiers champs, ce qui représente trois années d'expérience en un entier. Au lieu d'une chaîne, nous allons prendre le champ employé et appeler notre fonction binaire dessus, donc Fields on va être une sensation qui contient soit la lettre ultérieure Pourquoi ou la fin droite communique où ils ne sont pas. Ils sont actuellement employés. La fonction binaire dit simplement, Si c'est un mensonge, renvoyez-en un autre. Retourne zéro. Donc, cette fonction va être appelée à chaque fois sur chaque ligne pour convertir cela. Pourquoi, à un ou une fin à un zéro ? Mais rappelez-vous le cas, l'apprentissage automatique veut généralement des chiffres, pas des chaînes ou des lettres. possible, nous allons convertir le nombre précédent d'employeurs en un entier à partir d'une chaîne du niveau d'éducation . Nous appellerons cette fonction d'éducation de carte sur ce domaine et qui convertit juste B S, M s et PH. D aux valeurs originelles 12 et 3. Et nous allons juste appeler la fonction binaire à nouveau pour converser avec sage et se termine sur si elles venaient d'une école de haut niveau où ils avaient un stage précédent et les données finales de l'étiquette de si elles ont été embauchées ou non de sage et se termine deux zéros et un. Et comme vous vous en souvenez peut-être, Ml Lib veut des points marqués comme entrée. Donc, nous allons retourner une structure de points étiquetée qui contient avec étiquette, qui est le champ supérieur suivi de toutes les données d'entité, qui sera un tableau qui contient les années d'expérience où ils ne sont pas, ils sont employés employeurs précédents, ainsi de suite et ainsi de suite. Donc, le point d'étiquette contient l'étiquette, ce qui est la chose que nous essayons de découvrir, s'ils devraient ou non être embauchés, puis les caractéristiques, qui sont toutes les différentes caractéristiques de chaque personne qui peuvent influencer ou ils ne seraient pas embauchés ou non. Bon, donc à ce stade, si vous revenez à l'endroit où cela a été appelé, nous avons une nouvelle RDT appelée données de formation qui contient toutes nos données de trading, converties en données numériques et finalement converties en , ce qui est ce que NL attend. Tellement génial. Maintenant, nous pouvons commencer à jouer avec ml lib. Donc, nous allons créer un ensemble de candidats de test pour réellement essayer cela avec, et cet exemple va juste mettre en place une personne ici. Nous allons donc mettre en place un tableau qui contient des informations qui représentent 10 ans d' expérience antérieure. Ils sont actuellement employés. Ils avaient trois employeurs précédents qui détiennent actuellement un baccalauréat. Ils ne viennent pas d'une école de haut niveau et ils n'ont pas fait de stage. Ok, donc nous avons en quelque sorte mis en place ce faux candidat au test pour voir si nous pouvons réellement faire une prédiction sur cette nouvelle personne que nous n'avons pas vu auparavant. Une fois que notre arbre de décision a été créé, puis nous prenons ce candidat de test et en créons un RDD afin que nous puissions réellement le nourrir en étincelle en utilisant la fonction paralysée qui convertit juste ce tableau de candidats de test, qui est vraiment juste un candidat dans une RDT appelée données de test. Ensuite, nous prendrons notre décision. classificateur d'arbre l'appellera modèle. Et nous pouvons simplement appeler l'arbre de décision qui vient du classificateur de train de la bibliothèque ml Lib passant dans nos données d'entraînement déjà D qui contient toutes les données d'entraînement étiquetées et un tas de paramètres hyper. Ici. Les classes NUM indiquent que nous n'avons que deux classes dans lesquelles nous essayons de trier les gens qu'ils soient embauchés ou non, oui ou non. C' est deux classes différentes. Nous devons également passer dans un tableau pour trouver lequel de sont caractéristiques air catégorique dans la nature . Et puis nous pouvons spécifier comment l'arbre de décision réel lui-même est construit avec quelle fonction d' impureté, sa profondeur maximale et le nombre maximal de Ben. D' accord. Une fois ce modèle formé, nous pouvons l'utiliser pour faire des prédictions. Donc, nous allons le faire. Nous allons simplement appeler le modèle Doc Predict, compte tenu de nos données de test RTD qui contient notre candidat de test, et nous allons imprimer les résultats de cela. Nous allons juste imprimer le résultat réel de cette prédiction. Et voici le point important ici. Donc, à ce stade, nous sommes en train de dire que je veux appeler les prédictions dot collect. Je veux vraiment récupérer quelque chose de Spark me donnant une réponse. Ce n'est qu'à ce stade que l'étincelle fait quoi que ce soit. Donc, tout ce qui s'est passé jusqu'à présent, c'est qu'un graphique cyclique dirigé a été construit de toutes les choses que l'étincelle a besoin de faire pour produire cela. Cette réponse à grande échelle. Une fois que je dis vraiment que je veux un résultat, je veux une réponse. Il va revenir en arrière et, comme, enseigner la façon optimale de tout mettre ensemble et la façon optimale de le distribuer . Si j'étais sur un cluster et à ce moment va partir et commencer à chuter loin et à produire une réponse pour moi, alors va effectivement imprimer notre prédiction supérieure ultime, et nous imprimons également le modèle lui-même. Il existe une méthode de chaîne pratique pour déboguer sur le modèle d'arbre de décision qui nous permettra de comprendre ce qui se passe à l'intérieur de l'arbre de décision et quelles décisions il prend en fonction de quels critères. Donc, avec cela, nous pouvons l'essayer maintenant à nouveau, avec étincelle, nous devons exécuter cela réellement dans l'environnement d'étincelle lui-même. Je ne peux pas juste exécuter cela à partir de Spider, moins pas sans faire un tas d'étapes supplémentaires de mise en place. Alors fermons une araignée ou au moins minimisons cela pour l'instant. Et si on retourne à notre invite Anaconda, c'est en fait en ouvrir un nouveau, hein ? Retour à Anaconda Anaconda. Demander. Cela fera en sorte que là où nous avons anacondas environnement python disponible à nouveau sera CD à notre matériel de cours. Et maintenant, ce que nous pouvons faire est de taper dans spark dash submit, suivi de ce nom de script, qui a été déclenché point d'arbre de décision p y. Maintenant, le script de soumission de point d'étincelle fait partie de Spark lui-même. C' est ce qui prend réellement le script dans décide comment le distribuer et réellement le nourrir dans le moteur d'étincelle. Qu' est-ce que c'est ? Entrez et voyez ce qui se passe. Donc, si vous avez installé Sparks avec succès, il devrait voir quelque chose comme ça. Et nous l'avons là. Bon, donc pour notre utilisateur de test là-bas, nous avons prédit que nous engagerions cette personne. Et nous avons aussi l'arbre de décision lui-même imprimé ici. Maintenant, nous ne pouvons pas évidemment faire une belle représentation graphique comme nous l'avons fait avant, parce que nous sommes juste dans une console de commande ici, mais vous pouvez toujours l'interpréter. Donc, fondamentalement, il dit si la fonctionnalité un dans zéro. Donc, la façon d'interpréter cela est, si nous regardons en arrière nos données sources ici, si nous commençons à compter à zéro entité, 101 serait utilisé. D' accord ? Et rappelez-vous, nous nous sommes convertis. Pourquoi ? Un bout d'orteil un et zéro. Donc, il est dit, fondamentalement, si vous n'êtes pas employé si la fonction une qui est utilisée est dans le zéro défini, qui contient une seule valeur de zéro. Donc, pour les données catégoriques, vous verrez cette syntaxe entre, vous savez, crochets bouclés et quelles que soient les catégories. Très bien, Donc si vous n'êtes pas employé, et si la fonction cinq est aussi zéro. Alors 012345 C'est un stage. Donc, si vous êtes au chômage, vous n'avez pas fait de stage. Et, ah, cela dit, si vous avez moins d'une demi-année d'expérience, vous n'avez pas d'expérience et vous n'avez qu'un baccalauréat en sciences. Nous ne vous engagerons pas. C' est ce que la prédiction est, et vous pouvez passer à travers et comprendre le reste de la structure ici si vous le voulez. Mais c'est comme ça que tu lis ça. Fondamentalement cool. Donc là, vous l'avez, un arbre de décision réel fonctionnant dans Apache Spark. Et bien que cela semble être une sorte de façon alambiquée de faire les choses sur un seul ordinateur , je veux dire que la beauté est que si vous deviez réellement exécuter ceci sur la note de maître d'un vrai cluster Hadoop ou d'un vrai cluster d'étincelles, cela fonctionnerait tout simplement. Il distribuerait ce travail sur l'ensemble du cluster. C' est cool ? Ainsi, vous pouvez réellement alimenter un ensemble de données massives de données d'entraînement et un grand nombre de personnes pour lesquelles vous voulez faire des prédictions, et il pourrait distribuer cela dans tout un cluster et vous donner des résultats, peu importe comment gros que l'ensemble de données pourrait être. C' est ce qui est vraiment excitant à propos de ça. Vous savez, vous pourriez imaginer un monde où vous travaillez pour une énorme entreprise ou une entreprise qui produit, vous savez, embauche de logiciels de recrutement, et vous pourriez réellement exécuter ceci sur à grande échelle sur un grand nombre de personnes. Je vais laisser de côté les préoccupations éthiques de faire quelque chose comme ça dans le monde réel , où vous essayez juste de faire bouillir les gens en un nombre et de les nourrir dans un modèle. Je veux dire, évidemment, je ne voudrais pas vraiment que les décisions d'embauche soient basées uniquement sur ça. Ce ne serait pas un monde dans lequel je veux vivre. Mais pour des raisons d'illustration, c'est ainsi que cela fonctionnerait pour que nous ayons un arbre de décision en étincelle en cours d'exécution pour de vrai. Et là, vous avez un arbre de décision réel construit en utilisant étincelle une bibliothèque ML qui fonctionne réellement et a réellement un sens assez génial pour que vous puissiez voir qu'il est assez facile à faire, et vous pouvez l'dimensionner jusqu'à un ensemble de données aussi volumineux que vous pouvez l'imaginer si vous ont un cluster assez grand, donc là vous l'avez 75. Clustering K-Means dans Spark: Suivant. Prenons notre K signifie exemple de clustering que nous avons utilisé plus tôt dans ce cours et résolvez-le cette fois en utilisant spark et ml lib et vous verrez que c'est juste un ZZ, peut-être même plus facile. Donc encore une fois de Spider, ouvrons un fichier ici, et notre matériel de cours cette fois naviguera vers notre emplacement de matériel de cours, bien sûr, sous cours CML, et cette fois nous voulons le script. Spark K signifie pas p sage d'aller de l'avant et d'ouvrir cela. Et comme avant, nous allons prendre un exemple que nous avons fait plus tôt dans le cours sur un seul PC en utilisant juste psychic learn et fera la même chose en utilisant Apache Spark Donc nous pourrions réellement mettre à l'échelle cela à un cluster entier. Alors passons à travers ce code. Très bien, donc encore une fois, quelques trucs que nous allons importer le paquet K signifie à partir du paquet lib de clustering ml . Nous allons à Ray important et aléatoire de num pie parce que encore une fois nous sommes libres d'utiliser ce que vous voulez. C' est un script python à la fin de la journée, et Emma live ne nécessite souvent aucune tarte. Aucun arbitre n'a été soulevé comme entrée. Nous allons importer la fonction racine carrée et les trucs habituels dont nous avons besoin pour déclencher le contexte d' étincelle de conférence à peu près à chaque fois de Pie Spark. Nous allons également importer la fonction d'échelle de psych. Il l'apprend encore. Ok, est-ce que tu as appris, tant que tu t'assureras qu'il est installé sur chaque machine sur laquelle tu vas exécuter ce travail. Et ne supposez pas non plus que le psychique appris va se mettre à l'échelle par magie juste parce que vous l'exécutez sur étincelle. Mais puisque je l'utilise uniquement pour la fonction de mise à l'échelle, c'est OK. Allons de l'avant et arrangeons les choses, donc je vais envoyer une variable globale K 25 donc je vais courir. K signifie clustering dans cet exemple avec un k A cinq avec cinq clusters différents, et je vais aller de l'avant et mettre en place une toux d'étincelle locale juste en cours d'exécution sur mon propre bureau de Dieu. Définissez le nom de mon application sur Spark K signifie et créez un objet de contexte Spark que je peux ensuite utiliser pour créer des rtgs qui s'exécutent sur ma machine locale. Nous allons passer cette fonction pour l'instant, aller à la première ligne de code qui est exécutée. La première chose que nous allons faire est de créer de la RDT en paralysant certaines fausses données que je crée. Et c'est ce que cela crée une fonction de données en cluster fait. Fondamentalement, je lui dis de créer 100 points de données regroupés autour de K Central Lloyds, et c'est à peu près identique au code que nous avons regardé lorsque nous avons joué avec K signifie clustering plus tôt dans le cours. Donc, si vous voulez un rafraîchissement, allez-y et regardez cette conférence. Mais fondamentalement, ce que nous allons faire est de créer un tas de Centrowitz aléatoires autour desquels nous distribuons normalement des données sur l'âge et le revenu. Ce que nous faisons, c'est d'essayer de regrouper les gens en fonction de leur âge et de leur revenu, et nous fabriquons des points de données pour le faire. Bon, donc ça renvoie un tableau de nos fausses données. Maintenant, l'autre chose que nous faisons, donc une fois que ce résultat reviendra de créer des données en cluster, j'appelle l'échelle sur elle, et cela garantira que mon âge est et que mes revenus apparaissent sur des échelles comparables. Rappelez-vous, ma conférence dit que vous devez vous souvenir de la normalisation des données. C' est l'un de ces exemples où c'est important. Nous normalisons donc ces données avec l'échelle afin d'obtenir de bons résultats à partir de K. Et enfin, nous paralysons la liste résultante des tableaux en un r d en utilisant paralysé. Maintenant, nos données RTD contiennent toutes nos fausses données. Tout ce que nous avons à faire est encore plus facile qu'un appel d'arbre de décision k signifie un train de points sur nos données d' entraînement, passant le nombre de clusters que nous voulons notre couple de valeur K de paramètres qui mettent une limite supérieure sur la quantité de traitement qu'il va faire. Dites-lui d'utiliser le mode d'initialisation par défaut de K signifie où nous choisissons au hasard nos roids centraux initiaux pour nos clusters avant de commencer à les itérer. Et retour vient le modèle que nous pouvons utiliser. On va appeler ce cluster. Bon, maintenant on peut jouer avec ça. Commençons donc par imprimer les affectations de cluster pour chacun de nos points. Donc, nous allons prendre nos données originales et les mapper, c'est-à-dire, transformer en utilisant cette fonction lambda. Cette fonction va simplement transformer chaque point en numéro de cluster qui est prédit à partir de notre modèle. Ok, donc encore une fois. Nous prenons juste notre RDT de points de données. On appelle les clusters. Prédire pour déterminer à quel cluster arcanique signifie que le modèle les affecte. Et on va juste mettre les résultats dans notre résultat RDD. Maintenant, une chose que je veux souligner ici, c'est cet appel en espèces. Donc, une chose importante quand vous faites Spark est à tout moment que vous allez vous calmer ou qu'une action sur RDT, il est important de l'encaisser d'abord parce que rappelez-vous, quand vous appelez à l'action sur RDT, Spark s'éteint et chiffre sur le DAG avant et comment orteil obtenir de manière optimale ce résultat et va s'éteindre et réellement exécuter tout pour obtenir ce résultat. Donc, si j'appelle à différentes actions sur la même RDT finira par évaluer cette RDT deux fois. Et si vous voulez éviter tout ce travail supplémentaire, vous pouvez encaisser votre RDT afin de vous assurer qu'il ne le calcule pas plus d'une fois. Donc, en faisant cela, nous nous assurons que ces deux opérations suivantes font la bonne chose. Donc, afin d'obtenir un résultat réel de ce résultat, RTD ou Bourgogne a été utilisé compte par valeur et ce que cela fera est de nous rendre un rdd qui a combien de points, Aaron chaque cluster. OK, alors rappelez-vous que le résultat RTD a mappé chaque point individuel au cluster avec lequel il a fini. Donc maintenant, nous pouvons utiliser count by value pour juste compter le nombre de valeurs que nous voyons pour chaque cluster donné I d et nous pouvons imprimer cette liste et nous pouvons réellement regarder les résultats bruts de cela sont fastidieux. Eh bien, cet appel à virement dessus et ça me donnera chaque affectation de points unique et nous pouvons tous les imprimer. Maintenant, comment on mesure ? Quelle est la qualité des grappes ? Eh bien, une mesure pour cela est appelée mais dans la somme définie des erreurs au carré. Wow, ça a l'air de fantaisie. C' est un si grand terme. On a besoin d'une abréviation pour ça. Ws SSC Tout ce qu'il est, nous regarderions la distance entre chaque point et son central la finale centralisée dans chaque cluster Prenez le carré de cette erreur et la somme pour l'ensemble des données. Ok, donc c'est juste une mesure de l'écart entre chaque point et son OID central. Évidemment. Vous savez, s'il y a beaucoup d'erreurs dans notre modèle, alors ils auront tendance à être loin de la centrale. C' est cela pourrait impliquer que nous avons besoin d'une valeur plus élevée de K, par exemple. Donc, nous allons aller de l'avant et calculer que Valium l'imprimer. Comment faire ça ? Nous définissons cette fonction d'erreur qui calcule l'erreur au carré pour chaque point. Il prend juste la distance entre le point et le centre OID central de chaque cluster et le résume. Donc pour ce faire, nous prenons nos données source appelant la fonction lambda sur elle qui calcule l' air à partir de son point central. Et puis nous pouvons enchaîner différentes opérations ici. Donc nous appelons la carte pour d'abord calculer l'air pour chaque point. Ok, et puis pour obtenir un total final qui représente l'ensemble des données appelaient réduire sur ce résultat. Donc, nous faisons une carte de points de données pour calculer l'air pour chaque point, puis point réduit pour prendre toutes ces erreurs et les ajouter tous ensemble. Et c'est ce que fait cette petite terre réduite une fonction. C' est essentiellement une façon fantaisiste de dire que je veux que vous additiez tout dans cette RDT en un seul résultat final. Ok, alors réduisez. Nous allons prendre l'ensemble rdd deux choses à la fois et les combiner ensemble en utilisant n'importe quelle fonction que vous fournissez. Donc, la fonction que je fournit ici est de prendre les deux routes que je combine ensemble et juste les additionner. Et si nous faisons cela tout au long de chaque entrée de la RDT, nous avons eu le total final résumé, cela pourrait sembler un peu alambiqué de simplement résumer un tas de valeurs. Mais en le faisant de cette façon, nous sommes en mesure de nous assurer que nous pouvons réellement distribuer cette opération si nous en avons besoin. Tu sais, on pourrait finir par calculer la somme de cette partie des données ici sur cette machine et une somme d'une autre pièce sur cette autre machine. Et puis prenez ces deux sommes et combinez-les ensemble dans un résultat final. Bon, donc tu vois comment ça marche ? Cette fonction réduite dit, Comment puis-je prendre des valeurs, vous savez,les vous savez, résultats intermédiaires de cette opération et les combiner ensemble. D' accord. Alors encore une fois, n'hésitez pas à prendre un moment et à regarder cela un peu plus longtemps si vous voulez vous enfoncer. Il n'y a rien de vraiment envie de se passer ici. Mais il y a quelques points importants. Nous avons introduit l'utilisation de l'argent comptant. Si vous voulez vous assurer que vous ne faites pas de calculs de re inutiles sur la RTD que vous allez utiliser plus d'une fois, nous avons introduit l'utilisation de la fonction réduite, et nous avons quelques fonctions de mappeur intéressantes. Une houle ici. Il y a donc beaucoup à apprendre dans cet exemple, mais à la fin de la journée, il va juste u K signifie clustering. Alors nous allons de l'avant et l'exécuter de sorte qu'avant s'ouvrira dans Anaconda vous invite ou votre terminal sur d'autres plates-formes. Nous allons CD à notre cours. Les matériaux sont et nous allons taper le cul étincelé Soumettre étincelle K signifie arrêter ey et juste laisser courir et voir ce qui se passe. Et nous avons un résultat. Très cool. Très bien, donc c'est comme si nous avions d'abord un compte par valeur ici, où il montre juste combien de chaque point a été attribué à chaque cluster, et ceux-ci semblent assez uniformément répartis. Nous avons eu 20 points, catégorise le groupe deux et 20 0 23 20 et 17. C' est donc un bon signe, parce que nous avons créé un nombre pair de points différents dans nos données fabriquées contre lesquels nous essayions de nous entraîner. Droit ? Et si vous regardez à nouveau les affectations de cluster réelles, si vous vous souvenez de la façon dont nous avons généré les données pour commencer, nous avons effectivement généré un cluster à la fois. Donc c'est un bon signe que tous ces air ont tous les deux, tous les zéros, tous ceux, tous les trois. Et, vous savez, ça commence à être un peu confondu avec les forces d'un jeté au milieu là-bas. Un couple de plus une fois là-dedans donc n'a pas toujours compris. Certains de ces groupes se chevauchaient un peu, semble-t-il. Et enfin, nous avons obtenu une métrique W s S e, calculant en fait à quel point il est bon de 20.3. Cool. Donc ça a marché. On l'a fait. K signifie clustering en utilisant Apache étincelle distribuée potentiellement sur un cluster si nous en avions un si très cool. Et si vous voulez vous défier de plonger encore plus profondément, il y a quelques choses ici. Vous pouvez essayer que nous essayons simplement d'augmenter ou de diminuer la valeur de K. L'un des grands défis et K signifie que le clustering est de choisir la bonne valeur. Ok, alors voyez quel impact ça a. Évidemment, il y a une vraie valeur de K ici avec laquelle nous avons généré les données et il sera instructif voir ce qui a la mauvaise valeur de K fait à vos résultats. En outre, que se passe-t-il si vous ne normalisez pas les données d'entrée avant de les regrouper ? Cela affecte-t-il la qualité de cet algorithme ? Et que se passe-t-il si vous modifiez les accélérations de thème ou exécutez des paramètres ? Les hyper primaires, si vous voulez, sur l'algorithme venu et signifie lui-même. Alors va jouer autour qui pourrait ces choses pour essayer de te voir pour venir avec. Là, vous l'avez. K signifie clustering fait sur étincelle une lib ml Des trucs assez simples. Et la beauté de celui-ci est que vous pourriez en fait à travers un grand, massif, réel ensemble de données à elle. Et si vous deviez exécuter cela sur un cluster, il le découperait en fait pour vous et distribuerait tout ce traitement automatiquement. Et ça fonctionnerait toujours très bien. Plutôt génial. Passons à un exemple encore plus frais 76. TF / IDF: Donc, notre dernier exemple de ML live va utiliser quelque chose appelé fréquence de document inverse de terme ou T F I D E F, qui est le bloc de construction fondamental de nombreux algorithmes de recherche. Donc, d'abord, parlons des concepts de T F I D E f. et comment nous pourrions utiliser cela pour résoudre un problème de recherche. Notre dernier exercice avec Apache Spark an ML live portera sur la fréquence des documents inverse . C' est ce que t F I D F signifie Comme d'habitude. Cela semble compliqué, mais ce n'est pas aussi compliqué que cela puisse paraître et ce que nous allons réellement faire avec T f I. D. F. est de créer un moteur de recherche rudimentaire pour Wikipédia en utilisant Apache Spark et ML live. C' est génial ? Alors commençons. T f i D E f est la fréquence de retour d'une fréquence de document inverse. Et ce sont essentiellement deux mesures qui sont étroitement liées pour effectuer une recherche et déterminer la pertinence d'un mot donné par rapport à un document donné donné à un plus grand nombre de documents. Ainsi, par exemple, chaque article sur Wikipédia pourrait avoir une fréquence de terme associée à chaque page de l' Inter. Quel Internet pourrait avoir une fréquence de terme associée à elle ? Pour chaque mot qui apparaît dans ce document ? Ça a l'air fantaisie. Mais comme vous le verrez, c'est un concept assez simple. Toutes les moyennes de fréquence de terme est la fréquence à laquelle un mot donné se produit dans un document donné. Donc, dans une page Web dans un article Wikipédia dans un seul, quelle est la fréquence d'un mot donné dans ce document ? Vous savez, quel est le rapport entre ces mots taux d'occurrence dans tous les mots de ce document ? C' est ça. C' est tout. La fréquence du terme est la fréquence du document, même idée nommée petit peu confus. Mais tout ce qu'il est, c'est la fréquence de ce mot dans tout le corpus des documents. Alors, à quelle fréquence ce mot se produit-il dans tous les documents que j'ai toutes les pages Web, tous les articles sur Wikipédia. Ok, donc vous savez, par exemple, mots courants comme un ou le auraient une fréquence de documents très élevée, et je m'attendais à ce qu'ils aient aussi une fréquence très élevée. Mais cela ne signifie pas nécessairement qu'ils sont pertinents pour un document donné. Vous pourriez voir où on va avec ça. Disons donc que nous avons une fréquence très élevée et une fréquence de document très faible pour un mot donné. Le rapport de ces deux choses peut me donner une idée de la pertinence de ce mot pour le document. Donc, si je vois un mot qui se produit est très souvent dans un document donné, mais pas très souvent dans l'espace global des documents que je sais que ce mot donne probablement une signification particulière à ce document particulier, il pourrait re transmettre ce ce document est en fait à propos. Donc c'est l'idée de TF. Il signifie simplement la fréquence des termes fois la fréquence inverse des documents, ce qui est juste une façon fantaisie de dire la fréquence des termes sur la fréquence des documents, qui est juste une façon fantaisiste de dire, Combien de fois ce mot se produit-il dans ce document par rapport à la fréquence à laquelle il se produit dans l' ensemble du corps des documents ? C' est tout. que Ça veut direquec'est aussi simple que ça. Donc, dans la pratique, il ya quelques petits nouveaux désirs est de la façon dont nous utilisons cela. Par exemple, nous avons utilisé le journal réel de la fréquence inverse du document au lieu de la valeur brute, et c'est parce que les fréquences de mots en réalité ont tendance à être distribuées de manière exponentielle. Donc, en prenant le journal, nous nous retrouvons avec une attente légèrement meilleure de mots, compte tenu de leur popularité globale et sont quelques limites à cette approche. Évidemment, l'une est que nous supposons fondamentalement qu'un document n'est rien de plus qu'un sac plein de mots. Nous supposons qu'il n'y a pas de relation entre les mots eux-mêmes. Et évidemment, ce n'est pas toujours le cas. Et en fait les analyser peut être une bonne partie du travail parce que vous devez traiter des choses comme les synonymes et les divers temps de mots. Abréviations, majuscules, fautes d'orthographe. Tu sais, ça revient à l'idée de nettoyer tes données. Être une grande partie de votre travail est les scientifiques des données, et c'est particulièrement vrai lorsque vous avez affaire à des choses de traitement du langage naturel. Heureusement, il existe des bibliothèques de bibliothèques qui peuvent vous aider avec cela, mais c'est un vrai problème, et cela affectera la qualité de vos résultats. Une autre astuce d'implémentation que nous utilisons avec T F I. D. F. est au lieu de stocker réellement des mots de chaîne avec leurs fréquences de terme et leurs fréquences de documents inverses pour économiser de l'espace et rendre les choses plus efficaces, nous mappons chaque mot à une valeur numérique une valeur de hachage, nous l'appelons. Donc, l'idée est que nous avons une fonction qui peut prendre n'importe quel mot, peu comme regarder ses lettres et l'attribuer d'une manière assez bien distribuée à un ensemble de nombres dans une certaine plage. Ainsi, au lieu d'appeler, vous savez, en utilisant le mot représenté qui pourrait avoir une valeur de hachage de 10. Et nous pouvons nous référer au mot Représentants 10 à partir de maintenant. Maintenant, si l'espace de vos valeurs de hachage n'est pas assez grand, vous pourriez finir avec des mots différents étant représentés par le même nombre, ce qui semble pire que lui ISS. Mais, vous savez, vous voulez vous assurer que vous avez un espace de hachage assez grand, sorte que cela ne se produira probablement pas. C' est ce qu'on appelle des collisions de hachage. Ils peuvent causer des problèmes. Mais, vous savez, en réalité, il n'y a que tellement de mots que les gens utilisent couramment en anglais, donc vous pouvez vous en sortir avec 100 000 environ et être très bien, accord, et évidemment le faire. C' est cette échelle qui est la partie dure. Tu sais, si tu veux faire ça sur tout Wikipédia, alors tu vas devoir lancer ça sur un cluster. Mais pour des raisons d'argumentation, nous allons simplement l'exécuter sur notre propre bureau pour l'instant, en utilisant un petit échantillon de données Wikipédia. Alors, comment faire de cela un véritable problème de recherche ? Donc, une fois que nous avons t f i D E f, nous avons cette mesure de chaque mot pertinent pour chaque document. Qu' est-ce qu'on en fait ? Eh bien, une chose que vous pourriez faire est de calculer l'idée de TF pour chaque mot que nous rencontrons dans tout le corps de documents que nous avons. Et puis disons que nous voulons rechercher un terme donné mot. Disons que nous voulons rechercher quel article Wikipédia dans mon ensemble d'articles Wikipédia est plus pertinent pour Gettysburg. Je pourrais trier tous les documents par leur score T f I. D F pour Gettysburg et juste prendre les meilleurs résultats. Et ce sont mes résultats de recherche pour Gettysburg. C' est ça. Il suffit de chercher. Prenez votre mot de recherche. Calculer. T f I D f. Prenez les meilleurs résultats. Quels documents ont le score T f I D F le plus élevé. C' est ça. Évidemment, dans le monde réel, il y a beaucoup plus à chercher que ça. Google, évidemment comme des armées de personnes travaillant sur ce problème, et c'est beaucoup plus compliqué dans la pratique. Mais cela vous donnera réellement un algorithme de moteur de recherche qui produit réellement des résultats raisonnables. Alors allons de l'avant et plongons dans et voyons comment tout fonctionne. Donc là, vous avez les concepts de T F I D E f. Une autre de ces choses qui sonne vraiment fantaisie, mais une fois que vous le comprenez, c' est en fait assez simple. Alors allons de l'avant et transformons cela en code source réel et un lancer dans notre prochaine conférence. 77. Rechercher Wikipédia avec Spark: C' est peut-être la chose la plus cool qu'on fasse dans tout ce cours. Nous allons construire un algorithme de recherche de travail réel pour un morceau de Wikipédia en utilisant Apache Spark et ML lib, et nous allons tout faire en moins de 50 lignes de code. Plutôt génial. Alors allons de l'avant et ouvrons ceci dans Spider ou n'importe quel texte Sénateur que vous voulez utiliser, vraiment, et nous allons dans notre dossier de matériel de cours et ouvrir le script T f I D e f dot p y. Et parlons de cela et ici nous l'avons maintenant reculer un instant et laissez-le couler dans qui était en fait créer un algorithme de recherche de travail, avec quelques exemples de l'utilisation dans moins de 50 lignes de code ici. Et c'est évolutif. Je pourrais exécuter ça sur un cluster. C' est un peu incroyable. Bon, alors passons à travers ça. En fait, c'est assez simple, accord. Nous commencerons par importer les bibliothèques de contexte de barre de conférence spark dont nous avons besoin pour tout script spark que nous exécutons en Python. Et puis nous allons importer le hachage TF et I D. F. Donc c'est ce qui calcule les fréquences de terme et les fréquences de documents inverses. Dans nos documents, nous commencerons avec nos trucs d'étincelle qui crée une configuration locale d'étincelle et un contexte d'étincelle créé à partir de ce à partir duquel nous pouvons ensuite créer notre RTD initiale un contexte round to spar pour créer une RTD du sous-ensemble tiret petit point de dette tsv Donc, ce sont des valeurs séparées par des tabulations et il représente un petit échantillon d'articles Wikipédia. Cela me donne donc une RDT où chaque document est dans chaque ligne de la RDT. Donc, ce fichier TSV contient un document Wikipédia entier sur chaque ligne, et je sais que chacun de ces documents a divisé en champs tabulaires qui ont différents bits de métadonnées sur chaque article. Donc la prochaine chose que je vais faire est de les séparer. Donc, je vais diviser chaque document Art H en fonction de leurs er délimités par des tabulations en une liste python et créer un nouveau champ RTD qui, au lieu de données d'entrée brutes, contient maintenant des listes python de chaque champ dans ces données d'entrée. Et enfin, regardez ce qui se passe ici. Sanel, je vais cartographier cette prise de données dans chaque liste de champs extrait le champ numéro trois, ce que je sais est le corps de l'article lui-même. Le texte de l'article réel et je vais à son tour diviser cela en fonction des espaces. Donc, ce que cela fait est d'extraire le corps du texte de chaque article Wikipédia et de le diviser en une liste de mots. Ok, donc mes nouveaux documents RDD a une entrée pour chaque document et chaque entrée dans cette RTD contient une liste de mots qui apparaissent dans ce document maintenant. Donc, nous savons comment appeler ces documents plus tard, lorsque nous évaluons les résultats, je vais également créer une nouvelle RDT qui stocke les noms des documents. Et tout ce qui fait est de prendre les mêmes champs rdd et d'utiliser la fonction snap pour extraire le nom du document, ce que je sais est infield numéro un. Je dois donc rtgs des documents qui contiennent des listes de mots qui apparaissent dans chaque document et les noms de document qui contient le nom de chaque document. Et je sais que ceux-ci sont dans le même ordre, donc je peux réellement les combiner ensemble plus tard pour rechercher le nom d'un document donné . Maintenant, la magie arrive, donc la première chose que nous allons faire est de créer un objet TF de hachage, et nous allons passer dans un paramètre de 100 000. Cela signifie que je vais hacher chaque mot dans l'une des 100 000 valeurs numériques. Donc, au lieu de représenter les mots en interne comme des chaînes, ce qui est très inefficace, il va essayer Teoh aussi uniformément que possible, distribuer chaque mot à une valeur de hachage unique, et je lui donne jusqu'à 100 000 valeurs de hachage à choisir. Donc, en gros, c'est cartographier les mots deux chiffres à la fin de la journée, ok ? Et je vais appeler transform sur hachage TF avec ma vraie RTD de documents. Donc, ce que cela va faire est de prendre ma liste de mots dans chaque document et de la convertir en une liste de valeurs de hachage, une liste de nombres qui représentent chaque mot à la place. Ok, et c'est en fait représenté comme un vecteur clairsemé à ce stade pour économiser encore plus d'espace. Donc non seulement nous avons converti tous nos mots deux chiffres, mais nous avons également éliminé les données manquantes. Donc, dans le cas où un mot n'apparaît pas dans un document où vous ne stockez pas le fait que ce mot n'apparaît pas explicitement, il économise encore plus d'espace maintenant pour calculer réellement le score T f I D F pour chaque mot de chaque document. Le premier encaisse ce TF rdd parce que nous savons que nous allons l'utiliser plus d'une fois. Et on utilise I D F avec une fréquence min doc de deux. qui signifie que nous allons ignorer tout mot qui n'apparaît pas au moins deux fois appeler ajustement sur TF et ensuite transformer cela sur t f. Et ce que nous finissons ici est un arty de la partition T f I D E f pour chaque mot dans chaque document. Ok, alors essayons de mettre ça à l'usage. Allons ah, essayez de chercher le meilleur article pour le mot Gettysburg. Si vous n'êtes pas familier avec nous l'histoire, c'est là qu'Abraham Lincoln a donné un discours célèbre pour que nous puissions transformer le mot Gettysburg en sa valeur de hachage. Ok, c'est ce que fait ce morceau de code. Nous allons ensuite extraire un score T f i. D f pour cette valeur de hachage dans une nouvelle RTD pour chaque document. Donc, ce que cela fait est d'extraire le score T f i. D f pour Gettysburg de la valeur de hachage qui mappe pour chaque document et stocke cela dans cette pertinence Gettysburg rdd. Nous avons ensuite combiné cela avec le nom du document afin que nous puissions voir les résultats et imprimer la réponse. Alors allons courir ça et voir ce qui se passe. Ok, donc pour exécuter cela, nous devons mettre en place un autre anaconda accessoires à faire et nous allons CD à notre matériel de cours sont et juste écrire le type dans le tiret d'étincelle Soumettre T f I d f point p y et laissons ce chug loin. Donc, oui, moment, il va en fait analyser un sous-ensemble de données Wikipédia, et il va essayer de trouver la meilleure correspondance de document pour le terme de recherche Gettysburg. C' est déjà à venir avec une réponse, et c'est déjà fait. Et la réponse est qu'Abraham Lincoln fonctionne réellement. Les gars, c'est génial. Donc, ouais, je veux dire, T f i d f en action là-bas. Nous avons créé notre propre petit moteur de recherche ici avec, vous savez, moins de 50 lignes de code. La plupart de ces commentaires aériens, rappelez-vous, je veux dire, le code réel lui-même était comme peut-être 20 lignes et avec juste ce petit peu de code ml live est si puissant qu'il a pu construire un moteur de recherche entier qui pourrait que l'article pour Abraham Lincoln est le meilleur match pour quelqu'un à la recherche d' informations sur Gettysburg, Au moins dans le sous-ensemble de Wikipédia que nous lui avons donné. Je pense que c'est génial. Donc, oui, je veux dire. Et ce qui est encore plus cool, c'est que si j'avais tout le corpus de Wikipédia, je pourrais, avec très peu de modifications, exécuter le même script exact sur un cluster et récupérer les résultats sur l'ensemble des données Wikipédia . Vous savez, c'est évolutif dans cette mesure. Des trucs tellement cool. T F I D E f Inaction en étincelle. Et nous avons fait notre propre petit moteur de recherche très facilement. C' est génial. Et là, vous l'avez, un algorithme de recherche de travail réel pour un petit morceau de Wikipédia en utilisant étincelle et ml lib et T f I. D E f. Et la beauté est que nous pourrions réellement mettre à l'échelle cela jusqu'à tout Wikipédia si nous voulions à. Si nous avions un cluster assez grand pour l'exécuter Maintenant, nous venons de toucher certaines des fonctionnalités d'Apache Spark. Je suis sûr que vous avez beaucoup de questions. Il y a beaucoup, beaucoup plus. En fait, j'ai tout un cours sur Apache Spark, donc il y a beaucoup de choses dont on peut parler. Si vous voulez en savoir plus sur Apache étincelle, passez aux dernières conférences de ce cours où nous parlons de l'endroit où apprendre mawr , où aller ensuite et il y a un peu de saut d'endroit. Y a-t-il pour vous d'aller explorer et en apprendre plus sur étincelle parce que c'est un grand sujet. Mais j'espère que nous avons eu votre intérêt là-haut et étincelle, et vous pouvez voir comment il pourrait être appliqué pour résoudre, mais peut être assez compliqué problèmes d'apprentissage automatique d'une manière distribuée. C' est donc un outil très important, et je veux m'assurer que vous n'avez pas suivi ce cours sur la science des données, avec au moins sans au moins connaître les concepts de la façon dont Spark peut être appliqué aux problèmes de Big Data . Donc, quand vous devez aller au-delà de ce qu'un ordinateur peut faire, n' oubliez pas étincelle est à votre disposition 78. Utiliser l'API Spark 2 DataFrame pour MLLib: Donc, en Juillet de 2016 étincelle libération a déclenché deux points. Oh, et parlons de ce qui est nouveau et quelles nouvelles capacités existent dans ml vivent maintenant. Donc, l'essentiel a été déclenché 2.0, est qu'ils déplacent de plus en plus les gens vers les blocs de données et les ensembles de données, les ensembles données et les blocs de données. L' air est utilisé de façon interchangeable un jour. Techniquement, un bloc de données est un ensemble de données d'objets roe. Ils sont un peu comme les RGD. Mais la seule différence est que, alors qu'une RTD ne contient que des données non structurées, chaque Roven rdd peut contenir à peu près n'importe quoi. Un ensemble de données comporte un schéma défini. Donc, un ensemble de données sait à l'avance quelles colonnes d'information existent dans chaque rove de cette petite RDT de cet ensemble de données et quels types il s'agit. Donc, parce qu'il connaît la structure réelle de ces données dit à l'avance, il peut optimiser les choses plus efficacement. Il nous permet également de penser au contenu de cet ensemble de données comme une petite base de données. , En fait,une très grande base de données. Si c'est sur un cluster droit, et cela signifie que nous pouvons faire des choses comme des questions de suite requêtes dessus, cela crée un AP I de niveau supérieur avec lequel nous pouvons interroger et analyser de grands ensembles de données massifs sur un cluster d'étincelles. Donc, c'est plutôt cool. C' est plus rapide. Il a plus de possibilités d'optimisation, et il a un niveau plus élevé. AP I. C'est souvent plus facile de travailler avec maintenant aller de l'avant et déclenché des limites de 2.0 ML poussant les trames de données comme sa principale p I. Donc, c'est un peu la voie de l'avenir ici. Alors jetons un oeil à comment cela fonctionne. Je suis donc allé de l'avant et j'ai ouvert le fichier de régression linéaire de l'étincelle P Y. Allons à travers ça un peu ici. Donc, vous voyez, pour une chose, nous utilisons ML au lieu de ml live, et c'est les nouveaux yeux AP basés sur le bloc de données là-dedans. Donc, dans cet exemple, où nous allons utiliser la régression linéaire et la régression linéaire est juste un moyen d' ajuster une ligne à un ensemble de données. Donc, ce que nous allons faire cet exercice est de prendre un tas de données fabriquées que nous avons en deux dimensions et d'essayer d'adapter une ligne à un modèle linéaire et ce que nous allons faire est en fait séparer nos données en deux ensembles, un pour construire le et un pour évaluer le modèle. Et nous allons comparer à quel point ce modèle linéaire fonctionne, en prédisant les valeurs réelles. Donc, pour ce faire, tout d' abord, dans déclenché à si vous allez faire des choses avec l'interface Spark Sequel et en utilisant des ensembles de données , vous devez utiliser un objet de session d'étincelle au lieu d'un contexte d'étincelle. Donc pour en mettre un, vous faites quelque chose comme ça, vous pouvez dire étincelle. Ce sera le nom de notre configuration du générateur de session d'étincelle. Maintenant, ce bit est seulement nécessaire sur les fenêtres sur dans étincelé 2.0, genre de travail autour d'un petit bug qu'ils doivent être honnêtes. Donc, si vous êtes sur Windows, assurez-vous d'avoir un dossier temporaire C. Si vous voulez exécuter ceci, allez le créer maintenant si vous en avez besoin. Si vous n'êtes pas sur Windows, vous pouvez supprimer tout ce morceau ici que j'ai mis en évidence OK, parce que ce ne sera pas nécessaire et cela ne fonctionnera pas donné application, nom et obtenir ou créer. Maintenant, cela est intéressant car une fois que vous créez une session d'étincelle, si elle se termine de façon inattendue, peut réellement récupérer de cela la prochaine fois que vous l'exécutez. Donc, si nous avons un directeur de point de contrôle, vous pouvez réellement redémarrer là où il s'est arrêté en utilisant, obtenir ou créer. Bon, maintenant nous allons utiliser ce fichier texte de points de régression que j'ai inclus avec le matériel du cours et tout ce qui est un fichier texte qui a des valeurs communes et limitées de deux colonnes, et ce ne sont que deux colonnes de plus ou moins aléatoirement des données corrélées linéairement, et il peut représenter quand vous le souhaitez. Imaginons qu'il représente des hauteurs et des poids, par exemple. Donc la première colonne je représente les hauteurs. La deuxième colonne peut représenter des pondérations. Donc, dans le langage de l'apprentissage machine, nous parlons d'étiquettes et de fonctionnalités où les étiquettes sont diffusées. Habituellement, la chose que vous essayez de prédire et les entités sont un ensemble d'attributs connus des données qui ont utilisé pour faire une prévision à partir de Donc, dans cet exemple, peut-être les hauteurs ou les étiquettes et les entités sont les poids mai. Nous essayons de prédire les hauteurs en fonction de votre poids. Ça pourrait être n'importe quoi. Ça n'a pas d'importance. Tout cela est normalisé jusqu'à des données similaires entre un négatif et un, donc il n'y a aucune signification réelle à l'échelle des données nulle part. Tu peux faire semblant que ça veut dire tout ce que tu veux. Vraiment ? Donc, pour ce faire, pour utiliser cela avec ml que nous avons besoin de transformer nos données dans les attentes formatées. Donc la première chose que nous allons faire est de diviser ces données avec cette fonction de carte qui divise juste chaque ligne en deux valeurs distinctes dans une liste. Et puis on va mapper ça au format que je m'attendrais. Cela va donc être une étiquette à virgule flottante, puis un vecteur dense des données d'entité. Maintenant, dans ce cas, nous n'avons qu'un bit de date de caractéristique du poids. Donc nous avons un vecteur qui a juste une chose dedans. Mais même si c'est juste une chose, le modèle de régression linéaire M l Lib nécessite un vecteur dense là. Ok, c'est comme un point étiqueté dans l'ancien AP I mais vous devez le faire à la dure ici. Maintenant, nous devons maintenant assigner des noms à ces colonnes. Donc, voici la syntaxe pour faire cela. Nous allons dire à ml live que ces deux colonnes de ma RTD résultante correspondent en fait à l'étiquette d'élite et aux fonctionnalités. Et puis je peux convertir cette RTD en un objet de bloc de données. Donc, à ce stade, j'ai un bloc de données réel ou, si vous voulez, un ensemble de données qui contient deux colonnes, étiquette et des entités où l'étiquette est une hauteur à virgule flottante et la colonne d'entités est un vecteur dense de poids à virgule flottante. Et c'est le format requis par ml, lib et ML. Ça pourrait être assez difficile à propos de ça. Il est donc important de faire attention à ces formats. Bon, maintenant, maintenant, comme je l'ai dit, nous allons diviser nos données et 1/2 donc nous allons faire un écart de 50 50 entre les données d'entraînement et les données de test. Donc, cela revient aux blocs de données, un que je vais utiliser pour créer mon modèle sur un de ceux que je vais utiliser pour évaluer mon modèle. Je vais ensuite créer mon modèle de régression linéaire réel avec quelques paramètres standard ici que j'ai définis. On va appeler ça pour la régression linéaire, et ensuite j'adapterai ce modèle à l'ensemble de données que j'ai gardées de côté pour la formation du bloc de données de trading. Et cela me donne un modèle que je peux utiliser pour faire des prédictions à partir de. Alors allons-y et faisons-le. J' appellerai les tests de points transformés de modèle avec F grincheux et quand cela va faire est prédire les hauteurs en fonction des poids dans mes données de test. Ok, donc l'ensemble de données de test, j'ai en fait les étiquettes sans , les hauteurs correctes réelles, et cela va ajouter une nouvelle colonne à ce bloc de données appelé prédictions qui a le basées sur ce modèle linéaire, je vais faire quelques choses avec ça, donc je vais encaisser les résultats, et maintenant je pourrais juste les extraire et les comparer ensemble. Donc, sortons la colonne de prédiction juste en utilisant dot Select, Tout comme vous ne le feriez pas suite. Et puis je vais transformer cette trame de données et en retirer la RTD et l'utiliser mapper à une simple vieille, déjà pleine de hauteurs de virgule flottante et de hauteurs de 40 points, dans ce cas, non ? Donc, ce sont les hauteurs prévues, et ensuite nous allons atteindre les hauteurs réelles de la colonne d'étiquettes, et ensuite nous pouvons l'asseoir ensemble et juste les imprimer côte à côte et voir comment ça va maintenant, attention, c' est une sorte de façon alambiquée de le faire. J' ai fait cela pour être plus cohérent avec l'exemple précédent, mais une approche plus simple serait de simplement sélectionner la prédiction et l'étiquette ensemble dans une seule RDT qui mappe ces deux colonnes ensemble. Et puis je ne leur rendrai pas visite. Mais de toute façon fonctionne. Voyons si cela fonctionne, donc exécuter à nouveau cela ouvrira une invite anaconda à faire, et nous verrons le dossier de matériel de notre cours et nous allons taper. Signifié comme soumet étincelle point de régression linéaire p y et laissez-le faire son truc. Donc, encore une fois, nous utilisons la nouvelle interface ML. C' est basé sur un bloc de données, et en passant, pour utiliser Scalia au lieu de python, vous utiliseriez probablement des ensembles de données au lieu de trames de données, juste une terminologie différente là-bas et là, nous avons les résultats. Donc, nous avons ici Chaque résultat ici est la valeur prédictive, suivie de la valeur réelle. Vous pouvez le voir en gros, ils sont assez proches. Je veux dire, ce n'est pas parfait, mais ah, le modèle a au moins fait quelque chose de raisonnable alors c'est tout. C' est cool. Donc, oui, nous venons de faire une régression linéaire en utilisant des étincelles New M L A p. Je vais relativement nouveau ou 2016. C' est Ah, vous savez, plusieurs années se sont écoulées depuis, mais c'est toujours comme ça que l'avenir qu'ils poussent les gens vers une nouvelle RDT fonctionne toujours. Mais, euh, la base de données E p. I est en quelque sorte où ils concentrent leurs efforts ces jours-ci, donc ça vaut la peine de le comprendre. Là, vous l'avez. ML inaction en étincelle. 79. Déployer des modèles à la production: La question que je reçois souvent est qu'il est bien et bon de former ces modèles et de les déployer dans un Jupiter et un ordinateur portable. Mais comment utiliser ces modèles dans le monde réel, comment connecter réellement la sortie de ces modèles de ces modèles d'apprentissage automatique à une application réelle, comme une application de téléphone mobile ou un site Web ou quelque chose comme ça ? Eh bien, c'est le monde entier de lui-même. Vous savez, nous entrons dans le monde de la conception de systèmes plus grands ici, mais je vais vous donner des conseils de haut niveau de toute façon. Maintenant, évidemment, vous êtes des applications externes ne vont pas exécuter les ordinateurs portables Jupiter et obtenir ses résultats de cette façon. niveau local, ce que nous devons faire est de séparer le processus de formation et d'ajustement de notre modèle du processus de création de prédictions basées sur ce modèle. Donc, le parc d'entraînement et moi allons avoir fini hors ligne, juste affaiblir, faire ça dans notre carnet. Ou nous pouvons exporter un script Python autonome qui est exécuté périodiquement, peut-être pour récupérer de nouvelles données d'entraînement au fur et à mesure qu'il arrive. Peut-être qu'il est même en cours d'exécution dans une sorte d'environnement de streaming, mais cela peut se produire sur le back-end, vous savez, Vous pouvez toujours utiliser vos nouveaux cahiers de livre pour que si vous voulez l'affiner. Mais quand vous avez réellement un modèle formé, rappelez-vous, nous avons juste ah, modèle comme un classificateur qui est assis là dans le psychique a appris ce point, et tout ce que nous avons à faire est d'appeler prédire dessus pour réellement obtenir un résultat. Il est donc possible d'exporter ce modèle dans un fichier et d'exécuter ce modèle sur un service Web . L' idée serait donc de pousser le modèle vers une flotte de services Web. Tu sais, ça pourrait être comme quelque chose sur le nuage, quelque part où il est juste en cours d'exécution. Un ensemble distribué de services étaient, Espérons que vous n'avez pas à prendre soin des serveurs eux-mêmes, et tout ce que le service fait est de répondre aux demandes de service Web sur l'arrestation ou une autre interface. Cela dit, Voici les données de fonctionnalité que je veux une prédiction pour Donnez-moi une prédiction et ce modèle pré-formé qui est déployé sur l'ensemble de ce service Web peut alors rapidement fournir ce résultat à grande échelle et, espérons-le, faible latence et taux de transaction élevés de manière fiable . Donc, votre application appellerait le service Web qui génère simplement des prédictions basées sur le modèle, mais le modèle lui-même est créé hors ligne, puis les résultats de ce modèle, le modèle lui-même, est poussé vers le service Web. Parlons de quelques exemples plus spécifiques ici pour en faire riel. Supposons que vous utilisez Google Cloud Services d'une façon que vous puissiez le faire très facilement. C' est juste pour utiliser la méthode lib de travail externe appris SK ici. Avec cela, vous pouvez simplement dire job lib dot dump avec n'importe quel modèle est. Tu connais n'importe quel classificateur, ce qui pourrait être n'importe quoi, non ? Ah, K signifie que vous pouvez même, genre, avoir un classificateur de Deep Learning là-dedans. Si vous voulez que nous soyons bien et que le psychique apprend peut vider ça dans un dossier après qu'il a été formé . Vous lui donnez juste un nom de fichier. Et pour Google Cloud, il veut qu'il soit appelé modèle dot job lip. Vous téléchargez ensuite le point de modèle résultant Job Live, qui contient le modèle lui-même dans le stockage Google Cloud, et à partir de là, il pourrait simplement dire que cela va fonctionner dans le cadre d'apprentissage psychique, et il saura quoi faire avec. À ce stade, vous pouvez simplement y attacher un moteur de nuage ml. Le nuage de Google. Moteur Mm L. Et cela va exposer arrestation un p I que vous pouvez appeler pour faire des prédictions en temps réel sur la base de ce modèle que vous avez téléchargé sur le Google Cloud. Voyez comment ça marche. Donc, fondamentalement, vous entraîneriez votre classificateur hors ligne dans un ordinateur portable ou autre, quelle que soit vous voulez le faire. Exportez ce classificateur vers un fichier, téléchargez ce fichier dans le stockage Google Cloud, puis le moteur ML de Google Cloud pourrait réellement interagir avec cela avec vos applications sur l'arrestation, un p I. Et si vous je ne sais pas quelle est l'arrestation d'un P I, c'est essentiellement le même protocole que vous utilisez pour regarder des sites Web. Donc, quand vous allez à votre navigateur Web et dire, je veux regarder cette fille qui envoie une demande de repos obtenir à un serveur quelque part qui dit, je veux obtenir les résultats de cette fille et il le donne de la même façon exacte votre dirait, je veux obtenir une prédiction pour cet ensemble de fonctionnalités et me le rendre, s'il vous plaît. Même mécanisme exact. Vous pourriez devenir beaucoup plus compliqué à Disons que l'utilisation des services Web Amazon et que vous voulez construire un système complet de bout en bout qui fait des recommandations de produits. Une façon de le faire dans AWS serait si vous disposez d'une flotte de serveurs qui génèrent des données sur les commandes . Vous savez, si vous surveillez réellement les serveurs où les gens passent des commandes, nous pourrions avoir un service appelé kinesis data firehose fonctionnant au-dessus de ces serveurs qui est, alimentant ces données de journal dans Amazon dispose de trois unités de stockage. Et à partir de là, la carte élastique d' Amazon produire un service pourrait consommer que les données de la loi de l'article 3. Peut-être que cela contient toutes les informations d'achat ou toutes les informations d'affichage ou toutes les informations d' évaluation pour les choses que nous voulons recommander. Et sur Amazon carte élastique réduire. Nous pourrions exécuter Apache étincelle sur un cluster entier qui consomme les données de S 3 et crée des prédictions créant des recommandations basées sur ces données. Maintenant, dans ce cas, je ne vais pas pousser le modèle lui-même à Ah, un service Web. Je vais juste repousser les résultats. Donc, ce que je pourrais faire est de pré-générer des recommandations pour chaque utilisateur à l'avance. Donc, après avoir consommé toutes les dernières données de S trois, toutes les dernières données d'achat ou l'état de notation ou tout ce que vous avez à travailler avec. Je peux partir et utiliser Apache Spark pour générer des éléments recommandés prédits que les gens pourraient aimer pour chaque utilisateur de mon système. Je pourrais ensuite publier cela à quelque chose comme Amazon Dynamodb, qui est juste une base de données sans suite qui me permettra d'associer très rapidement une liste d' identificateurs d' éléments à une liste d'identificateurs d'utilisateurs, et ce sera un très rapide façon de regarder vers le haut. Quels éléments devrais-je recommander pour un utilisateur donné ? Donc, je prends la sortie du modèle, et j'ai publié la sortie à quelque chose de plus évolutif. Comme de la dynamodb. Dynamodb est évolutif horizontalement de sorte qu'il peut gérer des taux de transaction très élevés avec une latence très faible . Ensuite, pour exposer cela au monde extérieur, je pourrais utiliser quelque chose comme AWS lambda, qui est leur fonctionnalité de serveur lis qui vous permet juste d'écrire des fonctions très simples qui accèderaient à cette base de données dynamodb utilisateur pardonné et récupérer les résultats pour une application. Et ce n'est pas dans une telle affaire que vous n'avez pas à vous soucier de la capacité du serveur de provisionnement pour s'exécuter. Qu' AWS s'occupe de tout cela pour vous. En face de cela, vous pourriez avoir quelque chose appelé la passerelle Amazon e p I, qui fournirait en fait l'interface de repos à laquelle votre mobile lapse ou les sites Web parleraient réellement pour récupérer ces données. Donc, regardant dans l'autre sens, votre application cliente pourrait dire que je veux obtenir des recommandations pour cet utilisateur. Je dirais « Ok ». Amazon E P I Gateway, donnez-moi des recommandations pour cet utilisateur. J' ai traversé une requête de repos dans les coulisses qui transférerait cette requête à aws Lambda, qui doit encore être évolutif. Lambda dirait, Ok, je vais prendre ça et exécuter un peu de code JavaScript ou quelque chose aussi. Récupérer les idées d'article réelles et dynamodb pour cet utilisateur i D. Et qui a été tout pré-généré par Apache Spark en cours d'exécution sur EMR création recommandations hors d'Amazon a trois. C' est donc une façon plus compliquée que c'est plus un exemple de choses que vous pourriez voir dans le monde réel. Vous savez, ces systèmes ont tendance à devenir plutôt compliqués parce qu'il semble que vous commencez à faire face à une échelle massive. Vous devez gérer un nuage à un moment donné, et vous devez gérer des technologies comme Apache Spark qui peuvent évoluer jusqu'à des ensembles de données massifs . Donc, c'est ce genre d' , exemple plus avancé, si vous voulez, si vous voulez, mais un très réel de la façon dont vous pourriez réellement implémenter quelque chose comme ça dans le monde réel à nouveau. La clé est que la génération réelle du modèle est séparée de la distribution des données , les résultats de celui-ci. Donc, sur la rangée du haut, c'est le processus de construction des recommandations elles-mêmes. Mais nous avons ensuite poussé les recommandations réelles à quelque chose qui est plus évolutif pour dynamodb, dirigé par Lambda, qui est finalement dirigé par la passerelle Amazon E P I. Et puis nous avons un système de bout en bout qui peut réellement gérer la ventilation des résultats de notre modèle à grande échelle. Il y a d'autres façons de le faire aussi. Vous pouvez simplement écrire votre propre service Web si vous voulez utiliser flask ou quelque chose, ou n'importe quel cadre de service Web que vous aimez. Vous devrez alors évidemment provisionner vos propres serveurs et les maintenir, ce qui n'est pas très amusant. Je veux dire, c'est pourquoi les gens utilisent des services comme AWS et Google Cloud et Azure ces jours-ci. Euh, aussi, vous pouvez tous aller avec une plate-forme. Tous ces fournisseurs de cloud ont tendance à avoir leurs propres systèmes et technologies pour faire l'apprentissage automatique ces jours-ci, donc voici une liste partielle des services AWS qui sont disponibles dans l'espace d'apprentissage automatique en ce moment, pour exemple. Donc, vous savez, si vous voulez juste faire la reconnaissance vocale ou la reconnaissance d'image, ils ont des services qui sont disponibles sur le marché. Ça fera ça pour toi. Et vous pouvez évidemment les intégrer très facilement avec d'autres services AWS pour construire des systèmes plus volumineux comme ceux que nous avons examinés ici, donc quelque chose à considérer également, bien que ce soit toujours une bonne idée de prototype de nouvelles idées hors ligne dans un cahier ou quelque chose comme ça. Mais en fin de compte, la façon dont vous les implémentez pour un système plus large pourrait être très différente. J' espère que ça vous donne une idée de haut niveau de la façon dont vous pourriez réellement exposer vos modèles à un système du monde réel. haut niveau de la façon dont vous pourriez réellement exposer vos modèles à un système du monde réel L' aperçu clé est de séparer la génération du modèle lui-même dans ses résultats du problème de servir réellement ces résultats à une flotte massive de consommateurs de ces données, que vous utilisiez les services AWS ou Google Cloud, que vous utilisiez les vôtres ou que vous utilisiez Microsoft Azure, je veux dire, ce sont tous les sujets de cours entiers. Comme si je ne pouvais pas couvrir ça et beaucoup de profondeur en ce moment. Mais au moins cela vous donne un point de départ de l'endroit où explorer si vous êtes en position d' essayer de déployer ces résultats dans un endroit réel. 80. Concepts de test A/B: Si vous travaillez en tant que data scientists dans une société Web, vous sera probablement demandé de passer un peu de temps à analyser les résultats d'un test B. Il s'agit essentiellement d'expériences contrôlées sur un site Web pour mesurer l'impact d'un changement donné . Parlons donc de ce que sont les tests B et comment ils fonctionnent. Parlons d'un test B. Si vous allez être un scientifique des données dans une grande société Web de technologie, c'est quelque chose que vous allez certainement être impliqué parce que les gens ont besoin de mener expériences pour essayer différentes choses sur un site Web et mesurer les résultats de celui-ci. Et ce n'est en fait pas simple comme la plupart des gens le pensent. Parlons donc de ce que sont les tests B et quels sont les défis qui les entourent. Qu' est-ce qu'un test A B ? Eh bien, c'est une expérience contrôlée que vous exécutez habituellement un site Web. Je veux dire, cela pourrait être appliqué à d'autres contextes aussi, mais généralement nous parlons d'un site Web, et ce que nous essayons de faire est de tester la performance d'un changement à ce site Web par rapport à ce qu'il était avant. Donc, vous avez essentiellement un ensemble de contrôle de personnes qui voient l'ancien site Web et un groupe de test de personnes qui voient le changement sur le site Web. Et l'idée est de mesurer la différence de comportement entre ces deux groupes et d'utiliser données en fait décider si ce changement était bénéfique ou non. Donc, par exemple, je possède une entreprise qui a un site Web. Nous avons mis sous licence des logiciels aux gens, et en ce moment j'ai un joli bouton orange amical que les gens cliquent sur l'endroit où ils veulent acheter une licence. Peut-être que Blue serait mieux. Comment je le sais ? Je veux dire intuitivement. Peut-être que cela pourrait attirer l'attention de son peuple plus ou intuitivement. Peut-être que les gens sont plus habitués à voir des boutons d'achat orange, et j'étais rapidement susceptible de cliquer dessus. Je pourrais dépenser ça d'une façon ou d'une autre, non ? Donc mes propres préjugés ou préjugés internes n'ont pas vraiment d'importance. Ce qui importe, c'est la façon dont les gens réagissent réellement à ce changement sur mon site Web, et c'est ce que fait un test Navy. Il va en fait diviser les gens en certaines personnes, voir le bouton orange. Certaines personnes voient le bouton bleu, et je peux ensuite mesurer le comportement entre ces deux groupes et comment ils peuvent différer et prendre ma décision sur quelle couleur. Mes boutons devraient être basés sur ces données. Vous pourriez tester toutes sortes de choses dans un test B. Nous parlons de changements de conception, sorte que vous connaissez la couleur d'un bouton, le placement d'un bouton, la mise en page d'une page. Qu' est-ce que tu as ? Il pourrait s'agir d'un flux de U Y entier. Donc peut-être que vous changez réellement la façon dont votre pipeline d'achat fonctionne et comment les gens vérifient sur votre site Web, et vous pouvez réellement mesurer l'effet de ces changements algorithmiques. Revenons à l'exemple de faire des recommandations de film. Peut-être que je veux tester un algorithme par rapport à un autre. Et au lieu de me fier aux mesures d'erreur et à ma capacité à faire des tests de train, vous savez ce qui me plaît vraiment, c'est de conduire des achats ou des locations ou quoi que ce soit sur ce site Web. Et peut-être que le test pourrait me faire appeler directement à mesurer l'impact de cet algorithme sur le résultat final auquel je me soucie réellement, et pas seulement ma capacité à prédire des films que d'autres personnes ont déjà vus. Changements de prix. Celui-ci devient un peu controversé. Vous savez, en théorie, vous pouvez réellement expérimenter avec différents points de prix en utilisant un test A B et voir si cela augmente réellement le volume pour compenser la différence de prix ou autre. Mais utilisez-la avec prudence. Si les clients attrapent gagner que d'autres personnes obtiennent de meilleurs prix et ils sont sans raison valable . Ils ne seront pas très heureux avec toi. Alors gardez à l'esprit que faire des expériences de tarification peut avoir un effet négatif, et vous ne voulez pas être dans cette situation. Tout ce que vous pourriez rêver. Vraiment. Toute modification qui affecte la façon dont les utilisateurs interagissent avec votre site vaut la peine d'être testée. Peut-être que c'est même, vous savez, rendre le site plus rapide ou pourrait être n'importe quoi. Donc, la première chose que vous devez comprendre lorsque vous concevez une expérience sur un site Web est à quoi essayez-vous d'optimiser ? Qu' est-ce que vous voulez vraiment conduire avec ce changement ? Et ce n'est pas toujours une chose très évidente, non ? Peut-être que c'est le montant que les gens dépensent le montant des revenus. OK, eh bien, nous avons parlé des problèmes avec les variantes dans l'utilisation de la quantité dépensée, mais si vous avez assez de données, vous pouvez toujours atteindre la convergence sur cette métrique. Vous savez, beaucoup de fois, mais peut-être que ce n'est pas ce que vous voulez vraiment optimiser ? Peut-être que vous vendez en fait certains articles qu'une perte intentionnellement juste pour capturer des parts de marché . Ou, vous savez, votre stratégie de tarification est plus complexe que le chiffre d'affaires de première ligne . Peut-être que ce que vous voulez vraiment mesurer, c'est le profit. Et cela pourrait être une chose très difficile à mesurer parce que beaucoup de choses réduisent à combien d' argent un produit donné pourrait gagner. Et ces choses ne sont peut-être pas toujours évidentes. Et encore une fois, si vous avez perdu des leaders, cette expérience va ignorer l'effet que ces airs supposés avoir. Donc, en fin de compte, vous devez parler aux propriétaires d'entreprises de la zone qui est testée et comprendre ce qu'ils essaient d'optimiser pour ce qu'ils mesurent ? Quel est leur succès mesuré sur ce que l'air Il, vous savez, indicateurs de performance clés ou tout ce que la NBA veut appeler cela et nous assurer que nous mesurons ce qui compte réellement pour eux. Ok, peut-être que vous vous souciez simplement de conduire des clics publicitaires sur votre site Web ou de commander des quantités pour réduire les variantes. Peut-être que les gens sont d'accord avec ça, et vous savez que vous pouvez mesurer plus d'une chose à la fois pour que vous n'ayez pas à en choisir une. Vous pouvez réellement signaler l'effet de beaucoup de choses différentes. Chiffre d'affaires, clics de profit, affichages publicitaires. Et si toutes ces choses vont dans la bonne direction ensemble, c'est un signe très fort que ce changement a eu un impact positif à plusieurs égards, non ? Alors pourquoi vous limiter à une mesure ? Assurez-vous simplement de savoir lequel compte le plus et quels seront vos critères de réussite de cette expérience à l'avance. Une autre chose à surveiller pour nous attribuer des conversions à un changement en aval. Donc, si l'action que vous essayez de conduire ne se produit pas immédiatement lorsque l'utilisateur rencontre la chose que vous testez, les choses deviennent un peu douteuses. Donc, disons que je change la couleur du bouton sur la page. Un utilisateur va ensuite à la page B et fait autre chose et finalement acheter quelque chose de payant. Vous voyez bien, qui obtient le crédit pour cet achat ? Est-ce la page A ou la page B ou quelque chose comme ça ? Entre les deux ? Est-ce que je réduit le crédit pour cette conversion ? Selon le nombre de clics que cette personne a effectués pour accéder à l'action de conversion ? Est-ce que je rejette toute conversion, demi-action. Cela n'arrive pas immédiatement après avoir vu ce changement. Ce sont des choses compliquées. Et, vous savez, il est très facile de produire des résultats trompeurs en lisant comment vous tenez compte de ces différentes distances entre la conversion et le changement que vous mesurez. Alors gardez ça à l'esprit aussi. Une autre chose que vous devez vraiment internaliser est que la variance est votre ennemi lorsque vous exécutez un test A B. Donc, une erreur très courante que font les gens qui ne savent pas ce qu'ils font avec la science des données est qu'ils vont mettre un test sur une page Web. Vous savez, bouton bleu contre bouton orange, peu importe ce que c'est, lancez-le pendant une semaine et prenez le montant moyen dépensé de chacun de ces groupes. Et ils disent, Surveillez les gens avec le bouton bleu en moyenne, ont dépensé un dollar de plus que les gens avec le bouton orange. Le bleu est génial. J' adore le bleu. Je vais mettre du bleu sur le site Web maintenant, mais en fait, tout ce qu'ils ont pu voir était juste une variation aléatoire dans les achats. Vous savez, ils n'avaient pas assez d'échantillon parce que les gens n'ont pas tendance à acheter beaucoup. Vous savez qu'ils sont beaucoup utilisés, mais vous avez probablement beaucoup d'achats sur votre site Web en comparaison. Et c'est probablement beaucoup d'écart dans ces montants d'achat parce que différents produits coûtent des montants différents, sorte que vous pourriez très facilement finir par prendre la mauvaise décision qui finit par coûter de l'argent à votre entreprise à long terme au lieu de gagner de l'argent de votre entreprise. Si vous ne comprenez pas l'effet des variantes sur ces résultats, et bientôt nous parlerons de quelques façons principales de mesurer et de tenir compte de cela. Et assurez-vous de vous assurer que les propriétaires de votre entreprise comprennent qu'il s'agit d'un effet important que vous devez quantifier et comprendre avant de prendre des décisions commerciales suite d'un test A B ou de toute expérience que vous exécutez sur le Web maintenant, parfois, vous devez choisir une mesure de conversion qui a moins de variance. Vous savez, il se peut que les chiffres sur votre site Web signifient juste que vous devriez mener une expérience pendant des années afin d'obtenir des résultats significatifs basés sur quelque chose comme le chiffre d'affaires ou le montant dépensé. Donc, parfois si vous regardez plus d'une mesure comme la commande, le montant, montant, ordre, quantité qui a moins d'écart associé à elle. Ainsi, vous pouvez voir un signal sur la quantité de commande avant de voir un signal sur le chiffre d'affaires, par exemple, et à la fin de la journée, il finit par être un appel de jugement. Vous savez, si vous voyez une augmentation importante des quantités de commande et peut-être une liste moins importante chiffre d'affaires, alors vous devez dire, Eh bien, Eh bien, je pense qu'il pourrait y avoir quelque chose de réel qui est bénéfique qui se passe ici. Mais à la fin de la journée, la seule chose que les statistiques et la taille des données Comptel vous sont des probabilités que, en fait , Israël, vous savez, c'est vraiment à vous de décider si oui ou non il est vraiment à la fin de la journée. Parlons donc de la façon de le faire plus en détail. Donc c'est une introduction à un test B. La clé à emporter est juste de regarder les différences, et les moyens ne suffisent pas. Lorsque vous essayez d'évaluer les résultats d'une expérience, vous devez également prendre en compte les variantes. Nous allons donc dans quelques exemples dans notre prochaine conférence sur la façon dont vous mesurez réellement les effets de la variance à l'aide des statistiques T et des mesures de valeur P 81. Test et valeurs P: Alors, comment puis-je savoir si un changement résultant d'un test A B Israël si c'est réellement un résultat de ce que j'ai changé ou facist variation aléatoire ? Eh bien, il y a quelques outils statistiques à notre disposition, appelés la statistique T et la valeur P . Nous allons donc en apprendre plus sur ce qu'ils sont et comment ils peuvent vous aider à déterminer si une expérience est bonne ou non. Donc, comme je l'ai dit dans notre conférence précédente variances votre ennemi quand vous êtes en cours d'exécution dans un test B. Alors, comment pouvons-nous en rendre compte ? Eh bien, il y a quelques outils statistiques à notre disposition, appelés le test tes à la statistique T plus spécifiquement, et la valeur P, qui permet de quantifier l'effet des variantes sur nos résultats et de prendre une décision prend en compte ces variantes. Donc, le but est de savoir si un résultat est réel ou non. Est-ce juste le résultat d'une variance aléatoire inhérente aux données elles-mêmes ? Ou sommes-nous témoins d'un changement réel, statistiquement significatif dans le comportement de notre groupe témoin dans nos tests T et les valeurs P, ou un moyen de calculer cela et de se rappeler de nouveau. Statistiquement significatif n'a pas vraiment de signification spécifique. En fin de compte, il faut que ce soit un jugement. Vous devez choisir une valeur de probabilité que vous allez accepter d'un résultat étant riel ou non. Mais il y aura toujours une chance que ce soit toujours le résultat d'une variation aléatoire, et vous devez vous assurer que vos parties prenantes comprennent cela. Commençons donc par la statistique T. Ellison l'était. Un test T est essentiellement une mesure de la différence de comportement entre ces deux ensembles entre votre groupe de contrôle et de traitement exprimée en unités d'erreur type. Il est donc basé sur une erreur type, qui tient compte de la variance inhérente aux données elles-mêmes. Donc, en normalisant tout par cette erreur type, nous obtenons une certaine mesure du changement de comportement entre ces deux groupes qui tient compte de cette variance. Donc, la façon d'interpréter une statistique T est à une valeur de thé élevée signifie qu'il y a probablement une réelle différence entre ces deux ensembles d'étapes. Il y a une valeur lo T signifie pas tellement. Donc tu dois décider. Tu sais quel est le seuil que tu acceptes ? Et le signe de la statistique T vous dira si c'est une chaîne positive ou négative. Donc, si vous comparez votre contrôle, votre groupe de traitement et vous finissez avec une statistique T négative, implique qu'il s'agit d'un mauvais changement. Si cette valeur absolue de cette statistique T est grande, quelle est la taille ? Eh bien, c'est discutable. Nous allons examiner quelques exemples sous peu maintenant. Cela suppose que vous avez une distribution normale du comportement. Et quand on parle de choses comme le montant que les gens dépensent sur un site Web, c'est généralement une supposition décente. Il y a généralement une distribution normale de ce que les gens dépensent, cependant, leur bras ou leurs versions raffinées de statistiques T que vous pourriez vouloir examiner pour d'autres situations spécifiques. Par exemple, il y a quelque chose qui s'appelle le test exact de Fisher. Lorsque vous parlez de, cliquez sur les taux E test lorsque vous parlez de transactions par utilisateur, comme combien de pages Web ont-ils vu ? Et le test carré Chai, qui est souvent pertinent lorsque vous regardez les quantités de commande ? Donc, parfois, vous aurez envie de regarder toutes ces statistiques ont été donnés expérience et choisir celui qui correspond réellement à ce que vous essayez de faire le mieux. Maintenant, il est beaucoup plus facile de parler des valeurs P que des statistiques T, puisque vous n'avez pas à penser au nombre d'écarts types dont nous parlons. Et quelle est la valeur réelle moyenne ? La valeur P est un peu plus facile à comprendre pour les gens, ce qui en fait un meilleur outil pour communiquer les résultats d'une expérience aux parties prenantes de votre entreprise. Donc, la valeur P est fondamentalement la probabilité que cette expérience satisfasse à l' hypothèse nulle . C' est la probabilité qu'il n'y ait pas de différence réelle entre le comportement de contrôle et celui des traitements . Donc, une faible valeur P signifie qu'il y a une faible probabilité qu'il n'ait aucun effet, une sorte de double négatif qui se passe là. C' est donc un peu contre-intuitif, mais à la fin de la journée, suffit de comprendre qu'une faible valeur P signifie qu'il y a une forte probabilité que votre changement ait eu un effet réel. Donc, ce que vous voulez voir ou de hautes dents statistiques et une faible valeur p, et cela impliquera un résultat significatif. Maintenant, avant de commencer votre expérience, vous devez décider quel sera votre seuil de réussite, Vous savez, décider cela avec les responsables de l'entreprise. Quelle valeur P êtes-vous prêt à accepter comme mesure de succès ? C' est 1% ? C' est 5 % ? Et encore une fois, c'est essentiellement la probabilité qu'il n'y ait pas d'effet riel qui est juste le résultat d'une variance aléatoire. C' est juste un jugement à la fin de la journée. Beaucoup de fois, les gens utilisent 1%. Parfois, ils utilisent 5% de leur sentiment un peu plus risqué. Mais il y aura toujours cette chance que votre résultat soit juste des données aléatoires fausses qui sont entrées. Mais vous pouvez choisir la probabilité que vous êtes prêt à accepter comme étant assez probable que c'est un réel effet qui vaut la peine d'être déployé dans la production. Donc, lorsque votre expérience est terminée et que nous parlerons lorsque vous déclarerez qu'une expérience terminée, vous voulez mesurer votre valeur P. Si c'est inférieur au seuil sur lequel vous décidez, alors vous pouvez rejeter l'hypothèse nulle et vous pouvez dire, eh bien, il y a une forte probabilité que ce changement produise des résultats positifs ou négatifs. C' est un résultat positif que vous pouvez déployer ce changement sur l'ensemble du site, et ce n'est plus une expérience. Fait partie de votre site Web qui, espérons-le, vous fera de plus en plus d'argent au fur et à mesure que le temps passe. Et si c'est un résultat négatif, vous voulez vous en débarrasser avant que cela ne vous coûte plus d'argent. Alors rappelez-vous que c'est un coût réel pour exécuter un test B lorsque votre expérience a des résultats négatifs , donc vous ne voulez pas l'exécuter trop longtemps parce qu'il y a une chance que vous pourriez perdre de l'argent . Et c'est pourquoi vous voulez surveiller les résultats d'une expérience sur une base quotidienne. Donc, s'il y a des premières indications qu'un changement a un impact horrible sur le site Web , peut-être qu'il y a un bug dedans ou quelque chose d'horrible. Vous pouvez tirer la prise dessus prématurément si nécessaire, et limiter les dommages. Donc, passons à un exemple réel et voyons comment vous pouvez mesurer les statistiques T et les valeurs P en utilisant python. C' est donc le test T, la statistique T et la valeur P outils utiles pour déterminer si un résultat est réellement ou un résultat d'une variation aléatoire. Alors nous allons ensuite plonger dans quelques exemples réels et nous salir les mains avec du code python et calculer ces choses. 82. Hands-On avec des tests de tests de tests: fabriquons des données expérimentales et utilisons la statistique T et la valeur P pour déterminer si un résultat expérimental donné est un effet réel ou non. Ok, nous allons salir les mains avec des tests T allaient fabriquer des fausses données expérimentales et exécuter des statistiques T et des vallées P sur eux et voir comment ça marche et comment le calculer en Python. Commençons donc par fabriquer quelques données ici. Imaginons que nous effectuons un test A B sur un site Web et que nous avons assigné nos utilisateurs au hasard en deux groupes, groupe A et le groupe B et le groupe A seront nos sujets de test sont le groupe de traitement et groupe B sera notre contrôle. Fondamentalement, la façon dont le site Web était ainsi dans cet exemple sont le groupe de traitement va avoir un comportement d'achat distribué au hasard où ils dépensent en moyenne 25$ par transaction, résister à l'écart de cinq et 10 000 échantillons. Où est la façon dont le site Web avait une moyenne de 26$ par transaction, avec la même écart-type et la même taille de l'échantillon. Donc, nous sommes fondamentalement en train de regarder une expérience qui a eu un résultat négatif ici et tout ce que vous avez à faire pour comprendre la statistique T et la valeur P est utilisée à cette fin. Dandy Stats Stock T Test End méthode De Sai Pie C'est aussi simple que ça. Donc, ce que vous faites, c'est que vous le transmettez dans votre groupe de traitement dans votre groupe de contrôle et votre statistique T, qui dans ce cas est négatif. 13. Le négatif indique qu'il s'agit d'un changement négatif. C' était une mauvaise chose, et la valeur P est très, très petite. Cela implique donc qu'il y a une très faible probabilité que ce changement soit juste le résultat d'un hasard aléatoire. Alors rappelez-vous, pour déclarer la signification, nous avons besoin de voir ah, haute valeur de thé T statistique et une faible valeur de P. Et c'est exactement ce qu'on voit ici. Nous voyons 13 négatif qui est une valeur absolue très saluée, la statistique T négative, indiquant que c'est une mauvaise chose et une valeur P extrêmement petite nous disant qu'il n'y a pratiquement aucune chance que ce soit juste le résultat d'un variation. Donc, si vous voyiez ces résultats dans le monde réel, vous tiriez le bouchon de cette expérience dès que vous le pouviez. Ok, donc c'est juste un chèque sablonneux. Allons de l'avant et changeons les choses pour qu'il n'y ait pas de différence de changement de riel entre ces deux groupes. Donc je vais changer le groupe B. Le groupe témoin dans ce cas est le même qu'un traitement où la moyenne est de 25 l' écart-type qui est inchangé dans la taille de l'échantillon de la chaîne solaire. Donc, si vous allez de l'avant et courez que vous devez voir que notre test T finit par être inférieur à un maintenant . Donc vous vous souvenez que c'est en termes d'écart-type, donc cela implique, Eh bien, il n'y a probablement pas de vrai changement là-bas. Il doit avoir une valeur P beaucoup plus élevée ainsi que plus de 30 %. Maintenant, ces airs sont encore relativement élevés. Donc vous savez, vous pouvez voir que la variation aléatoire peut être une chose insidieuse. C' est pourquoi vous devez décider à l'avance. Qu' est-ce qu'une limite acceptable pour la valeur P ici ? Tu sais, tu pourrais regarder ça après le fait et dire, 30% de chances que ce soit, tu sais, ce n'est pas si mal. On peut vivre avec ça. Mais non, je veux dire en réalité, en pratique, vous voulez voir des vallées P qui sont en dessous de 5% idéalement en dessous de 1% et une valeur de 30% signifie que ce n'est pas si fort d'un résultat. Alors ne le justifie pas après le fait. Allez dans votre expérience pour savoir quel est votre seuil. Faisons quelques changements ici, et, et, vous savez, encore une fois, nous créons ces ensembles dans les mêmes conditions. Voyons si on a une différence de comportement en augmentant la taille de l'échantillon, donc on va passer de 210 000 échantillons. Vous pouvez voir ici que la valeur P est un peu plus faible et le test T un peu plus grand, mais il n'est toujours pas nécessaire de déclarer une vraie différence. Donc tu sais, tu t'attendrais à ce Teoh. En fait, ça va dans la direction. Vous ne vous attendez pas à ce que ça se passe bien, mais il y a encore des valeurs élevées à nouveau. C' est juste la variance aléatoire efficace, et cela pourrait avoir plus d'effet sur vous réalisez, en particulier sur un site Web. Quand vous parlez des montants de commande. Allons Ah, allons en fait à 1 000 000. Qu' est-ce que c'est ? Eh bien, maintenant nous sommes de retour sous un pour la statistique T et nos valeurs autour de 35%. Donc, je veux dire, nous voyons ce genre de, comme fluctuer un peu dans les deux sens à mesure que nous augmentons la taille de l'échantillon. Cela signifie que passer de 10 000 échantillons, 200 000 à 1 000 000 ne changera pas votre résultat à la fin de la journée. Vous savez, c'est et exécuter des expériences comme celle-ci est un bon moyen d'avoir une bonne idée de combien de temps vous pourriez avoir besoin pour exécuter une expérience, pour combien d'échantillons faut-il réellement pour obtenir un résultat significatif ? Et si vous savez quelque chose sur la distribution de vos données à l'avance, vous pouvez réellement exécuter ce genre de modèles. Maintenant, c'est un contrôle de santé mentale. Si nous devions réellement comparer l'ensemble à lui-même, cela est appelé sur un test, et nous en parlerons plus tard. Nous devrions voir une statistique T de zéro et une valeur P d'un point. Oh, parce qu'il n'y a en fait aucune différence entre ces ensembles. Maintenant, si vous deviez exécuter cela en utilisant de vraies données de site Web où vous savez que vous regardez les mêmes personnes exactes et que vous avez vu une valeur différente qui indique qu'il y a un problème dans le système lui-même qui exécute vos tests. droite. D' accord. Donc, vous savez, à la fin de la journée, comme je l'ai dit, tout est un appel de jugement. Alors allez-y et jouez avec ça. Vous savez, voyez quel effet des écarts types différents ont sur les ensembles de données initiaux ou différentes différences dans les moyens et le genre d'obtenir une idée des différentes tailles d'échantillon. Donc, je veux juste que vous plongez dans, jouer avec ces différents ensembles de données et en fait les exécuter et voir quel est l'effet sur la statistique T dans la valeur P. Et j'espère que cela vous donnera une meilleure idée de la façon d'interpréter ces résultats. Mais encore une fois, la chose importante à comprendre que vous êtes à la recherche d'une grande statistique T et d'une petite valeur P valeurs seront probablement ce que vous voulez communiquer à l'entreprise. Et rappelez-vous, plus bas est meilleur pour la valeur p. Vous voulez voir cela dans les chiffres simples, vous savez, vous savez, idéalement en dessous de 1% avant de déclarer la victoire. Ok, parlons d'un test B et plus encore dans notre prochaine conférence. Donc là, vous l'avez CYP. Je le rend vraiment facile de calculer les statistiques T et les valeurs P pour un ensemble donné de données, sorte que vous pouvez très facilement comparer le comportement entre vos groupes de contrôle et de traitement et mesurer quelle est la probabilité que cet effet soit riel ou juste un résultat de variation aléatoire. Assurez-vous donc de vous concentrer sur ces mesures et de mesurer la mesure de conversion qui vous intéresse lorsque vous effectuez ces comparaisons. 83. Déterminer combien longtemps mener une expérience: Tu fais une expérience pendant combien de temps ? Combien de temps faut-il pour obtenir un résultat ? À quel moment tu abandonnes ? Parlons de ça ensuite. Ça va être une conférence très rapide. Je veux juste passer quelques minutes à parler de la façon de décider quand une expérience est terminée. Donc, si quelqu'un dans votre entreprise a développé une nouvelle expérience un nouveau changement qu'il veut tester, il a tout intérêt à voir cela réussir. Vous savez, ils ont mis beaucoup de travail dans le temps, et ils veulent que ce soit un succès et ont peut-être passé des semaines. Et vous n'avez toujours pas atteint de résultat significatif sur cette expérience, positive ou négative, vous savez, vous savez, ils vont vouloir continuer à l'exécuter à peu près indéfiniment dans l'espoir qu'elle finira par montrer un résultat positif. C' est à vous de décider des orteils. Dessinez la ligne sur combien de temps vous êtes prêt à exécuter cette expérience. Alors, comment savoir quand j'ai fini de faire un test A B ? Je veux dire, il n'est pas toujours simple de prédire combien de temps il faudra avant de pouvoir obtenir un résultat significatif, mais Évidemment, si vous avez obtenu des résultats significatifs, vous connaissez votre valeur P est passé en dessous de 1 % ou 5 % du seuil que vous avez choisi votre fait . Et vous savez, à ce moment-là, vous pouvez tirer le bouchon dans l'expérience soit déployer le changement plus largement ou le retirer parce qu'il avait effectivement un effet négatif. Vous pouvez toujours dire aux gens d'y retourner et d'essayer à nouveau. Vous savez, utilisé ce qu'ils ont appris de l'expérience pour essayer à nouveau avec quelques changements. Et tu sais que c'est bon. Ramollir un peu le coup, mais l'autre chose qui pourrait arriver est que ce n'est tout simplement pas la conversion du tout. Et si vous ne voyez aucune tendance au fil du temps dans la valeur P, c'est probablement un bon signe que vous ne verrez pas cela converger bientôt. Ça ne va pas avoir assez d'impact sur le comportement pour être mesurable, peu importe combien de temps vous l'exécutez. Donc, ce que vous voulez faire est un tracé quotidien sur un graphique pardonné expérience, la valeur P, la statistique T, tout ce que vous utilisez pour mesurer le succès de cette expérience, et si vous voyez que vous savez quelque chose semble prometteur. Vous verrez que les valeurs P commencent à baisser avec le temps. Ainsi, plus il obtient de données, plus vos résultats devraient être significatifs. Maintenant, si vous voyez à la place une ligne plate ou une ligne qui est partout, ce genre de choses vous dit que P Valley ne va nulle part. Et peu importe combien de temps vous exécutez cette expérience. Ça n'arrivera pas. Donc, vous devez d'abord convenir que dans le cas où vous ne voyez aucune tendance dans les valeurs P , quel est le plus long pour lequel vous êtes prêt à exécuter cette expérience ? C' est deux semaines ? C' est un mois ? Gardez à l'esprit que le fait d'avoir plus d'une expérience en même temps peut confondre vos résultats. Le temps consacré aux expériences est donc une marchandise précieuse. Vous ne pouvez pas gagner plus de temps dans le monde donc vous ne pouvez vraiment exécuter ses nombreuses expériences que vous avez le temps de les exécuter avec l'année donnée. Donc, si vous passez trop de temps à exécuter une expérience qui n'a vraiment aucune chance de converger sur un résultat, c'est une occasion que vous avez manquée de lancer une autre expérience potentiellement plus précieuse pendant ce temps que vous perdiez sur l'autre. Il est donc important de tracer la ligne sur la durée des expériences, car le temps est une marchandise très précieuse . Lorsque vous exécutez un test B sur un site Web, au moins tant que vous avez plus d'idées et que vous avez le temps, ce qui est le cas, et c'est tout. Vous savez, c'est une petite parabole sur vous assurer d'entrer avec des limites supérieures convenues et combien de temps vous allez passer des tests et des expériences données. Et si vous ne voyez pas de tendances dans la valeur P qui semblent encourageantes, il est temps de tirer la fiche à ce moment-là. Alors rappelez-vous, le temps est une marchandise précieuse. Lorsque vous expérimentez sur un site Web, vous ne pouvez exécuter que tant d'expériences à la fois, généralement un et le temps que vous perdez à essayer d'attendre un résultat qui ne viendra jamais sur une expérience. Cette fois, vous auriez pu passer à essayer une expérience qui a réellement fait une différence positive. Alors choisissez vos limites de temps à bon escient. 84. Gotchas de test A/B: un point important que je tiens à souligner est que les résultats d'un test A B, même lorsque vous les mesurez d'une manière fondée sur des principes. Utiliser les valeurs P n'est pas l'évangile. Il y a beaucoup d'effets qui peuvent en fait fausser les résultats de votre expérience et vous amener à prendre la mauvaise décision. Alors passons en revue quelques-unes et que vous sachiez comment faire attention à eux. Parlons donc de quelques gouaches avec un test B. Vous savez, ça semble vraiment officiel de dire qu'il y a une valeur P de 1% ce qui signifie qu'il n'y a que 1% de chances qu'une expérience donnée soit due à des résultats erronés ou à des variations aléatoires. Mais ce n'est toujours pas le tout et la fin de mesurer le succès d'une expérience. Il y a beaucoup de choses qui peuvent fausser ou confondre vos résultats dont vous devez être conscient. Donc, même si vous voyez une valeur P qui semble très encourageante, votre Web, votre expérience pourrait toujours vous mentir, et vous devez comprendre les choses qui pourraient le faire pour que vous ne preniez pas les mauvaises décisions. Rappelez-vous, corrélation n'implique pas de causalité, même avec une expérience bien conçue, Tout ce que vous pouvez dire est qu'il ya une certaine probabilité que cet effet a été causé par ce changement que vous avez fait. En fin de compte, il y aura toujours une chance qu'il n'y ait pas d'effet réel ou que vous puissiez même mesurer le mauvais effet. Il pourrait encore y avoir une chance aléatoire qu'il se passe quelque chose d'autre. Il est de votre devoir de vous assurer que les propriétaires d'entreprise comprennent que ces résultats expérimentaux doivent être interprétés. Ils ont besoin d'être un élément de leur décision, n'est-ce pas. Ça ne peut pas être tout et finir tout ça. Ils ont fondé leur décision parce qu'il y a place à l'erreur dans les résultats et qu'il y a choses qui peuvent fausser ces résultats à la fin de la journée. S' il y a un objectif commercial plus important à ce changement, vous savez, juste générer des revenus à court terme qui doivent également être pris en compte. Un problème est les effets de nouveauté, donc le talon d'Achille d'un test A B est le court laps de temps sur lequel ils ont tendance à être exécutés correctement, et cela provoque quelques problèmes. Tout d'abord, s'il y a des effets à long terme à ce changement, vous ne les mesurerez pas. Mais aussi il y a un certain effet. Est juste quelque chose d'être différent sur le site. Donc peut-être que vos clients sont habitués à voir des boutons orange tout le temps, et ce bouton bleu apparaît et il attire leur attention juste parce que c'est différent. Mais comme de nouveaux clients arrivent qui n'ont jamais vu votre site Web auparavant, ils ne remarquent pas que c'est différent dans les heures supplémentaires. Même vos anciens clients s'habituent au nouveau bouton bleu, et il se pourrait très bien que si vous deviez faire le même test un an plus tard, il n'y aurait pas de différence. Ou peut-être qu'il y aurait l'inverse. Vous savez, je pouvais très facilement voir une situation où vous testez le bouton orange contre le bouton bleu, et dans les 2 premières semaines le bouton bleu gagne. Les gens achètent plus parce qu'ils étaient plus attirés par elle parce que c'est différent. Mais un an passe. Je pourrais probablement exécuter un autre laboratoire Web qui met ce bouton bleu contre un bouton orange, et le bouton orange gagnerait à nouveau simplement parce que le bouton orange est différent et c'est nouveau et il attire l'attention des gens juste pour cette raison tout seul. Donc, pour cette raison, si vous avez, ah, le changement est quelque peu controversé. C' est une bonne idée de réexécuter cette expérience plus tard et de voir si vous pouvez réellement répliquer ses résultats. C' est vraiment la seule façon dont je connais les orteils pour tenir compte des effets de nouveauté. En fait, vous le mesurez à nouveau quand il n'est plus nouveau, quand ce n'est plus seulement un changement que l'attention des gens de mon attrapeur simplement parce que c' différent et c'est que je ne peux vraiment pas sous-estimer l'importance de comprendre cela. Cela pourrait vraiment fausser beaucoup de résultats. Cela vous incite à attribuer des changements positifs à des choses qui ne le méritent pas vraiment. Vous savez, être différent en soi n'est pas une vertu, du moins pas dans ce contexte. Un autre problème. Effets saisonniers. Encore une fois, si vous faites une expérience pendant Noël, les gens n'ont pas tendance à se comporter de la même façon pendant Noël que le reste de l'année. Vous savez, ils dépensent leur argent différemment pendant cette saison, ils passent plus de temps avec leur famille à la maison. Ils pourraient être un peu vérifiés du travail, donc les gens ont un autre état d'esprit. Il pourrait même être impliqué dans la météo. Tu sais, pendant l'été, les gens se comportent différemment parce qu'il fait chaud. Tu sais, ils sont gentils. Ils se sentent un peu comme Lee, soit en vacances plus souvent. Peut-être que si vous parvenez à faire votre expérience pendant une terrible tempête dans une zone très peuplée qui pourrait également fausser vos résultats. Donc, encore une fois, soyez conscient des effets saisonniers potentiels vacances ou un grand à être conscient. Et prenez toujours votre expérience avec un grain de sel s'il est exécuté pendant une période connue pour avoir une saisonnalité, et vous pouvez déterminer cela quantitativement en regardant réellement la métrique que vous essayez de mesurer comme un le succès. mesure Quelle que soit lamesureque vous appelez votre mesure de conversion et examinez son comportement au cours de la même période l'année dernière, y a-t-il des fluctuations saisonnières que vous voyez chaque année ? Et si c'est le cas, vous voulez essayer d'éviter de courir votre expérience pendant l'un de ces sommets ou vallées. Un autre problème potentiel qui peut skier les résultats est le biais de sélection, il est donc très important que les clients aient été assignés au hasard soit à votre contrôle, vos groupes de traitement, vous êtes un ou votre groupe B, est-ce pas, Mais il y a des façons subtiles dans lesquelles cette affectation aléatoire pourrait ne pas être aléatoire après tout. Par exemple, disons que votre hachage vos idées de clients pour les placer dans un seau ou l'autre . Peut-être qu'il y a un biais subtil entre la façon dont cette fonction de hachage affecte les personnes ayant clients moins élevées par rapport aux idées de clients plus élevées. Et cela pourrait avoir pour effet de placer tous vos clients de longue date ou fidèles dans le groupe de contrôle et vos nouveaux clients qui ne vous connaissent pas si bien dans votre groupe de traitement . Et ce que vous finissez par mesurer n'est qu'une différence de comportement entre les anciens clients et les nouveaux clients en conséquence. Il est donc très important de vérifier vos systèmes pour s'assurer qu'il n'y a pas de biais de sélection dans l' affectation réelle des personnes au groupe de contrôle du traitement. Vous devez également vous assurer que Simon est collant, donc si vous mesurez l'effet d'un changement sur une session entière, vous savez que vous voulez mesurer. Ils ont vu un changement sur la page A, mais sur non payé voir, ils ont fait une conversion. Vous devez vous assurer qu'ils ne changent pas de groupe entre ces clics, donc vous devez vous assurer que dans une session donnée les gens restent dans le même groupe, et comment définir une session peut devenir un peu nébuleuse aussi. Maintenant, sont tous des problèmes que l'utilisation d'un cadre établi sur le plateau comme les expériences Google sont optimisés Lee ou l'un de ces gars peut aider avec. Vous savez que vous ne réinventez pas la roue sur tous ces problèmes, mais si votre entreprise a, ah, une solution interne, parce qu'elle n'est pas à l'aise avec le partage de ces données avec des entreprises extérieures, vous savez que cela vaut la peine d'être vérifié. Qu' il y ait ou non sélection, biais ou non. Une façon de le faire est d'exécuter ce qu'on appelle sur un test. Donc, si vous faites une expérience où il n'y a pas de différence entre le traitement et contrôle, vous ne devriez pas voir une différence dans le résultat final, est-ce pas ? Vous savez, il ne devrait pas y avoir de changement de comportement lorsque vous comparez ces deux choses, donc un test pourrait être un bon moyen de tester. Vous êtes un cadre B lui-même pour vous assurer qu'il n'y a pas de biais inhérent ou d'autres problèmes. Par exemple, la fuite de session et quoi ? Pas que vous avez besoin de vous adresser. Un autre gros problème est la pollution des données. Nous avons donc longuement parlé de l'importance de nettoyer vos données d'entrée, et c'est particulièrement important dans le contexte d'un test Navy. Que se passerait-il si vous aviez un robot, un robot malveillant qui navigue tout le temps sur votre site Web ? Tu sais, faire des transactions non naturelles, et ce robot finit par être affecté au traitement du contrôle. Cette seule personne, ce robot, pas même une personne pourrait fausser les résultats de votre expérience. Il est donc très important d'étudier l'entrée dans votre arme pour votre expérience et rechercher des valeurs aberrantes et d'analyser ce que sont ces valeurs aberrantes. Devraient-elles être exclues ? Est-ce que vous laissez des robots fuir dans vos mesures ? Et est-ce qu'ils faussent les résultats de votre expérience ? C' est un problème très, très commun et quelque chose dont vous devez être conscient. Il y a des robots malveillants là-bas qui sont des gens qui essaient de pirater votre site Web. Il y a, vous savez, grattoirs bénins là-bas. Ils essaient juste d'explorer votre site Web pour les moteurs de recherche ou ce qui n'est pas. Vous savez, il y a toutes sortes de comportements bizarres qui se produisent sur un site Web, et vous devez les filtrer et obtenir vraiment les gens qui sont vraiment vos clients et pas ces scripts automatisés. Et ça pourrait être un problème très difficile, en fait. Encore une autre raison d'utiliser des cadres hors du marché comme Google Analytics ou autres, si vous le pouvez. Très bien, et nous avons parlé brièvement des erreurs d'attribution. Vous savez, si vous utilisez réellement un comportement en aval à partir d'un changement qui pénètre dans une zone grise , vous devez comprendre comment vous comptez réellement ces conversions en fonction de la distance par rapport à la chose que vous avez changée et, vous savez, accord avec les intervenants de votre entreprise sur la façon dont vous allez mesurer les effets dont vous devez également être conscient. Si vous exécutez plusieurs expériences une fois, seront-elles en conflit les unes avec les autres ? Existe-t-il un flux de page où quelqu'un pourrait réellement rencontrer deux expériences différentes dans la même session ? Si oui, cela va être un problème, et vous devez essentiellement appliquer votre jugement pour savoir si ces changements pourraient réellement interférer les uns avec les autres d'une manière significative et effectivement affecter le comportement des clients d' une manière significative. D' accord, donc encore une fois, très. Vous devez prendre ces résultats avec un grain de sel. Il y a beaucoup de choses qui pourraient avoir des résultats de ski, et vous devez être conscient de, hum, alors soyez au courant d'eux et assurez-vous que vos propriétaires d'entreprise sont également conscients des limites des tests B et que vous serez OK. Rappelez-vous donc que la nature à court terme d'un test A B le soumet à beaucoup de limites. Vous pouvez être juste voir des effets de nouveauté ou des effets saisonniers et quoi ne pas. Donc, si vous n'êtes pas dans une position où vous pouvez réellement consacrer beaucoup de temps à une expérience, vous devez prendre ces résultats avec un grain de sel et idéalement les tester plus tard pendant une période différente.