Ciência de dados e aprendizado de máquinas com Python — colocar em prática! | Frank Kane | Skillshare

Velocidade de reprodução


1.0x


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

Ciência de dados e aprendizado de máquinas com Python — colocar em prática!

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

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      2:44

    • 2.

      Instruções de configuração do Windows

      9:43

    • 3.

      Instruções de configuração para Mac

      7:04

    • 4.

      Instruções de configuração no Linux

      8:11

    • 5.

      Noções básicas de Python em parte 1

      4:59

    • 6.

      Noções básicas de Python em parte 2

      5:17

    • 7.

      Noções básicas de Python em parte 3

      2:46

    • 8.

      Noções básicas de Python em parte 4

      4:02

    • 9.

      Introdução com pandas

      10:08

    • 10.

      Tipos de dados

      6:58

    • 11.

      Média, mediana, modo

      5:26

    • 12.

      Como usar o de média e modo no Python

      8:20

    • 13.

      Variação e desvio de padrão

      11:12

    • 14.

      Função de sua de

      3:27

    • 15.

      Distribuições de dados comuns

      7:45

    • 16.

      Percentiles e momentos

      12:32

    • 17.

      um curso de Crash no matplotlib

      13:46

    • 18.

      Visualização de dados com Seaborn

      17:30

    • 19.

      Covariance e correlação

      11:31

    • 20.

      Exercício: probabilidade condicional

      16:04

    • 21.

      Solução de exercício: probabilidade condicional

      2:20

    • 22.

      Teor de Bayas

      5:23

    • 23.

      Regressão linear

      11:01

    • 24.

      Regressão Polynomial

      8:04

    • 25.

      Múltipla regressão

      16:26

    • 26.

      Modelos de múltiplos nível

      4:36

    • 27.

      Aprendizagem em mente vs.

      8:57

    • 28.

      Como usar o de treinamento para evitar a Overfitting

      5:47

    • 29.

      Métodos Bayesian: conceitos

      3:59

    • 30.

      Como implementar um classificador de spam com Naive Bayes

      8:05

    • 31.

      K-Means a algunos

      7:23

    • 32.

      Clustering de pessoas por renda e idade

      5:14

    • 33.

      Como medir a entrada

      3:09

    • 34.

      Windows: Como instalar Graphviz

      0:22

    • 35.

      Mac: Como instalar Graphviz

      1:16

    • 36.

      Linux: como instalar o Graphviz

      0:54

    • 37.

      Árvores de decisão: conceitos

      8:43

    • 38.

      Árvores de decisão: a previsão de decisões de contratação

      9:47

    • 39.

      Aprendizagem de embasar

      5:59

    • 40.

      [atividade] XGBoost

      15:29

    • 41.

      Visão de vetores (SVM)

      4:27

    • 42.

      Como usar o SVM para agrupar pessoas

      9:29

    • 43.

      Filtração colaborativa à base em usuários

      7:57

    • 44.

      Filtros colaborativo à base em código

      8:15

    • 45.

      Como encontrar semelhanças de filme

      9:08

    • 46.

      Como melhorar os resultados das semelhanças de filmes

      7:59

    • 47.

      Como fazer recomendações de filmes

      10:22

    • 48.

      Como melhorar o recomendador

      5:29

    • 49.

      K-Nearest-Neighbors: node K-Nearest-Neighbors: conceitos

      3:44

    • 50.

      Como usar o KNN para a avaliação para um filme

      12:29

    • 51.

      Reduçãode dimensão

      5:44

    • 52.

      Exemplo de PCA com o conjunto de dados de Ise

      9:05

    • 53.

      Armazenamento de dados de som, ETL e ELT

      9:05

    • 54.

      Aprendizagem de reforço

      12:44

    • 55.

      12:56

    • 56.

      Entendendo uma matriz de confusão

      5:17

    • 57.

      Como medir classificadores (precisão, remos, f1, ROCC e AUC)

      6:35

    • 58.

      Bias vira

      6:15

    • 59.

      Validação de cruz à velha

      10:26

    • 60.

      Limpeza de dados e normativa

      7:10

    • 61.

      Como limpar dados de log de de web

      10:56

    • 62.

      Normalizando dados numerais

      3:22

    • 63.

      Como detectar os

      6:21

    • 64.

      Engenharia de de a de a de a de de a de de a de que a de de que de de

      6:03

    • 65.

      Técnicas de imputação para dados não se

      7:48

    • 66.

      Como lidar com dados desequilibrados: a dupla de de desequilibrar: a sombra e SMOTe

      5:35

    • 67.

      Como filar, de binar, transformação, codificação, dimensionamento e shuffling

      7:51

    • 68.

      Notas de instalação de Spark

      5:00

    • 69.

      Como instalar o Spark - parte 1

      6:59

    • 70.

      Como instalar o Spark - parte 2

      7:20

    • 71.

      Introdução no Spark

      9:10

    • 72.

      Spark e a

      11:42

    • 73.

      Como introduzir o MLLib

      5:09

    • 74.

      Árvores de decisão no Spark

      16:15

    • 75.

      Conde no

      11:23

    • 76.

      TF / IDF

      6:43

    • 77.

      Como pesquisar a Wikipédia com Spark

      8:21

    • 78.

      Como usar a API de TE DataFrame 2 para o MLlib

      8:07

    • 79.

      Como implementar modelos para produção

      8:42

    • 80.

      Conceitos de teste A/B

      8:23

    • 81.

      Testes e valores

      5:59

    • 82.

      6:03

    • 83.

      Como determinar Quanto TEMPO tempo para fazer um experimento

      3:24

    • 84.

      Teste de A/B

      9:26

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

14.125

Estudantes

5

Projetos

Sobre este curso

Os dados os cientistas de dados gostam de uma dos trabalhos de pagamento de de melhores de É apenas a média! E não é apenas sobre o dinheiro - é um trabalho interessante!

Se você tiver alguma experiência de programação ou de script, este curso vai ensinar as técnicas de os de dados reais no setor de tecnologia - e preparar você para a mudança para este caminho de carreira de carreira Este curso abrangente inclui 68 aulas que abrangendo quase 9 horas de vídeo, e a maioria dos tópicos incluem exemplos de código de python que você pode usar para referência e para prática. Vou desenhar nos meus nove anos de experiência na Amazon e IMDb para orientar você no que é importante e o que é o que é importante.

Cada conceito é introduzido em inglês simples, que evitando a notação e de Em seguida, é demonstrado usando o código de Python com que você pode experimentar e fazer uma Você não vai encontrar uma cobertura individual e profunda neste curso - a foco em compreensão e de sua aplicação de

Os tópicos neste curso vem a análise de os requisitos reais nos listas de trabalhos de trabalho de dados Vamos abordar o de máquinas e as técnicas de mineração de dados que os profissionais estão procurando, incluindo:

  • Análise de regressão
  • K-Means a algunos
  • Análise de componentes principais
  • Trem/teste e validação de cruzamento
  • Métodos de Bayesian
  • Árvores de decisão e florestas Random
  • Regressão multivariada
  • Modelos de múltiplos nível
  • Suporte a as máquinas de vetores
  • Aprendizagem de reforço
  • Filtração colaborativa
  • Vizinho no K-Nearest
  • Bias/de bias/de vagem
  • Aprendizagem de embasar
  • Freqüência /reverta
  • Design experimental e testes A/B


...e muito mais! Também há uma seção inteiro sobre aprenda com o Apache Spark, que vai se para a ampliação de as técnicas para "big data" analisada em um clude de de computação.

Se você for novo no Python, não se preocupe - o curso começa com um curso de crash. Se você tiver feito alguma programação antes, deve de sua vez em Este curso mostra como se configurar no PC baseado no Microsoft Windows: o código de amostra também vai ser executado em sistemas de trabalho de trabalho do MacOS ou Linux ou de Linux.

Se você for um programador que quer transformar em uma nova faixa de carreira nova empolgante ou um analista de dados que quer fazer a transição para a indústria de tecnologia — este curso vai ensinar as técnicas de dados do mundo de negócios em de de mercado. Eu vai gostar que você vai ela!



Conheça seu professor

Teacher Profile Image

Frank Kane

Machine Learning & Big Data, ex-Amazon

Professor

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.

Visualizar o perfil completo

Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Oi. Bem-vindo à ciência de dados e aprendizado de máquina com Python. Sou seu instrutor. Frank Kane e eu passamos mais de nove anos na Amazon Dot com e no IMDB Dot com. Desenvolver e gerenciar alguns de seus recursos mais famosos, como Recomendado para Você e Pessoas que Compraram Também Compraram e os mais vendidos e recomendações de filmes e I. M. D. B. M. D. B. E todos esses recursos exigiu a aplicação de mineração de dados em técnicas de aprendizado de máquina a conjuntos de dados do mundo real E é disso que se trata este curso. Ser um cientista de dados no setor de tecnologia é uma das carreiras mais gratificantes do planeta hoje, estudei descrições de empregos reais para papéis de cientistas de dados em empresas de tecnologia , e destilo esses requisitos para o tópicos que você verá neste curso. Este curso é realmente abrangente. Vamos começar com um curso intensivo em Python e fazer uma revisão algumas estatísticas básicas e probabilidade. Mas então vamos mergulhar em mais de 60 tópicos em mineração de dados em aprendizado de máquina que inclui coisas como cerveja baseada. Estou agrupando árvores de decisão, análise de regressão, design experimental. Olhe para ele e alguns desses tópicos são realmente divertidos. Nós vamos desenvolver um sistema de recomendação de filmes real usando dados reais de classificação de filmes do usuário , vamos criar um mecanismo de busca que realmente funciona para dados da Wikipédia. Vamos criar um classificador de spam que pode classificar corretamente e-mails de spam e não spam em sua conta de e-mail. E também temos uma seção inteira sobre escalar esse trabalho para um cluster que é executado em big data usando o Apache Spark. Se você é um desenvolvedor de software ou programador que procura fazer uma transição para uma carreira em ciência de dados , este curso irá ensinar-lhe as habilidades mais quentes sem toda a notação matemática e pretensão que vem junto com esses tópicos. Vamos apenas explicar estes conceitos em inglês simples e mostrar-lhe algum código python que realmente funciona que você pode mergulhar e mexer com para fazer esses conceitos afundar em casa. E se você estiver trabalhando como analista de dados no setor financeiro, este curso também pode ensiná-lo a fazer a transição para o setor de tecnologia. Tudo o que você precisa é de alguma experiência anterior em programação ou script, e você deve estar pronto para ir. O formato geral deste curso é que eu vou começar com cada conceito explicando em um monte de slides e exemplos gráficos, e eu vou fazê-lo em Inglês simples, tanto quanto possível. Vou apresentar-lhe algumas das notações e terminologia chique que os cientistas de dados gostam para você para que você possa falar a mesma língua. Mas os conceitos em si eram geralmente bastante simples depois disso. Todos os três em algum código python real que realmente funciona que nós podemos executar e mexer com. E eu vou mostrar-lhe como realmente aplicar essas idéias para dados reais, e estes serão apresentados como arquivos de bloco de notas I Python. E esse é um formato onde eu posso misturar código e notas em torno do código que explicam o que está acontecendo nos conceitos Então você pode levar esses arquivos de notebook com você após este curso e usá-lo como uma referência útil e rápida mais tarde em sua carreira e no final de cada conceito, eu vou encorajá-lo a realmente mergulhar no código python, fazer algumas modificações, mexer com ele e apenas ganhar mais familiaridade por colocar as mãos em e realmente fazer alguns modificações e ver os efeitos que eles têm. Então, com isso, vamos mergulhar e começar 2. Instruções de configuração do Windows: Então vamos preparar tudo para este curso. Muito fácil de fazer. Vamos começar instalando um ambiente de desenvolvimento Python chamado Anaconda. Se você ainda não tiver. Uma vez instalado, vamos apenas instalar alguns pacotes que precisamos que não vêm com ele. Pi dot plus e TensorFlow, que usaremos mais tarde para fazer redes neurais. E então vamos baixar todos os materiais do curso do nosso site e instalá-lo e garantir que tudo funcione. Então vamos começar indo para anaconda.com. Este será o ambiente Python que usamos para este curso. Ele já é feito para ciência de dados e análise de dados, por isso poupa-nos muitos problemas e configurar as coisas. Basta ir para o grande e amigável botão Começar ou como você precisa navegar para a área de download. Vamos baixar os instaladores do Anaconda. E nós queremos, para mim a versão 64 bits do Windows. Obviamente, escolha qualquer versão que faça sentido para qualquer sistema operacional que você está usando. Mas para mim isso é o Windows 64-bit. Então vamos esperar que isso seja baixado. Deve descer bem rápido. E uma vez que isso está para baixo, vamos apenas abrir o instalador e executá-lo. Tudo bem, então nada de especial aqui, apenas o seu Windows Installer padrão. Vou apertar Próximo para começar. Concordar com os termos da licença. Instale só para mim. E você quer ter certeza que está instalando isso em algum lugar. Tem muito espaço no disco rígido para mim. A unidade C é um pouco apertada porque é um SSD pequeno. Então, na verdade, vou mudar isto para o meu E Drive. Basta fazer o que faz sentido para o seu assistente para ter certeza de que você tem espaço suficiente para isso. E vamos bater Next para continuar. Essas opções padrão estão bem. E agora nós apenas esperamos que ele seja instalado e isso levará alguns minutos. Há um monte de coisas para instalar, então eu vou pausar e voltar quando isso terminar. Certo, alguns minutos depois, isso acabou. Então eu vou apertar Avançar para continuar com o instalador. E vamos dizer “Próximo” de novo. E eu vou desmarcar essas opções. Eu realmente não preciso ver um tutorial. E lá temos. Então agora que o Anaconda foi instalado, só precisamos instalar alguns pacotes extras nele. Então, para entrar no nosso novo ambiente Anaconda, vá para o seu menu Iniciar e procure a pasta 3 Anaconda lá. E a partir daí, selecione Anaconda Prompt. E você deve ver um pequeno terminal de comando como este. E a partir daqui vamos apenas digitar Conda instalar pi dot plus. E isso só vai instalar um pacote. Vamos visualizar árvores de decisão mais tarde no curso. Vai levar um momento para descobrir como fazer isso. E quando você receber esse aviso para dizer por que Enter e deixá-lo fazer sua coisa. Tudo bem, muito bom. Em seguida, precisamos instalar o pacote TensorFlow. Isso é o que vamos usar para aprendizagem profunda mais tarde no curso, redes neurais e todas essas coisas divertidas. Normalmente você diria Conda instalar TensorFlow para fazer isso, mas há um bug com isso agora no Windows. Então, em vez disso, vamos dizer pip install TensorFlow. E isso deve funcionar. Mais uma vez, deixe-o fazer a sua coisa. Um monte de dependências que tem que chegar primeiro, mas não deve demorar muito. Muito bem, agora temos o TensorFlow instalado também. Então vamos sair desta janela. Bem, vamos voltar a isso um pouco mais tarde. Mas vamos voltar ao nosso navegador e baixar os materiais do curso a seguir. Para isso, você vai para o ponto de mídia JSON, traço cão, softer.com barra máquina traço aprendizagem ponto HTML. Preste atenção aos traços e capitalização em todos os assuntos. E uma vez que você está aqui, você vai encontrar um bom link amigável para os materiais do curso. Vá em frente e clique nisso. E na CMS. Enquanto você estiver aqui, se você quiser uma cópia dos slides, você encontrará esses slides aqui também. Uma vez baixado, vá em frente e abra isso. E vamos expandir os materiais do curso lá. Clique com o botão direito do mouse e E o que está aqui é um monte de arquivos que chamamos de Jupyter Notebook. E essas são maneiras de executar o código Python interativamente dentro de um navegador da web. Então, praticamente todas as palestras neste curso serão acompanhadas com um caderno IPython prático que você pode brincar e experimentar. E é isso que está aqui. Também aqui está um monte de dados experimentais de teste que você pode usar para realmente treinar esses modelos e brincar e realmente fazer previsões com base em dados reais. E isso é o que a maioria do que está sendo descompactado agora é dar algum tempo para terminar a descompactação. Tudo bem, está feito descompactando. Então vamos em frente e encontrar a pasta para a qual ele se expandiu. Deve haver uma pasta de curso ML agora lá, e vamos abrir isso. E dentro da pasta do curso ML está outra pasta do curso MLK. Este é o que realmente queremos. Então vamos em frente e selecionar a pasta do curso ML dentro do outro. E eu vou apertar o Control X para cortar isso. E agora queremos colocar isso em um lugar que vai ser fácil de lembrar e fácil de digitar. Vou pôr isto na raiz da minha unidade C. Vou apertar o Controle V para colar na minha unidade C. O que essa cópia acabou. E a razão pela qual eu estou colocando isso aqui é porque nós vamos ter que digitar o caminho em que ele está. Isso vai ser C cólon barra invertida curso ML neste caso. Tudo bem, então agora temos uma pasta de curso CML, e dentro disso está o material do curso real em si. Você pode ver todos os dados lá, bem como todos os Notebooks IPython. Isso é o que eu, p, y e p significam. É chamado de Jupyter Notebook nos dias de hoje. Então vamos tentar um e ver se realmente funciona. Sim, então volte para o nosso Anaconda Prompt aqui. E terminamos com tudo isso no fundo. Então, o que você precisa fazer, lembre-se de praticar esse cara. Isso vai ser algo que você precisa fazer em quase todas as palestras. Para realmente abrir o arquivo do caderno para uma determinada palestra, primeiro, você precisa abrir um Prompt Anaconda. E novamente, isso está sob o menu Iniciar, sob o menu Anaconda. E então eu preciso que você cd para onde quer que você instale esses materiais. Então eu vou dizer cd C cólon barra invertida curso ML, porque é onde eu instalei os materiais do curso. É importante que você inicie isso a partir do diretório correto ou então esses cadernos não aparecerão. Mas uma vez que estamos no diretório que nós realmente instalar esses materiais para, eu posso então digitar em Jupiter notebook. E isso iniciará o navegador que me permitirá executar esses cadernos. Então, novamente, lembre-se, para cada vez que você precisar abrir um caderno Júpiter, abra um cd prompt Anaconda para o diretório em que você instala os materiais do curso, e então digite o caderno Júpiter. Talvez queiras escrever isto, rapazes. Você vai ter que fazer isso de novo muito no futuro. E o que isso faz é realmente trazer seu navegador web. E isso nos leva à página principal de Júpiter aqui podemos realmente selecionar os diferentes cadernos para executar. Então vamos ver se realmente funciona. Vamos rolar um pouco para baixo. Outliers é divertido. Então vamos clicar em outliers dot p-y, a e B. E uma introdução rápida aos cadernos Jupiter aqui, você pode ver que é basicamente uma maneira de executar código Python inline. Podemos realmente ver os resultados dentro do seu navegador e executá-lo. E não é apenas uma página pré-fabricada. Você pode realmente executar código aqui. Então veja isso. Eu posso realmente clicar em um desses blocos aqui e apertar o botão Executar e realmente executa este código e gera um novo gráfico em resposta a isso. Então esta é uma ótima maneira de experimentar interativamente algum código Python e brincar com novos algoritmos. E isso é exatamente o que vamos fazer neste curso. Então vamos realmente rapidamente percorrer este exemplo aqui apenas para que você possa ver o que está acontecendo em um nível alto, vamos falar mais detalhadamente mais tarde. Mas basicamente o que está acontecendo aqui é que estamos simulando uma distribuição de renda. Então simulamos um monte de pessoas aleatórias que têm renda variando de, você sabe, vinte e sete mil dólares mais ou menos US $15 mil por ano. E então para estragar as coisas, nós colocamos Jeff Bezos que tem um bilhão de dólares em seu nome, provavelmente mais do que isso neste momento, certo? E você pode ver que isso meio distorce nossa distribuição aqui. Então nós gostaríamos de ter um pequeno ponto magrelo aqui que representa todas as pessoas normais. E então temos Jeff Bezos aqui para meio que bagunçar nossos dados. Então, o que estamos falando neste exercício específico é como identificar outliers como Jeff Bezos e removê-los de nossos dados para que possamos realmente obter uma distribuição mais significativa. E é isso que está acontecendo aqui. E você pode, na verdade, é um atalho para executar tudo isso de uma vez. Você pode ver ir para o menu Kernel aqui e dizer reiniciar e executar tudo. E isso irá, na verdade, executar automaticamente todas essas células. E você pode ver que ele realmente funciona. Então, espero que se você fizer isso, você está vendo alguns gráficos bonitos. E se assim for, isso significa que você tem tudo configurado corretamente. Parabéns. Mais uma vez, lembrem-se de como chegar aqui, os rapazes escrevem. Você vai abrir um cd prompt do Anaconda para o diretório no qual você instala os materiais do curso e, em seguida, digite o caderno Júpiter e selecione o NOPLAT que você deseja abrir. Tudo bem, com isso sob nosso cinto, vamos seguir em frente e realmente começar a aprender algumas coisas. 3. Instruções de configuração para Mac: Muito bem, muito rápido, deixa-me guiar-te para te preparares aqui. Eu vou te mostrar como fazer tudo isso em primeira mão aqui. Mas para o resumo, vamos instalar o Anaconda, que é um ambiente Python e necessidade computação científica, ciência de dados e aprendizado de máquina. Uma vez que tenhamos essa configuração, vamos instalar um pacote chamado pi dot plus, que usaremos mais tarde no curso para visualizar árvores de decisão. E também irá instalar o TensorFlow, que vamos usar para construir redes neurais e IA real e aprendizagem profunda mais tarde no curso. Nós também vamos baixar os materiais do curso do meu site aqui e abrir um dos cadernos desses materiais e ver se ele funciona. Então vamos mergulhar. Então a primeira coisa que precisamos é de um ambiente de desenvolvimento Python. E neste curso estamos usando Anaconda para esse propósito. Ele vem com a maioria dos pacotes que precisamos para este curso pré-instalado. Então vai te poupar de muitos problemas. Então, mesmo que você tenha um ambiente de desenvolvimento Python existente, eu recomendo instalar Anaconda no lado também. Para obtê-lo, basta ir para o anaconda.com. E você quer ir ao menu de produtos e ir para a adição individual. Basicamente olhar para a versão de código aberto do Anaconda onde quer que eles possam estar escondendo no site hoje em dia. E a partir daí vamos clicar no grande botão Download amigável e selecionar o instalador gráfico do Mac OS e esperar por isso baixar. Tudo bem, isso está completo. Vamos em frente e abrir o instalador. Lá está pouco, basta clicar duas vezes nele para iniciá-lo. E vamos bater em Continuar. Continuar. Leia o contrato de licença. Continuar. E concordo. Tudo bem. Vamos passar pelos padrões aqui. Vamos instalar apenas para mim. E você não comeu um pouco de espaço em disco para este cara é um dois pontos 13 gigabytes para começar, e nós vamos instalar mais coisas em cima dele também. Portanto, certifique-se de que tem muito espaço para esta instalação. E isso vai demorar um pouco. Há uma lei para instalar, então voltamos quando terminar. Tudo bem, quase terminei aqui. Vamos clicar em Continuar aqui para terminar as coisas e fechar. E sim, terminamos com o instalador, podemos descartar isso. Então agora vamos abrir um novo terminal. E se você já tinha um aberto, você vai precisar de um conjunto fechado e reabri-lo, a fim de pegar as novas variáveis de ambiente que Anaconda instalou. Então, uma vez que você tem certeza de que você tem um novo terminal aberto aqui, nós podemos apenas digitar Conda instalar pi dot plus, apenas assim. E isso irá instalar o pacote pi dot plus que vamos precisar mais tarde no curso, a fim de visualizar árvores de decisão. Então, deixe-o ir e fazer a sua coisa aqui por um tempo. Por que continuar? Tudo bem, a outra coisa que precisamos é TensorFlow, e isso é tão fácil de instalar, Conda, instalar TensorFlow, exatamente assim. E este é um pacote que precisamos para criar redes neurais profundas, o que vai ser muito divertido mais tarde no curso. Este será um ambiente maior. Por que prosseguir. E lá vai. Legal. Então nós temos Anaconda completamente configurado para todo o curso neste momento, isso foi muito fácil. A próxima coisa que precisamos fazer é pegar os materiais do curso. Então vamos voltar para o nosso navegador e ir para a mídia Dotson cães, traço, soft.com barra máquina traço aprendizagem ponto HTML. Preste atenção à ortografia de maiúsculas, onde os traços estão, tudo importa. Você deve ver uma página que se parece com esta. E você verá um grande link amigável aqui para os materiais do curso. Vá em frente e clique nisso para baixá-lo. E também aqui você verá um link para os slides do curso se quiser uma cópia disso. Tudo bem, então agora que os materiais do curso foram baixados, vamos em frente e abrir que um feito deve ser apenas fazendo uma varredura rápida de vírus agora. Parece que o material do curso está lá e já descomprimido para nós também. Isso é fixe. Então vamos voltar ao nosso terminal aqui e ver se podemos realmente usar esses materiais. Agora precisamos saber onde eles estão. Então, a fim de realmente lançar esses arquivos de notebook que estão dentro dos materiais do curso, precisamos ser capazes de navegar até eles primeiro. Então, estamos no nosso diretório inicial agora. Vamos CD em downloads. E deve ser onde vive o diretório do curso ML. Lá está ele. Tudo bem, então se você quiser mudar isso para outro lugar, você pode. Só importa que saibas como chegar a este lugar, está bem? Porque o que está aqui é um monte de arquivos que chamamos de Jupiter Notebook. Estas são formas interativas de realmente executar e experimentar com código Python que nos permitirá brincar com todos os algoritmos neste curso. Agora, a fim de lançá-los, precisamos primeiro navegar para este diretório. Então eu preciso usar o comando cd para navegar para onde isso está. Então, novamente, Eu estou sob usuários Frank downloads curso ML para você que será em seu próprio diretório de usuários mais provável. E você só precisa ser capaz de gravar isso. Então o primeiro passo para realmente lançar essas coisas como um CD no diretório em que eu baixei essas coisas. Só estou fazendo isso por ilustração aqui. E para você, você pode ver os dois onde quer que você guarde isso também. Uma vez que você está lá, você vai digitar o seguinte caderno Júpiter. Assim mesmo, Júpiter é soletrado engraçado e certifique-se que você acertar. E o que isso vai fazer é lançar Jupyter notebook dentro desta pasta. Dessa forma, todos os arquivos de script corretos aparecerão e todos os dados que eles precisam estarão no lugar certo também. E você pode ver aqui uma lista de todos os arquivos de notebook que vêm com o curso. Então vamos ver se realmente funciona. Vamos para outliers dot, PY e B. Isso é simples. Então, sempre que eu estou em uma palestra neste curso e eu digo abrir outliers, dot IP, y e b ou o que quer que seja. Isto é o que vocês querem fazer, pessoal. Isto é importante. Anote isso. Ok, eu não vou passar por isso muitas vezes novamente no futuro. Você precisa abrir novamente um cd terminal para onde você instalar o tipo de materiais no caderno de Júpiter, Júpiter soletrado engraçado. E, a partir daí, selecione o script que você deseja abrir. Então vamos abrir outliers e ver se funciona. Ele faz legal. Então você deveria estar vendo uma tela como essa. E o que é legal é que você pode realmente executar este código na linha aqui e realmente modificá-lo e brincar com ele uma bagunça com ele. Não é apenas uma página estática. Então, por exemplo, eu posso clicar neste bloco de código Python aqui e apertar este botão Executar. E ele irá em frente e realmente executar esse código e gerar este gráfico automaticamente com base nessa execução. Então, quão legal é isso? Está curioso para o que está acontecendo aqui? Estamos basicamente criando uma distribuição dos rendimentos das pessoas. E então estamos jogando Jeff Bezos tem um bilionário no final para mostrar o efeito de um outlier em uma distribuição de dados. E ao longo do resto deste exercício, passamos e encontramos maneiras de identificar outliers como Jeff Bezos, rejeitando-os do conjunto de dados, o que nos permite obter uma interpretação mais significativa dos dados para todos os outros. Mas falaremos mais sobre isso no futuro. É uma coisa divertida. Por enquanto, você deve estar vendo um caderno de Júpiter trabalhando aqui. Se você fizer isso, então grandes coisas são configuradas corretamente. Caso contrário, verifique novamente as coisas podem estar em conflito com outro ambiente Python que você possa ter instalado. Então isso pode ser algo que você tem que rastrear, mas espero que as coisas estejam funcionando e podemos seguir em frente. 4. Instruções de configuração no Linux: Muito bem, muito rápido, deixa-me guiar-te para te preparares aqui. Eu vou te mostrar como fazer tudo isso em primeira mão aqui. Mas para o resumo, vamos instalar o Anaconda, que é um ambiente Python e necessidade computação científica, ciência de dados e aprendizado de máquina. Uma vez que tenhamos essa configuração, vamos instalar um pacote chamado pi dot plus, que usaremos mais tarde no curso para visualizar árvores de decisão. E também irá instalar o TensorFlow, que vamos usar para construir redes neurais e IA real e aprendizagem profunda mais tarde no curso. Nós também vamos baixar os materiais do curso do meu site aqui e abrir um dos cadernos desses materiais e ver se ele funciona. Então vamos mergulhar. Tudo bem, vamos configurar as coisas no Linux, alguém em uma benção para hospedar aqui. E a primeira coisa que precisamos fazer é instalar Anaconda. Anaconda é um ambiente Python feito para computação científica. Ele contém bibliotecas necessárias para ciência de dados e aprendizado de máquina. Assim, ele vai poupar muitos problemas e instalar pacotes usando isso em vez de apenas uma instalação Python genérica. E o dossel do pensamento também pode funcionar se você tem isso. Mas Anaconda é o que estou usando neste curso por enquanto. Então, vá para anaconda.com se você não o tiver, encontre o botão de download e pressione Download novamente. E selecione seu sistema operacional. Estamos no Linux. E você quer o Python três versão 3, o que quer que seja, o código neste curso é para Python 3 e Python 2, eu estou em um sistema X86, então eu vou em frente e instalar o instalador X86. Você pode ver que é grande. Vamos fazer o download para o meu diretório pessoal na pasta de download automaticamente. E vamos esperar que desça. Uma vez feito o download, podemos minimizar nosso navegador e abrir um terminal. Vamos CD em nossa pasta Downloads. E precisamos tornar esse script shell executável. Assim, mude mod H mais x Anaconda três, seja o que for. E agora deve ser capaz de executar esse script do instalador. Pressione Enter para ver o espaço do contrato de licença enquanto o lê. E supondo que você concorde com o tipo de termos em sim. Essa localização do diretório pessoal está bem por mim, vamos apertar Enter. E lá vai. Há muito para instalar, então voltaremos quando terminar. Tudo bem. Está quase desinstalando. Ele quer saber se você quer inicializar Anaconda, não sei por que você diria não. Então vamos digitar sim. E estamos prontos para ir. Então a anaconda está instalada neste ponto, isso é incrível. Agora algumas variáveis de ambiente foram alteradas aqui. Então, para ter certeza que vamos pegá-los, eu vou fechar este terminal e trazer um novo. Agora há alguns pacotes que precisamos instalar que não vieram com a instalação padrão. Um é pi dot plus. Usaremos isso para visualizar árvores de decisão mais tarde no curso. Para instalar isso, basta digitar Conda, instalar pi dot plus assim. E você vai ver um monte de avisos em geral quando você executar código e operar com o ambiente Anaconda, geralmente eles estão apenas falando sobre coisas que estão sendo obsoletos no futuro e é seguro ignorá-los. Então não surtem com as mensagens de aviso, pessoal. Vai ser um monte deles e eles são quase sempre seguros de ignorar. Se for um erro, é uma história diferente, mas não se preocupe com os avisos. Muito bem, vamos ligar para o Y para prosseguir. E isso foi rápido. Agora também precisamos instalar o TensorFlow. Tensorflow é um pacote usado para construir redes neurais de aprendizagem profunda, e nós estaremos brincando com isso mais tarde no curso também. Para instalar que você acabou de dizer Conda, instale TensorFlow. E se você estiver em um sistema que tem uma GPU NVIDIA, você pode acelerar as coisas instalando a GPU TensorFlow. Mas se você não tem certeza, basta manter o TensorFlow. Como estou me deparando com um pequeno ambiente virtual aqui, não tenho muita confiança de que a GPU TensorFlow realmente funcione. Então eu vou ficar com apenas TensorFlow simples. E isso vai explodir e fazer a sua coisa também. E mais uma vez, por que prosseguir? Certo, e neste momento, Anaconda está instalado com tudo o que precisamos para este curso. Vamos em frente e limpar a tela. E vamos voltar ao nosso navegador e receberemos os materiais do curso em seguida. Agora, para obtê-los, você vai para HTTP e mídia Dotson cães, traço soft.com barra Machine Learning dot HTML. Preste atenção à capitalização e aos traços em todos os assuntos. E você deve ver uma página que se parece com esta. Tudo bem, então você verá um grande link amigável aqui para os materiais do curso. Isso contém todos os arquivos do bloco de anotações Python que vamos usar ao longo do curso. Vá em frente e clique nisso para baixá-lo. E vamos em frente e salvar isso. E se você quiser que os slides é uma cópia dele aqui também. Tudo bem, agora que o material do curso está no lugar. Vamos em frente e fechar o navegador aqui. E de volta ao nosso terminal. Vamos para a nossa pasta de downloads novamente. E vamos descompactar esse arquivo zip ponto do curso ML. Tudo bem, então só precisamos lembrar onde é isso. Então vamos entrar em curso ML. E assim está sob Curso de Downloads AMOLED. Pode mudar isso para outro lugar, se quiser. O importante é que você se lembre onde está e como chegar lá. Muito bem, deixa-me mostrar-te como gerir estas coisas. Então esta é uma coleção de arquivos Jupiter Notebook é o que eles são chamados. São formas de executar interativamente o código Python dentro de um navegador da web. E isso também inclui todos os dados de amostra que precisamos para que o curso realmente treine nossos modelos e realmente faça aprendizado de máquina. Mas para, a fim de realmente executá-los, precisamos realmente começar o que é chamado de Jupiter notebook a partir deste diretório. Então lembre-se, sempre que começarmos um caderno dentro deste curso, o que você precisa fazer primeiro é abrir uma janela de terminal cd no diretório onde você instala esses materiais do curso, ok, para nós, essa será a nossa casa em downloads e, em seguida, curso ML. E uma vez que você está nesse diretório, digite Júpiter com um caderno y, exatamente assim. É importante que você inicie isso a partir do diretório correto. Uma vez que fizermos isso, devemos ter um pop-up do navegador. E aí está ele. Então, isso é fixe. Agora podemos ver a lista de arquivos Notebook que temos para este curso aqui só precisamos selecionar o que queremos. Então, sempre que eu disser para abrir um arquivo específico do caderno no curso, basta olhar para a frente aqui. Vamos abrir os outliers. Ponto I-Spy, NB. Essa é uma interessante. Legal. Então você pode ver que nós temos todo esse código Python em linha que nós podemos realmente executar interativamente e realmente ver a saída como nós executá-lo dentro de nosso pequeno navegador web. É meio legal. E isso não é apenas uma página pré-fabricada, pessoal. Este é realmente um ambiente onde você pode realmente executar e modificar código. Então, por exemplo, eu posso clicar neste pequeno bloco aqui. O que realmente está fazendo é criar uma distribuição aleatória dos rendimentos das pessoas. E, em seguida, jogar Jeff Bezos tem um outlier com um bilhão de dólares, mas pode apenas clicar sobre isso e apertar este botão Run. E isso irá realmente executar esse código e produzir este gráfico em resposta. Bastante fixe. E o resto disso, falaremos sobre isso mais tarde quando chegarmos a essa lição. Mas basicamente falamos sobre como remover Jeff Bezos tem um outlier e obter visualizações mais significativas dos dados para pessoas normais aqui. atividade tão importante lá. Mas de qualquer forma, sim, parece estar funcionando. Então, se você chegou até aqui, tudo está configurado corretamente. Parabéns, e podemos seguir em frente de novo. Lembre-se de como abrir esses arquivos de cadernos. Você deseja abrir um cd terminal para o diretório no qual você instala os materiais do curso e, em seguida, digite o caderno Júpiter. E lembre-se, Júpiter é soletrado engraçado, Jay UP por TER, e isso deve levá-lo para onde você precisa estar. Tudo bem, pessoal, vamos seguir em frente. 5. Noções básicas de Python em parte 1: então, se você já conhece Python, você provavelmente pode pular as próximas duas palestras. Mas se você precisa de uma atualização, ou se você não fez python antes, você quer passar por isso. Há algumas coisas peculiares sobre a linguagem de script python que você precisa saber sobre . Então vamos mergulhar e saltar para a piscina e aprender alguma python escrevendo algum código real . Certo, hora de um curso intensivo em Python. Agora, como eu disse antes nos requisitos do ano para este curso, você deve ter algum tipo de experiência de programação para ser bem sucedido. Neste curso, você revestiu algum tipo de linguagem, mesmo que seja uma linguagem de script. JavaScript. Não me importa o que seja. C mais mais trabalho alguma coisa. Mas se você é novo em Python, vou te dar um pouco de curso intensivo aqui. Vou mergulhar e dar alguns exemplos aqui. Há algumas peculiaridades sobre python que ar um pouco diferente de outras linguagens que você pode ter visto, então eu só quero percorrer o que é diferente sobre python de outras linguagens de script com as quais você pode ter trabalhado e o melhor maneira de fazer isso é olhando para alguns exemplos reais. Então vamos mergulhar em algum código. Então, uma última vez, um pouco direto como abrir um caderno aqui no seu sistema aqui. E eu estou nas janelas aqui. Consulte a palestra anterior se você precisar de instruções sobre um sistema operacional diferente, mas em geral, você vai querer abrir um prompt de comando de algum tipo. E no Windows, você precisará usar o prompt de comando anaconda. Encontra a tua anaconda três. Muitos com menu Iniciar e Goto Anaconda prompt que para que vêm para cima e novamente, você precisa CD no diretório onde você salvou todos os seus materiais do curso. Então, para mim, que foi C cólon barra curso ml, você poderia fazer um de ir apenas para ter certeza que está tudo lá. E uma vez que você está no diretório correto, digite Júpiter com o porquê notebook e você deve ver uma tela como esta. E a partir daqui queremos selecionar o caderno Python 101 porque isso vai conter nosso pequeno tutorial em python aqui. Então vá em frente e clique em Python 101 dot i p y N b e agora você deve ter uma tela que se parece com isso, então vamos mergulhar. Se você nunca viu um caderno Júpiter antes, a maneira como ele funciona é você pode clicar em qualquer uma dessas caixas de código e apertar o botão executar ou shift. Entre e ele executará esse código diretamente do seu navegador da Web. Vamos tentar com este primeiro bloco. Clique dentro dele para selecioná-lo e pressione Shift Enter. Agora vamos apenas cobrir a sintaxe do python aqui nas principais maneiras em que ele difere de outras linguagens. Então vamos dar uma olhada nesse código. Uma coisa com Python é que o espaço em branco é realmente importante. Qualquer aninhamento de código, como para adoração ou expressões condicionais, depende do número de abas para agrupar o código em vez de colchetes como outros idiomas. Então aqui temos uma lista de números. Em python, uma lista é como uma matriz ou um vetor e outras linguagens. Definimos uma lista dos números de um a seis, colocando-os entre colchetes separados por vírgulas. Em python, não havia nenhum caractere necessário para terminar uma linha que você acabou de bater. Entre quando você terminar, vamos ter sete para a lista apenas para provar que executar isso realmente faz alguma coisa. Sim, temos resultados de um a sete agora. Em seguida, temos um exemplo de um loop quatro em python. Esta afirmação é uma taxa através da lista nomeada lista de números, armazenando a iteração atual no número variável cada vez, Ah, quatro declaração tem que terminar com dois pontos como este, mas agora usamos em densa para indicam que código vive dentro deste bloco de quatro. E aqui temos um exemplo de uma cláusula if else. Se o número for uniformemente divisível por dois, imprimimos isso. É mesmo de outra forma. Nós imprimimos que é estranho e novamente usamos em densa para indicar que código vive dentro de cada cláusula se ou então aqui irá remover tudo em denso para sair do loop quatro e imprimir tudo feito no final. Observe que nunca tivemos que declarar qualquer variável antes do tempo. Nem temos de definir os seus tipos. Python é o que é chamado de linguagem digitada dinamicamente. Ele tenta inferir o tipo de dados de suas variáveis com base em como você inicialmente usou um, mas internamente, eles têm tipos. Você também pode converter variáveis explicitamente para diferentes tipos, se precisar. Mas as variáveis não serão reformuladas automaticamente como fariam em idiomas de tipo semanal. Às vezes, isso pode levar a erros inesperados, e veremos alguns deles à medida que percorremos o curso. Vamos passar para o próximo bloco, que apenas mostra como importar módulos externos para seus scripts python. Você acabou de usar o comando import para isso, e você pode definir um alias para o módulo se quiser salvar alguma digitação, também. Então, aqui estamos importando o módulo num pie para que possamos nos referir a ele dentro do nosso script, e estamos importando sob o nome NP. Isso nos permite então usar tortas entorpecidas função aleatória apenas digitando np dot aleatório e, neste caso, estavam pedindo torta entorpecida para nos dar 10 valores aleatórios normalmente distribuídos com a média e desvio padrãodado e desvio padrão 6. Noções básicas de Python em parte 2: seguida, emseguida, vamos discutir listas com mais profundidade, já que as usamos muito. Se você precisa saber quantos elementos ar em uma lista, você pode usar a função Len embutida para obter isso. Como muitas vezes, você também precisa cortar listas de certas maneiras para extrair valores em um determinado intervalo dentro da lista. O cólon é usado para isso. Neste primeiro exemplo, usamos cólon três para pedir os primeiros 3 elementos da lista, e da mesma forma, e da mesma forma, podemos usar três dedos do pé do cólon. Peça tudo após o terceiro elemento. Assim, também podemos fazer algo como negativo para o dedo do pé do cólon. Peça os dois últimos elementos da lista. E se você quiser acrescentar uma lista a outra lista, é para isso que serve a função de extensão. Assim, este rapaz, a lista que contém sete e oito para a nossa lista original. E se você quiser upend um único valor para uma lista, você pode usar a função upend assim. Outra coisa legal sobre Python é que as listas podem conter praticamente qualquer tipo que você quiser. Você pode até fazer uma lista de listas, então vamos fazer isso agora. vamos fazer uma nova lista chamada Por que e Fazer uma nova lista de listas que contém nossa lista X recém-crescida e esta nova lista Y para recuperar um elemento de uma lista. Basta usar o operador de suporte como este aqui. Vamos recuperar o Elemento um dos mais selvagens. Isto é baseado em zero. Então, por que um realmente lhe dá de volta o segundo elemento, não o 1º 1 Por que zero daria o primeiro elemento, que é o número 10 neste exemplo. Vamos também ter uma função de classificação embutida que você pode usar para classificar a lista no lugar assim. E se você quiser classificar em ordem inversa, basta passar. Inverter é igual a true na função de classificação. Este também é um bom momento para mencionar que existem algumas maneiras de passar parâmetros para funções. Você pode simplesmente passar em uma lista de valores como você faria na maioria dos idiomas, mas você também pode passá-los por nome. Muitas vezes, funções python terão muitos parâmetros que têm valores padrão atribuídos a eles, e você apenas especifica aqueles que você gosta especificando-os pelo nome. Ok, vamos continuar e falar sobre duas pesquisas. próximas duas pesquisas são muito parecidas com listas, mas a principal diferença é que elas são imutáveis. Depois de criar um para puxar, você não poderá alterá-los. Eles são úteis para pessoas que fazem programação funcional ou para interagir com sistemas como Apache Spark que o ar desenvolvido em linguagens de programação funcional fará isso mais tarde no curso. A única diferença real é que você coloca dois pools com parênteses em vez de colchetes . Então aqui está um para puxar dos valores 12 e três. Podemos usar o Len nele, assim como estávamos com a lista. Você pode referenciar elementos em A para puxar da mesma maneira que você faria em uma lista é, bem novamente ele zero baseado. Então, por que dois nos dá de volta o terceiro elemento da lista, não o 2º 1 Você também pode fazer uma lista de dois touros, se assim o desejar. Outro uso comum de dois pólos é na passagem de grupos de variáveis que você deseja manter juntos. Por exemplo, a função de divisão em uma string lhe dará de volta um monte de vales de string extraídos dessa string, e podemos atribuir esses valores a elementos em um para puxar como uma maneira rápida de nomear cada um Olhe este exemplo. Temos dois números separados por uma vírgula, e sabemos que o primeiro vale representa uma idade e o segundo e o valor de renda. Podemos extraí-los diretamente em variáveis chamadas Idade e renda. Como assim mover em outra estrutura de dados útil e python é o dicionário. Em outros idiomas, você pode saber isso como um mapa ou uma tabela de hash. É basicamente uma tabela de pesquisa onde você armazena valores associados com algum conjunto exclusivo de valores-chave. Faz mais sentido. Com um exemplo, você declara um dicionário usando colchetes, então vamos fazer um dicionário Mapear nomes de nave estelar para os nomes de seus capitães chamará este dicionário de capitães agora para criar uma entrada no quadrado Dicionário de Uso colchetes para especificar um valor de chave que estava interessado em atribuir. Então, para atribuir o valor Kirk à empresa chave, podemos dizer que capitães Enterprise é igual a Kirk. Fazemos o mesmo com as outras naves que conhecemos. Em seguida, recuperar um elemento de dicionário é feito da mesma maneira. Basta usar colchetes para obter de volta o valor desejado. Então, para obter o capitão do USS Voyager, podemos fazê-lo assim. Mas o que acontece se você tentar recuperar um valor para uma chave que não existe? Você recebe uma exceção. Nesse caso, uma maneira de evitar isso é usar a função get no dicionário. Então você vê, você pode recuperar o capitão da empresa com sucesso como ele existe no dicionário . Mas se tentarmos obter uma nave que não esteja no dicionário dela, ela retorna o valor especial que você contesta e lida com o que quiser. E se você sabe que o capitão do Imediato é Jonathan Archer, você é meu novo melhor amigo. Você pode iterar através de todas as chaves em um dicionário, assim como você entraria através de uma lista como esta para enviar dentro Os capitães vão devolver cada chave e o dicionário do capitão e nomeá-lo enviado para que possamos imprimir. Assim 7. Noções básicas de Python em parte 3: OK, passando para as funções agora. Felizmente, eles funcionaram praticamente como você esperaria em Python. Este intacto parece assim. Você define uma função com a palavra-chave surdo, seguida pelo nome da função, seguido por quaisquer parâmetros que você deseja passar com seus nomes. Certifique-se de terminar a definição da função com dois pontos. Depois disso, seu código dentro da função precisa ser recuado. Pythons tudo sobre o espaço em branco. Lembra-se? Então aqui temos uma função super simples chamada Square It que apenas leva em um valor, chama-o X e retorna sua chamada quadrada. A função funciona exatamente como você esperaria. Basta digitar em quadrado ele e, em seguida, dois entre parênteses para obter o vale quadrado de, por exemplo, vamos executá-lo. Existem algumas coisas funky que você pode fazer com funções e python, por exemplo. Você pode realmente passar em outra função para uma função como um parâmetro. Isso é algo que permite python jogar bem com linguagens de programação funcionais, que você encontra um monte de computação distribuída. Podemos criar uma função como esta chamada fazer Algo que leva em alguma função f algum parâmetro X e retorna o resultado de f de X. Então podemos realmente dizer Faça algo, quadrado vírgula três como uma maneira realmente complicada de voltar ao quadrado de três. Mas funciona que, a propósito, você notou que este bloco de código ainda sabe que o quadrado que ele funciona existe mesmo que nós o definimos em um bloco anterior? cadernos de Júpiter são executados em uma única sessão de coronel. Então, qualquer coisa que defina ou modifique antes do bloco que está executando ainda estará na memória do coronel. Às vezes, isso pode levar a comportamentos confusos, especialmente se você estiver executando blocos dentro de um notebook, fora de ordem ou repetidamente. Se coisas estranhas começam a acontecer, você sempre pode começar a partir de uma ficha limpa selecionando Coronel reiniciar no menu. Vamos também dar alguma atenção toe funções do Lambda thes permitem que você passe funções simples em linha sem sequer dar-lhes um nome. Você vê isso muitas vezes no mundo da ciência de dados. É mais fácil de entender com um exemplo. Aqui estamos chamando nossa função fazer algo com uma função lambda que calcula o cubo de um valor em vez de seu quadrado. Dê uma olhada na sintaxe aqui dizemos Lambda, seguido pelo parâmetro de função que dois pontos, após o qual podemos fazer o que queremos com esse parâmetro. Qualquer valor foi calculado após os dois pontos é implicitamente o valor de retorno da terra da função. Então isto diz, para criar uma função lambda que leva em algo chamado X e retornar X vezes X vezes X Nós passamos esse cordeiro para funcionar em para fazer algo com um valor de três, que então executa são função lambda para o valor três. E se executarmos isso, você pode ver que nós, de fato, obter de volta 27 que é três em cubos. 8. Noções básicas de Python em parte 4: Ok, as outras coisas são bastante simples. Aqui está o que a sintaxe parece para expressões booleanas. Você pode usar um sinal de igual duplo para testar a igualdade, e você também pode apenas usar a palavra é que há também um sinal de igual triplo que você pode usar para comparar objetos reais juntos em vez de seus valores. Mas isso parece menos comum verdadeiro e falso são um pouco estranho e que eles são capitalizados em python. Mas apenas a primeira letra, assim e para operadores como e ou e não você acabou de usar as palavras e ou e não em vez de símbolos especiais, você poderia fazer algo como uma instrução case ou switch usando expressões booleanas com um Se l. Se outra estrutura como esta neste exemplo, nós imprimimos Como isso aconteceu se um é três, o que é sempre falso. Caso contrário, passaremos a testar se um é maior do que três, o que também deveria ser encontrado com descrença se fosse verdade. Quando esse teste falhar, voltamos para a nossa última cláusula else, que imprime tudo está bem com o mundo novamente, usamos em denso para associar código com cláusulas específicas aqui que tocamos em loop anteriormente . Vamos entrar em mais profundidade aqui. Você pode usar a função de intervalo toe automaticamente construir uma lista de valores dentro de um determinado intervalo assim novamente, começamos a contar de zero aqui, então intervalo 10 nos dá de volta os valores de zero a nove. A palavra-chave continue dentro de um loop significa pular o resto da adoração e ir direto para a próxima. E a palavra-chave freio significa parar a adoração no início deste exemplo, usamos continuar a ignorar a impressão de cada valor se o valor for um, e usamos freio para parar depois que atingimos o valor. Cinco. Estude a saída de 02345 e verá que foi exatamente o que fez. Uma sintaxe alternativa é o loop selvagem, que gera até que algum expressionista booleano falso. Aqui nós configuramos uma variável contador chamada X e loop através de impressão X apenas enquanto X é menor que 10. Uma vez que atinge 10 o loop termina como você pode ver em sua saída. Então experimente uma atividade muito simples que junte algumas das coisas que acabamos falar. Seu desafio é escrever um bloco de código aqui que cria uma lista de imagers loops através de cada elemento da lista, e Onley imprime números pares na lista. Isso deve ser apenas uma questão de reorganizar alguns dos outros códigos neste caderno. Então, mesmo que você não esteja confortável com Python, eu encorajo você a tentar. Você vai se sentir muito melhor com Python se você mesmo escreveu algo com ele, não importa o quão pequeno. Ok, então espero que você não tenha tido muitos problemas com isso. Aqui está a minha solução. E tenha em mente isso mais do que uma maneira de fazê-lo. Vamos digitar. Ah, minha lista é igual a entre colchetes. 012583 e você pode usar qualquer número que você quiser. Então podemos dizer quatro números na minha lista. Curso de Cólon. Você pode escolher diferentes nomes de variáveis se o número mod dois for zero dois-pontos número de impressão. E como você pode ver, nós temos a saída esperada de apenas os números pares aqui. Ok, então isso é tudo o que é peculiar sobre Python. Na maior parte, se você está vindo de algum outro idioma, isso deve lhe dar conhecimento suficiente para entender o código python. Vou mostrar-lhe neste curso e trabalhar com esse código você mesmo. Então esse é o seu curso de ataque de Python. Você obviamente apenas algumas coisas muito básicas lá. À medida que passamos por mais e mais exemplos ao longo do curso, isso fará cada vez mais sentido, já que você tem mais exemplos para analisar. Mas se você se sentir um pouco intimidado neste momento, talvez você seja um pouco novo demais em programação ou script, e talvez seja uma boa idéia fazer um curso em Python antes de seguir em frente. Mas se você se sentir muito bem com o que você viu até agora, vamos seguir em frente e vamos continuar. 9. Introdução com pandas: Então, agora que você tem uma breve introdução à linguagem de programação Python, vamos falar um pouco sobre a biblioteca Pandas. Essa é uma biblioteca de funções python que você estará usando muitos cientistas de dados. Então, siga comigo aqui, vá em frente e encontre o tutorial pandas que eu p Y N arquivo b. Isso deve estar dentro do material do seu curso. Você deveria estar vendo algo assim neste momento. O que é pandas? Bem, é basicamente uma forma de processar dados tabulares. Então, quando você tem colunas e linhas de informações como você costuma fazer na ciência de dados, pandas é uma maneira muito fácil de carregar esses dados para manipulá-los, examinar seus dados, limpá-los e coisas assim. E ele funciona em conjunto com duas outras bibliotecas que você vai usar muito no campo da ciência de dados e aprendizado de máquina. Então, quando falamos sobre aprendizado de máquina real, algoritmos estarão usando uma biblioteca python chamada Psychic Learn ou SK Learn para abreviar. É aí que ele tem todo o código real para fazer coisas como regressões lineares ou SPM. Tudo o que vamos falar mais tarde e que geralmente leva como entrada uma pira dormente , uma torta tão dormente. Outra biblioteca na mistura aqui que tem sua própria representação de um aumento de dados sobre isso poderia ser uma matriz multidimensional de dados, também. Então é uma espécie de forma de representar informação. Então, o jeito que normalmente acontece é que você pode usar pandas para carregar em seus dados e manipular e limpar e entendê-lo, e então traduzir isso em uma pira entorpecida. Um que, em seguida, é alimentado em psiquiatria. Ele aprende, e que a tradução muitas vezes acontece automaticamente. A propósito, você não tem nada de especial. Então, o que é mais importante nesta fase é entender pandas, certo? Porque na verdade a coisa que na Psiquiatria, aprende bem trivial. Então vamos falar sobre pandas. Vamos rolar um pouco aqui e brincar com alguns dados, sim? Então vamos começar importando o que precisamos. Então, nós vamos dizer que queremos usar a biblioteca lib esteira plotagem em linha. O menor significa que qualquer grama que criamos como parte do nosso caderno aparecerá dentro do próprio caderno e não dentro de uma janela externa com a necessidade de importar especificamente as bibliotecas que queremos usar em nosso código python. Então vamos importar a biblioteca num pie como e P. Isso significa que podemos nos referir a tortas entorpecidas a abreviação e P dentro do nosso script agora. E também importaremos a biblioteca Pandas como polícia. Então isso significa que nós basicamente criamos um pseudônimo para a Biblioteca Panis da Polícia. Poupa-nos algumas teclas. Então vamos em frente e usar Panis pela primeira vez. Onde eu digo aqui é DF igual p d ponto Reid Sublinhado. Ver SV passado superior Sazi SV. Então, o que está acontecendo aqui? Isso vai carregar até o início superior passado ver arquivo SV. Isso é um arquivo de valores separados por vírgula. Isso significa que é uma informação tabular onde cada coluna é separada por uma vírgula. Então é É um formato muito simples, baseado em texto, e a primeira linha geralmente corresponde aos títulos dessas colunas. Então, com uma linha de código, podemos ler esses dados no disco e criar o que é chamado de quadro de dados fora dele. Um quadro de dados pandas, e vamos assinar esse quadro de dados para uma variável chamada DF. Então isso carrega no passado nosso Zazi SV e o converte em um quadro de dados pandas. E então podemos chamar cabeça sobre esse objeto de quadro de dados para visualizar as primeiras 5 linhas desse quadro de dados, e isso é o que parece. Então ele está realmente clicando aqui e pressione shift enter para executá-lo. E você pode ver aqui esta é uma pequena pré-visualização do arquivo. Então, se você só quiser, tipo, verificar se tudo está carregado incorretamente e entender o que está nele, esta é uma boa maneira. Dedo do pé fazer pequeno ponto. Verifique com a cabeça. Você pode ver aqui que temos a 1ª 5 linhas sendo exibido aqui e nossas colunas de ar intitulado corretamente Anos experiência empregadas empregadores anteriores nível de educação, falou sua escola, internado e contratado. Vamos usar este conjunto de dados mais tarde no curso, na verdade, ver se podemos prever se um candidato a emprego é contratado ou não com base em seu histórico passado. Ok, então tudo parece razoavelmente bom lá. Você também pode passar em um inteiro à frente se você quiser ver algum número específico a partir do início do seu arquivo. Então, se eu quiser ver as 10 primeiras linhas do meu quadro de dados. Eu poderia apenas dizer DF ponto cabeça 10 como essa e a cãibra as primeiras 10 linhas, você pode ver um pouco de uma amostragem maior de dados lá. E ele também pode ver o final do seu arquivo de dados. Se o seu quadro de dados, bem assim DF ponto cauda bem, olhar assim e que está exibindo as últimas quatro linhas em nosso quadro de dados. Você pode ver que este é um conjunto de dados muito pequeno. É só algo que inventei. Ele contém apenas 12 linhas de informações. Agora, às vezes vamos falar sobre a forma do seu quadro de dados ou a forma dos seus dados. E o que queremos dizer quando falamos sobre a forma é apenas a dimensionalidade dela. Então, por exemplo, se vermos DF forma ponto que voltará com 13 vírgula sete, e o que isso significa é que temos 13 rosa e sete colunas em nosso quadro de dados, e essa é a forma do nosso quadro de dados. Apenas quantas colunas tem quantas linhas Ele tem apenas uma palavra extravagante para um conceito muito simples . Nós também podemos dizer, DF tamanho ponto que volta. É 91 que é apenas o número de células em nosso quadro de dados, basicamente o número de pontos de dados únicos. E isso vai ser apenas 13 vezes 7 no nosso exemplo. Hora da Rosa 13. Sete colunas. É 91. Há também um operador de Len. Ele pode ligar para Len DF, e isso volta com 13. Isso só faz com que você volte o número de linhas em seu quadro de dados. Se você só precisa disso. E se você fizer DF pontos colunas. O que isso te dá de volta. É uma matriz dos nomes das colunas. Então, se você quiser fazer um lembrete rápido do que seus nomes de coluna são e o que eles significam , essa é uma boa maneira de, tipo, obter uma pequena visualização rápida do que ele está me chamando. E às vezes você precisa se lembrar, e isso é, ah, um pequeno truque útil. Agora vamos fazer alguma manipulação deste quadro de dados. Digamos que queremos extrair apenas uma única coluna desse quadro de dados. Digamos que só queremos extrair a coluna contratada e fazer algo especificamente com isso . Muitas vezes, quando você está carregando dados, você não está interessado em todos os recursos que estão nele. Você deseja extrair certos recursos que você gosta para o modelo que você está criando . É assim que funcionaria. Então, se eu disser DF colchet citação contratado colchete que só irá extrair o primeiro que coluna a coluna contratada como um único quadro de dados. Então, agora temos um novo quadro de dados que consiste exatamente nisso. Coluna única. A coluna contratada e eu poderíamos ter assinado isso para outro quadro de dados se eu quisesse virar e fazer isso, sabe, e fazer outra coisa com ele. Então eu poderia dizer, você sabe, chamada contratada em iguais, DF contratado ou algo assim. Você também pode extrair um determinado intervalo de rosa dentro de uma coluna como esta. Então, se eu fizer, DF contratado e, em seguida, um suporte adicional com dois pontos cinco que irá extrair as primeiras 5 linhas da coluna contratada e eu obter de volta um novo quadro de dados que se parece com que apenas cinco linhas da coluna superior e nada mais para que você pode ver como os pandas poderiam ser usados para classificar de extrair os dados que você se preocupa quando você está tentando pré-processar seus dados Você também pode extrair um único valor como esse. Se eu dissesse apenas o suporte cinco no final, isso é explicitamente arrancar a coluna contratada na quinta linha, que acontece a ser o valor Porquê. Ok, então vamos falar um pouco sobre terminologia aqui. OK, nós temos um quadro de dados que é basicamente um objeto multidimensional, neste caso de 13 por sete objeto. E então quando extraímos uma única linha ou uma única coluna como esta, isso vai dar. Speck era chamado de Siri. Ok, então esse sério é basicamente um array de um D. E se extrairmos um único valor, isso geralmente se refere como, bem, um valor tão pouco de terminologia lá. Você também pode extrair mais de uma coluna, se quiser. Obviamente, isso vai ser uma situação mais comum. Você faria isso assim. Então, em vez de passar em apenas um único nome de coluna entre aspas, você poderia passar em uma matriz de nomes de colunas em vez disso assim. Então nós vamos dizer DF colchet, e então nós vamos ter outra camada de colchetes dentro desses colchetes que representa a matriz de nomes de coluna que você quer Então eu digo DF colchet anos experiência vrgula contratado colchete e isso nos dará de volta este novo quadro de dados aqui que consiste nos anos experientes e contratados colunas e nada mais. E você, obviamente, você pode adicionar mais colunas a essa lista se quiser. Então, novamente, uma operação muito comum para extrair apenas os recursos ou as colunas que você realmente se importa para uma tarefa específica. Quanto menos dados você empurrar, melhor. Então essa é a primeira coisa que você quer fazer. Livra-te das coisas que não te importas. Ok, você também pode extrair faixas de rosa de mais de uma coluna da mesma maneira. Então eu poderia dizer, eu quero apenas as primeiras 5 linhas dos anos experimentados em colunas mais altas como esta. Nada de muito surpreendente isso no imposto lá. Se você quiser classificar seus resultados, classifique seu quadro de dados. Você poderia fazer assim. Há a função de valores de sublinhado de classificação. Você pode chamar no quadro de dados, apenas passando matriz da coluna que você deseja classificar por e vamos dizer esta experiência. Queremos classificar por anos de experiência. Você pode ver que ele fez de fato, fazer esse tipo de menor para zero mais alto, até 20 anos de experiência e nosso pequeno quadro de dados fabricado aqui. O que mais poderíamos fazer? Também podemos fazer contagens de valor. Essa é a maneira de detalhar quantos de cada valor único existem, que pode ser uma maneira útil de visualizar seu tipo de dados. Procure valores estranhos que possam estar fora. Mentirosos que eu preciso fazer é dizer DF e, em seguida, o nome da coluna que você quer contar com o valor do ponto contagens e eu vou dar-lhe uma contagem de cada valor único dentro do seu. Então, faça com que seja real. Digamos que queremos criar um valor contagens Siri fora da coluna de nível de educação em nosso quadro de dados, e então vamos em frente e imprimir isso apenas dizendo para criar uma contagem de pontuação e obtemos de volta esse resultado que indica que em todo o nosso quadro de dados existem sete graus B s para graus de doutorado em graus M s. Ok, então e se você quiser Oh, a coisa tentadora a fazer aqui é criar uma história, Graham, certo? Então nós queremos se você quiser traçar essa distribuição que é muito fácil. E Pan isas Bem, poderíamos dizer que o grau conta. Parar enredo tipo Eagles Bar diz, dizendo, Queremos um gráfico de barras dessas contagens de graus. E uma vez que usamos Matt Plot ao vivo na linha no topo, que basta ir em frente e exibe dentro do nosso notebook I Python tão fácil de realmente fazer gráficos usando pandas também. Tudo bem, se você quiser praticar isso por si mesmo, eu tenho um desafio para você. suas mãos aqui e obtenha um pouco de experiência. Tente extrair subiu de cinco a 10 desse quadro de dados fonte do dos potenciais contratações que temos, e eu quero que você preserve apenas os empregadores anteriores e as colunas mais altas. Atribua isso a um novo objeto de quadro de dados e, em seguida, crie um graham histórico como fizemos aqui, plotando a distribuição do número de empregadores anteriores dentro apenas desse subconjunto dos dados. Ok, então isso deve permitir que você tipo de montar todas as coisas que conversamos aqui. Há muito mais dependente do que isso, obviamente, mas essas são as operações mais comuns com as quais você precisa lidar e praticamente tudo o que você precisa saber para passar por esse curso e entender o que está acontecendo. Então, tenha um pouco desse exercício. Acho que será uma boa prática para você, e com isso sob seu cinto, podemos passar para alguma ciência de dados real. 10. Tipos de dados: Tudo bem. Se você quiser ser um cientista de dados, precisamos falar sobre os tipos de dados que você pode encontrar e como categorizá-los e como você pode tratá-los de forma diferente. Então vamos mergulhar nos diferentes sabores de dados que você pode encontrar. Tudo bem, vamos falar sobre diferentes tipos de dados que você pode encontrar coisas muito básicas aqui. Mas, você sabe, eu tenho que começar com coisas simples, e nós vamos trabalhar nosso caminho até as coisas mais complicadas de aprendizado de máquina de dados. Mas é importante saber com que tipo de dados você está lidando porque diferentes técnicas podem ter nuances diferentes, dependendo do tipo de dados que você está lidando. Então, há vários sabores de dados, se preferir, e eu gosto de sorvete, que é a principal razão pela qual este slide está ativo. Mas seguir em frente há dados numéricos, categóricos e orginais, e novamente, você sabe, existem diferentes variações de técnicas que você pode usar para diferentes tipos de dados . Portanto, você sempre precisa ter em mente que tipo de dados você está lidando quando você está analisando. Vamos começar o Novo Milagre. É provavelmente o tipo de dados mais comum basicamente representa alguma coisa quantificável que você pode medir alguns exemplos que eu tenho aqui alturas de tempo de carregamento de página de pessoas, preços de ações. Você sabe, coisas que variam coisas que você pode medir coisas que têm, você sabe, uma grande variedade de possibilidades. Hum, agora há basicamente dois tipos de dados numéricos, então um sabor de sabor, se você quiser. Há dados discretos, que são baseados em energia, por exemplo, que podem ser relatos de algum tipo de evento. Alguns exemplos aqui. Quantas compras um cliente fez em um ano? Bem, isso só pode ser valores discretos. Eles compraram uma coisa ou compraram duas. As coisas são sobre três coisas que eles poderiam ter comprado, você sabe, 2,25 coisas ou três e 3/4 coisas. É um valor discreto que tem uma restrição de inteiro para ele. O outro tipo de dados numéricos é dados contínuos. Isto é coisa. Tem uma infinita gama de possibilidades onde você pode entrar em fração. Assim, por exemplo, voltando ao auge das pessoas, há um número infinito de alturas possíveis para as pessoas. Você poderia ter cinco pés e 10.37625 polegadas de altura ou qualquer coisa ou o tempo que leva para fazer algo como check-out em um site pode ser qualquer enorme variedade de possibilidades. Você sabe, 10.7625 segundos para tudo o que você sabe ou quanta chuva caiu em um determinado dia novamente, há uma quantidade infinita de precisão lá, então isso é um exemplo de dados contínuos. Então, para recapitular, dados numéricos é algo que você pode medir quantitativamente com um número. E poderia ser um discreto onde sua energia se baseia, como algum tipo de contagem de eventos ou contínuo, onde há precisão infinita que você poderia ter disponível para esses dados. O segundo tipo de dados que vamos falar sobre seus dados categóricos e estes são dados que não tem nenhuma reunião numérica inerente. Você realmente não pode comparar uma categoria com outra diretamente. Coisas como sexo. Sim, sem perguntas. Raça, Estado de residência, categoria de produto, partido político. Você pode atribuir números a essas categorias, e muitas vezes você irá, mas esses números não têm reunião inerente. Então, por exemplo, posso dizer que a área do Texas é maior que a área da Flórida, mas não posso dizer que o Texas é maior do que a Flórida, quero dizer, são apenas categorias. Não há riel, novo milagre, significado quantificável para eles. São apenas maneiras de categorizar coisas diferentes. Agora, novamente, eu poderia ter algum tipo de bunda numérica IG Nation para cada estado. Digo, eu poderia dizer que o estado número três da Flórida na propriedade do Texas número quatro, mas não há nenhuma relação real entre três e quatro. Eles estão certos. É apenas uma espécie de abreviação para representar mais compactamente essas categorias. Então, novamente, os dados categóricos não têm nenhum significado numérico intrínseco. É apenas uma maneira que você está escolhendo dividir um conjunto de dados com base em categorias, e a última categoria que você tende a ouvir sobre com tipos de dados é dados originais, e é uma espécie de, ah, mistura de e dados categóricos. E um exemplo comum é a classificação por estrelas de um filme ou música ou o que você tem. Então, neste caso, temos dados categóricos em que podem ser de uma a cinco estrelas. Você sabe onde um pode representar pobre e cinco podem representar excelente, mas eles têm significado matemático. Sabemos que cinco significa que é melhor do que um. Então este é um caso em que temos dados onde as diferentes categorias realmente têm uma relação numérica entre si. Então eu posso dizer que uma estrela é menos de cinco estrelas. Posso dizer que duas estrelas é menor que três estrelas e dizer que quatro estrelas é maior do que duas estrelas em termos de uma medida de qualidade. Então é meio que no meio. Você também pode pensar nisso. Você sabe, se você apenas pensar nisso como o número real de estrelas como dados numéricos discretos. Então, definitivamente, uma linha tênue lá, e em muitos casos, você pode realmente tratá-la dessa maneira. Então, aí está. Os três tipos diferentes lá é o dia numérico, categórico e orginal. Vamos ver se está afundado. Não te preocupes, não vou ultrapassar o teu trabalho nem nada. Questionário rápido. Então, para cada um desses exemplos, os dados são numéricos, categóricos ou orginais? Vamos começar com quanta gasolina tem no seu tanque de gasolina. O que você acha? Bem, a resposta certa é um novo milagre. É um valor numérico contínuo lá porque você pode ter qualquer gama infinita de possibilidades de gás em seu tanque. Quero dizer, sim, isso é provavelmente algum limite superior quanta gasolina você pode caber nele. Mas não há fim para o número de possíveis valores de quanto gás você tem. Pode ser 3/4 de um tanque. Pode ser 7/16 de um tanque. Pode ser um sobre pi de um tanque. Quero dizer, quem sabe, certo? Que tal se você está lendo sua saúde geral em uma escala de 1 a 4, onde essas escolhas corresponderam categorias mais pobres, moderados, bons e excelentes, Você acha? Bem, esse é um bom exemplo de dados originais. Isso é muito parecido com nossos dados de classificação de filmes. E novamente, dependendo de como você modela que você provavelmente poderia tratar como dados numéricos discretos também. Mas, tecnicamente, vamos chamar isso de dados de provação. Que tal as corridas de seus colegas de classe? Você sabe, que nacionalidade eles são? Exemplo bem claro de dados categóricos. Você sabe, você não pode realmente dizer que, você sabe, você não pode comparar pessoas amarelas as pessoas verdes ali mesmo apenas amarelo e verde e apenas escolheu duas raças aleatórias que não existem. Mas, Mas você sabe, eles são categorias que você pode querer estudar e entender as diferenças entre em alguma outra dimensão. Que tal as idades dos seus colegas aqui nesta turma em anos? Um pouco de uma pergunta enganosa aí. Se eu dissesse que tinha que ser em um novo vale de energia de anos, tipo, você sabe, 40 50 ou 55 anos de idade, então isso seria dados numéricos discretos. Mas se eu tivesse mais precisão como, você sabe, 40 anos, três meses e 2,67 dias, então isso seria dados numéricos contínuos. Mas de qualquer maneira, é um tipo de dados numéricos, e finalmente, dinheiro gasto em uma loja novamente. Sabe, isso pode ser um exemplo de dados numéricos contínuos. Então, novamente, isso só é importante porque você pode aplicar técnicas diferentes a diferentes tipos de dados. Portanto, pode haver alguns conceitos em que fazemos um tipo de implementação para dados categóricos e um tipo diferente de implementação para dados numéricos, por exemplo. Então, isso é tudo o que você precisa saber sobre os diferentes tipos de dados. Área de conceitos bastante simples você tem dados numéricos categóricos e Ordell e dados numéricos podem ser contínuos ou discretos, e pode ser técnicas diferentes que você aplicar, dependendo do tipo de dados que você está lidando com. Então vamos ver que ao longo do curso adiante, vamos seguir em frente 11. Média, mediana, modo: Vamos fazer um pouco de atualização de estatísticas. 101 e. Quero dizer, isso é como material do ensino fundamental, mas bom passar por isso de novo e tipo de apreciar as diferenças e como essas diferentes técnicas são usadas. Média média e modo. Tenho certeza que você para esses termos antes, mas é bom ver como eles são usados de forma diferente. Então vamos mergulhar. Vamos passar a significar mediana e modo. Deve ser uma crítica para a maioria de vocês. Eu acho que eles ensinam essas coisas na escola primária hoje em dia. Mas apenas uma atualização rápida, em outras palavras, começar a realmente mergulhar em algumas estatísticas reais. Vamos apenas olhar para alguns dados reais e descobrir como medir essas coisas. Então a média, como você provavelmente sabe, é apenas outro nome para a média para calcular a média de um conjunto de dados. Tudo que você tem que fazer é alguns até todos os valores e dividido pelo número de vales que você tem. Então, vamos tomar este exemplo aqui. Digamos que fui de porta em porta no meu bairro e perguntei a todos, quantos filhos eles têm? Quantas crianças vivem em sua casa que, aliás, é um bom exemplo de dados numéricos discretos , certo? Lembre-se da palestra anterior. Digamos que eu dê uma volta e descobri que a primeira casa não tem filhos. E a segunda casa tem dois filhos e a terceira família SEC tem três filhos e dois e um e assim por diante e assim por diante. Então uma máscara, este pequeno conjunto de dados de dados numéricos discretos. E para descobrir a maldade, tudo o que faço é juntá-las e divididas pelo número de casas que fui. Então, nesse caso, ele sai zero mais dois mais três, mais todo o resto dessas coisas dividido pelo número de casas que eu olhei, que é nove. E o número médio de crianças por casa na minha amostra é 1,11 Então aí você tem isso significa agora, mediana. É um pouco diferente. A maneira como você calcula a mediana de um conjunto de dados é classificando todos os valores e tomando aquele que acaba no meio. Então, por exemplo, se esse fosse o meu conjunto de dados original, eu poderia classificá-lo numericamente, e eu posso pegar o número que dormia dab no meio dos dados, que acaba por ser um. Então, novamente, tudo o que eu faço é pegar os dados tipo de numericamente e pegar o ponto central. Isso é tudo que há para a mídia. Agora, há uma nuance se você tem igual versus um número ímpar de pontos de dados que a mediana pode realmente cair entre dois pontos de dados, certo? Como se eu tivesse Ah, um número par de pontos de dados que ficaria claro qual é realmente o meio . Nesse caso, tudo o que você faz é tomar a média do para fazer cair no meio. Então, se você não tem sequer número, você apenas leva o meio para agora este exemplo de uma mediana e a média que estamos muito próximos um do outro porque não havia muitos outliers. Sabe, tivemos 012 ou três filhos, mas não tínhamos uma família maluca que tinha 100 filhos. Isso teria realmente distorcido a maldade. Mas pode não ter mudado muito a mediana, certo? E é por isso que a mediana é muitas vezes uma coisa muito útil para se olhar e muitas vezes negligenciada. As pessoas têm tendência a enganar as pessoas com estatísticas às vezes, e vou continuar a apontar isto ao longo do curso onde puder. Mas, por exemplo, você pode falar sobre a renda média ou média familiar nos Estados Unidos, e esse número real do ano passado, quando eu pesquisei foi de 72.000 dólares, alguns ímpares. Mas isso realmente não diz uma imagem exata do que a média, o que o típico americano faz. Porque se você olhar para a renda média, é muito menor seus $51.939. Por que é isso? Bem, por causa da desigualdade de renda, há algumas pessoas muito ricas na América, e o mesmo é verdade em muitos países também. América não é nem o pior, mas você conhece aqueles bilionários tão ricos que vivem em Wall Street ou Silicon Valley ou o que quer que eles distorçam o mal certo. Mas há tão poucos deles, eles não afetam tanto a mediana. Então este é um ótimo exemplo de onde a mediana conta uma história muito melhor sobre a pessoa típica ou ponto de dados neste exemplo do que a média faz. Então, sempre que alguém fala sobre a média que você tem que pensar , Qual é a data da distribuição? Existem outliers que podem estar distorcendo isso significa? E se a resposta é potencialmente, sim, você também deve pedir a mediana, porque muitas vezes isso fornece mais insight do que a média ou a média. Finalmente, vamos falar sobre a Mode. Isso realmente não aparece com muita frequência na prática, mas você não pode falar sobre maldade e mediana sem falar sobre modo. Não sei porquê. Porque começa com eles, eu acho. Mas tudo o que é é o valor mais comum no conjunto de dados. Voltando ao meu exemplo de número de crianças em cada casa, se eu apenas olhar para o número que ocorre com mais frequência, ele acaba por ser zero. E o modo, portanto, desses dados é zero. O número mais comum de crianças em uma determinada casa neste bairro é não ter filhos, e isso é tudo o que significa agora. Este é, na verdade, umbom exemplo de , um dados contínuos versus discretos, certo, porque isso só funciona com dados discretos. Se eu tiver um intervalo contínuo de dados que eu realmente não posso falar sobre o valor mais comum que ocorre a menos que, como quer laços que de alguma forma em valores discretos. OK, então já temos um exemplo aqui onde o tipo de dados importa modo geralmente é relevante apenas para dados numéricos discretos. E se você tem dados contínuos, nem tanto. Muitos dados do mundo real tendem a ser contínuos. Então talvez seja por isso que você não ouve muito sobre a Mode. Mas está aqui para a completude. Lá você tem isso significa mediana e modo em poucas palavras, e nós poderíamos seguir em frente tudo bem. Mediana média e modo, tipo das estatísticas mais básicas que você pode fazer. Mas eu espero que ele tenha ganhado um pouco de atualização sobre a importância de escolher entre mediana e malvada. Eles podem contar histórias muito diferentes, e ainda assim as pessoas tendem a igualá-las em suas cabeças. Portanto, certifique-se de que você está sendo um cientista de dados responsável e representando dados de uma forma que transmita o significado que você está tentando representar. Se você estiver tentando exibir um valor típico, muitas vezes a mediana é uma escolha melhor do que a média por causa de outliers. Então lembre-se que vamos seguir em frente 12. Como usar o de média e modo no Python: Vamos começar a fazer alguma codificação real e python e ver como você calcula a mediana média e modo usando python em algum arquivo de notebook I Python que temos Ok, então abra o caderno de modo mediano médio de seus materiais de curso aqui em seu ah Página do caderno de Júpiter aqui e novamente, se você precisar de atualização Teoh sobre como fazer isso, volte para a palestra de configuração e eu vou mostrar-lhe como fazer isso novamente. Mas uma vez que você tem o modo médio médio abertamente, você pode brincar com ele. Então vamos ver o que está acontecendo aqui. Então o que vamos começar a fazer é criar um conjunto de dados falsos de distribuição de renda. Então vamos modelar 10.000 pessoas e quanto dinheiro elas ganham a cada ano. Agora, para fazer isso, vamos usar o pacote “Number Pie”. Então, como falamos na importação de pacotes em nossa introdução ao Python, vai começar dizendo importante torta entorpecida AS e P. Isso nos permite nos referir ao pacote de torta entorpecida como apenas np, que apenas nos salva alguns digitando além de importar esse pacote para que possamos usá-lo agora O pacote num pie inclui uma função chamada ponto aleatório normal, e o que isso faz é criar uma distribuição aleatória. Basicamente, ele cria uma distribuição de curva de sino de dados em torno de um certo ponto neste caso, $27.000 com um desvio padrão de $15.000. E queremos 10.000 pontos de dados neste conjunto de dados. Agora, se você não estiver familiarizado com o desvio padrão e as distribuições normais, falaremos sobre isso com mais detalhes mais tarde. Mas eu acho que você vai começar a entender isso enquanto você passa por este exercício. Então, uma vez que criamos esse conjunto de dados de 10.000 pessoas que têm uma distribuição centrada em torno de US $27.000, podemos então col n p dot significa usar o pacote num pie para calcular a média ou média desse conjunto de dados. E uma vez que especificamos que deveria ser centrado em torno de US $27.000, esperaríamos que fosse cerca de US $27.000. Então, clique neste bloco de código e pressione shift enter para executá-lo, e com certeza, é cerca de US $27.000 agora porque há um componente aleatório para isso seu resultado pode ser ligeiramente diferente. Isso é esperado. Tudo bem, mas deve estar perto de 27.000 para que possamos realmente traçar isso para obter uma sensação mais de como o estado é distribuído. Para fazer isso, vamos usar um pacote chamado Matt Plot Lib, que nos permite criar gráficos realmente simples aqui em linha e realmente exibir esses gráficos dentro do próprio arquivo do notebook. Precisamos dizer por cento Matt enredo lib na linha como a primeira linha aqui. Você já teve algum problema no futuro com este curso nos cadernos onde seus gráficos estão sendo exibidos? É provavelmente porque você esqueceu de executar um bloco de código que ele continha Matt plot ao vivo na linha que é necessário para realmente ver esses gráficos. Com isso fora do caminho, porém, porém, podemos importar o pacote lib de plotagem Matt propriamente dito especificamente a parte do lote de tubos e novamente nos referiremos a isso como um alias de Plt apenas para nos salvar e digitar. Então, agora que temos o gráfico de torta Matt Pot Libs instalado, podemos apenas dizer ponto de enredo sibilado para criar um hist um grama de nosso conjunto de dados de renda, e vamos passar no número 50, o que significa que queremos isso dividido em 50 baldes diferentes. Então nós estamos indo para Kwan Ties são um conjunto de dados em 50 baldes discretos de dados, se você quiser, e então nós podemos chamar trama que eu mostrei. Na verdade, mostre-o. Vamos seguir em frente e executar isso também. Shift, entre dentro desse bloco e você deve ver algo que se parece um pouco com isso. Então há aquela curva de sino que eu prometi a você, certo, e você pode ver que ela está centrada em torno de US $27.000 ou assim. Se você não está familiarizado com a história, vovó, a maneira de interpretar esses dados é que muitas pessoas estão ganhando cerca de US $27.000 por ano. Poucas pessoas estão ganhando entre 60 mil e 80 mil dólares por ano. Certo, então esses são os dados fictícios que inventamos. Então nós vimos que a média é de cerca de US $27.000. Isso faz sentido. Isso é o que esperaríamos. Qual é a mediana? Então, novamente, a mídia é justa. Se pudéssemos classificar todos esses dados, qual seria o valor no meio de tudo isso. E uma vez que temos uma boa distribuição de curva de sino aqui, a mediana deve ser aproximadamente a mesma que a média. Vamos clicar no bloco três aqui e executar esse turno. Entre e com certeza, que é também cerca de US $27.000. Assim, para um uniformemente destruído um conjunto de dados como este, a mediana e a média será aproximadamente a mesma. No entanto, nem todos os conjuntos de dados são distribuídos uniformemente. Vamos ver o que acontece se adicionarmos Jeff Bezos à mistura. E digamos que ele ganhou $1.000.000.000 no ano passado. Deve estar um pouco no lado alto, mesmo para Jeff Bezos. Mas só por uma questão de argumento, vamos chamar n p dot append para apenas acrescentar um valor extra à lista de rendimentos, e ele irá conter um único valor, um bilhão. Então nós vamos ter uma nova lista de rendimentos aqui que contém são normalmente distribuídos dados mais Jeff Bezos lá para estragar as coisas. Agora lembre-se, a mediana apenas representa o valor médio para classificar todos eles. E nós só adicionamos mais um ponto de dados aqui, então isso não deve mudar muito, certo? Então vamos executar a mediana novamente, e ainda estamos recebendo um valor próximo de US $27.000. Então Jeff Bezos não bagunçou a mediana do nosso conjunto de dados. No entanto, se calcularmos a média, vai ser muito diferente, certo? Isso é até, como $127.000. Quase assim. Esta é uma ótima história sobre como um outlier em um conjunto de dados pode realmente bagunçar a média ou o valor médio desse conjunto de dados. Então, quando as pessoas falam sobre médias ou meios, pegue essa informação com um grão de sal. Pergunte a si mesmo, poderia haver outliers que estão distorcer esses dados? E, ah, distribuição de renda é um ótimo exemplo disso. Nesse caso, a mediana vai contar uma história melhor sobre o que realmente está acontecendo na população maior . Então você sabe, lição de estatísticas número um ou como tomar cuidado com as pessoas mentindo com estatísticas. Certifique-se de entender a diferença entre mediana e média, e se há outliers envolvidos a mídia e ele provavelmente vai lhe dar informações mais úteis também vai tocar no modo apenas porque ele começa com eles e as pessoas falam sobre isso juntamente com média e mediana por algum motivo. Então vamos em frente e criar outro conjunto de dados falsos aqui. Isso será distribuído uniformemente. Teremos um monte de idades falsas para 500 pessoas. Então vamos chamar NP Dot Rand aleatório para ter distribuição uniforme de entre 18 e 19 anos para 500 pessoas. E então nós vamos apenas digitar em idades, o que nos permite visualizar esse array em linha aqui. Shift entrar dentro disso e isso é aleatório. Então vamos obter resultados diferentes a cada vez agora para calcular o modo novamente. Esse é apenas o valor que aparece com mais frequência neste conjunto de dados. Então vamos em frente e fazer isso. Você fez isso? Nós vamos usar o pacote de tese I pi e é módulo de estatísticas, e é apenas uma outra maneira de importá-lo. Então estamos dizendo do CYP I importar estatísticas. Neste caso, nós não vamos usar a cláusula como porque eu posso digitar estatísticas que não é muito difícil. E então vamos chamar o modo de estatísticas ponto na matriz de idades para obter de volta o nosso resultado modo, e depois disso, chugs afastado por um pouco. Tem uma carga para cima. Aquele pacote que recebemos. A nossa resposta. Acontece que, neste caso, o modo é 28 que ocorreu 14 vezes no estado do conjunto. E isso é completamente aleatório. Então, toda vez que você executar isso, você terá uma resposta diferente. Vamos lá. Vamos lá! Para trás, Teoh. Bloquear sete Aqui novamente e shift enter novamente para obter um novo conjunto de dados aqui. E se executarmos este bloqueio novamente, você deve obter uma resposta diferente desta vez os eleitores 20 que ocorreram 15 vezes. Então só mostra que o modo funciona. Mas isso é dados aleatórios, então não é terrivelmente significativo, mas ilustra como você faria isso em cyp I Tudo bem, então lá você tem que significar mediana e modo. Vamos passar para um exercício para que você pratique com ele. Vou te dar um pouco de Simon. Aqui. Se você abrir o exercício mediano significa I python caderno. Há algumas coisas com que você pode brincar, então eu quero que você arregace as mangas e realmente tente fazer isso aqui nós temos alguns dados aleatórios de comércio. Então, o que? Estes dados representam o valor total gasto por transação. E novamente, assim como no nosso exemplo anterior, é apenas uma distribuição normal de dados. Assim como nosso exemplo de renda pode executar isso e seu dever de casa é ir em frente e encontrar a média e mediana desses dados usando o pacote I praticamente a tarefa mais fácil que você poderia imaginar. Todas as técnicas que você precisa estão no modo mediano médio por caderno Python. Meu ponto aqui não é realmente nos desafiar, apenas fazer você realmente escrever algum código python e se convencer de que você pode realmente obter um resultado e fazer algo acontecer aqui. Então vá em frente e brinque com isso. Se você tiver algum problema para postar as discussões para a seleção irá ajudá-lo. Mas deve ser bastante trivial se você quiser jogar que alguns ou sinta-se livre para brincar com a distribuição de dados aqui e ver o efeito que você pode ter sobre os números lá. Sabe, em alguns outliers tipo de fazer o que fazemos com os dados de renda tão confuso assim você aprende essas coisas, se divirta, tudo bem. Espero que ele arregaçou suas mangas e brincou um pouco com esse código. Obter alguma confiança em realmente fazer estatísticas em I Python notebook, Bear e Python em geral. Então, sem atrás de nós, vamos avançar para o nosso conceito de redes, desvio padrão e variância. 13. Variação e desvio de padrão: Vamos falar sobre conceitos de desvio padrão e variantes em termos que você provavelmente já ouviu antes. Mas vamos aprofundar um pouco mais o que eles realmente significam e como você os calcula . É uma medida da disseminação de uma distribuição de dados, e eu vou fazer um pouco mais de sentido em alguns minutos. Vamos falar sobre o desvio padrão em variantes para quantidades fundamentais para uma distribuição de dados que você verá uma e outra vez neste curso. Então vamos ver o que são. Se você precisar de uma atualização novamente, vamos olhar para um histórico Graham, porque variância e desvio padrão são todos sobre a propagação da data da forma da distribuição de um conjunto de dados. Então vamos dar uma olhada nesses dados falsos. Digamos que temos alguns dados sobre a frequência de chegada de aviões em um aeroporto, por exemplo, por exemplo, e esta história Graham indicaria que, no entanto, escolhemos Kwan vincular esses dados. Digamos que temos cerca de quatro chegadas por minuto. Bem, isso aconteceu em, digamos, cerca de 12 dias que olhamos para esses dados. Então, 12 diferentes pontos de dados discretos em quatro chegadas permanentes ish, mas então temos esses outliers. Tivemos um dia muito lento que só tinha uma chegada por minuto para mim, só tinha um dia muito rápido onde tínhamos quase 12 chegadas por minuto. Então, novamente, a maneira de ler um histórico Graham é Procurar o bucket de um determinado valor e que lhe diz com que frequência esse valor ocorreu em seus dados e a forma do histórico. Ram poderia dizer-lhe muito sobre a distribuição de probabilidade de um determinado conjunto de dados. Então, sabemos a partir desses dados que é muito provável ter cerca de quatro chegadas por minuto. Mas é muito improvável ter um ou 12 certo, e também podemos falar especificamente sobre as probabilidades de todos os números entre eles. Portanto, não só é improvável que tenha 12 chegadas permitidas, como também é muito improvável que tenha nove chegadas por minuto. E uma vez que começamos a andar, você sabe, comer ou assim as coisas começam a melhorar um pouco. Então, muita informação que temos de uma história graham e a variância apenas fala de como espalhar qual é a forma desses dados. Qual é a disseminação do seu conjunto de dados? Como você mede bem a variância, geralmente nos referimos a ela como Sigma ao quadrado e você descobrirá por quê momentaneamente. Mas, por enquanto, saiba que a variância é apenas a média das diferenças ao quadrado da média. Então, para calcular a variância de um conjunto de dados, você primeiro descobrir a média dele. Digamos que eu tenha alguns dados. Pode representar qualquer coisa. Digamos que o número máximo de pessoas que estavam na fila por uma hora ou algo que eu não sei. E na primeira hora eu observei uma pessoa em pé na fila de quatro de cinco e quatro de oito. Ok, então o primeiro passo para calcular a variância é apenas encontrar a média dos dados. Eu adiciono-os todos juntos, dividido pelo número de pontos de dados. E isso sai para 4.4. É o número médio de pessoas em pé na fila Agora o próximo passo é encontrar as diferenças da média para cada ponto de dados. Então eu sei que a média é 4.4. Então, para os meus primeiros dados 0.4 ponto quatro, e em um, então um menos 4.4 é negativo 3.4 quatro menos 4.4 é negativo. 0,4 e assim por diante e assim por diante. Ok, então eu acabo com facilidade números positivos e negativos que representam a variância da média para cada ponto de dados. OK, mas o que eu quero é um único número que representa a variação de todo esse conjunto de dados. Então, a próxima coisa que vou fazer, vamos encontrar as diferenças quadradas. Então nós só temos que passar por cada uma dessas diferenças cruas da média e quadrá-las . Isso é por algumas razões diferentes. Primeiro de tudo, eu quero ter certeza de que variâncias negativas tipo tanto quanto variações positivas, certo. Caso contrário, eles cancelariam um ao outro, não seria ruim. Eu também quero dar mais peso aos outliers. Então isso amplifica o efeito de coisas que são muito diferentes da média enquanto ainda preservam, certificando-se de que o ar negativo e positivo comparado comparavelmente Então vamos olhar para o que acontece lá. Então negativo 3,4 ao quadrado positivo, 11,6 negativo 0,4 ao quadrado, mas menor número de 0,16 porque isso é muito mais próximo da média de 4,4 ponto seis, também perto da média de apenas 60,36 Mas quando chegamos ao outlier positivo 3,6 centavos sendo 12,96 ok, e para encontrar o valor real das variantes, nós apenas tomar a média de todas essas diferenças ao quadrado da média. Então somamos todas essas variâncias quadradas divididas por cinco o número de valores que temos , e acabamos com uma variância de 5,4 OK, isso é todas as variâncias agora. Normalmente, falamos de desvio padrão mais do que variantes, e verifica-se que o desvio padrão é apenas a raiz quadrada da variância. É tão simples assim. Então eu tinha uma variação de 5,4. O desvio padrão é 2.24 Então você vê agora por que chamamos Variant Sigma ao quadrado. É porque o próprio Sigma representa o desvio padrão. Então, se eu pegar a raiz quadrada do sinal Square para obter Sigma que acaba neste exemplo para ser 2.24 Este é um graham história dos dados reais que estávamos olhando. Agora vemos que o número quatro dela duas vezes em nosso conjunto de dados, e então tivemos 1115118 Agora o desvio padrão é geralmente usado como uma maneira de pensar sobre o como identificar outliers em seu conjunto de dados. Então, se eu disser se eu estou dentro de um desvio padrão da média de 4.4 isso é considerado como um tipo de valor típico em uma distribuição normal. Mas você pode ver neste exemplo os números um e oito na verdade estão fora desse intervalo. Então, se eu pegar 4.4 mais ou menos 2.24 você sabe que acabamos por aí e ali e um em cada oito ambos caem fora desse intervalo de um desvio padrão. Então podemos dizer matematicamente que um em cada oito ou outliers não temos que tipo de adivinhar um globo ocular. Agora ainda há uma espécie de julgamento. Chame-nos para o que você considera um outlier em termos de quantos desvios padrão, para que você possa geralmente falar sobre o quanto de um ponto de dados outlier é por quantos desvios padrão da média é. Então isso é algo que você verá desvio padrão usado no mundo real, há um pouco novo quer desvio padrão em variantes. E isso é quando você está falando sobre a variação da população versus amostra. Certo, só uma pequena diferença. Então, se você está trabalhando com um conjunto completo de dados, você sabe, um conjunto completo de observações, então você faz exatamente o que eu disse. Você só pega a média de todas as variâncias quadradas da média e essas são suas variantes. Mas se você está amostrando seus dados, você sabe, se você está tomando algum subconjunto dos dados apenas para tornar a computação mais fácil, você tem que fazer algo um pouco diferente. Em vez de dividir pelo número de amostras que você divide pelo número de amostras menos um . Ok, então vamos olhar para este exemplo um exemplo. Acabamos de ter a variação da população é exatamente o que fizemos. Tomamos a soma das variâncias quadradas em dividido por cinco, o número de pontos de dados que tivemos que obter 5.4 Mas a variância amostral, que é estimada por S ao quadrado, é dividida por quatro e menos um. Então pegamos o número de pontos de dados que tínhamos subtraído um e obtivemos a variância da amostra que sai para 6,3. Então novamente, se isso fosse algum tipo de amostra que pegamos de um conjunto de dados maior, isso é o que você faria. Se for o conjunto completo de dados, divide-se com o número real, está bem? E isso é muito extrema população e variância da amostra. E por que isso entra em coisas estranhas sobre probabilidade que você provavelmente não quer pensar muito . coisas estranhas sobre probabilidade que você provavelmente não quer pensar muito E se você quiser expressar isso em termos de notação matemática extravagante, eu tento evitar notação neste curso, tanto quanto possível. Eu acho que os conceitos são mais importantes, mas isso é material básico o suficiente para que você vai vê-lo uma e outra vez. População variada é geralmente designado um sigma quadrado com desvio padrão de Sigmund, e poderíamos dizer que é a soma do de cada ponto de dados X menos a média que você ao quadrado. Essas são as variantes de cada amostra quadrada sobre a extremidade. O número de pontos de dados e variância de amostra de forma semelhante é não é s ao quadrado. E essa é a soma de cada ponto de dados menos a média m do conjunto de amostras ao quadrado e menos um. Então você subtrai um do número de amostras que você tem, isso é tudo o que há para ele. Então vamos olhar para alguns exemplos reais e escrever algum código python para fazer isso acontecer. Vamos escrever algum código aqui e jogar com algum desvio padrão em variâncias. Então, se você puxar para cima, isso não fez o caderno variantes Python. Arquivo Variantes de desvio de Sarah. Siga-me até aqui. Por favor, porque há uma atividade no final que eu quero que você tente. Então nós vamos ouvir é exatamente como o exemplo anterior. Vamos usar Matt Plot Live para traçar um graham histórico de alguns dados aleatórios normalmente distribuídos . E vamos chamar isso de “rendas “, dizemos que vai ser centrado em torno de 100. Espero que seja uma taxa horária ou algo assim. E no anual ou é alguma denominação estranha suportar desvio de 20 e 10.000 pontos de dados . Então vamos em frente e gerar isso e traçar. Aí está você. Então, temos 10.000 pontos de dados em um centrado em torno de 100 como você pode ver aqui. Assim, com uma distribuição normal com um desvio padrão de 20 de modo que é uma medida da dispersão desses dados, e com certeza, você pode ver que a ocorrência mais comum é em torno de 100. E à medida que nos afastamos cada vez mais disso, as coisas se tornam cada vez menos prováveis. E o ponto de desvio padrão de 20 que especificamos está por aí em torno de lá. Então você pode ver esse tipo de ponto onde as coisas começam a cair bruscamente, certo? Então podemos dizer que as coisas além desse desvio padrão, limite ou incomum. Agora despejo eu também torna incrivelmente fácil competir com o desvio padrão na variância. Se você quiser calcular o desvio padrão real deste conjunto de dados que geramos, basta chamar a função STD diretamente no próprio conjunto de dados. Então nenhum árbitro quando ele cria uma lista, não é apenas uma lista python normal, na verdade tem algumas coisas extras coladas a ela, então você pode realmente chamar funções sobre ela como STD para desvio padrão. E nós poderíamos fazer isso, e nós devemos obter um número muito perto de 20, porque é isso que nós especificamos. Quando criamos nossos dados aleatórios, queríamos um desvio padrão de 20. Claro o suficiente, 19.96 muito perto ea variância é apenas uma questão de chamar dot var, que sai para muito perto de 400 que é 20 ao quadrado, certo? Então o mundo faz sentido. Sim, desvio padrão é apenas uma raiz quadrada da variância. Ou você poderia dizer que variâncias um desvio padrão quadrado ao contrário. Com certeza, isso funciona para que o mundo funcione da maneira que deveria. Quero que mergulhe aqui e brinque com ele. Torná-lo realmente para tentar fora parâmetros diferentes em gerar que os dados normais. Lembre-se, esta é uma medida da forma da distribuição dos dados. Então, o que acontece se eu mudar esse ponto central? Não importa. Será que isso realmente afeta a forma? Você experimentou e descobriu? Tente mexer com o desvio padrão real lá que especificamos e ver qual o impacto que isso tem na forma do gráfico. Então, se eu quiser um desvio padrão de 30 eu poderia mudar isso lá. E você sabe, você pode ver como isso realmente afeta as coisas ou vamos torná-lo ainda mais dramático, como 50 Basta jogar em torno de que começando um pouco mais gordo lá, certo, então jogador com valores diferentes apenas obter um sensação de como esses valores funcionam. Esta é a única maneira de realmente obter uma sensação intuitiva de desvio padrão, variância Mesereau e apenas exemplos diferentes e ver o efeito que ele tem. Então brinque com isso um pouco vendo a próxima palestra para que o desvio padrão nas variantes na prática tenha suas mãos com algumas delas lá. Espero que tenha brincado um pouco para se familiarizar com isso. Conceitos muito importantes. Sabe, conversamos muito sobre desvios padrão ao longo do curso e durante sua carreira e ciência de dados, então certifique-se de ter isso sob seu cinto. Vamos seguir em frente. 14. Função de sua de: então já vimos alguns exemplos de uma função de distribuição normal para alguns dos exemplos neste curso. Esse é um exemplo de uma função de densidade de probabilidade, e existem outros tipos de funções de densidade de probabilidade lá fora, então vamos mergulhar e ver o que realmente significa e o que alguns outros exemplos delas são. Vamos falar sobre probabilidade, funções de densidade, e nós realmente usamos isso já no curso. Só não lhe chamávamos assim. Então vamos formalizar algumas das coisas sobre as quais falamos. Por exemplo, vimos a distribuição normal algumas vezes em nossos exemplos, e isso é um exemplo de uma função de densidade de probabilidade aqui é essa curva de distribuição normal . Então você sabe, é fácil conceitualmente tentar pensar nisso como a probabilidade de um determinado valor ocorrer. Mas isso é um pouco enganador quando você está falando sobre dados contínuos, certo, porque há um número infinito de pontos de dados reais possíveis em um estado contínuo de distribuição, você sabe que pode haver zero ou 0,1 ou 0,1 certo, então a probabilidade real de um valor muito específico acontecer é muito, muito pequena, infinita, mesmo infinitamente pequena. A função provavelmente Desi realmente fala com a probabilidade de um determinado intervalo de valores ocorrendo. Então é o que você tem que pensar sobre isso. Assim, por exemplo, em uma distribuição normal entre a média e um desvio padrão da média, há uma chance de 34,1% de um valor caindo nesse intervalo, e você pode apertar isso ou espalhá-lo como tanto quanto você quiser. Descobrir os valores reais, mas essa é a maneira de pensar sobre uma probabilidade, densidade, função, intervalo perdoado de valores. Ele diz que você pode ver uma maneira de descobrir a probabilidade de que esse alcance ocorra. Ok, você pode ver aqui. Você sabe, se você chegar perto da média dentro de um desvio padrão, você é muito provável chegar lá. Quero dizer, se você somar 34 34 seja lá o que for que sai é a probabilidade de pousar dentro de um desvio padrão da média. Mas como você começa aqui entre dois e três desvios padrão, você sabe, nós estamos apenas um pouco mais de 4% combinado com o positivo e negativo e como você sai além de três desvios padrão e nós somos muito menos de 1% Na verdade. Então esta é a maneira de visualizar e falar sobre as probabilidades do dado ponto de dados acontecendo? Então, novamente, uma função de distribuição de probabilidade. Você vê a probabilidade de um ponto de dados cair dentro de algum determinado intervalo de um determinado valor. Está bem. E uma função normal é apenas um exemplo de uma função de densidade de probabilidade. Olhe um pouco mais em um momento. Agora, quando você está lidando com dados discretos, essa pequena nuance sobre ter números infinitos de valores possíveis desaparece direito, e nós chamamos isso de algo diferente. Então essa é uma função de massa de probabilidade para lidar com dados discretos. Você pode falar sobre a função de massa de probabilidade. Assim, por exemplo, você pode traçar uma densidade de probabilidade, probabilidade normal, função de densidade de dados contínuos nesta curva preta. Mas se fôssemos quantificar isso em um conjunto de dados discretos como fazemos com o History Ram , podemos dizer que o número três ocorre algum número definido de vezes, realmente, e você pode realmente dizer que o número três tem um pouco mais de 30% de chance de ocorrer, Então provavelmente função de massa é a maneira que visualizamos a probabilidade de dados discretos ocorrendo, e ele se parece muito com uma história Graham, porque basicamente é um RAM de história. Certo, então a diferença de terminologia provavelmente função de densidade, uma curva sólida que descreve a probabilidade de um intervalo de valores acontecer com dados contínuos . Provavelmente função de massa é as probabilidades de dados valores discretos ocorrendo em um conjunto de dados . Ok, então vamos olhar para alguns exemplos reais, e vai fazer ainda mais sentido que nós vamos para algum lugar mais profundo a seguir. 15. Distribuições de dados comuns: Vamos olhar para alguns exemplos reais de funções de distribuição de probabilidade e distribuições de dados em geral, e tipo de envolver sua cabeça em torno de um pouco mais sobre distribuições de dados e como visualizá-los e usá-los em python. Então vá em frente e abra as distribuições I Python arquivo notebook a partir dos materiais do curso , e você pode acompanhar comigo aqui se você quiser. Vamos começar com um exemplo muito simples. Então ah, distribuição uniforme só significa que há uma probabilidade plana e constante de um valor ocorrendo dentro de um determinado intervalo para que possamos usar usando a função uniforme de ponto aleatório nódulo I. E esta chamada diz, eu quero um conjunto aleatório uniformemente distribuído de valores que varia entre 10 negativos e 10 positivos e I 100.000 deles. E se eu criar um hist, um grama desses valores você pode ver que se parece com isso. Portanto, há praticamente uma chance igual de qualquer valor dado ou intervalo de valores ocorrendo dentro desses dados. Então, ao contrário da distribuição normal, onde vimos uma concentração de valores perto da distribuição uniforme média ah como probabilidade igual em qualquer dado valor dentro do intervalo que você define. Então, qual seria a função de distribuição de probabilidade deste olhar? Enquanto eu esperaria ver basicamente zero fora do intervalo de 10 negativo ou além de 10. Mas quando eu entre 10 e 10 negativos eu veria uma linha plana porque há uma probabilidade constante de qualquer um desses intervalos de valores ocorrendo. Ok, então uma distribuição uniforme, você veria uma linha plana na função de distribuição de probabilidade porque há basicamente uma probabilidade constante. Cada valor, cada intervalo de valores tem uma chance igual de aparecer como qualquer outro valor. Certo, e isso acontece às vezes. Agora vimos funções normais ou também conhecidas como galáxias e distribuição no passado, e já neste curso, você pode realmente visualizar essas em Python. Existe uma função pdf na função do pacote norma do ponto de estatísticas do ídot CYP. Então aqui, neste exemplo, vamos apenas analisar o que está acontecendo aqui. Estamos criando uma lista de valores X para aplaudir esse intervalo entre três negativos e três positivos com um incremento de 30,1 entre eles. Ok, então esses ar os valores X no gráfico e eles estavam indo para plotar o eixo X e o eixo Y vai ser a função normal norma ponto pdf densidade de probabilidade função para uma distribuição normal nesses valores X. E acabamos com isso. Assim, a função pdf com uma distribuição normal parece exatamente como no nosso slide anterior . Essa é uma distribuição normal para os números fornecidos que fornecemos onde zero representará a média e esses números são desvios padrão agora para gerar números aleatórios com distribuição normal. Nós já fizemos isso algumas vezes, mas apenas como um atualizador novamente, se você usar o pacote num pie, ele tem uma função normal de ponto aleatório. E o primeiro parâmetro mu representa a média que você deseja centralizar. Os dados em torno de Sigma são o desvio padrão desses dados, que é basicamente a propagação deles. E então especificamos o número de pontos de dados que queremos usando uma função de distribuição de probabilidade normal . Ok, então essa é a maneira de usar uma função de distribuição de probabilidade neste caso, a função de distribuição normal. Para gerar um conjunto de dados aleatórios, condenamos o gráfico que apenas mostra um histórico. Graham quebrou em 50 baldes e mostra, e é isso que acabamos com ele. Parece mais ou menos uma distribuição normal, mas como há um elemento aleatório, não será uma curva perfeita. Sabe, estamos falando de probabilidades ou algumas chances de as coisas não serem exatamente o que deveriam ser. Outra função de distribuição, você vê muitas vezes é a função de distribuição de probabilidade exponencial onde as coisas caem de uma maneira exponencial. Então, quando você fala sobre queda exponencial, espere ver uma curva como esta onde é muito provável que algo aconteça, você sabe, perto de zero. Mas então, à medida que você se afasta dele, ele cai muito rapidamente. Então, há muitas coisas na natureza que se comportam dessa maneira. E para fazer isso em Python, assim como tivemos uma função nas estatísticas CYP I para um pdf de ponto normal. Nós também temos um ex pond dot pdf para uma função de distribuição de probabilidade exponencial, e poderíamos fazer a mesma sintaxe que fizemos para a distribuição normal com uma distribuição exponencial aqui. Então, novamente, nós apenas criamos nossos valores X usando o número pie, uma função de intervalo para criar um monte de valores entre zero e 10 com um tamanho de passo de 100.1 E então nós plotamos esses vales X contra o eixo Y, que é definido como a função exponencial. PDF de X e parece que a queda exponencial. Também visualizamos provavelmente funções de massa de probabilidade. É chamado de probabilidade binomial por ninguém, função de massa e novamente, mesmo pecado impostos antes. Então, em vez de ex Pond ou norma, nós apenas usamos por gnome e novamente uma função de massa de probabilidade lembrete lida com dados discretos , e neste caso, estamos lidando com dados discretos. Temos sido lançamentos o tempo todo como você pensa sobre isso. Estamos criando alguns valores discretos de X entre zero e 10 em um espaçamento de 100.1 E estamos dizendo que eu quero traçar uma função de massa de probabilidade binomial usando esses dados e com a função de massa de probabilidade, eu posso realmente especificar o forma desses dados usando para moldar parâmetros e NP. Neste caso, 10 e 0.5, e se você quiser entrar e jogar em torno de valores diferentes para ver quais efeitos ele tem, essa é uma boa maneira de obter uma noção intuitiva de como esses parâmetros de forma funcionam no função de massa de probabilidade. Por último, a outra função de distribuição que você pode ouvir é uma função de massa de probabilidade de Poisson , e isso tem uma aplicação muito específica. Parece uma distribuição normal, mas é um pouco diferente. A idéia aqui é se você tem alguma informação sobre o número médio de coisas que acontecem em um determinado período de tempo. Ok, isso pode te dar uma maneira de prever as chances de obter algum outro valor em vez de um determinado dia futuro. Ok, então, como exemplo, digamos, ter um site, e em média, você recebe 500 visitantes por dia. Posso usar a função de massa de probabilidade de Pawson para estimar a probabilidade de ver algum outro valor em um dia específico. Digamos que recebo uma média de 500 visitas por dia. Quais são as chances de ver 550 visitantes em um determinado dia? Isso é o que uma função de massa de probabilidade Prasong pode lhe dar. Então, neste exemplo, eu estou dizendo minhas médias 500 você eu vou configurar alguns valores X toe. Olhe entre 406 100 com um espaçamento de 1000,5. E vou traçar isso usando o fóssil na função de massa probabilística. E eu posso usar esse gráfico para procurar as chances de obter algum valor específico. Isso não é 500 assumindo uma distribuição normal. Então, 5 50 ao que parece, sai para cerca de 0,2 É a probabilidade lá ou 0,2%? Muito interessante. Tudo bem, então essas são algumas distribuições de dados comuns que você pode encontrar no mundo real. Questionário Pop. Certifique-se de que está prestando atenção. Qual é a função de distribuição de probabilidade equivalente ao usar dados discretos em vez de contínuos. Então lembre-se que usamos uma função de distribuição de probabilidade com dados contínuos. Mas quando estamos lidando com dados discretos, usamos dica. Está na tela agora. Uma função de massa de probabilidade. Ok, vamos seguir em frente. Então isso é probabilidade. Densidade, funções e probabilidade. Funções de massa basicamente longe do dedo visualizam e medem a chance real de um determinado intervalo de valores ocorrendo em um conjunto de dados. Informações muito importantes em uma coisa muito importante para entender, continue usando esse conceito uma e outra vez. Então, certifique-se de assistir este vídeo novamente, se for preciso. Você é bom. Tudo bem, vamos seguir em frente 16. Percentiles e momentos: seguida, vamos falar sobre percentis e momentos percentis. Você ouve sobre isso nos noticiários o tempo todo. Pessoas que estão no topo 1% da renda, isso é um percentil. Vamos explicar isso e ter alguns exemplos lá, e vamos falar sobre momentos. Conceito matemático muito chique. Mas acontece que é muito simples de entender conceitualmente. Então vamos mergulhar e começar. Vamos falar sobre percentis e momentos. Alguns conceitos básicos e estatísticas. Mas, novamente, estamos trabalhando para chegar às coisas difíceis. Então, tenha paciência comigo enquanto passamos por alguns desta revisão. Então percentis. Basicamente, se você imaginar que se você fosse classificar todos os dados no conjunto de dados, um determinado percentil é o ponto em que essa porcentagem dos dados é menor do que o ponto em que você está. Então, um exemplo comum que você vê falou sobre muito é a distribuição de renda. Quando falamos sobre o percentil 99 ou o percentual de um, imagine que você deveria pegar todos os rendimentos de todos no país neste caso, os Estados Unidos e classificá-los por renda. O percentil 99 seria a quantia de renda em que 99% do resto do país estava ganhando menos do que isso. OK, então é um caminho muito fácil. Compreender isso. Estes são alguns dados reais aqui. Assim, por exemplo, no percentil 99, podemos dizer que 99% dos pontos de dados aqui, que representam pessoas na América, ganham menos de US$506.000 por ano, e 1% fazem mais do que isso. Por outro lado, se você é um percenter, você está ganhando mais de US $500.000 por ano aproximadamente. Parabéns. Mas se você é uma pessoa mediana mais típica, o percentil 50 define o ponto em que metade das pessoas estão fazendo. Menos da metade estão fazendo mais, que é a definição de mediana, certo? Então, o 50º percentil mesma coisa é mediana, e isso seria de US $42.000 dado este conjunto de dados. Então, se você está ganhando $42.000 por ano nos EUA , você está fazendo exatamente a média de renda para o país, e você pode ver que você conhece o problema da distribuição de renda. Ouvir as coisas tendem a ser muito concentradas em direção ao high-end, o que é Ah, grande problema político agora no país, então vamos ver o que acontece com isso. Mas isso está além do escopo deste curso. Então isso é percentis em poucas palavras. Percentis também são usados no contexto de falar sobre as telhas de um quarto em uma distribuição. Então, se você está olhando para, digamos, uma distribuição normal aqui, as pessoas falam sobre azulejos e quartil. Um e quartil três no meio são apenas os pontos que contêm juntos 50% dos dados, então 25% estão deste lado da mediana em 25% deste lado da mediana. A reunião neste exemplo acontece ser perto da média Então, por exemplo, o intervalo inter quartil quando falamos de uma distribuição é a área no meio da distribuição que contém 50% dos valores. OK, agora, este é um exemplo do que chamamos de diagrama de caixa e bigode. Então não se preocupe ainda com essas coisas aqui nas bordas. Isso fica um pouco confuso, e vamos cobrir isso mais tarde, mesmo que seja chamado quartil quando um julgamento judicial. Três, eles realmente não representam 25% dos dados. Mas não fiques pendurado nisso ainda. Concentre-se no ponto em que os blocos de quart no meio representam 25% da distribuição de dados , e esses tendem a estar no meio. Vejamos mais alguns exemplos usando python e tipo de colocar nossas mãos nele e conceitualizar É um pouco mais. Muito bem, vamos sujar as mãos com percentis. Vá em frente e abra os percentis como arquivo de notebook Python. Se você quiser acompanhar de novo, eu o encorajo a fazer isso porque eu queria brincar com isso um pouco mais tarde. Então vamos começar gerando alguns dados normais distribuídos aleatoriamente ou dados aleatórios normalmente distribuídos. Em vez disso, neste exemplo, onde vamos fazer é gerar alguns dados centrados em torno de zero com uma média de zero com um desvio padrão de 00,5. E eu vou fazer 10.000 pontos de dados com essa distribuição, e nós vamos traçar um Graham história e ver que nós criamos e parece um pouco algo assim, muito parecido com algo assim, uma distribuição normal. Mas porque há um componente aleatório, você sabe, nós temos um monte de mentiroso. Ouvir coisas. Dica de ar um pouco para a direita aqui. Um pouco. Um pouco de variação aleatória lá para tornar as coisas interessantes. Agora, para calcular os valores de percentil desta distribuição, torta Numb fornece uma função de percentil muito útil que fará isso para você. Então nós criamos nossa lista de vogais aqui usando o ponto árbitro aleatório, não normal. E eu poderia chamar o percentil de pontos np para descobrir o valor de percentil 50 neste exemplo que acaba por ser Plano cinco. Então lembre-se, o percentil 50 é apenas outro nome da mediana. E acontece que a mediana é muito próxima de zero nesses dados e você pode ver que estamos inclinados um pouco para a direita, então isso não é muito surpreendente. Quero calcular o percentil 90. Isso dá-me o ponto em que 90% dos dados são inferiores a este valor dado. Então, o percentil 90 do estado, ele acaba por ser 0,65 Então é por aqui, e basicamente em que 0,90% dos dados é menor que isso, então eu vou acreditar que 10% é maior. 90% é menor do que a direita em torno de lá no valor do percentil 20. Isso me daria o ponto em que 20% dos valores são inferiores ao número que eu invento. Então, o ponto de percentil 20 funciona para ser negativo 0,4 mais ou menos e mais uma vez, eu acredito que. Então está dizendo que 20% dos dados estão à esquerda de 200,4 negativos e, inversamente, 80% é maior. Então, se você quiser ter uma idéia de onde esses pontos de quebra estão no conjunto de dados, a função de percentil é uma maneira fácil de computá-los. Se isso fosse um conjunto de dados representando distribuição de renda, como em nossos slides, você sabe, nós poderíamos apenas chamar MP Top percentil valores comuns 99 descobrir o que é o percentil 99. Então você pode descobrir quem realmente são aqueles percentuais que as pessoas falam. E se você é um deles, tudo bem, agora suje as mãos. Eu quero que você brinque com esses dados, então este é um I Python aberto por uma razão. É para que você possa mexer com isso e mexer com o código tentar, sabe, diferente. Tente diferentes valores de desvio padrão. Veja o efeito que ele tem na forma dos dados e onde esses percentuais acabam se aplicando . Por exemplo, tente usar tamanhos de conjuntos de dados menores e um pouco mais de variação aleatória. É apenas ficar confortável que brinque com ele e, você sabe, descobrir que você pode realmente fazer essas coisas e escrever algum co real que funcione. Então passe alguns minutos, Ah, brincando com essa política de sucesso enquanto você faz isso e quando você continuar vai voltar ao conceito de momentos de uma distribuição. Em seguida, vamos falar sobre momentos. Momentos são uma frase matemática extravagante, e você não precisa de um diploma de matemática para entendê-lo, embora intuitivamente, é muito mais simples do que parece. É um desses exemplos em que as pessoas em estatísticas e mineração de dados em aprendizado de máquina e ciência de dados gostam de usar termos grandes e extravagantes para se fazerem parecer realmente inteligentes. Mas os conceitos são realmente muito fáceis de entender, e esse é o tema que você vai ouvir, pode e novamente neste curso. Então vamos falar de momentos. Basicamente, são maneiras de medir a forma de uma distribuição de dados de uma função provavelmente densidade de qualquer coisa, na verdade. E matematicamente, nós temos alguma notação matemática realmente extravagante aqui de como eles são definidos. E, você sabe, se você sabe cálculo, na verdade não é um conceito tão complicado. Estamos pegando a diferença entre cada valor de uma corrida de valor para a 10ª potência, onde N é o número do momento e integrando toda a função do infinito negativo ao infinito. Mas intuitivamente, é muito mais fácil do que o cálculo pronto. Aqui vamos nós. O primeiro momento funciona para ser apenas a média dos dados que você está olhando. É isso. O primeiro momento é a carne, a média é tão simples. O segundo momento é a variância. É isso. O segundo momento de um conjunto de dados é a mesma coisa que os vários valores, e , você sabe, pode parecer um pouco assustador que essas coisas meio que caiam fora da matemática naturalmente . Mas pense nisso. Os vários são realmente baseados no quadrado das diferenças da média, então chegar a uma maneira matemática de dizer que muito insistir relacionado com a média não é realmente muito de um estiramento, certo? É tão simples assim. Agora, quando chegamos ao terceiro e quarto momentos, as coisas ficam um pouco mais complicadas, mas ainda são conceitos fáceis de entender. Então, o terceiro momento é chamado de inclinação, e é basicamente uma medida de quão torta uma distribuição é. Então você pode ver nesses dois exemplos. Se eu tiver uma cauda mais longa à esquerda, você sabe que é uma inclinação negativa, e eu tenho uma cauda mais longa à direita. Isso é uma inclinação positiva, então você pode ver aqui com a forma de uma distribuição normal pareceria sem inclinação. Se eu esticar isso de um lado, então eu acabo com a inclinação do outro lado de inclinação positiva nesse exemplo. Ok, então isso é tudo distorção. É basicamente esticar a cauda de um lado ou de outro, e é uma medida de quão torta, quão distorcida é uma distribuição. O quarto momento é chamado Curto Sis. Uau, é uma palavra chique. Tudo o que realmente é o quão grosso é o conto de quão afiado é o pico. Então, novamente, é uma medida da forma da distribuição de dados e aqui está um exemplo aqui, e você pode ver que os valores de pico mais altos têm um valor de hospedeira Kurt maior. Então a curva vermelha tem uma queratose maior do que você imagina. Este é aquele preto. Eu não posso nem dizer uma curva enegrecida orgulhosa aqui no fundo. Portanto, é uma diferença muito sutil, mas uma diferença no menos que basicamente mede como os seus dados são assim novamente. Revisão. Primeiro momento significa variantes de segundo momento. Terceiro momento distorção quarto momento queratose já sabe o que significa e variância nosso esqui foi quão torto os dados são, como esticado para fora um dos contos pode ser e queratose fora Peaked casa esmagado juntos. A demonstração é assim vamos brincar em Python e realmente calcular esses momentos e ver como você faz isso, Ok, Ok, para jogar ao redor, Vamos em frente e abrir os momentos que eu Python arquivo notebook e você pode seguir junto comigo aqui para que é novamente criar a mesma distribuição normal de dados aleatórios, e novamente vamos torná-lo centrado em torno de zero com um desvio padrão de 0,5 e 10.000 pontos de dados e plotar isso novamente, um gerado aleatoriamente conjunto de dados com uma distribuição normal em torno de zero. Então, para encontrar a média e variância que fizemos isso antes, torta entorpecida só lhe dá uma função média e barra para calcular isso. Então nós podemos apenas chamar e p dot significa encontrar o primeiro momento, que é apenas uma palavra chique para a média. E isso funciona para ser muito próximo de zero, assim como seria de esperar para um normalmente distribuído, dados distribuídos centrados em torno de zero. Então o mundo faz sentido até agora. O segundo momento, apenas mais um nome para a variação. E isso funciona para ser cerca de 0,25 E novamente isso funciona com um bom cheque de sanidade. Lembre-se de que o desvio padrão é a raiz quadrada da variância. E se você pegar a raiz quadrada de 0,25 ele sai 2.5, que é o desvio padrão que especificamos ao criar o status. Então, novamente, que verifica também por um momento, sq. E para fazer isso, vamos precisar usar o pacote CYP I em vez de não torta. Mas isso novamente é construído em qualquer pacote de computação científica como e pensamento dossel ou importações anaconda. Digite estatísticas iDOT como SP e, em seguida, poderíamos apenas dizer sp ponto inclinação em vales e que nos dará um valor de inclinação. E como isso é centrado em torno de zero, deve ser quase uma inclinação zero. Acontece que a partir de variação aleatória ele não inclina um pouco para a esquerda. E, na verdade, isso faz júbilo com a forma que estamos vendo aqui. Parece que nós meio que puxamos um pouco negativo. Quarta mulher é Curto Sys, que descreve a forma da cauda e novamente para uma distribuição normal que deve ser cerca de zero. E, de fato, é. Então você sabe, a forma do alfaiate, o quão afiado o pico é tipo de se você empurrá-lo para dentro. Você sabe, tem ambos efeito até agora para esmagar a cauda para baixo. Ele meio que empurra o pico para ser mais apontado. E da mesma forma se eu empurrar para baixo essa distribuição e imaginar esse tipo de espalhar as coisas um pouco, tornando-o um pouco mais gordo e o pico dele um pouco mais baixo. Então é isso que queratose significa. E neste exemplo, queratose é próxima de zero porque é apenas uma distribuição antiga e normal. Então, se você quiser brincar com isso, vá em frente e tente novamente modificar a distribuição, torná-la centrada em torno de algo além de zero e ver se isso realmente muda alguma coisa, deveria? Bem, realmente não deveria, porque estas são todas medidas da forma da distribuição, e realmente não diz muito sobre onde essa distribuição está exatamente. É uma medida da forma. É disso que se trata os momentos. Então vá em frente e brinque com isso. Experimente valores centrais diferentes, experimente diferentes valores de desvio san e veja o efeito que ele tem sobre esses valores e não muda tudo. Claro, você esperaria que coisas como elas significam mudem porque você está mudando o valor médio. Mas variância que talvez não brincar, descobrir tudo bem, isso é momentos. Vamos seguir em frente. E lá você tem percentis e momentos percentis. Momentos conceituais bem simples. Parece difícil, mas é bem fácil entender como fazê-lo. E é fácil e python para. Então você tem isso debaixo do cinto. Vamos seguir em frente 17. um curso de Crash no matplotlib: Então você sabe que seu encontro é tão bom quanto você pode apresentá-lo para outras pessoas, sério? Então vamos falar sobre plotagem e gráficos seus dados e como apresentar para outros e fazer seus gráficos parecer bonitos estavam em Introduza Matt Plot Lib, que é uma biblioteca que você pode usar em python para fazer gráficos bonitos, e eu vou mostrar alguns truques sobre como torná-los tão bonito quanto você pode. Vamos lá. Vamos nos divertir com gráficos. Você sabe que é sempre bom para fazer fotos bonitas fora do seu trabalho, e isso vai lhe dar mais algumas ferramentas em seu baú de ferramentas para visualizar dois tipos diferentes de dados, usando diferentes tipos de artesanato e torná-lo bonito. Sabe, essas cores diferentes, estilos de linha diferentes, eixos diferentes, coisas assim. Então você sabe que não é apenas importante usar gráficos e visualização de dados para tentar encontrar padrões interessantes em seus dados, mas também é interessante apresentar suas descobertas bem a um público não técnico. Então vamos mergulhar em Matt enredo lib. Vá em frente e abra a lib esteira enredo I caderno Python e você pode brincar em torno dessas coisas comigo. Começaremos destruindo um gráfico de linhas simples. Então, neste exemplo, eu vou importar Matt Plot viveu até alta parcela como plt e vamos apenas referir-se a ele como plt. partir de agora neste caderno e o que eu vou fazer usar usar o ponto torta entorpecido um arranjado para criar um eixo X preenchido com valores entre negativos três e três e argumentos de 30.1 E eu vou usar gráficos pi função Plot para plotar X e a função Y será norma dot pdf de x. Então eu vou criar uma função de densidade de probabilidade com uma distribuição normal baseada nos valores X. E eu estou usando o pacote de norma de estatísticas do site pi para fazer isso. Então, amarrá-lo de volta em nossa palestra anterior sobre funções de densidade de probabilidade aqui estamos plotando uma função de densidade de probabilidade normal usando esse lábio de plotagem. Então nós apenas chamamos o método de plotagem de pizza para configurar nosso enredo. E então nós o exibimos usando o gráfico ponto show e quando executamos isso, é o que obtemos. Gráfico muito pequeno com toda a formatação padrão. Digamos que eu queira traçar mais de uma coisa de cada vez para que você possa realmente chamar plotagem várias vezes antes de chamar mostrado realmente adicionar mais de uma função ao seu gráfico. Então, neste exemplo, estou chamando minha função original de apenas uma distribuição normal. Mas eu vou fazer outra distribuição normal aqui também, com uma média em torno de um ponto. Oh, em um desvio padrão de 00,5. E eu vou mostrá-los juntos para que você possa ver como eles se comparam e você pode ver por padrão. O Matt. Plot viveu escolhe cores diferentes para cada gráfico automaticamente para você, o que é muito bom e prático dele. Aí está você. Se eu quiser dizer isso a um arquivo, você sabe, talvez eu queira incluí-lo em um documento ou algo assim. Eu posso fazer algo assim em vez de chamar a trama tem show. Eu posso chamar plotagem tem, digamos figo com um caminho para onde eu quero salvar este arquivo e que formato eu queria em. Então, neste exemplo, eu tenho o mesmo enredo configurado em vez de show. Eu estou chamando seguro grande para este caminho e você vai querer mudar isso para um caminho real que existe em sua máquina. Se você estiver acompanhando, provavelmente não tem a pasta franca de um usuário no seu sistema. E lembre-se de que se você estiver usando Lennox ou Mac Os em vez de uma barra invertida, você vai usar barras e você não vai ter uma letra de drive. Então, com todos esses cadernos python, sempre que você vir um caminho como este, certifique-se de alterá-lo para um caminho real que funcione em seu sistema. Ok, mas eu estou no Windows aqui, e eu tenho os usuários francos pastas para que eu possa ir em frente e executar isso. E se eu verificar meu sistema de arquivos sob usuários, Frank. Com certeza, tenho um arquivo PNG do meu enredo. Eu posso abrir e olhar para ele, e eu posso usar isso em qualquer documento que eu quiser. Tão bem legal. Tudo bem, vamos seguir em frente. Digamos que eu não goste das opções padrão dos eixos desse valor, como se fosse ajustá-lo automaticamente ao conjunto mais apertado de valores de acesso que confinou, que geralmente é uma boa coisa a se fazer. Mas às vezes você quer coisas em uma escala absoluta, certo? Então, neste exemplo, eu estou definindo o limite X usando primeiro eu obter os eixos usando eixos Plata. Quero ter esses objetos de machados. Posso ajustá-los. Então, chamando Set Excelente. Eu posso definir o intervalo X de 55 negativo e definir enquanto no meu conjunto seu intervalo Y de 0 a 1. E você pode ver que aqui em baixo Meu ex valoriza o ar variando de noite menos 5 a 5 e por que ele vai de 0 a 1. E eu também posso ter controle explícito sobre onde essas marcas estão. Então eu estou dizendo que eu quero o X Tex para o Viet menos cinco em suas quatro minas, três etc. E por que ticks de 0 a 1 em incrementos de 10,1. Agora, eu poderia usar a função de intervalo para fazer isso de forma mais compacta. Mas a questão é que você tem controle explícito sobre onde exatamente essas marcas acontecem e você pode pular algumas. Você pode tê-los em qualquer incremento que você quiser ou em qualquer distribuição que você quiser. Além disso, é a mesma coisa. Uma vez que eu tenha ajustado meus eixos, Eu apenas chamar plotagem com as funções que eu quero plotar e chamar show para exibi-lo. E com certeza, aí você tem o resultado. E se eu quiser linhas de grade? Bem, mesma ideia. Tudo o que faço é chamar a grade de pontos nos eixos que recebo de volta dos eixos do Departamento de Defesa de Pipe Lott. E fazendo isso, eu recebo essas lindas linhas de grade, e isso torna um pouco mais fácil de ver onde um ponto específico está, embora isso atrapalhe as coisas um pouco, então um pouco de uma escolha estilística lá. E se eu quiser jogar com os tipos de leões e cores? Você poderia fazer isso também. Então você vê aqui que é realmente um parâmetro extra na função de plotagem , Conch string passável que descreve o estilo da linha. E neste primeiro exemplo, o que isso indica é que eu quero uma linha azul com uma linha sólida. Isso é o que o B significa. Azul no traço significa uma linha sólida, e para a minha segunda função, vou traçar em vermelho. Isso é o que o R significa e o cólon significa que eu vou traçar com pequenas marcas verticais até o fim. Eu corro que você pode ver que é o que ele faz, e você pode mudar, uh, diferentes tipos de estilos de linha lá. Além disso, você pode fazer uma barra dupla ou um traço duplo em vez, e isso lhe dá esta linha tracejada é um estilo de linha como em ah, traço ponto e você pode obter algo que se parece com isso. Então, quais são as diferentes opções lá? Eu poderia torná-lo verde com horror com cortes verticais. Lá vai você. Então divirta-se com isso. Se você quiser, experimente valores diferentes e você pode obter estilos de linha diferentes. Algo que você fará com mais frequência é rotular seus machados. Você sabe que nunca quer apresentar dados no vácuo. Você definitivamente quer dizer às pessoas o que ela representa. E para fazer isso, você pode usar o rótulo X e por que o rótulo funciona no gráfico de pizza para realmente colocar rótulos em seus eixos. Então eu vou rotular o eixo X Grable e o Wild Label Probability, e você também pode adicionar uma legenda e definir aqui. Normalmente, isso seria a mesma coisa. Mas só para mostrar que ele dizia de forma independente, eu estou sentado aqui em cima uma lenda, e você passa basicamente uma lista do que você quer nomear cada gráfico. Então meu primeiro gráfico será chamado delatores. Segundo graf vai ser chamado Jacks e o parâmetro look aqui indica em que local você queria que ele. Portanto, representa o canto inferior direito. Então vamos em frente e executar isso, e você pode ver que eu estou rastreando Grable contra probabilidade para ambos os discursos e pequena referência do Jack Dr. Seuss para você lá. Então foi assim que você disse machados, rótulos e lendas. Um pequeno exemplo divertido aqui se você está familiarizado com a Web quadrinhos X, K C D. E é um pouco de um ovo de Páscoa no loop de trama de tapete, onde você pode realmente traçar coisas no estilo XK CD, e você pode fazer isso Gráfico de colônia X K C D. Que tipo de coloca Matt plotagem ao vivo no modo X K C D. E depois que você fizer isso, as coisas vão começar a olhar com, você sabe, como esse estilo com tipo de fonte de quadrinhos e linhas rabiscadas automaticamente. E este pequeno exemplo simples mostra um pequeno gráfico engraçado aqui onde estamos traçando sua saúde versus tempo, onde sua saúde tem um declínio acentuado quando você percebe que você poderia cozinhar bacon sempre que quiser. E tudo o que estamos fazendo lá é usar esse método X K C D para entrar nesse modo. Um pouco de python interessante aqui e na verdade como estamos realmente montando este ofício juntos. Então, estamos começando fazendo uma linha de dados que não é nada além do valor um em 100 pontos de dados. E então usamos a velha píton. Vamos cortar operador para tomar tudo após o valor de 70 e subtrair dessa sub-lista de 30 itens, o intervalo de zero a 30. Então isso tem o efeito de subtrair fora de um valor maior linearmente como você passar 70, o que resulta em que está indo para baixo para baixo para zero além do 00.70. Então, um pequeno exemplo. Ali. Alguns python lista fatiando em ação lá em um pouco de uso criativo da função de intervalo para modificar seus dados. Agora voltando ao mundo real, podemos remover o modo de CD XK dizendo os padrões de RC nesse enredo ao vivo, e podemos voltar à carga normal aqui. Se você quiser um gráfico de pizza, tudo o que você precisa fazer é chamar a pizza de pontos de plotagem e dar-lhe uma matriz de seus valores, cores, rótulos e se você quer ou não itens explodidos. E se assim for, por quanto Então você pode ver aqui estou criando um gráfico de pizza com esses valores 12 55 para 32 14 . Vou atribuir cores explícitas a cada um desses valores rótulos explosivos para cada um desses valores. Vou explodir o segmento russo da torta em 20% e vou dar a este enredo um título chamado Locais de Estudantes e mostrar que é tudo o que há para ele. Fomos a um gráfico de barras também muito simples, uma ideia semelhante ao gráfico de pizza. Você deu uma matriz de valores e uma matriz de cores, e você apenas plotar seus dados. Então eu estou dizendo a ele para traçar a partir do intervalo de 0 a 5, usando esses valores y nesta matriz e usando sua lista explícita de cores. Vá em frente e mostre isso. E aí você tem seu gráfico de barras e um gráfico de dispersão. Isso é algo que veremos muitas vezes neste curso. Digamos que você tenha alguns atributos diferentes. Você quer um enredo para o mesmo grupo de pessoas ou coisas. Por exemplo, eles estavam aplaudindo idades contra renda ou algo para cada pessoa atingiu ponto representa uma pessoa, e estes eixos representam diferentes atributos dessas pessoas. A maneira como você faz isso com um gráfico de dispersão é chamar meu gráfico de pizza com dispersão usando os dois eixos que você deseja definir que dois atributos que contêm dados que você deseja um gráfico um contra o outro. Então vamos dizer, ter uma distribuição aleatória em X e Y, e eu espalhei isso em um gráfico de dispersão, e eu mostro isso é o que parece muito legal. Então você pode ver esse tipo de concentração no centro aqui por causa da distribuição normal que está sendo usada em ambos os eixos. Mas como é aleatório, mas não há correlação real entre esses dois. Finalmente, lembraremos como funciona um grama. Já vimos isso muitas vezes no curso, mas se você chamar, por exemplo, por exemplo, a distribuição normal centrada em 27.000 com um desvio padrão de 15.000 com 10.000 pontos de dados, Eu posso chamar gráficos de pizza, sibilou uma função sibilada graham, e você especifica os dados de entrada e o número de baldes que você deseja agrupar as coisas em seu histórico, Graham neste call show, e O resto é mágico. Finalmente, parcelas de caixa e bigodes. Então lembre-se da palestra anterior, e falamos sobre percentis tocou nisso um pouco novamente. Com uma caixa e um enredo de bigode. A caixa representa os blocos de relações sexuais para onde 50% de seus dados residem e, e, inversamente, outros 25% residem em ambos os lados dessa caixa. Mas a linha filha do e bigodes representam o intervalo dos dados, exceto para outliers. Então, definimos outliers em uma caixa e bigode parcela como qualquer coisa além de 1,5 vezes o inter quartil organizar ou o tamanho desta caixa. Então pegamos o tamanho dessa caixa vezes 1,5, e até esse ponto, isso é o que chamamos de blocos externos do núcleo. Mas qualquer coisa fora disso é considerado um outlier, e é isso que essas linhas representam aqui. É aí que nós ou definindo outliers com base em nossa definição com o gráfico de caixa e bigode . Agora, apenas para dar um exemplo aqui nós criamos alguns conjuntos de dados falsos onde temos uma distribuição uniforme , aleatória de dados, , e então nós adicionamos em alguns outliers no high-end e alguns outliers negativos nós bem E então podemos capitalizar oito essas listas todos juntos e criar um único conjunto de dados a partir desses três conjuntos diferentes que criamos usando torta entorpecida. Nós então tomamos esse conjunto de dados combinados de dados aleatórios de dados uniformizados e alguns outliers, e plotado usando plotagem de caixa de pontos. E é assim que você consegue um show de chamadas de caixa e bigodes para visualizá-lo. E lá vai você. Então você pode ver que está mostrando essa caixa que representa o inter 50% de todos os dados. E então nós temos essas linhas outlier onde você pode ver um pouco cruzes para cada indivíduo fora mentiroso que está nesse intervalo. Tudo bem, isso está na trama. Viva seu curso intensivo. Ponha as mãos nele. Na verdade, faça alguns exercícios aqui. Então, como seu desafio, eu quero que você crie um gráfico de dispersão que representa dados aleatórios que você fabrica sobre idade versus tempo gasto assistindo TV e você pode fazer isso o que quiser. Realmente? Se você tem um conjunto de dados fictício diferente em sua cabeça que você gostaria de jogar com, divirta-se um pouco com ele. Então crie um gráfico de dispersão que plota para conjuntos aleatórios de ajuda uns contra os outros e rotule seus eixos torná-lo bonito. Brincar em torno dele, divirta-se com ele. Tudo. E ele deve estar neste caderno Python que você precisa para referência qualquer para exemplos. Mas tenha algum problema, sinta-se à vontade para postar nas discussões para esta palestra e nós o ajudaremos . Então mantenha que eu caderno Python ao redor com suas dicas e truques para Matt Plot lib. É uma espécie de folha de truques, se você quiser, para diferentes coisas que você pode precisar fazer para gerar diferentes tipos de gráficos e diferentes estilos de artesanato, então eu espero que seja útil. 18. Visualização de dados com Seaborn: Tudo bem, vamos falar sobre Seaborne agora, que é basicamente Matt enredo lib plus, se você quiser. Tudo bem, então Seaborn é basicamente uma biblioteca de visualização que fica no topo do mapa, e tudo o que ele faz é torná-lo um pouco bonito de olhar. Mas também tem um monte de diferentes tipos de gráficos e gráficos que não tínhamos em Matt enredo ao vivo. E só desde que o exemplo vai começar novamente dizendo que o enredo viver na linha, que significa que queremos ver todos os nossos resultados como parte deste notebook em si dentro do navegador irá importar pandas como PD carregar um ponto de eficiência de combustível C S V arquivo que eu tenho carregado aqui para o meu site aqui e estes dados de Israel, a propósito. Então, esses são dados reais que vêm do EUA governo dos EUAsobre a eficiência de combustível de cada carro. Eles têm um recorde para o ano modelo 2019 e específico, Então vamos extrair algumas informações que podemos jogar com. Vamos começar extraindo o número de engrenagens desse quadro de dados resultante, e vamos fazer contagens de valor. E se você se lembrar de volta do nosso tutorial pandas, que basicamente nos dá de volta os dados que precisamos para um hist um grama que diz quantas vezes cada valor único ocorre em nosso quadro de dados. Então isso deve nos devolver uma Siri que mapeia os números de engrenagem para o número de vezes que cada valor único apareceu. Podemos então apenas traçar isso, dizendo que queremos um gráfico de barras. Então, agora, estamos apenas usando essa lib de enredo, como é apenas para visualizar esses dados. E aí você está, então você pode ver que Ah, transmissão de oito velocidades parece ser a mais comum, seguida de seis velocidades, e nós temos uma seguida de seis velocidades, espécie de queda exponencial de seus dois outros valores mais obscuros. Agora vamos ver nascido para ver nascido em sua forma mais básica pode apenas fazer Matt enredo ao vivo olhar melhor. Então, tudo o que precisamos fazer, digamos, importar Seaborn como SNS, e então podemos dizer sns dot set e tudo o que faz é substituído. As configurações padrão na trama Matt vivem com as configurações visualmente mais modernas que Seaborne nos deu. Aquela erva viva é bem velha. Quero dizer, ele remonta àquela trama, e é meio que mostrando sua idade francamente. Então, isso dá a ele uma aparência e sensação mais modernos. Então agora podemos fazer exatamente o mesmo gráfico de barras. Mas com os padrões Seaborne aplicados, você pode ver um pouco mais bonito. Nós temos, você sabe, mais, Ah, tons silenciosos aqui. E também é contra este pequeno fundo gráfico agradável aqui que realmente permite que você visualize esse grande um pouco melhor caso contrário, praticamente o mesmo. Mas é só um pouco mais fácil para os olhos, certo? Vamos mergulhar em um pouco mais de profundidade aqui. Vamos dar uma olhada nos dados com os quais estamos lidando. Então aqui está o nosso quadro de dados brutos que nós realmente carregamos que veio do governo aqui , e nós apenas tivemos que dar uma olhada nas primeiras 5 linhas aqui como um exemplo. Então as informações que eu extraí são o fabricante de automóveis como Aston Martin ou Volkswagen. A linha do carro, que é basicamente o modelo do deslocamento do motor. Esse é o número de líderes que o motor é. Quantos cilindros de ar no motor, o tipo de transmissão. É um MPG da cidade. eficiência de combustível atinge a eficiência de combustível rodovia, a cidade combinada mais rodovia, meu valor mpg e o número de engrenagem Cidades Car tem. Então essa é a informação que temos que jogar aqui agora. See Born tem algumas parcelas que Matt trama ao vivo não oferece em tudo. Então, por exemplo, há dis plot, e essa é a maneira de realmente traçar um hist um grama junto com uma distribuição suave sobre. Colocado em cima disso assobiou um grama. Então vamos dar uma olhada nisso na coluna calma e PG. Então aqui temos um graham história de quantas vezes cada valor dentro do comentário. PG é exibido. Você pode ver que temos um tipo de pico por aqui. Você sabe, o baixo, baixo para meados dos anos 20, certo? Isso parece ser uma espécie de como a classificação mpg mais comum para um veículo. E nós podemos sobrepor este tipo de curva de tendência aqui automaticamente faz parte dos gráficos de dis. Então isso é algo que Seaborn está fazendo para nós automaticamente sem nós mesmo tentando para que eles disseram um pouco mais fácil de visualizar o trans maior aqui. E você pode ver que isso é meio útil porque nós temos esses, como valores estranhos entre esses outros valores. Então parece que parece haver algum tipo de quântica que ocorre em nossos dados que podemos suavizar um pouco com essa linha de tendência. Às vezes, é uma maneira útil de visualizar as coisas. Outra coisa que você pode ter em Seaborn é a trama de par que também é algo único para ver Born. E isso é legal porque ele permite que você visualize gráficos de cada combinação possível de , ah, conjunto de atributos. Então você pode, tipo, olhar para todas as formas possíveis de visualizar um conjunto de valores e tentar encontrar aqueles que parecem interessantes que podem ser úteis para investigar mais profundamente. Então, como exemplo, vamos classificar carros por quantos cilindros eles têm, e vamos procurar relações entre quantos cilindros cada carro tem e sua classificação de cidade mpg lá auto-estrada mpg classificação e sua classificação mpg combinada. Então vamos começar extraindo essas colunas do nosso quadro de dados em DF dois. Vamos usar essa mesma sintaxe tão introduzida em nosso tutorial calcinha. Basta extrair essas colunas em um novo quadro de dados, então agora temos um novo conjunto de rosa aqui que contém apenas os cilindros e as colunas NPG de nossos dados originais. Agora veja isso. Se fizermos um gráfico de pares nesse novo quadro de dados, você tem que fazer? Podemos dizer que queremos nos concentrar nos cilindros como nossa principal coisa que queremos olhar e com uma dada altura para dizer que queremos que este seja um bom e grande enredo que podemos visualizar facilmente. Deixe isso correr. Aqui vamos nós. Então o que temos aqui é como uma grade de grades, certo? Então isso é meio legal. Vamos rolar um pouco para baixo para que possamos visualizar o que está acontecendo aqui para que você possa ver que temos aqui cada coluna. E aqui temos tudo, cada coluna também. Então, se você quiser um comentário plotagem PG versus cilindros, você pode olhar assim aqui. Se você quer uma estrada enredo, mpg versus City I mpg. Você pode olhar para este gráfico aqui para que você possa ver aqui que você pode encontrar relações lineares interessantes entre diferentes colunas ah aqui. Então, por exemplo, apenas olhando para a coluna Cilindros aqui, podemos ver que há uma relação bastante clara entre o número de cilindros e o mpg, se é cidade, rodovia ou combinado. Então é o número de cilindros aumenta que podemos ver que esse mpg é tem que estar caindo. Mas há um realmente generalizado aqui para veículos de quatro cilindros. Então isso é mais para a história aqui no mundo dos veículos de quatro cilindros. Alguns são muito ruins. Alguns são muito bons, muito grandes espalhados lá. Então já temos algumas informações úteis sobre nossos dados, então também podemos usar um gráfico de dispersão e Seaborn 1.9. É apenas uma versão mais bonita do mapa. Viva um. Basicamente, você pode plotar pontos de dados individuais em quaisquer dois eixos desejados e ver como seus dados são distribuídos entre essas dimensões. Então, digamos que o gráfico de dispersão do ponto sns. Vamos dizer que o eixo X será o deslocamento do motor. Por que vai ser combinado mpg, mpg? E para os dados em si, vamos nos referir ao nosso quadro de dados DF de nossos dados brutos. Então isso vai arrancar essas duas colunas e traçá-las umas contra as outras em um gráfico de dispersão . E aí está. Então, cada ponto individual em nosso quadro de dados está sendo espalhado neste gráfico que mapeia os pontos específicos do deslocamento do motor e o valor mpg combinado. E novamente, você pode ver Ah, há um relacionamento aqui. Então, já estamos recebendo alguns, você sabe, insights de visualizar esses dados novamente. Os deslocamentos mais baixos do motor tendem a ter um muito difundido de M p G, mas em geral, quanto maior o deslocamento do motor, o pior, a eficiência de combustível, o que não deve ser tão grande Surpresa, certo? Outra coisa legal e Seaborn é a trama conjunta. Isso permite que você visualize, dispersão gráficos e assobiou um gramas ao mesmo tempo em cada eixo. Então vamos dar uma olhada na mesma propagação do deslocamento do motor versus convento PG. Mas desta vez vamos fazer um plano em vez de um gráfico de dispersão. Aqui está o que parece, então nós temos as mesmas parcelas de dispersão antes, mas nós temos um histórico gramas sobre cada acesso para que possamos ver aqui deste lado o sibilado, um grama de avaliações mpg. Ok, então nós podemos visualizar isso muito facilmente e fonte ver como esses dados todos rolam para cima e para cima aqui. Temos um histórico de RAM dos valores de deslocamento do motor também, então isso torna muito mais fácil dizer que o deslocamento mais comum do motor é em torno de. Um pouco menos de 22 líderes, certo? Um pouco menos de 22 líderes, Então isso é um pouco de uma maneira mais fácil de, como tentar descobrir quantos pontos ar em uma determinada coluna aqui uma seção porque muitas vezes eles podem se sobrepor e que não é realmente tão intuitivo para descobrir a história. Ram torna essa distribuição de dados mais fácil de ver. Outra coisa que Seaborn oferece é o gráfico L M, e isso é apenas um gráfico de dispersão com uma regressão linear. Aplicar a ele automaticamente para que eu possa dizer que o mesmo gráfico de dispersão, mas em vez gráfico de dispersão e plotagem de cordeiro me dá de volta este mesmo Scott exatamente um enredo, mas com uma regressão linear aplicada a ele. E se você olhar realmente de perto, você pode ver esse tipo de área sombreada em torno de lá para isso. Dê qualquer tipo de seus limites nessa regressão, e falaremos sobre regressão linear e mais morte mais tarde neste curso. limites nessa regressão, Mas basicamente estamos ajustando uma linha para o dia em que temos um conceito muito simples. De volta ao Matt trama ao vivo. Falamos de box plot e Seaborne também tem sua própria versão. Caixas e bigodes parcelas. Neste exemplo. Vamos dar uma olhada em cada fabricante de veículos e visualizar a classificação mpg em todos os veículos que eles produzem. Então isso vai nos dar a propagação de classificações mpg em todos os veículos que cada fabricante oferece. Ok, então nós vamos fazer basicamente um gráfico de caixa individual para cada fabricante mostrando a distribuição de classificações NPG em toda a sua linha de produtos. Peguei-o. Certo, então há muitos fabricantes, então vamos ter que fazer algumas coisas aqui para tirar proveito do que Seaborne oferece. Primeiro de tudo, vamos definir o tamanho da figura para 15 5 Isso só torna maior para que possamos caber mais informações na tela. Bem, então defina o gráfico de caixa em si estava ligado. Digamos que queremos traçar o fabricante no eixo X e os valores mpg combinados no eixo Y usando nosso quadro de dados original. Aqui está o DF de dados e vamos salvar esse gráfico de caixa em uma variável X. Vamos então definir os rótulos de ticks nesse gráfico para ter uma rotação de 45 graus. Assim eles serão mais fáceis de ler porque há muitos deles. Então a sintaxe aqui é Ron, Say, sit set X tags nos rótulos X tick que obtemos de volta desse gráfico com uma rotação de 45 graus. Então está basicamente dizendo, eu quero definir os rótulos no eixo X para os rótulos existentes. Você sabe, deixá-los inalterados, mas especifique uma rotação de 45 graus. Então vamos em frente e chutar isso fora do set saída marcada rótulos Command colocar para fora alguma saída . Aqui é parte de seu processo ah aqui. Mas aqui está o gráfico em si bastante interessante, então você pode ver aquele ângulo de 45 graus que especificamos nos rótulos aqui sendo usados lá. Isso é muito mais fácil de ler, e você pode olhar para a propagação de valores mpg para cada fabricante individual. Muito interessante. Volkswagen tem uma gama muito ampla, por exemplo, enquanto a Aston Martin é bastante agrupada. Volvo são Volvo também muito apertado aqui, você sabe, coisas tão interessantes. Além disso, General Motors tende a ser agrupada aqui em torno de, você sabe, meados dos anos 20 ou mais, mas eles têm um monte de outliers aqui em cima na extremidade superior também. Então parece que há alguns carros muito eficientes da General Motors lá fora também. Então temos Ferrari, obviamente não muito bom mpg, porque as pessoas que dirigem Ferraris se preocupam mais com desempenho e eficiência de combustível. Eu acho que sim. Insights interessantes a serem adquiridos a partir desta caixa e bigodes traçam aqui a eficiência de combustível em todos os modelos para cada fabricante de veículos que sabemos sobre coisas divertidas, e é bonito de olhar. É outra vez. São cores modernas, agradáveis, e isso é o que C um dá para você fora da caixa. Há também os gráficos de enxame, que, que, em vez de caixas e bigodes, traça cada ponto de dados individual. Mas na verdade os agrupa de uma forma que torna mais fácil visualizá-los. Então faz mais sentido. Quando você olhar para ele, vamos apenas fazer um enredo de enxame exatamente a mesma coisa. Assim, no nome do fabricante e mpg combinado do nosso quadro de dados DF. Novamente, vamos definir a rotação para 45 graus no eixo X e iniciá-lo em Lee. Diferentes Sears estavam fazendo um enredo de enxame em vez de um gráfico de caixa que você pode ver aqui é da caixa e bigodes. Estamos apenas a obter um formato diferente aqui, onde estamos a agrupar-nos. Estes pontos aqui para realmente representar a distribuição dos dados melhor. Então cada veículo individual está sendo traçado até um ponto na sucata, mas estamos agrupando esses pontos horizontalmente para tentar refletir uma distribuição desses pontos um pouco melhor. Então é uma maneira de olhar para os dados brutos um pouco mais do que em um gráfico de caixa. Mas ainda está agrupado de uma forma que lhe dá a mesma informação que uma caixa de bolsos com informações mais refinadas. Então isso é o que chamamos de enredo de enxame. Você pode obter os mesmos resultados com isso. Então, novamente, você sabe, olhando mais profundamente para a Volkswagen, você pode ver que eles têm um bastante difundido aqui. Há um monte em torno de 30 e um monte em torno de 10 e nada muito no meio. Então um caso curioso, e eu acho que isso é porque a Volkswagen realmente possui um monte de marcas diferentes que são direcionadas a mercados muito diferentes. Então, provavelmente estamos vendo os veículos de consumo aqui em cima. E os veículos de desempenho aqui em baixo seria o meu palpite. General Motors está muito bem agrupada nesta faixa. Aqui estão eles, mais sobre veículos de mercado de massa, então eles meio que querem estar naquele ponto doce lá de coisas que funcionaram razoavelmente bem, mas também funcionam bem para tipo de apelo. Em breve público americano de qualquer maneira, apenas outra maneira de olhar para ele. Mais um é o gráfico de contagem. Basicamente, a mesma coisa é uma história, Graham, mas é para dados categóricos, então um grama sibilado só é um grama se você está lidando com valores numéricos. Se você está fazendo com categorias, no entanto, isso é chamado de gráfico de conta. Então vamos apenas olhar para ele como um exemplo novamente, vamos extrair os nomes dos fabricantes e apenas dar uma olhada em quantos carros cada fabricante faz. Então vamos contar o gráfico, contando quantos veículos cada fabricante tem e novamente irá girá-los em 45 graus para que possamos realmente ler esses rótulos X. E aí está. Então, assim como uma história Graham, exceto que ele é dividido por categoria, então não há significado inerente real para a ordem real em que eles aparecem. Há apenas contagens divididas por categoria, isso é tudo o que há para ele. Isso é tudo o gráfico de conta ISS. Então você pode ver claramente aqui que a General Motors tem o maior número de modelos de carros disponíveis, seguido de perto pela BMW e, você sabe, novamente, essas grandes companhias aéreas que possuem outros fabricantes. Então, você sabe, não estamos necessariamente dizendo que existem mais de 100 modelos BMW diferentes no mercado em 2019. Essas incluem outras marcas. O ônus bem, mas, você sabe, no ah, do outro lado aqui há um número muito poucos de modelos Aston Martin em um número muito baixo de modelos Rolls Royce, por exemplo, para que você possa realmente ver a distribuição aqui de quantos modelos cada fabricante produz muito facilmente. Finalmente, vamos dar uma olhada em um mapa de calor, mapas de calor ou diversão para que eles estejam longe de traçar Ah dois dados d, mas onde as cores representam os valores individuais dentro de cada célula dessa tabela, então faz mais sentido novamente. Se você apenas olhar para ele, vamos fazer uma tabela dinâmica de nosso quadro de dados original para criar uma classificação mpg média de mapeamento de tabela D para cada combinação do número de cilindros e deslocamento do motor . Vamos dar uma olhada neste mapa de calor que temos aqui. É uma tabela dinâmica no quadro de dados original apenas para extrair essas duas informações D basicamente uma matriz de dois D que mapeia o mpg combinado para cada combinação de cilindros e deslocamento do motor . Então, basicamente, estamos correndo aqui. É como um quadro de dados, exatamente onde estavam mapeando cilindros contra o deslocamento do motor com células individuais no gráfico que contêm a combinação de geladeira mpg. E vamos agregar estes juntos usando meios que vamos dizer que queremos olhar através de todos os valores diferentes e pegar a média para cada combinação individual de cilindros e deslocamento do motor. Então, se há mais de um carro que tem a dizer, você sabe ah, quatro cilindros para apontar, um motor líder levará a média de todos esses carros juntos para chegar ao valor nessa célula da trama. Ok, então este é o que o enredo parece como um mapa de calor. Agora muito da data está faltando porque aparentemente não existe tal coisa como um motor de 12 cilindros , 1,4 litros. , Isso seria loucura. Mas o's representa todos os valores para os quais temos dados em nosso quadro de dados, e a cor real de cada ponto corresponde ao valor dessa célula. Então, por exemplo, aqui está a lenda do que essas cores significam. Preto está em algum lugar em torno de 12 mpg. Então, se você tem um motor de 16 cilindros, oito litros, isso vai ter uma eficiência de combustível realmente horrível em média de apenas 12 mpg. Ok, então é assim que você lê essa coisa. E você pode ver apenas olhando para ele que à medida que você vai até este final da trama neste canto aqui você tem um número baixo de cilindros, baixo deslocamento do motor. Estes têm cores muito claras porque são mais eficientes em termos de combustível. À medida que você desce para este canto aqui com muitos cilindros e lotes de deslocamento do motor , você começa a cada vez pior, eficiência de combustível. Portanto, este mapa de calor torna muito fácil visualizar como essas classificações mpg reais mudam em função de onde estão neste gráfico. Então isso é um mapa de calor. Tudo bem. Se você quiser experimentar isso por conta própria. Aqui está um pequeno desafio para você. Então tente explorar a relação entre o número de marchas que o carro tem e sua classificação mpg combinada. E eu quero dividir olhos essas duas dimensões de dados em um monte de maneiras diferentes para um gráfico de dispersão fazendo Ellen trama para um gráfico conjunto para um sangue de caixa e para um enredo de enxame. Que conclusões você pode tirar disso? Então, antes de rolar para baixo, dê para tentar você mesmo. Deixei alguns lugares vazios aqui para brincar e tentar. Sem espreitar antes do tempo, mas tenho a minha solução lá em baixo. Se você quiser dar uma olhada quando terminar e comparar seus resultados à mente. Então dê uma chance, espero obter alguns resultados. Mas se você ficar preso, sinta-se livre para rolar para baixo e não bico. Mas o meu ar respostas lá em baixo. Certo, então divirta-se com isso. E espero que isso torne Seaborn um pouco mais real para você de novo. Vamos usá-lo um pouco ao longo deste curso. É uma biblioteca de visualização muito útil que também é bom olhar e lá você tem 19. Covariance e correlação: Em seguida, vamos falar sobre co variância e correlação. Então, digamos que eu tenha dois atributos diferentes de algo, e eu quero ver se eles estão realmente relacionados um com o outro ou não. Isso lhe dará as ferramentas matemáticas que você precisa para fazer isso e irá mergulhar em alguns exemplos e realmente descobrir co variância e correlação usando Python. Em seguida, vamos falar sobre co variância e correlação. Estas são maneiras de medir se dois atributos diferentes estão relacionados entre si em um conjunto de dados, que é cumbia. Uma coisa muito útil para descobrir. Então vamos falar sobre covariância. Então imagine que temos um gráfico de dispersão aqui, e talvez cada um desses pontos de dados represente uma pessoa que medimos. E estamos aplaudindo talvez sua idade em um eixo versus sua renda em outro. Então cada um desses pontos representaria uma pessoa ou diria que é exe Valley, representava sua idade, e seu porquê representava sua renda. Está bem, estou a fazer com que este escritório seja um dado falso. Agora que um gráfico de dispersão parecido com este, você vê que esses valores tendem a estar em todo o lugar. E isso diria que não há correlação riel entre idade e renda com base nesses dados, certo, como se isso não importasse que, para qualquer idade, isso poderia ser uma enorme variedade de rendimentos. Eles tendem a ser agrupados em torno do meio. Mas, você sabe, nós não estamos realmente vendo uma relação muito clara entre esses dois atributos diferentes de idade e renda. Agora, em contraste, aqui à direita, você pode ver que há uma relação linear muito clara entre idade e renda, então co variância e correlação nos dá um meio de medir o quão apertado essas coisas estão correlacionados. Então, você sabe, eu esperaria uma correlação muito baixa ou co variância para esses dados à esquerda, mas uma variância Corvair muito alta e correlação para os dados à direita. Então esse é o conceito de variância central e correlação mede quanto esses dois atributos que eu meço parecem depender um do outro, então medindo co variância matematicamente. É um pouco difícil, mas vou tentar explicar. É realmente mais importante que você entenda como usá-lo e o que significa, mas realmente derive-lo. Se você pensasse nisso, esses atributos dos dados são vetores de alta dimensão. O que vamos fazer em cada atributo para cada ponto de dados é calcular a variância da média em cada ponto. Então agora eu tenho esses vetores de alta dimensão alcançar cada ponto de dados cada pessoa, se você preferir corresponde a uma dimensão diferente. E eu tenho um vetor neste espaço dimensional alta que representa todas as variações da média para uma idade digamos para um atributo. E então eu tenho outra vitória que representa todas as variações da média para alguns outros atributos, como renda. E o que eu faço então é pegar esses vetores que medem as variações da média para cada atributo, e eu pego o que é chamado de produto ponto entre os dois e matematicamente. Essa é uma maneira de medir o ângulo entre esses vetores de alta dimensão. Então, se eles não estão sendo muito próximos um do outro, isso me diz que essas variações estão praticamente se movendo em um bloqueio com o outro através desses atributos diferentes. E se eu pegar esse produto final e dividir com um tamanho amostral, foi assim que terminou com a quantidade de covariância. Agora você nunca vai ter que calcular isso você mesmo da maneira mais difícil. Você sabe, vamos ver como fazer isso em Python, mas conceitualmente, é assim que funciona agora. O problema com co vários é que pode ser difícil de interpretar. Então, se eu tiver, AH, co variância é próxima de zero. Bem, eu sei que isso está me dizendo que não há muita correlação entre essas variáveis em tudo, mas, ah, grande co variância implica que há uma relação. Mas quão grande é? Dependendo das unidades que estou usando,pode haver maneiras muito diferentes de interpretar esses dados. Dependendo das unidades que estou usando, Então isso é um problema. Essa correlação do Saul. Ele normaliza tudo pelo desvio padrão de cada atributo, e ao fazê-lo, posso dizer muito claramente. Uma correlação negativa significa que há uma correlação inversa perfeita. Assim, à medida que um valor aumenta, o outro diminui e vice-versa. Uma correlação de zero significa que não há nenhuma correlação entre esses dois conjuntos de atributos, e uma correlação de um implicaria uma correlação perfeita onde esses dois atributos estão se movendo exatamente da mesma maneira que você olha diferentes pontos de dados. Portanto, lembre-se de correlação não implica causalidade apenas porque você encontra um valor de correlação muito alto não significa que um desses atributos causa o outro. Significa que há uma relação entre os dois, e essa relação pode ser causada por algo completamente diferente. A única maneira de determinar a causa é através de um experimento controlado, sobre o qual falaremos mais tarde. Vamos sujar nossas mãos e computar correlação e causalidade e ver como realmente fazemos isso em Python. Certo, vamos sujar nossas mãos com variância e correlação aqui com algum código python real . Então, novamente, como eu expliquei para os slides, você pode pensar conceitualmente de co variância é uma espécie de tomar esses vetores multidimensionais de variâncias da média para cada atributo e calcular o ângulo entre eles como um medida da variância. E a matemática para fazer isso é muito mais simples do que parece. Sabe, estamos falando de vetores de alta dimensão. Quero dizer, soa como, você sabe, coisas de Stephen Hawking, mas realmente, para um ponto de vista matemático, é bem simples. Então eu vou fazer isso da maneira mais difícil. Numb Pie tem um método para calcular a variância co para você, e falaremos sobre isso mais tarde. Mas, por enquanto, quero mostrar que você pode realmente fazer isso. Você sabe, dos primeiros princípios. Assim, co variância novamente é definida como o produto ponto, que é uma medida do ângulo entre dois vetores do vetor dos desvios da média para um dado conjunto de dados e os desvios da média para outro dar em vez de dados para os mesmos dados, pontos de dados. E então dividimos isso pelo final menos um. Neste caso, porque estamos realmente lidando com uma amostra assim d e média ou desvio de ser função está tomando em um conjunto de Data X realmente lista, e é computando a média desse conjunto de dados. E aqui está um pouco de truques de python para você. Esta sintaxe está dizendo que eu vou passar por eu vou criar uma nova lista e passar por cada elemento do próximo. Chame-o de X I e, em seguida, retorne a diferença entre X I e a próxima média Me para todo o conjunto de dados. Portanto, esta função retorna uma nova lista de dados que representa os desvios da média para cada ponto de dados. Então minha função co variância fará isso para ambos os conjuntos de dados que entram, dividido pelo número de pontos de dados menos um. Lembra daquela coisa sobre amostra versus população? Bem, isso está entrando em jogo aqui, e então podemos usar essas funções e ver o que acontece. Então, neste exemplo, vou fabricar alguns dados que vão tentar encontrar uma relação entre velocidades pagas . Essa é a rapidez com que a página é renderizada em um site e quanto as pessoas gastam. Então, por exemplo, na Amazon, estávamos muito preocupados com a relação entre a rapidez com que as páginas renderizam e quanto dinheiro as pessoas gastam depois dessa experiência. Você sabe, nós queremos saber. Existe uma relação real entre o quão rápido o site é e quanto dinheiro as pessoas realmente gastam no site? Então esta é uma maneira de você descobrir isso. Então vamos apenas gerar alguns dados aleatórios normalmente distribuídos aleatoriamente para velocidades pagas e valores de compra. E como é aleatório, isso não vai ser uma correlação entre eles. Então, só uma verificação de sanidade aqui vai começar. Comece por dispersão plotando este material, e você verá que ele tende a se agrupar ao redor do meio devido à distribuição normal em cada atributo. Bem, não há nenhuma relação real entre os dois, você sabe, para qualquer velocidade paga é uma grande variedade de quantidade gasta e para qualquer quantia gasto, há uma variedade de velocidades pagas. Portanto, não há correlação riel lá, exceto aqueles que estão saindo através da aleatoriedade ou através da natureza da distribuição normal . E com certeza, se calcularmos a variância de co nesses dois dados, dois conjuntos de atributos, acabamos com um valor muito pequeno. Negativo 0,7 Então esse é um valor de co variância muito pequeno perto de zero. Isso implica que não há nenhuma relação real entre essas duas coisas. Agora vamos tornar a vida um pouco mais interessante. Vamos realmente fazer a quantidade de compra de função real de velocidade paga. Então, estamos mantendo as coisas um pouco aleatórias aqui, mas estamos criando uma relação real entre esses dois conjuntos de valores. Assim, para um dado usuário tendência perdoado, há uma relação real entre as velocidades pagas que eles encontram e a quantidade que eles gastaram. E se traçarmos isso, podemos ver que é realmente essa curva aqui onde as coisas tendem a estar bem alinhadas. As coisas ficam um pouco confusas aqui perto do fundo só por causa de como as coisas acontecem aleatoriamente . Mas se competirmos a variação de co aqui, acabamos com um valor muito maior. Oito negativo. E você sabe que é a magnitude desse número que importa. Tese assinada, positiva ou negativa implica apenas uma correlação positiva ou negativa. Mas esse valor de oito diz: “ Ei, Ei, esse é um valor muito maior que zero. Então, havia algo acontecendo lá. Mas novamente, é difícil interpretar o que oito realmente significa. Então é aí que entra a correlação, onde normalizamos tudo pelos desvios padrão. Então, novamente, fazendo isso a partir dos primeiros princípios, podemos pegar a correlação entre dois conjuntos de atributos. Calcule o desvio padrão de cada covariância computacional de cada co variância entre estas duas coisas e divida pelos desvios padrão de cada conjunto de dados. E isso nos dá o valor de correlação que é normalizado para negativo 1 para 1, e acabamos com um valor de negativo 0,4, que nos diz que há alguma correlação entre essas duas coisas na direção negativa . Não é perfeito. Não é uma linha perfeita, você sabe, que seria negativa. Mas há algo interessante acontecendo lá e de novo. Um coeficiente de correlação negativo significa correlação negativa perfeita. Zero significa sem correlação, e um significa perfeita correlação positiva. Agora, Pichon entorpecido na verdade computa correlação para você usando a função de coifa principal. Então, se ele quisesse fazer isso da maneira mais fácil, poderíamos apenas dizer despejar iDOT core coif, velocidades pagas, quantidade de compra. E o que isso lhe dá de volta é uma matriz que lhe dá a correlação entre todas as combinações possíveis dos conjuntos de dados que você passa. Então, a maneira de ler isso é a resposta. Há uma correlação perfeita entre comparar velocidades pagas para si mesmo e quantidade de compra para si mesmo, o que é esperado. Mas quando você começa a comparar a velocidade paga com a quantidade de compra ou quantidade paga velocidade passando por cima deste valor nativo de 10.4005, que é aproximadamente o que temos quando fizemos da maneira mais difícil, vai haver um pouco de precisão erros, mas você sabe, isso não é realmente importante. Agora. Poderíamos forçar uma correlação perfeita fabricando uma relação totalmente linear, e foi isso que fizemos neste exemplo e novamente aqui. Esperaríamos que a correlação fosse negativa para uma correlação negativa perfeita . E, na verdade, é com isso que acabamos. Tudo bem, então, novamente, uma correlação de lembrete não implica a causa da natureza. Só porque as pessoas pagam, as pessoas podem gastar mais se tiverem velocidades pagas mais rápidas. Talvez isso signifique que eles podem pagar uma melhor conexão com a Internet. Talvez isso não signifique que haja uma causalidade entre a renderização das páginas mais rápidas e quanto as pessoas gastam. Mas diz-lhe esta relação interessante que vale a pena investigar Mawr. Então você não pode dizer nada sobre causalidade sem fazer um experimento. Mas Correlation pode dizer quais experimentos você pode querer executar, então coloque suas mãos sujas. Chris Lee “I Want You “para usar a função “Numpie Doc U've”. Isso é realmente uma maneira de obter torta entorpecida para calcular variância co para você. Vimos como calcular a correlação usando a função coif principal, então volte e execute esses exemplos. Ele está usando a função sem torta entorpecida ponto c o V em ver o que se você obter os mesmos resultados ou não está bem, você deve. Eles devem estar muito perto. Então, em vez de fazê-lo da maneira mais difícil com a função co variância que eu escrevi do zero , basta usar torta entorpecida e ver se você obtém os mesmos resultados novamente. É que o objetivo deste exercício é te familiarizar com o uso de torta entorpecida e aplicá-la aos dados reais. Então, faça isso. Veja onde você chega, então aí você tem. Co variância e correlação tanto na teoria e na prática, Técnica muito útil. Dedo tem tão definitivamente se lembrar dessa palestra. Vamos seguir em frente. 20. Exercício: probabilidade condicional: Vamos falar sobre probabilidade condicional. Conceito bem simples. É basicamente a probabilidade de algo acontecer dado que outra coisa ocorreu primeiro, que depende de bons exemplos do mundo real. Se você vai para a amazon dot com e olhar para o futuro, é como as pessoas que compraram isso também compraram, ou as pessoas que viram isso também viram. Você pode pensar nisso em termos de probabilidade condicional. Quais são as chances de comprar outro item, já que você comprou esse outro item primeiro ? O mesmo conceito. Agora a notação em probabilidade condicional é provavelmente a parte mais confusa, então vamos tentar orientá-lo nesta palestra. Mas ajudaria se você pegar uma xícara de café extra ou colocar seu boné de pensamento o que for preciso para entrar em seu estado mental mais afiado, porque esta é uma das coisas mais desafiadoras para superar. Com isso, vamos mergulhar e vou tentar torná-lo o mais simples possível. Vamos falar sobre probabilidade condicional novamente. Conceito simples com a notação contribui às vezes, então vamos apenas mergulhar no que essa notação é e o que ela significa Now. O conceito básico de probabilidade condicional é que se eu precisar, eventos que dependem uns dos outros, eu posso fazer uma declaração sobre a probabilidade de que o segundo evento ocorra. Dado que o primeiro evento ocorreu agora, a notação que vamos usar aqui é dupla. Há p a vírgula B, e isso significa que a probabilidade de ambos A e B ocorram independentemente um do outro. E então nós temos p de ser bar A. Essa é a probabilidade de ser dado que um ocorreu. Então isso implica alguma dependência entre B e A. E nós podemos amarrar tudo isso juntos usando esta equação dandy útil aqui, onde a probabilidade de ser dado um que é a probabilidade condicional de ser dado evento A é igual ao probabilidade de A e B juntos divididos pela probabilidade de um Então você pode usar isso para provocar a condicional a dependência entre ser um Vai fazer mais sentido com um exemplo real. Então vamos dar uma olhada em um exemplo real. Digamos que eu dê aos meus alunos testes e, no geral, 60% dos meus alunos passaram em ambos os testes. Então, se chamarmos os testes A e B p vírgula, ser seria 60%. No entanto, o primeiro teste foi mais fácil. 80% dos meus alunos passaram por essa. Então, se be é o segundo teste e a é o primeiro teste P de um seria 80% neste exemplo, direita e ver. Isso se confunde muito rapidamente com todos os A's e B's e vírgulas e canos. Mas vamos rever novamente. Assim, 60% dos alunos passaram em ambos os testes. Opiáceos são 60% commodious. O primeiro teste foi mais fácil. 80% passaram. teste de sabão de A é de 80%. Então, agora, como faço para descobrir a porcentagem de alunos que passaram no primeiro teste que também passaram no segundo? Qual é a probabilidade de passar no meu segundo teste? Tendo em conta que passou no primeiro teste? Isso é probabilidade condicional. Então estamos pedindo a probabilidade da barra B a. A probabilidade condicional de passar o teste para, dado que você passa no teste um e podemos calcular isso usando a equação que acabamos de ver p de ser Bari. A probabilidade condicional de ser dada a é capaz de a probabilidade não condicional p uma vírgula B, que foi 60% sobre a probabilidade de A, que é 80%. E se o fizermos, essa divisão foi com 75%. E podemos dizer que 75% é a probabilidade condicional de passar no segundo teste. Dado que você passa o 1º 1 faz sentido, bater, pausar e digerir isso por um minuto. Porque com todas essas letras e diferentes marcas de pontuação e o que não, pode ficar confuso. Então deixe-me apenas mergulhar você em um caderno e vamos passar por um monte de outros exemplos para tentar fazer esta notação e como lidar com todas essas coisas segunda natureza para você. E quando terminarmos, vou te dar um pouco de exercício na prática você mesmo. Ok para este exercício, eu quero que você abra o caderno de exercícios de probabilidade condicional em seus materiais do curso , e eu tentei passar por isso um pouco devagar. Isso é uma coisa difícil de enrolar um pouco sua cabeça. O que vamos fazer nesta atividade é gerar 100.000 pessoas aleatórias e digamos que todos eles são clientes em um grande site de comércio como a Amazon ou algo para cada uma dessas 100.000 pessoas irá atribuí-los aleatoriamente a uma determinada faixa etária, tendo em seus vinte ou trinta anos ou lá quarenta, todo o caminho até seus setenta. E vamos criar uma probabilidade condicional de uma dependência entre sua probabilidade de comprar algo e sua idade. Basicamente, vamos dizer que quanto mais velho você for, mais provável você comprar algo. Então, se você é jovem, você terá uma menor probabilidade de comprar algo. Então vamos dizer que a probabilidade de comprar algo é chamado E, e a probabilidade de realmente estar em uma determinada faixa etária F. Isso significa que não temos uma probabilidade condicional de dependência entre E e F. e a probabilidade de realmente estar em uma determinada faixa etária F. Isso significa que não temos uma probabilidade condicional de dependência entre E e F. então vamos percorrer o código aqui que configura esse conjunto de dados aleatórios. Recebo muitas perguntas de pessoas sobre como esse código funciona. Então, tenham paciência comigo, se vocês já conhecem Python. Mas para as pessoas que são novas nisso, isso precisa de algumas explicações. Então eu vou passar por esta linha por linha. Certo, então vamos começar importando aleatoriamente do pacote de tortas entorpecidas. Nada excitante. Isso é apenas para que possamos realmente gerar números aleatórios dentro deste pequeno trecho de código aqui,semente de código aqui, ponto aleatório apenas gera um valor de semente para o gerador de números aleatórios. O objetivo desta linha é garantir que obtemos resultados consistentes toda vez que executamos esse código. Então, como antes, nós costumávamos obter resultados diferentes cada vez que você executava isso. Mas por ter um número consistente, veja, isso significa que terá os mesmos resultados de volta para nossos números aleatórios. Cada vez que executamos isso, o número zero é arbitrário. Tudo o que importa é que é o mesmo valor sendo usado cada vez. Pode ser 1234 ou qualquer número que você queira, desde que seja o mesmo que está sempre acontecendo. Só nos certificamos de que temos consistência nos resultados da próxima vez. Configurando para dicionários python chamados totais e compras e o que isso está fazendo é manter o controle de quantas pessoas eu tenho em cada faixa de raiva. As crianças de 20 anos, as de 30 anos de 40 anos e assim por diante, e quantas compras foram feitas por cada pessoa nessas fúria Então, basicamente, estou dizendo, inicialmente, eu não tenho pessoas em o balde de 20 anos aqui no balde de 30 anos e aqui no balde 40 anos e assim por diante e assim por diante. E eu tenho zero compras de 20 anos de idade, zero compras de 30 anos de idade, zero compras de 40 anos e assim por diante. Então é assim que eu vou acompanhar o número total de pessoas e o número total de compras associadas a cada faixa etária. Eu também vou acompanhar o número total de compras independentemente da idade, com a variável total de compras. Em seguida, vamos criar um loop para tremer através de 100.000 pessoas aleatórias que iam criar . E isso nos sublinha um lugar detentor. Eu poderia apenas dizer forex e variou 100.000 ou o que você quiser. Mas como eu não estou realmente usando esse valor em qualquer lugar dentro do loop aqui, eu posso apenas usar o caractere sublinhado como um espaço reservado. Só significa que eu realmente não me importo com o que esse valor realmente é cada vez que passa. Não me importo que este seja o número 1776. Eu poderia descartar essa informação. Isso é tudo. O sublinhado significa que não me importo com o número real. Então, para cada uma dessas, 100.000 pessoas iam comer através da sopa 100.000 vezes e para cada vez vamos atribuir década de idade a essa pessoa. Escolha aleatória de ponto irá apenas escolher aleatoriamente um valor fora desta lista que passamos em para que ele irá escolher aleatoriamente um desses números 2030 40 50 60 ou 70 distribuído uniformemente. Então teremos uma chance aleatória, até mesmo de ter 20 anos, 30 anos ou 40 anos. Tudo o que temos para um 70 anos de idade para cada pessoa individual. Agora é aqui que as coisas ficam um pouco estranhas. Com base na sua idade, calculamos uma probabilidade de compra. Então estamos tirando sua idade e dividindo-a por 100 para descobrir as chances de você comprar algo do nosso site. Então, por exemplo, se eu tiver 20 anos, eu levarei 20 divididos por 100. Isso funciona para 0,2 ou 20%, então as crianças de 20 anos terão 20% de chance de realmente comprar algo de 30 anos que têm 30% de chance de comprar algo e assim por diante. Então é assim que estamos descobrindo que as pessoas mais jovens são menos propensas a comprar algo que as pessoas mais velhas em nossos dados gerados aleatoriamente aqui enquanto passamos por isso, aumentarão o total para essa década de idade por um meio que geramos para um novo pessoa aleatória dentro desta faixa etária. E aqui estamos dizendo, se ponto aleatório aleatório, é menor do que a probabilidade de compra realmente atribuir a compra a essa pessoa. Como é que isso funciona? Bem, ponto aleatório aleatório apenas seleciona aleatoriamente um valor entre zero e um. Então, se esse número aleatório for menor que nossa probabilidade de compra, dizemos que essa pessoa realmente comprou algo. Vejamos um exemplo para tornar isso um pouco mais intuitivo. Digamos que temos 30 anos de idade, certo, certo, então alguém em seus trinta anos sua probabilidade de compra vai funcionar para 0,3 ou 30%. Então, se nosso número aleatório entre zero e um for menor que 10,3, essa pessoa será atribuída a uma compra se for maior que 0,3. Eles não compraram nada. Então você vê como isso funciona. É assim que estão basicamente rolando os dados para ver se essa pessoa comprou algo ou não, dada a sua probabilidade geral de compra mais faixa etária. Então, à medida que terminamos, estamos construindo o número total de compras que são feitas em todo o conjunto de dados . Nós também estamos acompanhando as compras antes dessa década de idade individual, e também estamos acompanhando o número total de pessoas em cada decadas idade bem, vamos precisar de todos esses números para descobrir coisas como PV e Piece PF e PV dado metade e todas essas coisas. Vamos em frente e correr. Isto e aquilo. Gera são conjuntos de dados falsos que tem uma dependência entre idade e compras. Vamos dar uma olhada no que temos. Eu esperaria que os totais para cada faixa etária fossem consistentes, e eles são assim que temos cerca de 16,5 mil pessoas em cada década de idade, então isso é bom. E até mesmo a distribuição, é o que esperamos. Mas se olharmos para as compras atribuídas a cada faixa etária, você pode ver que isso está aumentando com base na AIDS. Então nós temos essa dependência que nós tentamos modelar lá dentro funcionando bem. Então, cerca de 3020 anos de idade, mas comprar algo, mas sobre, você sabe, quase 12.007 anos de idade manchas algo, mesmo que eles foram uniformemente distribuídos em número de pessoas. Então estamos vendo aqui claramente que há uma relação entre sua idade e sua probabilidade de comprar algo. Ok, então nós temos um bom conjunto de dados falsos com o ano para probabilidade condicional, nós também podemos calcular o número total de compras em todo o conjunto de dados que sai para 45.012. E agora temos os vales com os quais precisamos trabalhar para brincar com probabilidade condicional. Ok, então novamente, muito disso é apenas colocar sua cabeça em torno da notação e manter o controle do que letra significa o quê? Então, novamente, nós vamos chamar e comprar algo e para uma determinada idade em que você está. Então vamos começar computando p de e dado f. Esta é uma probabilidade condicional entre fazer uma compra e f onde vamos chamar isso de estar em seus trinta anos com essa faixa etária arbitrariamente selecionada lá. Então, a probabilidade de comprar algo e dado que você está em seus trinta anos se podemos calcular isso diretamente. Na verdade, podemos descobrir quantas crianças de 30 anos compraram algo em porcentagem. Então vamos em frente e apenas computar isso. Quantas compras totais vimos de trinta e poucos e quantas pessoas estavam nesse conjunto de dados? E isso funciona para 0,299 quase 0,3 certo? Nós também podemos calcular independentemente pedaço de BNP Sabbeth pedaço de f será a probabilidade de ser 30 global no estado de conjunto. Isso é fácil de calcular. Levará apenas o número total de crianças de 30 anos dividido pelo número total de pessoas em nosso conjunto de dados, e isso funciona. Teoh 16,6% 0.166 peça PF e é apenas a probabilidade geral de comprar algo independentemente da sua idade, se não houvesse dependência lá em tudo, Então, para calcular, PV vai apenas tomar o número total de compras em todos, independentemente da idade, dividido pelo número total de pessoas no geral, e isso funciona para 2,45 ou 45%. Então, no geral, em todo o conjunto de dados, tirando a idade da equação, há 45% de chance de comprar algo. Tudo bem, então é aqui que você começa a colocar seu boné de pensamento um pouco. Então envolva a sua cabeça em torno desta declaração. Se e e f que está comprando algo e sua idade fosse independente do que você esperaria p de e dado f para ser quase o mesmo que PV, certo? Se não houvesse dependência entre comprar algo na sua idade, você esperaria que a probabilidade geral de comprar algo fosse a mesma que a probabilidade de comprar algo dada a sua idade, porque não deveria haver dependência não deve importar. Você não deveria importar. Mas vimos que isso não é verdade, certo? Então PV nós computamos para ser cerca de 45%, mas p de e dado f nós calculamos anteriormente para ser cerca de 30% ou 300.299 O que quer que ISS thes números ar bastante diferente. Então só isso está nos dizendo que E e f são dependentes de que há uma condição entre essas duas coisas e sabemos que esse é o caso neste exemplo, criamos artificialmente uma dependência entre probabilidade de compra e idade. Então essa é uma maneira de tirar isso dos dados ali. Se você ver que P, e, v e P V dado F ou se você quiser usar letras diferentes você pode mijar de A não é igual a P de um dado ser quaisquer letras que você deseja usar, é apenas notação. Se esses não são os mesmos, então pode haver uma dependência acontecendo lá que você precisa saber sobre. Tudo bem, vamos também calcular p de e com af novamente. Isto é tudo sobre notação. PFE vírgula F é diferente de P A e bar f. Então PV vírgula F é a probabilidade geral de ser tanto em seus trinta e comprar algo sem uma dependência lá. Então, estamos olhando para a probabilidade geral de estar em seus trinta anos e comprar algo, não apenas restringindo isso à população de pessoas que estão em seus trinta anos. Podemos computar isso facilmente o suficiente. Nós poderíamos apenas olhar para o número total de compras de trinta e poucos coisas sobre o tamanho total do conjunto de dados aqui, e isso funciona para cerca de ah 5% ish ponto por ponto. Oh, por nove. Enquanto estamos nisso, nós também podemos calcular o produto de P E e P F. Isso vai ser apenas multiplicar P e P F, a probabilidade geral de comprar algo e a probabilidade geral de estar em seus trinta anos . Isso sai para cerca de 7,5% agora. Nas estatísticas, quando eles falam sobre probabilidade, muitas vezes você verá a relação que p de aecom F é igual ao produto de PNE e PMF . Mas isso só é verdade se ele for independente agora. Nós descobrimos aqui que p de aecom f a probabilidade geral de apenas estar em seus trinta e comprar algo fora do conjunto de dados total é de cerca de 0,5 Mas PV vezes Pff é de cerca de 0,75 Então quando você tem uma dependência acontecendo entre essas duas variáveis, há uma probabilidade condicional acontecendo, e a relação de PV vírgula F é igual a P se ele vezes pf não mais segurar. Então essa é outra maneira de você descobrir que talvez haja uma dependência acontecendo aqui que está atrapalhando seus resultados. No entanto, poderíamos voltar e verificar essa equação que demos de volta nos slides e apenas ver se p a e dado f é de fato igual a PV vírgula F sobre PF. E isso é apenas uma maneira de calcular a probabilidade condicional. Se você não pode computar diretamente como pudemos neste exemplo, e com certeza podemos provar que isso é verdade. A probabilidade de aecom um F Isso só vai ser o número total de compras de 30 anos de idade sobre todo o conjunto de dados sobre Pff, que calculamos anteriormente. Isso funciona 2.299 para 9, que é exatamente o mesmo que P A E dado que calculamos bem no topo disso, certo? Então vamos verificar que 90.299295 o mesmo número que temos aqui originalmente. Então, isso é fixe. A matemática funciona. Uau. Ok, então isso é basicamente um par de maneiras de descobrir se você tem uma dependência em seus dados que você pode não ter conhecido e uma maneira de calcular a probabilidade condicional, dadas outras coisas que você pode saber. Então, de qualquer maneira, vamos fazer uma pequena tarefa aqui um pouco de um desafio, se você quiser. Portanto, sua tarefa deve optar por aceitá-lo, é modificar o código acima de tal forma que a probabilidade de compra não varia com a idade. Então lembrem-se aqui, neste primeiro quarteirão, temos essa probabilidade de compra que era uma função da sua idade. Faça disso um valor constante. Em vez disso, veja o que isso faz com seus resultados. Então, se você fizer isso, você pode gerar um novo conjunto de dados onde você pode mostrar que PV dado f é aproximadamente o mesmo de P e V? Isso mostraria que não há nenhuma condição lá. Se você mostrar que é verdade, que PV dar o suficiente é o mesmo spv, então não há uma dependência entre essas duas coisas e essa é uma maneira matemática de encontrar isso. Então dê uma chance e veja se você pode provar isso a si mesmo e eu vou lhe mostrar minha solução para isso na próxima palestra. Então, temos alguns exemplos de usar a probabilidade condicional novamente, os conceitos não tão difíceis. É muito fácil ser tropeçado em toda a notação com todos os tubos e vírgulas, significando coisas diferentes e outras coisas. Mas uma vez que você se acostuma, não é tão ruim. Espero que tenha a chance de mergulhar na tarefa de casa aqui e tentar esse pequeno exercício de brincar com você mesmo e remover essa condição e confirmar que probabilidade condicional acaba se apagando. Nesse caso, deixa-me mostrar-te a minha solução na próxima palestra. 21. Solução de exercício: probabilidade condicional: Fizeste o teu dever de casa? Espero que sim. Então vamos dar uma olhada na minha solução para o problema de dar uma olhada em como a probabilidade condicional nos diz sobre se há uma relação entre idade e probabilidade de compra em um conjunto de dados falso. Vamos lá. Está bem, deixa-me explicar-te a minha solução, e isto deve ser muito simples outra vez. O objetivo aqui era remover a dependência entre sua idade e sua probabilidade de compra e ver se você pode realmente provocar fora da matemática dessa dependência que condicionalidade desapareceu. Então, se você se lembra de nossa caminhada através deste código que gera nosso conjunto de dados, nós costumávamos ter uma linha aqui sobre a probabilidade de compra que gerava isso com base em sua idade. Basicamente, levou sua década de idade e dividido por 100 para criar essa condição entre sua idade e a probabilidade de você comprar algo. Então o que eu fiz aqui, em vez de apenas um código rígido para 40% para que não haja mais nenhuma relação entre sua idade e sua probabilidade de comprar algo. Então vamos em frente e regenerar esse conjunto de dados. Removendo essa dependência entre idade e probabilidade de compra é agora que podemos calcular. PFE Dado f Again Essa é a probabilidade de fazer uma compra dada a sua idade, para algum grupo etário vai escolher 30 anos de idade de idade novamente apenas para ser consistente. Então, novamente vamos calcular o número total de compras por 30 anos pelo número total de 30 anos de idade, e acabamos com o número de cerca de 40%. E podemos calcular de forma independente p de e, que é apenas a probabilidade de comprar algo em geral, independentemente da sua idade, que chega a 40%. Então 39.8 40.0, muito perto. Ok, então, neste caso, PV é aproximadamente equivalente a PV dado f um pouco diferente apenas por causa da variação aleatória . Mas é perto o suficiente para que possamos dizer que TNF são provavelmente variáveis independentes neste caso. Então a matemática nos disse que p de e dado F é o mesmo spv mais ou menos e com certeza o suficiente, isso reflete o fato de que nós removemos esse empate entre idade e probabilidade de compra. Então eu espero que você tenha sido capaz de alcançar o mesmo resultado e aprender um pouco de algo ao longo do caminho sobre probabilidade condicional e como provocar essas dependências entre seus vários recursos de seus dados definidos fora da matemática. Ok, espero que você tenha chegado a uma solução similar por conta própria. Se não, você sabe, volte e estude minha solução. Está bem ali nos arquivos de dados para este curso. Se você precisar abri-lo, estudá-lo e brincar com ele. E com isso atrás de nós, vamos passar para o teorema de Bayes. 22. Teor de Bayas: Então, agora que você entende a probabilidade condicional, você pode entender como aplicar o Teorema de Bayes, que é baseado na probabilidade condicional. E é um conceito muito importante, especialmente se você está indo no campo médico, mas amplamente aplicável, e você vai ver por que em um minuto ele pode dizer muito quantitativamente. Às vezes, quando as pessoas estão enganando você com estatísticas. Então vamos ver como isso funciona. Agora que você entende a probabilidade condicional, podemos falar sobre o teorema de Bayes. Você ouve muito sobre isso, mas muitas pessoas não entendem realmente o que isso significa ou seu significado. Então vamos falar sobre baseado lá em um nível alto aqui. Então baseado lá, hum, é simplesmente isso. A probabilidade de um dado B é igual à probabilidade de uma vez a probabilidade de ser dado um sobre a probabilidade de B. Certo, então você sabe que você pode substituir A e B o que quiser. Um exemplo comum é o teste de drogas. Então podemos dizer, qual é a probabilidade de ser um usuário real de uma droga, já que você deu positivo para ela? E o teorema baseado na razão é importante é que ele chama para fora que isso depende muito tanto da probabilidade de um e provavelmente de abelhas. Portanto, a probabilidade de ser um usuário de drogas, dado que o teste foi positivo depende muito da probabilidade geral de ser um usuário de drogas e da probabilidade geral de teste positivo. Ok, isso também significa que o provavelmente ser dado um não é a mesma coisa que um provavelmente um dado ser . Então a probabilidade de ser um usuário de drogas, dado que você deu positivo, pode ser muito diferente da probabilidade de teste positivo, dado que você era um usuário de drogas, então você sabe que pode ver onde isso está indo. Há um problema muito real onde testes de diagnóstico em medicina ou testes de drogas produzem muitos falsos positivos, certo? E você ainda pode dizer que a probabilidade de um teste detectar um usuário pode ser muito alta. Mas isso não significa necessariamente que a probabilidade de ser um usuário dado que você testou positivo é alta. Há duas coisas diferentes e baseado lá e permite que você quantifique essa diferença. Então vamos pregar esse exemplo em casa um pouco mais Então novamente, um teste de drogas pode ser um exemplo comum de aplicar o teorema de Bayes para provar um ponto. Mesmo um teste de drogas altamente preciso pode produzir mais falsos positivos e verdadeiros positivos. Então, em nosso exemplo aqui, vamos chegar a um teste de drogas que pode identificar com precisão usuários de uma droga 99% do tempo e, na verdade, tem um resultado negativo para 99% dos não usuários. Então, mas apenas 0,3% da população geral usa realmente a droga em questão. OK, então eu tenho uma pequena probabilidade de realmente ser um usuário de uma droga. O que parece ser uma precisão muito alta de 99% não é realmente alta o suficiente, certo? Podemos calcular as contas. Então vamos deixar o evento Amy significa que você é um usuário de alguma droga e evento ser é que você testou positivamente para a droga usando este teste de drogas. Portanto, precisamos descobrir a probabilidade de testar positivamente globalmente. E podemos trabalhar isso olhando para o teste de probabilidade positivo se você é usuário e a probabilidade de teste positivo se você não é um usuário e isso funciona para 22 ponto abril de que funciona para fora para 1,3% neste exemplo Ok, então temos a probabilidade de ser a probabilidade de testar positivamente para a droga em geral sem saber mais nada sobre você. Se você fizer as contas, a probabilidade de ser um usuário da droga, dado que você testou positivamente, você sabe qual é a probabilidade de um resultado positivo? O que significa que você é realmente um usuário de drogas trabalha para a probabilidade de ser um usuário da droga em geral, que é de 3%. Sabemos que 3% da população é um usuário de drogas vezes a probabilidade de ser dada uma probabilidade de teste positivo. Dado que o seu usuário e novamente este teste tem um que soa como uma precisão muito alta de 99% . Portanto, temos 0,3% da população usa a droga vezes a precisão I de 99% dividida pela probabilidade de testar positivamente no geral, que funcionou para 1,3%. Assim, a probabilidade de ser um usuário real desta droga, dado que você testou positivamente para ela é de apenas 22,8%. Certo, mesmo que este teste de drogas seja preciso 99% das vezes, ele ainda está fornecendo um resultado falso na maioria dos casos em que você está testando positivo. As pessoas ignoram isso o tempo todo. Então, se há uma lição a ser aprendida da base lá, é sempre pegar a fonte das coisas com o trabalho de assalto do guindaste que se aplicam com base nesses problemas reais. E muitas vezes você descobre que o que soa como uma alta taxa de precisão pode realmente estar produzindo resultados muito enganosos. Se você está lidando com uma baixa incidência geral de um determinado problema, vemos a mesma coisa na triagem do câncer e em outros tipos de triagem médica também. É um problema muito real, e é um monte de pessoas recebendo uma cirurgia muito, muito real e muito desnecessária como resultado de não compreensão baseada lá. Então, se você está indo para a profissão médica com grandes dados, por favor, por favor, por favor, por favor, lembre-se desta palestra. Então isso é baseado lá. Lembro-me sempre de que a probabilidade de algo dado outra coisa não é a mesma coisa, coisa,é o contrário, e na verdade depende muito das probabilidades básicas de ambas as coisas que Você está medindo. Portanto, a probabilidade de um teste de drogas ser preciso depende muito da probabilidade geral de ser um usuário de drogas na população, não apenas teocracia do teste, coisa muito importante a ter em mente. E, você sabe, sempre olhar para seus resultados com isso em mente baseado lá e dar-lhe as ferramentas para quantificar esse efeito. Espero que seja útil. 23. Regressão linear: Vamos falar sobre análise de regressão, tópico muito popular e ciência de dados e estatísticas. Então tudo o que é tentar ajustar uma curva, algum tipo de função a um conjunto de observações. E então você pode usar essa função para prever novos valores que você ainda não viu. É tudo o que há para ele. Então vamos começar falando sobre a forma mais simples de análise de regressão. Regressão linear. Vamos falar sobre regressão linear. Ouve-se muito sobre análise de regressão no campo dos dias. A ciência parece extravagante, mas na verdade é um conceito muito simples. Vamos ver. Então, regressão linear tudo o que é ajustar uma linha reta a um conjunto de observações. É isso. Isso é tudo o que há para ele. Então, por exemplo, digamos que eu tenho um monte de pessoas que eu medi e as duas características que eu medi ou essas pessoas são seu peso e sua altura, alguns chocantes, mostrando o peso em o eixo X e a altura no eixo Y. E posso traçar todos esses pontos de dados. Que as pessoas esperam por nós é a altura deles, e eu podia vê-lo. Parece uma relação linear, não é? Talvez eu possa encaixar uma linha reta e usar isso para prever novos valores. E é isso que Lenny Regressão linear faz. Então, neste exemplo, eu poderia acabar com uma inclinação de 0,6 na interceptação Y de 1 30,2 neste exemplo em que define uma linha reta, dada uma inclinação em uma interceptação Y que se ajusta aos dados que eu tenho melhor. E eu posso usar essa linha e criar novos valores para que você possa ver que os pesos que eu observei só subiam para pessoas que pesavam 100 quilos. E se eu tivesse alguém que pesasse 120 quilos? Bem, eu poderia usar essa linha para então descobrir onde seria a altura para alguém com 100 e 20 kg baseado em todos esses dados anteriores? É isso. Não sei por que chamam de Regressão. Regressão meio que implica que você está fazendo algo de trás para frente, e eu acho que você pode pensar nisso em termos de sua criação de uma linha para prever novos valores baseados em observações que você fez no passado ao contrário no tempo. Mas parece um pouco exagerado. É apenas um termo confuso, honestamente. E você sabe mais uma maneira que nós meio que obscurecemos o que fazemos com conceitos muito simples, simples usando terminologia muito chique. Por isso, não deixes que a regressão linear te perturbe em termos de soar extravagante. Tudo o que é ajustar uma linha reta para um conjunto de pontos de dados. Como funciona bem internamente usa uma técnica chamada de mínimos quadrados, mínimos quadrados comuns que também é conhecido como OLS. Você pode ver esse termo jogado ao redor também, e a maneira como ele funciona é que ele tenta minimizar o erro quadrado entre cada ponto e a linha, e o erro é apenas a distância entre cada ponto na linha que você tem. Então, se resumirmos todos os quadrados desses erros, soa muito como quando calculamos variantes direita, exceto em vez de relativo aos meios para esta linha que estamos definindo. Podemos medir a variância dos pontos de dados a partir dessa linha, e minimizando essa variância, podemos encontrar a linha que melhor se encaixa nela. Agora você nunca terá que fazer isso sozinho da maneira mais difícil. Mas se você tivesse que fazer por algum motivo ou se você apenas curioso sobre o que acontece sob o capô . Isso descreve o algoritmo geral aqui para você de como você realmente iria sobre o cálculo da inclinação e por que interceptar a si mesmo da maneira mais difícil se você precisar. Não é assim tão complicado. A inclinação acaba por ser a correlação entre as duas variáveis vezes um desvio padrão e por que dividido pelo desvio padrão em X, e pode parecer um pouco estranho que o desvio padrão apenas se arrasta para o mapa naturalmente lá. Mas lembre-se, Correlação tinha desvio padrão cozido nele também, então não é muito surpreendente que tenhamos que reintroduzir esse termo. A interceptação pode então ser colocada. A interceptação pode então ser computada como a média do Y, menos a inclinação, vezes a média de X e novamente, mesmo que isso não seja realmente tão difícil. Python fará tudo por você. Mas o ponto é que essas coisas não são complicadas para executar, você sabe, eles podem realmente fazer muito eficientemente. Então, novamente, lembre-se, mínimo Quadrados minimiza a soma dos erros quadrados de cada ponto para a linha e outra maneira de pensar sobre regressão linear é que você está definindo uma linha que representa o máximo probabilidade de uma observação deitada lá, mas a probabilidade máxima do valor Y ser algo para um determinado valor X. Então, novamente, você sabe, as pessoas às vezes chamam essa estimativa de máxima verossimilhança, e é apenas mais um exemplo de pessoas dando um nome chique a algo que é muito simples . Então, se você ouvir alguém falar sobre estimativa de máxima verossimilhança, eles estão realmente falando sobre regressão. Eles só estão tentando parecer muito inteligentes. Mas agora você sabe esse termo para que vocês dois possam parecer inteligentes. Há mais de uma maneira de fazê-lo. Falamos de mínimos quadrados comuns como sendo uma maneira simples de ajustar uma linha a um conjunto de dados. Mas há outras técnicas também. Grady e dissidência sendo um deles, e funciona melhor em dados tridimensionais, então ele meio que tenta seguir os contornos dos dados para você. É muito chique e obviamente um pouco mais computacional e caro, mas python não torna fácil para você experimentá-lo. Se você quiser compará-lo a quadrados comuns, geralmente, porém, porém, mínimos quadrados é uma escolha perfeitamente boa que estamos fazendo quando sua regressão e você sabe que é sempre, ah, coisa legítima a fazer. Mas se você encontrar Grady e dissidência, você saberá que essa é uma maneira alternativa de fazer a Inglaterra sua regressão e é geralmente vista em dados dimensionais mais elevados. Então, como sei se minha regressão é boa? Quão bem minha linha se ajusta aos meus dados? Bem, é aí que R. Squared entra e R ao quadrado é também conhecido como o coeficiente de determinação novamente . Estou tentando achar alguém tentando parecer inteligente. Chamo-a assim, mas normalmente chama-se R ao quadrado. É a fração da variação total e por que isso é capturado por seus modelos. Então, quão bem sua linha segue essa variação que está acontecendo? Estamos recebendo uma quantidade igual de variantes em ambos os lados da sua linha ou não? Isso é o que R. Squared atingiu esta medição e realmente calcular o valor tomar um menos a soma dos erros quadrados sobre a soma das variações quadradas da média, então não é muito difícil de calcular, mas novamente, python vai lhe dar funções que apenas computam isso para você, então você nunca vai Acto realmente fazer essa matemática você mesmo maneira de interpretar R ao quadrado, você vai obter um valor que varia de 0 a 1 zero. Significa que você está em forma é terrível. Ele não captura qualquer uma das variações em seus dados, e um é um ajuste perfeito. Então, toda a variação em seus dados é capturada por esta linha, então todos os vários para ver em ambos os lados de sua linha deve ser o mesmo nesse caso, então zero é ruim. Um é bom. Já é preciso saber que algo no meio é algo no meio. Assim, um baixo valor R quadrado significa suportar ajuste alto R quadrado. Valor Meios é um bom ajuste. E, como você vê nas próximas palestras, há mais de uma maneira de fazer regressão. Regressão linear é um deles. É uma técnica muito simples, mas há outras técnicas também, e você pode usar o nosso quadrado. É uma medida quantitativa de quão boa uma dada regressão é para um conjunto de pontos de dados e em seguida, usá-lo para escolher o modelo que melhor se adapta aos seus dados. OK, então vamos brincar com ele e realmente calcular alguma regressão linear e r ao quadrado. Vamos nos divertir com as mãos de regressão linear. Então vá em frente e abra a regressão linear I arquivo de caderno Python e siga junto comigo se você quiser, porque eles fazem. Você quer brincar com isso para ter uma boa sensação disso. Então vamos começar criando um pouco de código python aqui que gera alguns dados ish aleatórios que são, de fato, linearmente correlacionados. Então, neste exemplo, eu vou falsificar alguns dados sobre velocidades de renderização de páginas e quanto as pessoas compram exatamente como um exemplo anterior. Então, crie uma relação linear entre a quantidade de tempo que leva para uma carga no site e a quantidade de dinheiro que as pessoas gastam nesse site. Então eu fiz aqui é que eu fiz uma distribuição aleatória, normal de velocidades de pagamento centrada em torno de três segundos com um desvio central de um segundo, e eu fiz a quantidade de compra de função linear disso. Então eu estou fazendo 100 menos a velocidade da página, mais alguma distribuição aleatória normal em torno dela. Vezes três. E se espalharmos isso, podemos ver que a linha que os dados acabam parecendo assim. Ok, então você pode ver apenas olhando para ele que há definitivamente uma relação linear acontecendo lá. E isso é porque nós fizemos hard-coda, riel relacionamento linear em nossos dados fonte. Então vamos ver se podemos provocar isso e encontrar a melhor linha de ajuste usando mínimos quadrados comuns . Agora nós falamos sobre como fazer normalmente quadrados e regressão linear nos slides, mas você não tem que fazer nada disso matemática você mesmo, porque tese I pacote pi tem um pacote stets que você pode importante buscando seguro do CYP I estatísticas de importação. E então você poderia apenas chamar estatísticas. Stotland regredir em suas duas feições. Então, tenha uma lista de velocidades pagas e uma lista correspondente de valores de compra. Lane Regresso vai me devolver um monte de coisas, então me devolve todas essas variáveis que eu estou recebendo de volta que inclinar a interceptação, e isso é o que eu preciso para realmente definir minha linha de melhor ajuste. Ele também me dá o nosso valor a partir do qual podemos obter o nosso quadrado para medir a qualidade desse ajuste e um par de coisas que vão falar mais tarde no curso para Agora nós só precisamos Slope interceptar em nosso valor. Então vamos em frente e executar estes. Então, há a minha linha e vamos em frente e encontrar a regressão linear. Melhor ajuste agora o valor R quadrado que a linha que temos de volta é 0,99 Isso é quase um ponto. Então isso significa que temos um bom ajuste,o que não é muito surpreendente porque nos certificamos de que havia uma relação linear real entre esses dados. Então isso significa que temos um bom ajuste, que não é muito surpreendente porque nos certificamos de que havia uma relação linear real Mesmo que haja alguma variância em torno dessa linha, estão deitados capturas na variância. Então temos aproximadamente a mesma quantidade de variância em ambos os lados da linha, o que é uma coisa boa. Ele nos diz que temos uma relação linear e nosso modelo é um bom ajuste para os dados que temos. Vamos realmente traçar essa linha para que este pequeno pedaço de código realmente crie uma função para desenhar a linha vermelha que melhor ajuste ao lado dos dados. Então, um pouco mais de Matt enredo lib magia aqui, vamos fazer uma lista de linhas de ajuste, e vamos usar esta função de previsão. Nós escrevemos para tomar as velocidades pagas, que é o nosso eixo X e criar a função Y de a partir disso. Então, em vez de tomar as observações para o valor gasto, nós vamos encontrar os previstos apenas usando o declive Times X mais a interceptação que nós recebemos de volta da chamada de regresão terrestre acima. Então, basicamente, vamos para um gráfico de dispersão como fizemos antes para mostrar os dados brutos apontam as observações. E então nós também vamos chamar plotagem na mesma instância de lote de tubos usando nossa linha de ajuste que criamos usando a equação de linha que obtivemos de volta e mostrá-los todos juntos. Faça isso. E parece assim para que você possa ver que nosso leão é de fato um ótimo ajuste para nossos dados vai certo, lanche no meio e tudo que você precisa para prever novos valores é essa função de previsão. Então, dada uma nova velocidade paga inédita anteriormente, poderíamos prever o valor gasto apenas usando os tempos de inclinação a velocidade C mais C pago pe mais a interceptação. Isso é tudo o que há para ele. Está na hora de sujar as mãos. Tente aumentar a variação aleatória nos dados de teste e veja se isso tem algum impacto. Lembre-se que o R ao quadrado é uma medida do ajuste. Quanto a ser capturado, as variantes. Então, a quantidade de variação veremos se realmente faz diferença ou não. Isso é regressão linear. Conceito bem simples. Tudo o que estamos fazendo é ajustar uma linha reta em vez de observações. E então podemos usar essa linha para fazer previsões de novos valores. É tudo o que há para ele. Mas por que se limitar a alinhar? Há outros tipos de regressão. Poderíamos fazer esse braço ou complexo. Faremos isso a seguir. 24. Regressão Polynomial: então falamos sobre regressão linear. Regressão polinomial é nosso próximo tópico, e isso é usar ordem superior. Polinômio é ajustar seus dados, então, às vezes, seus dados podem não ser realmente apropriados para uma linha reta. É aí que entra a regressão polinomial. Vamos mergulhar tudo bem. Nós falamos sobre regressão linear anteriormente, onde nós encaixamos uma linha reta para um conjunto de observações. Vamos falar sobre regressão polinomial, que é um caso mais geral de regressão. Então, por que se limitar a uma linha reta? Talvez seus dados não tenham realmente uma relação linear. Talvez haja algum tipo de curva, certo? Isso acontece com muita frequência. Nem todas as relações são lineares, mas a regressão linear é apenas um exemplo de uma classe inteira de regressões que podemos fazer. Então, se você se lembra, a linha de regressão linear que acabamos com estava fora da forma Y é igual a MX mais B, onde recuperamos os valores M e B de nossa análise de regressão linear de mínimos quadrados comuns ou qualquer método que você escolher. Agora esta é apenas uma primeira ordem ou um polinômio de primeiro grau, e a ordem do grau é o poder de X, um C. Então essa é a primeira ordem polinômio. Mas também poderíamos usar um polinômio de segunda ordem, e isso pareceria que y é igual a X ao quadrado mais B x mais e. E se estivéssemos fazendo uma regressão usando um polinômio de segunda ordem, obteríamos valores de A, B e C. Ou poderíamos fazer um polinômio de ordem 1/3 que tem um X em cubo mais B X ao quadrado mais e x mais D. E quanto mais as ordens mais altas você recebe, mais complexas as curvas que você pode representar. Certo? Então você conhece os poderes Mawr do X. Você combinou as formas e relacionamentos mais complicados que você pode ter. Mas mais diplomas nem sempre é melhor, você sabe. Normalmente, há algum relacionamento natural em seus dados que não é realmente tão complicado. E se você se encontrar jogando, você sabe muito grandes graus em ajustar seus dados, você pode estar mais ajustado. Ok, então se você está se você tem dados, isso é tipo de todo o lugar e tem um monte de variantes que você pode obter você pode enlouquecer e criar esta linha que, que, como, sobe e para tentar encaixar que os dados são tão próximos quanto possível. Mas, na verdade, isso não representa a relação intrínseca desses dados. Não faz um bom trabalho de prever novos valores. Então, sempre comece apenas visualizando seus dados e pense em você sabe, quão complicada essa curva realmente precisa ser? Agora você pode usar nosso quadrado para medir o quão bom seu ajuste ISS. Mas lembre-se, isso é apenas medir o quão bem essa curva se ajusta aos seus dados de treinamento. Os dados que você está usando para realmente fazer suas previsões com base neles não medem sua capacidade de prever com precisão no futuro. Mais tarde, falaremos sobre algumas técnicas para prevenir o excesso de montagem chamado teste de trem. Mas por enquanto, você só vai ter que olhar para ele e ter certeza de que você não está mais ajustado e jogando mais graus do que uma função. Então você precisa. Isso fará Mawr mais sentido quando fizermos um exemplo. Felizmente, nenhuma. Pie tem uma função de ajuste de poli que torna super fácil de jogar com isso e experimentar com resultados diferentes. Então vamos dar uma olhada. Hora de se divertir com regressão polinomial. Eu realmente acho que é divertido, a propósito. É legal ver toda aquela matemática do ensino médio entrando em alguma aplicação prática. Vá em frente, abra a regressão polinomial i caderno Python e vamos nos divertir um pouco. Então vamos criar uma nova relação entre a velocidade da nossa página e a quantidade de compra de dados falsos. E desta vez vamos criar uma relação mais complexa. Isso não é linear. Nós vamos pegar uma velocidade paga e torná-lo alguma função da divisão de velocidades de página para o valor de compra. E se fizermos um gráfico de dispersão, acabamos com isso. By the way, se você está se perguntando com esta linha de semente de ponto aleatório NPR faz isso cria um valor de semente aleatório , e isso significa que quando eu fizer operações aleatórias subseqüentes, eles serão determinísticos. Então, fazendo isso, eu poderia ter certeza que toda vez que eu executar isso sendo um pouco de código, acabaria com os mesmos resultados exatos, ok, e isso vai ser importante mais tarde porque eu vou ter você de volta e realmente tente diferentes ajustes para esses dados para ver comparados os ajustes que você obtém. Portanto, é importante que você esteja começando com o mesmo conjunto inicial de pontos. Então, lá temos. Você pode ver que isso não é realmente uma relação linear. Você sabe, nós poderíamos tentar mexer na linha, e seria bom para muitos dos dados podem estar aqui em baixo, mas não tanto aqui. Nós realmente temos mais de uma curva exponencial. Agora acontece torta entorpecida tem uma função de ajuste de poli que permite que você ajuste qualquer grau polinomial que você deseja para esses dados. Então, por exemplo, poderíamos dizer que nosso eixo X é uma matriz das velocidades de página que temos em nosso eixo Y é uma área. Os valores de compra que temos. Podemos então apenas chamar e P, que é um atalho para torta entorpecida, Paul, se x y e quatro significando que queremos 1/4 grau ajuste polinomial para esses dados. Então vamos em frente e correr. Isso corre muito rápido, e então podemos traçar isso. Então vamos criar um pequeno gráfico aqui que os gráficos são pontos originais do gráfico de dispersão vs pontos previstos, e parece que isso. Então, neste ponto, parece um ajuste razoavelmente bom. O que você quer perguntar a si mesmo, no entanto, é sobre mim encaixar Será que minha curva parece que está realmente indo fora de seu caminho para acomodar outliers e não realmente. Sabe, não vejo muita loucura acontecendo. Como se eu tivesse um polinômio de alta ordem, ele poderia , você sabe , vir até aqui para pegar aquele e, em seguida, desceu aqui para pegar aquele e, você sabe, ficar um pouco mais estável por aqui, onde temos muita densidade. E talvez então ele gostaria que pudesse potencialmente, você sabe, ir por todo o lugar tentando ajustar este conjunto de dados de última visita aqui. Então talvez vá. Nós cortejamos, por exemplo. Então, se você vê esse tipo de absurdo, você sabe, você tem muitas ordens em muitos graus em seu polinômio, e você provavelmente deve trazê-lo de volta para baixo, porque embora ele se encaixe nos dados que você observou, não vai ser útil para prever dados que você não viu. Então imagine que eu tenho alguma curva que sobe bem aqui e depois volta para baixo novamente para ajustar esses pontos de dados. A minha previsão para algo entre lá não vai ser exacta, certo? Ele realmente deve estar no meio aqui então novamente mais tarde no curso vai falar sobre principais meios de detectar que sobre encaixe. Mas, por enquanto, apenas olhem para ele. Agora podemos medir o R ao quadrado de ar. Então, tomando o porquê e os valores previstos que não temos são para marcar função em seu SK aprendeu psíquico aprendeu em métricas que podemos usar que computa essa floresta. Então, basicamente, ele compara um conjunto de observações a um conjunto de previsões e calcula r ao quadrado para você com apenas uma linha de código e r r ao quadrado para isso acaba por ser 10.8 a 9, que não é muito ruim. Lembre-se, zero é ruim. Um é bom, apontando para muito perto de um que você sabe, não perfeito. E intuitivamente isso faz sentido. Você pode ver que nossa linha é muito boa nesta seção dos dados, mas não tão bom aqui e não tão bom aqui em cima e apontar um para sons sobre a direita. Então eu quero que você, Teoh, se suje e se suje com essas coisas. Tente diferentes ordens de polinômios. Então volte aqui para onde executamos a função de ajuste de poliéster e tente valores diferentes além de quatro. Você sabe que você poderia usar um, e isso voltaria a uma regressão linear. Ou você poderia tentar uma quantidade muito alta, como oito. E talvez você começasse a ver mais apropriado, então veja o efeito que isso tem. Sabe, você vai querer mudar isso. Por exemplo, vamos para um polinômio de 1/3 grau. Basta continuar batendo correr para passar por cada passo, e você pode ver o efeito que ele tem. Então nosso polinômio de terceiro grau definitivamente não é tão bom de um ajuste. E se você realmente medir o erro r quadrado, na verdade é pior quantitativamente. Mas se eu for para cima, posso começar a ver que estamos ajustados. Então, apenas se divertir um pouco com ele, jogar em torno de valores diferentes e ter uma noção do que diferentes ordens de polinômio devido a sua para sua linha aqui, regressão e obter suas mãos sujas e tentar aprender alguma coisa. Então isso é regressão polinomial novamente. Você precisa ter certeza de que você não coloca graus mawr no problema do que você precisa usar apenas a quantidade certa para encontrar o que parece um ajuste intuitivo para seus dados. Muitos podem levar a excesso de montagem muito poucos podem levar a um ajuste ruim. Então você pode usar seus globos oculares por enquanto e a métrica R ao quadrado para descobrir qual é o número certo de graus. Para os seus dados, vamos seguir em frente. 25. Múltipla regressão: Vamos mergulhar em regressão múltipla. Isso é apenas uma regressão que leva em conta mais de uma variável, mais de uma característica. O conceito é realmente muito simples. É só responder à pergunta, se eu tiver mais de uma variável influenciando a coisa que estou tentando prever. Então, basicamente, eu estou fazendo uma regressão que eu não tenho apenas uma característica que eu estou medindo para tentar prever algum valor. Tenho muitas características que podem vir juntas. Então, por exemplo, isso pode ser prever o preço de um carro com base em seus muitos atributos. O carro tem um monte de coisas diferentes que você pode medir que podem influenciar seu preço, como sua quilometragem, sua idade, quantos cilindros ele tem, quantas portas ele tem, coisas assim. E você pode realmente levar tudo isso em conta e rolar isso em um grande modelo, muitas variáveis como parte dele. Agora, sempre que o caso na ciência de dados, há uma terminologia confusa aqui. Além da regressão múltipla, que está usando vários recursos para prever um único valor, também temos o conceito de regressão multivariada. E você pensaria que isso significaria a mesma coisa, mas não significa. Normalmente, quando falamos sobre regressão multivariada, estamos falando sobre não apenas ter vários atributos de feição que estamos tentando usar para fazer uma previsão. Mas também estamos tentando prever mais de uma coisa ao mesmo tempo. Então talvez eu esteja tentando prever não só o preço de um carro baseado em sua quilometragem, idade e número de portas. Também estou tentando prever quanto tempo levará para vendê-lo ou algo assim. Isso seria um exemplo de regressão multivariada onde temos várias coisas estamos tentando prever, além de vários recursos que estão sendo usados para fazer essas previsões. De qualquer forma, a maneira como fazemos é realmente bastante simples. Então, podemos ter apenas em vez de um único coeficiente anexado a alguma variável de recurso único, podemos ter vários termos com várias variáveis. Então podemos dizer que podemos prever o preço do valor com base em algum valor constante Alpha vezes algum coeficiente chamado beta uma vez sua primeira característica, que diz que poderia ser quilometragem mais algum coeficiente beta dois, que pode estar se multiplicando com algum outro recurso como a idade do carro mais beta três vezes o número de portas, o que quer que você queira fazer. E esses coeficientes estão apenas medindo a importância de cada fator para o resultado final real. Agora isso pressupõe que todos os seus recursos são normalizados indo para ele. Então você pode realmente comparar esses coeficientes juntos de forma justa. Se eles não forem normalizados, esse coeficiente também estará trabalhando para dimensionar esse recurso para o resultado final também. E isso também pode ser informativo se ele realmente descobrir os valores de Beta-1, Beta-2, Beta-3, e qualquer outra coisa que você possa ter. Isso também pode dizer um pouco sobre quais recursos são realmente importantes para o seu modelo. Então, se você acabar com um coeficiente muito baixo para uma determinada característica depois que as coisas são normalizadas. Essa pode ser a maneira da natureza de dizer que essa característica não é realmente muito importante para prever a coisa que você está tentando prever. E isso pode ajudar você a simplificar seu modelo, eliminando dados de recursos que você não precisa. Então isso é uma coisa muito útil. Isso é chamado de seleção de recursos. E muitas vezes é uma parte muito importante da construção de um bom modelo de aprendizado de máquina. Agora tudo isso ainda usa menos quadrados. Então, em nosso notebook vamos usar algo chamado OLS que significa mínimos quadrados comuns. E ele pode lidar com vários recursos como este. Então ainda podemos medir o ajuste desta coisa em geral usando R-quadrado. Nada é diferente lá. E outra coisa que precisamos apontar é que essa coisa toda assume que não há dependência entre esses diferentes recursos. Observe que estou tratando todos esses recursos de forma independente com seus próprios coeficientes. Então, se houver de fato uma relação entre esses recursos, esse modelo não capturará isso. E este é, na verdade, um exemplo de onde isso provavelmente seria o caso. Por exemplo, a quilometragem do carro provavelmente estaria altamente correlacionada com a idade do carro. E este modelo não vai capturar essa relação. Na verdade, você provavelmente vai ficar bem apenas usando quilometragem ou idade independente um do outro. Mas isso poderia pelo menos dizer qual deles é mais importante manter. Então, com isso, vamos mergulhar e ligar um caderno e ver como funciona. Há algo chamado pacote Statsmodel que torna as coisas mais fáceis. E oferece o modelo OLS que podemos usar para sair e fazer com que ele se afaste e faça tudo por nós. Então vamos tornar esse exemplo de regressão múltipla real. Vá em frente e abra o arquivo de caderno de regressão múltipla aqui, e você deve estar vendo algo assim. Certo, vamos ver regressão múltipla em ação. Felizmente, o pacote Statsmodel tem um modelo de regressão OLS que pode lidar com regressão múltipla. É muito fácil de usar, embora haja alguns tribunais sobre os quais falaremos aqui que você precisa saber. O que vamos tentar fazer é prever os preços dos carros usando regressão múltipla em vários atributos dos carros. Por exemplo, a quilometragem, o número de cilindros no número de portas. E eu tenho um conjunto de dados real para você aqui para jogar com que eu enviei para o nosso site. Então a primeira coisa que vamos fazer é importar pandas e chamar sua função de leitura do Excel para carregar esta planilha do Excel de um monte de dados sobre carros em seus atributos e para o que eles venderam. E vamos carregar isso em um DataFrame chamado df. Então vamos em frente e Shift Enter para fazer isso. Agora, se você tiver um fracasso, eles vão tentar de novo. Às vezes, acessar a internet a partir de um notebook pode ser um pouco pouco confiável, mas geralmente se você tentar novamente, as coisas vão recuperar e funcionará na segunda vez. Certo, então vamos tentar visualizar esses dados. A primeira coisa que você normalmente quer fazer quando você está lidando com um novo conjunto de dados é inspecionar os dados e certificar-se de que você pode sentir confortável com eles e manipulá-lo e obter informações dele e certificar-se de que é o que você esperar. Então é só isso que vamos fazer no próximo quarteirão. Vamos carregar matplotlib para que possamos traçar coisas, importará o pacote NumPy para que possamos manipular nossos dados. E vamos criar um novo dataframe df que apenas extrai os recursos de quilometragem e preço do nosso DataFrame original da planilha do Excel que carregamos como df. Então agora tudo o que vamos tentar lidar com C. Existe uma relação entre quilometragem e preço? Você pensaria que haveria, certo? Você pensaria que carros de quilometragem mais elevados em geral custaria menos do que carros de baixa quilometragem. Então vamos ver se isso é verdade. Vamos encher isso. Então vamos criar o DataFrame de um bin e vamos chamar np.arange. O que isso vai fazer é dividir nossos dados em pedaços de 10 mil milhas entre 0 e 50000 milhas. Consegui. Então isso vai me dar de volta um intervalo de dados entre 010 mil milhas, 10000 e 20000 milhas, todo o caminho até 80 mil milhas. E então criaremos esses grupos e pegaremos os dados do recurso de quilometragem e preço, agrupá-los pelos compartimentos que criamos e calcularemos a média para cada um desses compartimentos. Então agora os grupos vão conter o preço médio para cada uma dessas faixas de quilometragem. Vamos imprimir, garantir que pareça razoável, e então vamos traçar e ver o que temos. Então vamos apertar Shift Enter. E vocês podem ver aqui que nós temos aqueles intervalos que esperávamos. Então, entre 010 mil milhas, a quilometragem média era 4588 e o preço médio era de $24 mil. Trabalhe seu caminho até 30 a 40 mil milhas e o preço médio cai para 19.463 milhas. E se você traçar, então você vê o que você espera. Carros de quilometragem mais elevados em geral custam menos do que carros de baixa quilometragem. Agora vou avisá-lo que há alguns outliers neste conjunto de dados. E isso pode não ser verdade até mais de 80 mil milhas. Então talvez haja alguns carros esportivos colecionáveis que têm alta quilometragem, mas eles ainda valem muito, certo? Então este conjunto de dados é realmente um bom para jogar com para lidar com outliers. Para se você quiser investigar isso e eu vou encorajá-lo a fazê-lo no final deste exercício. Enfim, nosso objetivo era garantir que ficássemos confortáveis, que os dados pudessem carregá-lo, que pudéssemos manipulá-lo até agora, tão bom. Certo, então vamos construir um modelo. Então vamos começar importando Statsmodel API como SM. Então isso vai ser importando o modelo que nós realmente vamos estar usando aqui. Vamos importar scaler padrão do pré-processamento de pontos SKLearn. E vamos criar uma nova instância do escalador padrão chamado escalar padrão escalado é e o que vamos usar para normalizar todos os nossos dados de recursos para que eles estejam todos no mesmo intervalo geral. Isso faz com que os modelos funcionem muito melhor em alguns casos, incluindo este. Então vamos começar extraindo os dados de feição que queremos. Vamos voltar ao nosso dataframe original que foi carregado diretamente da planilha do Excel. E apenas extrair três características, quilometragem, número de cilindros e número de portas. E por convenção chamamos nosso array de recursos X, X maiúsculo. Então vamos tentar construir um modelo que só tenta prever o preço com base na quilometragem, número de cilindros e número de portas. Agora há na verdade um monte de outros dados lá e os dados de origem e, por exemplo, a marca eo modelo do carro que seria muito importante, bem você poderia pensar. Mas esse tipo de modelo de regressão, você não pode realmente misturar e combinar dados ordinais com dados numéricos. Então temos que escolher um ou outro. Neste caso, vamos usar algumas características numéricas. E é por isso que estamos emitindo coisas como marca e modelo do carro. Por convenção, “y “minúsculas “são os nossos rótulos, as coisas que estamos a tentar prever no nosso caso, esse é o preço, está bem? Agora precisamos pré-processar esses dados de recursos para que eles funcionem bem com nosso modelo. Isto é uma coisa muito comum de se fazer. Então vamos chamar escala, que é a nossa transformação de ajuste de escala padrão e passar nesse cilindro de mielina endossar recursos de nosso raio-X, extrair os valores disso, passá-lo para a transformação de ajuste e que irá devolva-nos cilindros de quilometragem escalada e portas que tinham sido reduzidas para uma distribuição normal. Então, mais ou menos uma curva de sino entre 11 negativos e vamos colocar isso de volta no raio-X original nas mesmas colunas com as quais começamos. Esta linha novamente vai escalar o cilindro de quilometragem dentro de recursos dentro desse conjunto de dados em uma curva de sino entre 11 negativo em uma distribuição normal. Este próximo slide é uma espécie de peculiaridade do OLS. Então você vai se lembrar da palestra que há um termo B, uma intercepção y constante para cada um, para onde começamos. E, a menos que você adicione uma coluna constante aos dados da feição, o modelo não pode criar isso. Então, a fim de permitir que ele tenha uma interceptação y, para ter que ser constante no modelo, precisamos chamar Statsmodel ponto add constante e passar em nossa matriz de recursos. Eles são tudo o que ele faz é adicionar uma coluna cheia de uns para o início do nosso DataFrame. Vamos imprimir isso e garantir que fique como esperamos. E então nós vamos realmente treinar o modelo em si. E esse é um forro aqui. Nós apenas chamamos Statsmodel dot OLS, passar em nossos dados rotulados, passar em nossos dados de recursos e chamar ajuste para ajustar esses dados ao nosso modelo e criar um novo estimador. Em seguida, imprimiremos informações resumidas sobre como foi o treinamento. E ele vai nos dizer, ele vai nos dar algumas percepções sobre o que realmente está acontecendo dentro do modelo bem ali. Então vamos Shift Enter e chutar isso muito rápido. Tudo bem, então a primeira coisa que imprimimos foi a matriz de recursos que foi reduzida. E você pode ver que nós temos aquela coluna constante que nós preso na frente lá que vai ser usado para modelar a interceptação y do modelo ser 0. E você pode ver que nossos dados de recursos foram escalados mais ou menos em um intervalo de mais ou menos negativo 1 em uma distribuição normal. Parece que funcionou. Em seguida, treinamos o modelo e imprimimos informações resumidas sobre o modelo do trem. E olhando para isso, você pode obter algumas percepções. R-quadrado e todas as métricas habituais aqui estão aqui para você olhar. Realmente tenho que ler a documentação sobre o que essas estatísticas realmente significam porque eles nem sempre são o que você espera. Por exemplo, r-quadrado é baseado em um, uma métrica ponderada que não é o que você normalmente pensaria como sendo r-quadrado, mas ainda há comparável como você está executando diferentes modelos diferentes nos mesmos dados. Vamos dar uma olhada nos coeficientes reais aqui. Então isso é meio como a carne da saída do nosso modelo aqui. Estes são os coeficientes reais para os termos b0, b1, b2, b3 em nosso modelo de regressão múltipla. Então você pode ver que nosso termo constante é realmente muito grande. 21.340 dólares é a nossa interceptação y. A quilometragem tem um coeficiente negativo. Então, novamente, isso faz sentido porque à medida que você aumenta uma quilometragem, o preço diminuiria. Nós também estamos vendo que os cilindros têm um grande impacto sobre ele. Então o número de cilindros no carro parece ser a maior magnitude absoluta de coeficiente que vemos aqui. Então, surpreendentemente, o número de cilindros parece afetar o modelo mais do que qualquer coisa foi para ver isso chegando. Mas acho que faz sentido. Você sabe, se você tem realmente veículos de cilindro alto, você provavelmente está no mundo de super carros exóticos, certo? Então isso pode ser conduzido por outliers onde alguém tem algum, você sabe, um supercarro de milhões de dólares com dez cilindros. E isso pode estar distorcendo todo esse modelo, muitas vezes fazendo coisas estranhas. Então, novamente, outliers ou algo para investigar e falar sobre isso mais tarde. Número de portas, surpreendentemente também um coeficiente negativo. O número de portas, mais portas, não sou eu mais dinheiro, ao que parece. E se você pensar nisso de novo, você sabe, carros esportivos, galinetes esportivos, eles tendem a ser de duas portas e eles tendem a ser caros. Então, um pouco de uma visão interessante e os dados apenas de olhar para esses coeficientes e nada mais. Tudo bem, seguindo em frente. Então esta foi na verdade uma maneira bastante complicada e complexa de descobrir que mais portas não significa mais dinheiro. E quero reiterar isso. Você sempre quer ir para a solução mais simples quando você pode. Então eu poderia ter descoberto isso com uma linha de código aqui. Muito mais simplesmente, se eu apenas agrupado meus dados pelo número de portas e computador, o preço médio para cada conjunto de números de portas. Vamos ver o que descobrimos. Então bem ali eu posso ver com essa linha simples de código sem construir um grande modelo de aprendizado de máquina, que o preço médio de um veículo de duas portas é de $23.800, enquanto o preço médio de quatro portas é de $20.580. Então eu poderia ter chegado a essa conclusão muito mais facilmente e com menos complexidade se eu quisesse. Tão pequena parábola lateral lá e como a simplicidade é muitas vezes uma coisa boa. De qualquer forma. Então temos este modelo que vamos fazer com ele. Então vamos dizer que você quer fazer uma previsão real para um carro fictício ou algum carro novo que você encontrou? Bem, não é tão simples como você pensaria que seria voltar a uma previsão real usando esse modelo. Mas é assim que se faz. Então, antes de tudo, vamos fabricar este novo carro falso que tem 45 mil milhas, oito cilindros e quatro portas. Então é isso que esse array significa. Primeiro, precisamos escalar isso na mesma faixa que foi usada para treinar nosso modelo. Então vamos pegar a mesma instância de escala de escalar padrão que tínhamos antes e chamar transformar nele para escalar esse carro em particular de volta ao mesmo alcance que usamos para treinar o modelo. E assim será compatível com um modelo que fizemos. Também precisamos inserir essa coluna constante novamente. Então vamos chamar a inserção numpy dot. Vamos extrair esses dados de recursos de escala, que é o que chamamos de matriz resultante do nosso carro fictício. Vamos dizer que queríamos inserir na posição 0, o número um. Certo, isso é tudo o que está acontecendo aqui. Então imprimiremos isso, certificamo-nos de que é o que esperamos que seja. Finalmente, podemos chamar prever em nosso estimador que criamos com aquele veículo fictício que criamos e obter de volta um preço de venda previsto para ele. Então vamos em frente e executar isso. Lá vamos nós. Assim, podemos ver que nossa matriz de recursos de entrada aqui tem essa coluna constante 1 e nossos dados de recursos escalados para a quilometragem, número de cilindros e o número de portas. E voltou com um preço previsto neste caso de 27 $1658, que está no estádio dos nossos dados. Então eu acho que isso é uma estimativa razoável. Então, aí está. Regressão múltipla em ação usando alguns dados reais de vendas de carros reais pouco. E eu acho que é um tipo de conjunto de dados antigo, mas, você sabe, os preços dos carros não mudaram muito, não carros usados de qualquer maneira. Como sempre, encorajo-te a mexer com isto por conta própria. Tente baixar essa planilha XLS do nosso site. Você pode simplesmente usar esse link que estava no primeiro bloco lá e realmente baixá-lo através do seu navegador se você quiser e ficar mais familiarizado com o que está acontecendo. Então, na atividade aqui, eu sugeri talvez tentar mexer com o número de portas e ver se você pode realmente fabricar alguns dados para fazer uma influência mais interessante ou talvez diferente no número de portas sobre o preço. E talvez possamos nos divertir um pouco com ele e criar carros que tenham 10 portas ou algo assim para tentar ver se você pode distorcer as coisas de um jeito ou de outro. Também seria uma boa idéia dar uma olhada nos dados e tentar identificar alguns desses outliers de que estávamos falando. Tente removê-los e veja o que isso faz com a qualidade do seu modelo. Eu acho que, como eu disse, pode haver alguns super carros lá dentro que estão jogando coisas fora para os tipos mais comuns de carros que as pessoas geralmente compram. Então eu tenho um pouco de diversão com ele e mexer se você, se você está tão inclinado. E isso é regressão múltipla em poucas palavras, novamente, tudo o que estamos fazendo é fazer regressão em várias feições ao mesmo tempo e atribuir coeficientes diferentes para cada feição para ter um único modelo de regressão que podemos usar para fazer previsões com base em mais de um recurso. 26. Modelos de múltiplos nível: Vamos falar sobre modelos multiníveis. Este é definitivamente um tópico avançado, e eu não vou entrar em um monte de detalhes aqui. Meu objetivo aqui é apenas introduzir o conceito de modelos multinível para você e permitir que você entenda alguns dos desafios e como pensar sobre eles. Quando você está juntando-os, é isso. Então o conceito aqui é que alguns efeitos aconteceram em vários níveis diferentes na hierarquia. Assim, por exemplo, sua saúde sua saúde pode depender de quão saudáveis suas células individuais são. E essas células podem ser uma função de quão saudáveis os órgãos que eles estão dentro do nosso e a saúde de seus órgãos podem depender da saúde de você como um todo, e sua saúde pode depender, em parte, da saúde de sua família e do ambiente dá a você e a saúde de sua família, por sua vez, pode depender de alguns fatores da cidade em que você mora. Quanto crime existe, quanto estresse existe, quanta poluição existe? E mesmo além disso? Pode depender de fatores em todo o mundo em que vivemos pode ser apenas o estado da tecnologia médica no mundo é um fator, certo? Outro exemplo de sua riqueza. Quanto dinheiro você ganha? Bem, isso é um fator do seu trabalho duro individual, mas também é um fator do valor de seus pais. Você sabia quanto dinheiro eles foram capazes de investir em sua educação e no ambiente em que você cresceu? E, por sua vez, que tal o dos seus avós? Que tipo de ambiente eles foram capazes de criar? E que tipo de educação eles foram capazes de oferecer para seus pais, que por sua vez influenciou os recursos que eles têm disponíveis para sua própria educação e atualização trouxe trazendo. Então estes são todos exemplos de modelos multiníveis onde há uma hierarquia de efeitos que influenciam uns aos outros em escalas maiores e maiores. Ok, agora o desafio dos modelos multinível é tentar descobrir enquanto como eu modelo essas interdependências? Como faço para modelar todos esses efeitos diferentes e como eles afetam uns aos outros? Você vê a linha de cuidados de saúde, a propósito, então o desafio aqui é identificar os fatores em cada nível que realmente afetam a coisa que você está tentando prever. Então eu estou tentando prever no geral você sabe que é uma pontuação T, por exemplo. Bem, eu sei que isso depende em parte da criança individual que está fazendo o teste. Mas o que há na criança que importa? Bem , pode ser a genética que pode ser. Hum, você sabe, a sua saúde individual. Você sabe, o indivíduo, você sabe, rezando tamanho que eles têm. Você pode pensar em qualquer número de fatores que afetam o indivíduo que podem afetar sua pontuação S a T. E então, se você subir outro nível, procure seu ambiente doméstico para olhar sua família. - Não. O que há em suas famílias que pode afetar suas pontuações S A T? Quanta educação eles foram capazes de oferecer? Os pais são capazes de realmente ensinar as crianças nos tópicos que estão no S A. T? Estes são todos fatores nesse segundo nível. Isso pode ser importante. E o bairro deles? A taxa de criminalidade daquele bairro pode ser importante. Você sabe, as instalações que eles têm para adolescentes e mantê-los fora das ruas, coisas assim. Agora, a idéia é que você quer continuar olhando para esses níveis mais altos, mas cada nível identifica os fatores que afetam as coisas que você está tentando prever, e eu posso continuar indo até a qualidade dos professores em sua escola, o financiamento do distrito escolar, as políticas de educação a nível estadual. Você pode ver que existem diferentes fatores em diferentes níveis em todos os alimentos para esta coisa que você está tentando prever. E alguns desses fatores podem existir em mais de um nível. Assim, a taxa de criminalidade , por exemplo, a nível local e estadual. Você precisa descobrir como todos eles se interagem uns com os outros também. Quando você está fazendo modelagem multinível. Está bem. E como você pode imaginar, isso fica muito difícil e muito complicado muito rapidamente. É realmente muito além do escopo deste curso, não apenas o ponto que você está agora neste curso, mas qualquer curso introdutório em ciência de dados, Isso é coisa difícil, seus livros grossos sobre isso. Você faz um curso inteiro sobre isso. Esse seria um tópico muito avançado. A única razão pela qual eu estou trazendo isso neste curso é porque eu vi isso mencionado nas descrições de trabalho como algo que eles querem que você saiba sobre. Em alguns casos, nunca tive que usá-lo na prática. Mas eu acho que o importante do ponto de vista de ter um dia de carreira na ciência é que você pelo menos está familiarizado com o conceito, e você sabe o que isso significa e alguns dos desafios envolvidos na criação de um modelo multinível . Então eu espero ter dado esses conceitos com que podemos passar para a próxima seção. Então, lá você tem os conceitos de modelos multinível. É um tópico muito avançado, mas você precisa entender qual é o conceito, pelo menos, e o conceito em si é bastante simples. Você só está olhando para os efeitos que diferentes níveis, diferentes hierarquias quando você está tentando fazer uma previsão. Então, talvez existam diferentes camadas de efeitos que têm impactos uns sobre os outros, e essas camadas diferentes podem ter fatores que se inter-relacionam entre si também. modelagem multinível tenta ter em conta todas essas hierarquias e fatores diferentes e como eles interagem entre si. Isso é tudo que você precisa saber. Por agora, 27. Aprendizagem em mente vs.: Vamos falar sobre mais técnicas de aprendizado de máquina. E um dos conceitos fundamentais por trás do aprendizado de máquina é algo chamado teste treinado que nos permite avaliar de forma inteligente o quão bom é um modelo que fazemos no aprendizado de máquina . Então vamos aprender mais sobre isso. Vamos falar sobre aprendizado de máquina e especificamente sobre a diferença entre aprendizado de máquina supervisionado e não supervisionado. Estamos entrando nas coisas interessantes aqui, então vamos. Então, o que é aprendizado de máquina? Bem, se você procurar na Wikipédia ou qualquer outra coisa, ele vai dizer que seus algoritmos que podem aprender com a observação todos os dados e podem fazer previsões baseadas nela soa realmente extravagante. Tudo bem, como coisas de inteligência artificial, você sabe, gostaria que você tivesse um cérebro latejante dentro do seu computador. Mas, na realidade, essas técnicas são geralmente muito simples, e nós já teríamos feito isso direito. Se você olhar para regressões, nós pegamos um conjunto de dados observacionais. Nós violinamos a linha para ele, e então nós poderíamos usar essa linha para fazer previsões. Então, por essa definição, isso é aprendizado de máquina, e é bem simples. E sim, quero dizer, o teu cérebro também funciona assim, também funciona assim, por , sabes, isso, sabes,é divertido pensar nisso. Há alguma ideia nesses algoritmos sobre como seu cérebro realmente funciona? Talvez haja talvez por baixo de tudo, há realmente uma coisa muito simples acontecendo lá dentro, mas isso é um tópico para um curso diferente. Então vamos falar sobre os dois tipos diferentes de aprendizado de máquina que falamos sobre supervisionado e não supervisionado. Às vezes, pode haver uma espécie de linha embaçada entre os dois, para ser honesto. Mas a definição básica de aprendizagem não supervisionada é que você não está dando ao seu modelo nenhuma resposta para aprender apenas apresentando-o com um grupo de dados, e ele tenta fazer sentido com isso, sem nenhuma informação adicional. Então, para um exemplo, digamos que eu dê um monte de objetos diferentes, sabe, bolas e cubos e conjuntos de dados e outras coisas. E eu tenho um álbum que vai agrupar esses objetos nas coisas que são semelhantes entre si, com base em alguma métrica de similaridade. Ok, agora eu não disse isso antes do tempo. Quais categorias? Certos objetos pertencem a Teoh. Eu não tenho um tipo de folha de truques que ele pode aprender de onde eu tenho um conjunto de objetos existentes na minha categorização de categoria correta dele. Tem que entrar para essas categorias por conta própria. Então esse é um exemplo de aprendizagem não supervisionada onde eu não tenho um conjunto de respostas que eu estou deixando que ele aprenda. Só estou tentando deixar que se junte. A sua própria resposta baseia-se apenas nos dados que lhe são apresentados. Ok, então o problema com isso é que você não necessariamente sabe o que o álbum vai aparecer com. Então, se eu der um monte desses objetos neste slide, ele vai agrupar coisas em coisas que estão em torno de coisas que são grandes versus pequenas coisas que são vermelhas versus azuis? Eu não sei. Vai depender da métrica que eu dou para semelhança entre itens, principalmente. Mas às vezes você vai encontrar aglomerados que são surpreendentes e emergem que você não esperava ver . Então esse é realmente o ponto da aprendizagem supervisionada pela ONU. Se você não sabe o que está procurando, pode ser uma ferramenta poderosa para descobrir classificações que você nem sabia que estavam lá. Chamamos isso de variável latente. Então, alguma propriedade dos seus dados que você nem sabia que estava lá originalmente, mas aprendizagem não supervisionada pode provocar para você. Então, um exemplo. Digamos que eu estava agrupando pessoas em vez de, você sabe, bolas e Dyson. Estou dirigindo um site de encontros, e quero ver que tipo de pessoas tendem a se agrupar aqui. Há alguns atributos que as pessoas tendem a se agrupar, que tendem a gostar umas das outras e namorar umas com as outras. E você pode descobrir que os aglomerados que emergem não estão em conformidade com seus estereótipos predispõem . Talvez não seja sobre estudantes universitários contra pessoas meia-idade ou pessoas divorciadas e o que não, ou sua polícia religiosa. Talvez se você olhar para os clusters que realmente emergem dessa análise, você aprende algo novo sobre seus usuários e realmente descobrir que há algo mais importante do que qualquer um desses recursos existentes de suas pessoas que realmente contam para se eles gostam um do outro. Então esse é um exemplo de aprendizagem não supervisionada fornecendo resultados úteis. Ok, outro exemplo. Agrupamento de filmes com base em suas propriedades. Sabes, se estivesses a fazer agrupamentos num conjunto de filmes do IMDB ou algo assim, assim, IMDB ou algo assim, talvez os resultados te tenham surpreendido. Talvez não seja só sobre o gênero do filme. Talvez existam outras propriedades como a idade do filme ou a duração de execução, ou que país foi lançado em que são mais importantes, você simplesmente nunca sabe. Ou podemos analisar o texto das descrições do produto e tentar encontrar os termos que carregam mais significado para uma determinada categoria. Novamente, talvez não saibamos necessariamente com antecedência quais termos quais palavras são mais indicativas de um produto estar em uma determinada categoria. Mas através de aprendizagens não supervisionadas, podemos provocar essa informação latente agora. Em contraste, aprendizagem supervisionada é um caso em que temos um conjunto de respostas com as quais o modelo pode aprender . Então nós damos a ele um conjunto de dados de treinamento neste caso que o modelo aprende com Hennequin e para as relações entre os recursos e as categorias que queremos, e então aplicamos isso a novos valores invisíveis e prevemos informações sobre eles. Então, voltando ao nosso exemplo anterior, em que estamos tentando prever os preços dos carros com base nos atributos desses carros, esse é um exemplo em que estamos treinando nosso modelo usando respostas reais. Então eu tenho um conjunto de carros conhecidos em seus preços reais que eles venderam. Eu treinei o modelo nesse conjunto de respostas completas, e então eu posso criar um modelo que eu possa usar para prever os preços de carros novos que eu nunca vi antes. Então esse é um exemplo de aprendizagem supervisionada. Você estava dando a ele um conjunto de respostas para aprender, você sabe, categorias atribuídas do seu partido ou qualquer coisa para um conjunto de dados e, em seguida, usa isso para construir um modelo que ele pode usar para prever novos valores? Então, como você avalia a aprendizagem supervisionada? Então, o mais bonito do aprendizado supervisionado é que eu posso usar um truque chamado teste de trem , e a idéia aqui é, se eu dividisse minha observação todos os dados que eu quero que meu dedo modelo aprenda em dois agrupa um conjunto de treinamento e um conjunto de testes. Então, quando eu realmente treinei meu modelo quando eu crio meu modelo com base nos dados que eu tenho, eu só faço isso com parte dos meus dados que eu estou chamando meu conjunto de treinamento ok, e eu reservo outra parte dos meus dados, e eu vou usar isso para para que eu possa construir meu modelo usando um subconjunto de meus dados para dados de treinamento. E então eu posso avaliar o modelo que sai disso e ver se ele consegue prever com sucesso as respostas corretas para meus dados de teste. Então, viu o que eu fiz lá? Tenho um conjunto de dados. Onde já tenho a resposta é que eu posso treinar meu modelo, mas eu vou reter uma parte desses dados e realmente usá-lo para testar meu modelo que foi gerado usando o conjunto de treinamento. Certo, isso me dá uma maneira muito concreta de testar o quão bom meu modelo é em dados invisíveis. Porque na verdade tenho um pouco do dia que eu deixei de lado que eu contestar com ele. E você pode então medir quantitativamente o quão bem ele foi usando R ao quadrado ou alguma outra métrica como, erro quadrado de rotina, coisas assim. E, você sabe, você pode usar isso para testar um modelo versus outro e ver qual é o melhor modelo para um determinado problema. Você pode ajustar os parâmetros desse modelo e usar o teste treinado para maximizar a precisão desse modelo em seus dados de teste. Ótima maneira de evitar o excesso de encaixe. Há algumas advertências. Você precisa se certificar de que ambos os conjuntos de dados de treinamento e teste são grandes o suficiente para realmente ser representativo de seus dados. Você precisa ter certeza de que você está pegando todas as diferentes categorias e fora mentirosos que você gosta tanto no treinamento quanto no teste. Para obter uma boa medida de seu sucesso e para construir um bom modelo, você faz você tem que se certificar de que você selecionou a partir desses conjuntos de dados aleatoriamente. Então você não está apenas esculpindo seu conjunto de dados e dois e dizendo que tudo o que resta daqui é treinamento e a direita daqui está testando. Você quer provar isso aleatoriamente porque pode haver alguns padrões sequencialmente em seus dados que você não conhece. Mas fundamentalmente, é como eu disse, uma ótima maneira de proteger contra o excesso de encaixe. Então, se você é um modelo é muito apropriado e apenas está fora de seu caminho para aceitar outliers em seus dados de treinamento, bem, isso vai ser revelado quando você colocá-lo contra um visto não definido de dados de teste, certo? Porque todas as girações para outliers não vão ajudar com os aliados que nunca viram antes . Agora, teste de trem não é perfeito você pode obter resultados enganosos a partir dele pode ser seu tamanho amostral ar para pequeno como já falamos sobre. Ou talvez a pseudo-chance aleatória de seus dados de treinamento em seus dados de teste sejam notavelmente semelhantes. Eles realmente têm um conjunto semelhante de outliers, e você ainda pode ser muito apropriado, quem sabe? E você pode ver neste exemplo Sim, isso pode acontecer. Portanto, há uma maneira de contornar que dois chamados K dobra validação cruzada e vai fazer um exemplo disso mais tarde no curso. Mas o conceito básico é que você faz testes de trem muitas vezes. Então você realmente divide seus dados não em apenas um conjunto de treinamento em um conjunto de testes você para colocar seus dados em vários segmentos atribuídos aleatoriamente. Segmentos K. É daí que vem o K e você reserva um desses segmentos são seus dados de teste. E, em seguida, você começa a treinar seu modelo nos segmentos restantes e mede seu desempenho em relação aos testes para definir. E então você pega o desempenho médio de cada um desses conjuntos de treinamento, resultados dos modelos e obtém a pontuação média do R ao quadrado. Então, desta forma, você está realmente treinando em diferentes fatias de seus dados medindo-os relação ao mesmo conjunto de testes. E dessa forma, se você tiver um modelo, é sobre Ajustar a um determinado segmento de seus dados de treinamento que será avaliado em média pelos outros que estão contribuindo para uma validação cruzada cuidadosa fará mais sentido mais tarde. No curso de, eu só quero que você saiba que esta ferramenta existe para realmente fazer teste de trem ainda mais robusto do que já é. Então vamos e realmente jogar com alguns dados e realmente avaliados usando teste treinado. 28. Como usar o de treinamento para evitar a Overfitting: vamos colocar o teste de trem em ação para que você possa se lembrar que uma regressão é pode ser pensada de uma forma de aprendizado de máquina supervisionado. Então vamos apenas fazer uma regressão polinomial, que já cobrimos anteriormente neste curso e usar testes treinados para tentar encontrar o grau certo polinomial para ajustar um determinado conjunto de dados. Assim como no nosso exemplo anterior, vamos configurar um pequeno conjunto de dados falsos de velocidades pagas geradas aleatoriamente e valores de compra , e eu vou criar uma relação estranha entre eles. Isso é meio exponencial na natureza. Então vamos em frente e gerar esses dados. Ele vai usar uma distribuição normal de dados aleatórios para ambas as velocidades pagas e valor de compra usando este relacionamento aqui. Então, em seguida, eu vou dividir esses dados. Vou tirar 80% dos meus dados, e temos que reservar isso para os meus dados de treino. Assim, apenas 80% desses pontos serão usados para treinar o modelo. E então eu vou reservar os outros 20% para testar esse modelo contra dados invisíveis. OK, então eu só vou usar a sintaxe pythons aqui para dividir uma lista nos primeiros 80 pontos estão indo para o conjunto de treinamento e os últimos 20. Tudo depois dos 80 vai ser testado. Então lembre-se que do nosso curso Python Basics, nós cobrimos essa sintaxe antes, e eu vou fazer a mesma coisa para valores de compra agora nos slides. Eu disse que você não deveria apenas dividir seu conjunto de dados assim. Você deve amostrá-lo aleatoriamente para treinamento e teste. Neste caso, funciona porque meus dados originais foram gerados aleatoriamente de qualquer maneira, então realmente não há nenhuma rima ou razão para onde as coisas caíram. Mas em dados do mundo real, você vai querer embaralhar esses dados antes que ele os divida. E há um método aleatório de ponto que você pode usar para esse propósito. Além disso, se você estiver usando o pacote Pandas, há algumas funções úteis para fazer conjuntos de dados de treinamento e teste automaticamente para você. Mas nós vamos fazer isso usando uma lista python aqui só para manter isso simples. Então, vamos visualizar nosso conjunto de dados de treinamento com o qual acabamos. Então vamos fazer um gráfico de dispersão de nosso treinamento, velocidades pagas e valores de compra, e parece que basicamente 80 pontos selecionados aleatoriamente do conjunto de dados completo original tem basicamente as mesmas formas. Isso é uma coisa boa. É representativo dos nossos dados. Isso é importante. E nossos 20 restantes para testes também, você sabe, tem a mesma forma geral são nossos dados originais. Então eu acho que isso é ah, teste representativo definido para um pouco menor do que você gostaria de ver no mundo real certeza, você provavelmente obter um pouco de um resultado melhor se você tivesse, você sabe, 1000 pontos em vez de 100, por exemplo, para escolher e reservado 200 em vez de 20. Então agora vou tentar encaixar um polinômio de oitavo grau nesta data. E eu não vou apenas escolher o número oito ao acaso porque eu sei que é uma ordem muito alta provavelmente é mais apropriado. Então vamos em frente e encaixar nosso polinômio de oitavo grau usando um pedófilo, Polly, Wendy e pessoas se ele usar X y e oito, onde X é uma matriz de dados de treinamento apenas e sábio uma matriz de dados de treinamento apenas. Então, estamos ajustando nosso modelo usando apenas os 80 pontos que reservamos para treinamento e Agora temos essa função P quatro que resulta que podemos usar para prever novos valores. Então vamos em frente e conspirar para o polinômio que isso veio com contra os dados de treinamento em Weaken. Espalhe nossos dados originais aqui para o conjunto de dados de treinamento. E então podemos traçar valores preditos contra eles. Então você pode ver aqui. Parece um ajuste muito bom, mas claramente está fazendo um pouco mais de encaixe aqui. Que loucura é essa aqui? Quero dizer, tenho certeza que são, realmente Data, se tivéssemos isso aqui, não seria muito alto como esta função implicaria. Portanto, este é um ótimo exemplo de adequação excessiva aos seus dados. Ele se encaixa nos dados. Você deu muito bem, mas faria um péssimo trabalho de prever novos valores além deste ponto. Certo? Então vamos tentar provocar isso. Vamos dar nosso conjunto de dados de teste. E, de fato, se traçarmos nossos dados de teste com essa mesma função, bem, na verdade não parece tão ruim. Tivemos sorte, e nenhum dos nossos testes está aqui para começar. Mas você pode ver que você sabe, é um ajuste razoável, mas está longe de ser perfeito. E de fato, se você realmente medir a pontuação R ao quadrado, é pior do que você imagina. Então podemos fazer isso aqui. Usando o são para marcar função a partir da psique, ele aprende métricas, e nós apenas dar-lhe nossos dados originais e são valores previstos. E ele só passa e mede todas as variações das previsões e quadrados. Estou pronto para você e acabamos com um R ao quadrado de apenas 0,3. Então, não tão quente. E você pode ver que ele se encaixa nos dados de treinamento muito melhor, que, com r quadrado valor de 0,6, que não é muito surpreendente porque nós treinamos nos dados de treinamento. O status do teste é uma espécie de. É desconhecido. O teste da ITT e falhou no teste, francamente, 30%. Isso é o suficiente. Então esse é um exemplo de uso de teste treinado para avaliar um algoritmo de aprendizagem supervisionado. E, como eu disse antes, pandas tem alguns meios de tornar isso ainda mais fácil. Vamos olhar para isso um pouco mais tarde, e também vamos olhar para mais exemplos de testes treinados, incluindo cuidadosos através da validação mais tarde no curso, bem como, provavelmente, você pode adivinhar qual é o seu dever de casa. Sabemos que um polinômio de oitava ordem não é muito útil. Consegues fazer melhor? Então eu quero voltar atrás, executar este I python nenhum livro todo o caminho através, mas usar valores diferentes para o número para o grau polinomial que você vai usar para caber. Então altere esses 82 valores diferentes e veja se você pode descobrir o que polinômio grau falha realmente pontuar melhor Usando teste treinado é uma métrica. Então, onde você obtém o seu melhor r pontuação ao quadrado para seus dados de teste? Que dois graus se encaixa aqui. Então vá brincar com isso. Ter quaisquer problemas colocados nas discussões, mas deve ser um exercício muito fácil em um muito esclarecedor para você também. Então divirta-se um pouco com ele. Então isso é um teste treinado em ação. Técnica muito importante. Dedo do pé. E você vai usá-lo uma e outra e outra vez para se certificar de que seus resultados são um bom ajuste para o modelo que você tem e são um bom preditor de valores invisíveis. Ótima maneira de evitar o excesso de encaixe quando você está fazendo sua modelagem. Vamos seguir em frente 29. Métodos Bayesian: conceitos: Você já se perguntou como funciona o classificador de spam em seu e-mail? Como ele sabe que o e-mail pode ser spam ou não? Bem, uma técnica popular é algo chamado Bayes ingênuo, e isso é um exemplo de um método ocupado. Então vamos aprender mais sobre como isso funciona. Vamos discutir Basie e métodos. Então falamos sobre o Teorema de Bayes no início do curso, no contexto de falar sobre como coisas como testes de drogas poderiam ser muito enganosas em seus resultados. Mas você pode aplicar o mesmo baseado aqui, um, problemas maiores como classificador de spam. Então vamos mergulhar em como isso pode funcionar. E isso é chamado de BZ e método. Então, apenas uma atualização no teorema de Bayes. Lembre-se, a probabilidade de um dado B é igual à probabilidade geral de um vezes a probabilidade de ser dado um acima da probabilidade geral de B. Então, o que é Como você pode usar isso no aprendizado de máquina? Eu posso realmente construir um classificador de spam para isso. Um algoritmo que pode realmente analisar um conjunto de e-mails de spam conhecidos e um conjunto conhecido de e-mails não spam e treinar um modelo para realmente prever onde seus novos e-mails são spam ou não. E há. Esta é uma técnica real usada para spam natural. Classificador está no mundo real. Então, como exemplo, vamos apenas descobrir a probabilidade de um e-mail ser spam, já que ele contém a palavra livre. Sabe, maioria das pessoas promete coisas grátis. Provavelmente é longo, então vamos resolver isso. A probabilidade de ser spam, dado que você tem a palavra livre em um e-mail, funciona para a probabilidade geral de que ela seja um intervalo que a mensagem vezes a probabilidade de conter a palavra livre, dado que é spam sobre a probabilidade geral de ser livre agora, o numerador e apenas o pensamento disso, a probabilidade de uma mensagem ser spam e conter a palavra livre. Mas isso é um pouco diferente do que estamos procurando, porque essas são as chances do conjunto de dados completo, e não apenas as probabilidades dentro das coisas que contêm a palavra livre. Ok, e o denominador apenas a probabilidade geral de conter a palavra livre. Às vezes, isso não será imediatamente acessível a você a partir dos dados que você tem. Se não for, você pode realmente expandir isso para esta outra expressão aqui se você precisar derivar. Então, no final do dia, isso dá a você a porcentagem de e-mails que contêm a palavra livre que span, que seria uma coisa útil para saber quando você está tentando descobrir se é família. E sobre todas as outras palavras no idioma Inglês, entanto, então nosso classificador de spam deve saber sobre mais do que apenas a palavra livre deve automaticamente pegar todas as palavras na mensagem idealmente, e descobrir Quanto isso contribui para a probabilidade de este e-mail ser spam? Então o que podemos fazer é treinar um modelo em cada palavra que encontramos durante o treinamento. Você sabe, jogando fora coisas como um e e e e palavras sem sentido como essa, é claro. E então, quando passamos por todas as palavras em um novo e-mail, podemos multiplicar a probabilidade de ser spam para cada palavra juntos. E então temos a probabilidade geral de que esse e-mail seja spam. Agora chama-se Bayes ingênuos por uma razão. É assim que se chama esta técnica. E uma razão pela qual é ingênua é porque estamos assumindo que não há relações entre as próprias palavras estavam apenas olhando para cada mundo, palavra isoladamente, individualmente dentro de uma mensagem e basicamente combinando todos os probabilidades de cada contribuição palavras para ele. Sendo spam ou não, não estamos olhando para as relações entre as palavras. Ok, então um melhor classificador de spam faria isso. Mas, obviamente, isso é muito mais difícil. Então isso soa como um monte de trabalho. A idéia geral, e não que não tão difícil, mas psíquica aprendizagem Python faz com que seja realmente muito fácil de fazer . Ele oferece um recurso chamado Count Factor Riser que torna muito simples para realmente dividir um e-mail para todas as suas palavras componentes e processar essas palavras individualmente. E então ele tem uma função NB multi sem refeição onde N B significa Bayes ingênuo que fará todo o trabalho pesado para base ingênua para nós para que possamos realmente construir um classificador de spam com não muito casaco. E incluídos nos materiais do seu curso estão alguns dados de exemplo que incluem um conjunto de e-mails de spam conhecidos e em vez de e-mails de presunto conhecidos. Ham é o que chamamos de e-mail. Isso não é spam, e vamos fazer isso. Vamos criar classificador de spam 30. Como implementar um classificador de spam com Naive Bayes: Certo, vamos escrever um classificador de spam. Usando Bayes ingênuos, você vai se surpreender como isso é fácil. Na verdade, maior parte do trabalho acaba sendo apenas lendo todos os dados de entrada que vamos treinar e, na verdade, analisando esses dados na classificação de spam real. Mas o bit de aprendizado de máquina é, na verdade, apenas algumas linhas de código, então geralmente é assim que funciona. Sabe, na verdade, ler e massagear e limpar seus dados geralmente é a maior parte do trabalho quando você está fazendo ciência de dados, então se acostume com a idéia. Vá em frente e abra o caderno ingênuo Bayes I Python se quiser acompanhar comigo . E como eu disse, maior parte do trabalho é apenas na leitura dos dados. Então o que eu tenho aqui no seu material de curso é um par de diretórios diferentes cheios de e-mails. E um é um monte de e-mails que eu já sei onde vão que foram classificados antes do tempo e outro diretório cheio de e-mails que são presunto que não são abrangentes. E vou usar esta informação para treinar o meu modelo e testá-lo. Então, a primeira coisa a fazer é ler todos esses e-mails de alguma forma, e nós estamos indo de novo. Use pandas para tornar isso um pouco mais fácil. Então, novamente, pandas é uma ferramenta útil para lidar com dados tabulares. E vamos, uh, uh, depois de importar todos os pacotes diferentes que vamos usar dentro do nosso exemplo aqui, que inclui a biblioteca do sistema operacional, a biblioteca de IoT, torta numb, pandas e contagem fator riser e multi nenhuma refeição e ser de psiquiatria. Ele aprende, e passaremos por tudo isso quando os encontrarmos. Vamos passar por essas definições de função a partir de agora e descer para a primeira coisa que nosso código realmente faz. E isso é criar um objeto de quadro de dados Pandas. E nós vamos construir isso a partir de um dicionário que inicialmente contém uma lista vazia para mensagens em uma lista vazia de classe. Então esta sintaxe está dizendo que eu quero datar um quadro que tem duas colunas, uma que contém a mensagem, o texto real de cada e-mail e quando isso contém a classe de cada e-mail, isto é, se é spam ou presunto. , Basicamente, esta linha diz que quero criar um pequeno banco de dados de e-mails E, e este banco de dados tem duas colunas. Ele tem texto teatral do e-mail, e tem se é spam ou não. Ok, agora eu preciso colocar algo no banco de dados naquele quadro de dados em sintaxe python. Então eu vou chamar esses dois métodos para realmente jogar em todos os meus e-mails de spam da minha pasta de spam e todos os meus e-mails de mão para a minha pasta de presunto. E se você estiver jogando junto aqui, certifique-se de modificar este caminho para corresponder onde quer que você instalou os materiais do curso para este curso, ok? E você sabe, novamente, se você está em um Mac ou limita essas costas preste atenção a barras e barras para frente e todas essas coisas neste caso, isso não importa. Mas você não terá uma letra de unidade, por exemplo, se você não estiver no Windows, então certifique-se de que esses passados estão realmente apontando para onde suas pastas de spam e presunto estão neste exemplo. Então, qual é a data de vencimento? Um quadro de diretórios de funções que escrevi aqui. Basicamente, ele diz que eu tenho um caminho para um diretório, e eu sei que é como dar classificações spammer, presunto e o que eu vou fazer é chamar essa função de arquivos de leitura que eu também escrevi que irá alfabetizar através de cada em um diretório, e eu não quero entrar em muitos detalhes sobre como isso funciona. Mas basicamente ele está usando a função de caminhada de ponto OS para encontrar todos os arquivos em um diretório, constrói o nome do caminho completo para cada arquivo individual nesse diretório, e então ele lê em. E enquanto ele está lendo, ele realmente ignora o cabeçalho de cada e-mail e basta ir direto para o texto. E ele faz isso procurando a primeira linha em branco aqui. Ele sabe que tudo depois da primeira linha vazia é realmente o corpo da mensagem, e tudo na frente dessa primeira linha vazia é apenas um monte de informações de cabeçalho que eu realmente não quero treinar meu classificador de spam. Então ele me dá de volta tanto o caminho completo para cada arquivo quanto o corpo da mensagem. Ok, então é assim que eu leio em todos os meus dados, e essa é a maioria do código. Então o que eu tenho no final do dia aqui é um objeto de quadro de dados, basicamente um banco de dados de duas colunas que contém corpos de mensagens corporais e se é spam ou não. E poderíamos ir em frente e executar isso e podemos usar o comando head do quadro de dados para realmente visualizar o que isso parece. Assim, as primeiras entradas em nosso quadro de dados se parecem com isso para cada caminho para um determinado arquivo cheio de e-mails, temos uma classificação e temos o corpo da mensagem. Certo, certo, agora a parte divertida. Então vamos usar a função nb multi sem refeição de Psychic Leared, realmente executar ingênuo com base no estado de que temos e o que ele espera obter são duas coisas. Então, uma vez que construímos um multi multi sem refeição naive Bayes classificador nessas duas entradas e ele é os dados reais que estavam treinando e os alvos para cada coisa. Então o que é basicamente uma lista de todas as palavras em cada e-mail, ok, e o número de vezes que essa palavra ocorre. Então é isso que essa coisa de contagem vetorial faz. Ele vai. Esta sintaxe significa pegar a coluna de mensagem para o meu quadro de dados e tomar todos os valores a partir dele . Vou chamar Vector Riser Dot Fit, transformar o que isso faz. É basicamente token ises ou converte todas as palavras individuais vistas nos meus dados em números em valores, E então contará quantas vezes cada palavra ocorre. Então esta é uma maneira mais compacta de representar quantas vezes cada palavra ocorre em um e-mail vez de realmente preservar as próprias palavras. Estou representando essas palavras como valores diferentes em uma matriz esparsa. Ok, o que está basicamente dizendo que estou tratando cada palavra é um número como um índice numérico em uma matriz. Então o que isso faz é apenas em inglês simples. Ele se divide. Ele Smith cada mensagem em uma lista de palavras que estão nela e quantas vezes cada palavra ocorre. Então, estamos chamando isso de conta. É basicamente que a informação de quantas vezes cada palavra ocorre em cada mensagem individual e, em seguida, alvos são os dados de classificação reais para cada e-mail que eu encontrei . E eu posso chamar classificador dot fit usando meu multi nobile e ser função para realmente criar um modelo usando Bayes ingênuos que irá prever onde seus novos e-mails e são spam ou não, com base na informação que eu dei. Vamos em frente e correr. Isso é muito rápido, então vamos tentar. Vou usar alguns exemplos aqui. Vamos tentar uma mensagem Corpo que só diz Viagra livre agora provavelmente muito claramente abranger. E mais uma mensagem inocente que diz: “ Oi, Bob,que tal um jogo de golfe amanhã? mais uma mensagem inocente que diz: “ Oi, Oi, Bob, Então nós passamos que na primeira coisa que precisamos fazer é converter essas mensagens no mesmo formato em que eu treinei meu modelo. Então eu vou usar o mesmo riser vetorial que eu criei ao criar o modelo para converter cada mensagem em uma lista de palavras e suas frequências, onde as palavras são representadas por posições em uma matriz. E então uma vez que eu fiz essa transformação, eu posso realmente usar a função de previsão no meu classificador nessa área, exemplos que se transformaram em, você sabe, listas de palavras e ver que nós criamos, e com certeza ele funciona. Então, dada esta matriz de mensagens de entrada, livre Viagra agora e alto. Bob está me dizendo que os primeiros resultados foram um spam, e o segundo resultado voltou a sua mão, que é o que eu esperaria, então isso é muito legal. Então, aí está. Agora, temos um conjunto de dados bem pequeno aqui. Então, você sabe, você pode tentar executar alguns e-mails diferentes através dele, se você quiser, e ver se você obtém resultados diferentes. Mas tente aplicar três. Não tome cuidado com você mesmo. Tentou aplicar o teste de trem para este exemplo. Então, a medida real de se meu classificador de spam é bom ou não é apenas intuitivamente se ele pode descobrir que Viagra livre agora é um spam. Você quer medir isso quantitativamente. Então, se você quiser um pouco de um desafio, vá em frente e tente Teoh dividir o estado em um conjunto de treinamento em um conjunto de dados de teste e você pode realmente procurar on-line como os pandas podem dividir dados em testes de trem e conjuntos de testes muito facilmente para você. Ou você pode fazê-lo à mão, o que funciona para você, e ver se você pode realmente aplicar o seu multi no classificador nb refeição a um conjunto de dados de teste e medir o seu desempenho. Então, um pouco de exercício, um pouco de desafio. Vá em frente , tente isso. Como legal é que nós apenas escreveu seu próprio classificador de spam apenas usando algumas linhas de código em Python É muito fácil usar aprendizagem psíquica e python. Isso é ingénuo. Bayes em ação, e você pode realmente entrar. Classifique algumas mensagens de spam ou presunto agora que você tem isso sob seu cinto. muito legais. Vamos falar sobre agrupamento a seguir. 31. K-Means a algunos: Em seguida, vamos falar sobre K significa agrupamento, e esta é uma técnica de aprendizagem não supervisionada onde você tem ah, coleção de coisas que você deseja agrupar em vários clusters. Talvez sejam gêneros de filmes ou demografia de pessoas que sabem, mas na verdade é uma ideia bem simples. Então vamos ver como funciona. Certo, vamos falar sobre K significa agrupamento. Técnica muito comum em aprendizado de máquina, onde você apenas tenta pegar um monte de dados e encontrar clusters interessantes de coisas apenas com base nos atributos dos próprios dados. Parece chique, mas na verdade é bem simples. Tudo o que fazemos em K significa agrupamento é tentar dividir nossos dados em grupos K. É de onde vem o K. quantos grupos diferentes você está tentando dividir seus dados. E faz isso achando o caso Central Lloyds. Então, basicamente, qual grupo de dado ponto de dados pertence é definido por qual desses pontos OID centrais ele está mais próximo em seu gráfico de dispersão, então você pode visualizar que aqui está mostrando um exemplo de K significa agrupamento com K de três, e os quadrados representam pontos de dados em um gráfico de dispersão os círculos representam a central é que o K significa algoritmo de agrupamento surgiu com, e cada ponto é atribuído um cluster com base em qual central ele está mais próximo. Ok, então isso é tudo o que há para fazer. É realmente um exemplo de aprendizagem supervisionada pela ONU. Portanto, não é um caso em que temos um monte de dados, e já sabemos o cluster correto para um determinado conjunto de dados de treinamento. Em vez disso, você só recebe os dados em si, e ele tenta convergir nesses clusters naturalmente, apenas com base nos atributos dos dados sozinhos. Então, é um bom caso de onde você está tentando encontrar clusters são categorizações que você nem sabia que estavam lá. É Ah, como com a maioria das técnicas não supervisionadas ou qualquer outra, o ponto é encontrar valores latentes. Você sabe, coisas que você realmente não percebeu onde lá até que o algoritmo as mostre para você. Então, por exemplo, onde moram os milionários? Talvez, eu não sei. Talvez haja algum aglomerado geográfico interessante onde você sabe que pessoas ricas tendem a viver e K significa que agrupamento pode ajudá-lo a descobrir isso. Talvez eu realmente não sei se os gêneros musicais de hoje ou significativa O que significa ser alternativa hoje em dia? Não muito, certo. Mas usando K significa agrupamento em atributos de músicas, talvez eu pudesse encontrar grupos interessantes de músicas que estão relacionadas entre si e criar novos nomes para o que esses clusters representam. Ou talvez eu possa olhar para dados demográficos, e talvez estereótipos existentes não sejam mais úteis. Talvezo Talvez hispânico tenha perdido o significado. E esses outros atributos que definiram grupos de pessoas, por exemplo, que eu poderia descobrir com agrupamento soa extravagante. coisas não complicam muito. Aprendizagem automática não supervisionada com clusters K. Parece extravagante, mas como acontece com a maioria das técnicas e ciência de dados, é realmente uma ideia muito simples. Então aqui está o algoritmo que começamos com um escolhido aleatoriamente em vez de Central. É assim, se tivermos um K de três, vamos procurar três agrupamentos em nosso grupo, e vamos atribuir três ajudas centrais de posição aleatória em nosso gráfico de dispersão. Em seguida, atribuindo ponto declarado para o você atribuído aleatoriamente centralmente que está mais próximo, e então nós re computar o cluster de alcance central que nós criamos. Então, para um determinado cluster que acabamos com. Vamos mover isso centralmente para ser o centro real de todos esses pontos. E então vamos fazer tudo de novo até que o centralmente parar de se mover. Você sabe, nós atingimos um valor limite que diz, OK, nós convergimos em algo aqui e então para prever os clusters para novos pontos que eu nunca vi antes. Podemos apenas ir através de nossas localizações centrais e descobrir qual central é mais próximo de você para prever seu cluster. Ok, vamos olhar para um exemplo gráfico aqui para fazer um pouco mais de sentido. Então digamos que eu tenho um gráfico de dispersão novamente. Esses quadrados cinza representam pontos de dados em nosso gráfico de dispersão. Então esses relatórios esses eixos representam algumas características diferentes de algo. Talvez sua idade e renda seja um exemplo que eu continuo usando, mas pode ser qualquer coisa. E esses quadrados representam pessoas individuais ou músicas individuais ou indivíduos, algo que eu quero encontrar relacionamentos entre eles. Ok, então eu começo apenas escolhendo três pontos aleatoriamente no meu gráfico de dispersão. Pode estar em qualquer lugar. Tem que começar em algum lugar, certo? Então a próxima coisa que vou fazer é para cada ponto. Vou calcular qual desses pontos está mais próximo para que você possa ver onde isso acaba fazendo isso , esses pontos sombreados em azul estão associados a este OID sentinela azul. Os pontos verdes estão mais próximos da central verde. Neste único ponto vermelho é o mais próximo do ponto aleatório vermelho que eu escolhi. Mas você pode ver, você sabe, isso não é realmente ah reflexo de onde os clusters reais parecem estar. Então, se eu fizer isso de novo, o que eu vou fazer é pegar os pontos que acabaram em cada cluster e calcular o centro real desses pontos. Então, por exemplo, e este cluster verde aqui, o centro real de todos esses dados acaba por ser um pouco menor. Então vamos mover isso um pouco para baixo neste aglomerado vermelho Island tinha um ponto, então seu centro se move para baixo para onde esse único ponto está bem, e o ponto azul estava realmente bem perto. Então isso só se move um pouco. E nesta próxima geração, acabamos com algo parecido com isso. Então agora você pode ver que nosso grupo de coisas vermelhas cresceu um pouco, e as coisas mudaram um pouco com aqueles que foram retirados do aglomerado verde, basicamente. E se fizermos isso de novo, você provavelmente verá o que vai acontecer. Redes que Green Central. Vai se mover para cá um pouco daquele azul. Senador Troy ainda está onde deveria estar, mas no final do dia, você vai acabar com os grupos que provavelmente esperaria ver. O aglomerado vermelho vai acabar sendo este grupo, e Blue vai acabar sendo este grupo e Greenwell nele sendo aquele grupo, é assim que k significa funciona. Então ele continua iterando tentando encontrar os direitos centrais certos até que as coisas parem de se mover e nós convergimos em uma solução. Portanto, há obviamente algumas limitações para K significa agrupamento. Primeiro de tudo, precisamos escolher o valor certo de K, e isso não é uma coisa simples de fazer tudo. Você sabe a maneira que a forma de princípio de escolher K é apenas começar baixo e continuar aumentando o valor de K. Quantos grupos você quer até você parar de obter grandes reduções no erro quadrado. Então você sabe, se você olhar para as distâncias de cada ponto para seus centrales. Você pode pensar que é uma métrica de erro, e no ponto em que você parar de reduzir essa métrica de erro, você sabe que provavelmente tem muitos clusters. OK, então você não está realmente ganhando mais informações adicionando clusters adicionais nesse ponto. Além disso, há um problema de mínimos locais, então você pode apenas ter muito azar com essas escolhas iniciais de direitos centrais. E eles podem acabar convergindo apenas para o fenômeno local em vez de clusters mais globais. Então normalmente você quer executar isso algumas vezes e talvez média os resultados juntos. Sabe, chamamos isso de aprendizado de conjunto. Falaremos sobre isso um pouco mais tarde. Mas você sabe, é sempre uma boa idéia executar K significa mais de uma vez usando um conjunto diferente de valores iniciais aleatórios e apenas ver se você realmente acaba com os mesmos resultados gerais ou não. Finalmente, o principal problema com K significa agrupamento é que não há rótulos para os clusters que você obtém. Ele só vai dizer que este grupo de pontos de dados estão de alguma forma relacionados, mas você não pode colocar um nome nele. Você sabe que não pode dizer o significado real desse grupo. Vamos dizer, ter um monte de filmes que eu estou vendo e K significa Clustering me diz que um monte de filmes de ficção científica vai ao ar aqui, mas não vai chamá-los de filmes de ficção científica. Para mim, cabe a mim investigar os dados e descobrir bem, o que essas coisas realmente têm em comum e como posso descrever isso em inglês. Essa é a parte difícil, e K significa que não vai te ajudar com isso. Então, novamente, aprendizado psíquico torna muito fácil fazer isso. Vamos realmente fazer um exemplo e colocar k significa agrupamento em ação. 32. Clustering de pessoas por renda e idade: Muito bem, vamos ver como é fácil fazer K significa agrupamento usando aprendizagem psíquica e python. Então a primeira coisa que vou fazer é criar alguns dados aleatórios que eu quero tentar agrupar. E só para facilitar, eu vou realmente construir alguns clusters em meus dados de teste falsos. Então vamos fingir que há alguma relação fundamental entre esses dados, e existem alguns aglomerados naturais reais que existem nele. Então, para fazer isso, eu apenas escrevi este pequeno criar função de dados em cluster e python, e ele começa com uma semente aleatória consistente, então você vai obter o mesmo resultado toda vez e ele leva em. Quero criar agrupamentos de pessoas finais em grupos K. Então ele descobre quantos pontos por cluster que funciona primeiro e, em seguida, constrói esta lista X que começa vazia. Então, para cada agrupamento para I no intervalo K, eu vou criar alguma taxa central aleatória de renda entre US $220.000 algum século aleatório de idade entre a idade de 20 e 70 anos. Então o que estou fazendo aqui é criar um falso como falso gráfico de dispersão que mostrará renda versus idade para N pessoas e grupos K. Então, para cada aleatório centralmente que eu criei, eu vou criar um conjunto normalmente distribuído de dados aleatórios com um desvio padrão de 10.000 e renda e um desvio padrão de dois e um juiz e isso me dará de volta um monte de dados de renda idade que é agrupado em alguns clusters pré-existentes que eu escolhi aleatoriamente. Ok, vamos em frente e executar isso. E agora fazer K significa que você vai ver como é fácil. Tudo o que você faz é importar k significa da psiquiatria. Ele aprende pacote de cluster, e nós também importante que plotar lábios para que possamos visualizar as coisas e também as coisas de escala possamos dar uma olhada em como isso funciona em um minuto. Então eu vou usar minha função de criação de dados em cluster para dizer que eu quero 100 pessoas aleatórias em torno cinco clusters. Portanto, há cinco aglomerados naturais a partir da data em que eles criaram. Eu tenho ido para criar um modelo k significa modelo com K de cinco. Então eu e escolhendo cinco grupos porque sei que essa é a resposta certa. Mas novamente e aprendizagem não supervisionada, você não sabe necessariamente qual é o verdadeiro valor de K. Você precisa iterar e convergir sobre isso você mesmo. E então eu poderia chamar a roupa modelada usando, tipo, um modelo de meios, usando os dados que eu tinha agora escala que eu aludi anteriormente. Isso é normalizar os dados. E uma coisa importante com K significa que funciona melhor. Se seus dados estiverem todos normalizados, isso significa que tudo está na mesma escala. Então, um problema que eu tenho aqui é que minhas idades variam de 20 a 70, mas por renda variou até 200 mil. Portanto, esses valores não são realmente comparáveis. Os rendimentos são muito maiores do que a escala de valores etários, levará todos esses dados e os escalará juntos para uma escala consistente. Então eu posso realmente comparar essas coisas como maçãs para maçãs, e isso vai ajudar muito com o seu K significa resultados. Então, uma vez que eu realmente chamei ajuste no meu modelo, eu tenho um modelo, e eu posso realmente olhar para os rótulos resultantes que eu tenho e então nós podemos realmente visualizá-lo usando este pouco de Matt Plot Live magia. Você pode ver aqui eu tenho um pequeno truque aqui onde eu assinei a cor, também. Os rótulos que eu acabei com convertido para algum número de ponto flutuante, e isso é que é um pouco complicado pode usar para atribuir cores arbitrárias a um determinado valor. Então vamos ver, acabamos com não demorou tanto tempo. Você vê os resultados aqui, basicamente em que clusters eu assinei tudo. E você pode ver que nós sabemos que nossos dados falsos já estão pré-agrupados, então parece que e identificar o primeiro e o segundo clusters facilmente ficaram um pouco confusos além desse ponto, no entanto, porque nosso aglomerados aqui no meio são na verdade um pouco um pouco esmagados juntos. Eles não são muito distintos. Então isso foi um desafio para K significa. Mas, independentemente disso, ele veio com algumas suposições razoáveis no cluster. Mas acabamos com aqui estava aglomerado aqui, perto daqui. Agrupar lá em um aglomerado ali, agrupar aqui em baixo e não é uma má escolha. Você sabe, este é provavelmente um exemplo de onde vocês quatro grupos estavam mais naturalmente em forma. Os dados. Então o que eu quero que você faça atividades estrangeiras para experimentar isso. Tente valores diferentes de K e CTO acabam com, você sabe, apenas olhando isso. Parece que quatro funcionariam bem, não é mesmo? O que acontece se eu aumentar K dois grandes? O que acontece com meus resultados lá? Em que tenta dividir as coisas e nem faz sentido? Então brinque com ele, tente por valores. OK, então os clusters finais funcionam aqui, mude os cinco para outra coisa, correndo tudo novamente e veja se eles acabam com isso, então brinque, divirta-se com ele. Isso é tudo o que há para K significa agrupamento. É tão simples assim. Você poderia apenas usar como ele aprende k significa coisa de cluster e novamente o único real gotcha . Certifique-se de dimensionar os dados, normalizá-los ou branqueá-los, pois o caso pode ser outro nome para a mesma coisa. Você quer ter certeza de que as coisas que você está usando k significa são comparáveis entre si , e a função de escala fará isso por você. Então essas são as principais coisas para K significa agrupamento. Conceito muito simples, ainda mais simples de fazê-lo usando psíquico aprendido. Aí está você. É tudo o que há para ele. Isso é K significa agrupamento. Então, se você tem um monte de dados que não são classificados e você realmente não tem a resposta certa é antes do tempo. É uma boa maneira de tentar encontrar naturalmente agrupamentos interessantes de seus dados. E talvez isso possa lhe dar alguma visão sobre o que esses dados são. Tão boa ferramenta para ter. Eu já usei isso antes no mundo real, e não é tão difícil de usar, então mantenha isso no seu baú de ferramentas. 33. Como medir a entrada: Tudo bem. Em breve vamos chegar a uma das partes mais frias do aprendizado de máquina, mas pelo menos eu acho as chamadas árvores de decisão. Mas antes que pudéssemos falar sobre isso, você precisa entender o conceito de entropia e ciência de dados, e é um exercício bem simples. Palestra muito curta aqui. Mas vamos apenas colocar esse conceito sob o seu cinto. Vamos falar sobre entropia, outro exemplo de uma palavra chique para um conceito simples. Mas precisamos entender isso antes de falarmos sobre árvores de decisão. Então vamos colocar isso em nosso cinto primeiro. Tão entropia, como é na física. Termodinâmica. É uma medida de uma desordem de conjuntos de dados. Então, como o mesmo ou diferente seu dia definido. Então imagine que temos um conjunto de dados de classificações diferentes. Por exemplo, animais. Digamos que eu tenha um monte de animais que são classificados por espécie. Agora, se todos os animais do meu conjunto de dados não são iguana, eu tenho uma entropia muito baixa porque eles são todos iguais. Mas se cada animal no meu conjunto de dados é um animal diferente, tem iguanas, porcos e caça-níqueis, e quem sabe o que mais eu teria uma entropia maior porque há mais desordem. No meu conjunto de dados, as coisas são mais diferentes do que são. A mesma entropia é uma forma de quantificar essa mesmidade ou essa diferença em todos os meus dados. Então novamente, uma entrevista zero implica que todas as classes e os dados são os mesmos. Enquanto que se tudo for diferente, eu teria uma alta entropia e algo no meio seria um número no meio. Então é apenas mais um exemplo de uma palavra chique para um conceito simples. A entropia apenas descreve como são iguais ou diferentes as coisas em um conjunto de dados. Isso é tudo o que há para ele. É uma palestra muito curta porque é um conceito muito simples. Agora, matematicamente, é um pouco mais envolvido nisso. Então, quando realmente calcular um número para entropia é computado usando esta expressão aqui. Então, para cada classe diferente que eu tenho em meus dados, eu vou ter um desses termos p. Então pedaço de um pedaço de dois e assim por diante e assim por diante até o fim para terminar classes diferentes que eu poderia ter, e cada termo o P DIS representa a proporção dos dados que é essa classe, e se você realmente plotar com isso parece para cada termo, este pedaço negativo de por vezes um algoritmo de lei natural de pedaço de I. Vai parecer um pouco algo como isto, e você adiciona estes para cada classe individual. Então, se você olhar para ele, meio que faz sentido. Você sabe, por exemplo, se a proporção dos dados que é uma determinada classe zero do que a contribuição para a entropia geral é zero. E se tudo é essa classe e novamente, a contribuição para a entropia geral é zero. Porque em qualquer caso, se nada é essa classe ou tudo é essa classe que não está contribuindo nada para a entropia geral? Você sabe, são essas coisas no meio que contribuem em tributo à classe, onde há alguma mistura desta, desta classificação e outras coisas, e quando você adiciona todos esses termos juntos, você acaba com uma entropia geral para todo o conjunto de dados tão matematicamente que é assim funciona. Mas novamente, o conceito é muito simples. É apenas uma medida de quão desordenado seu conjunto de dados, quão iguais ou diferentes as coisas em seus dados são. Isso é tudo o que há para entropia. Com isso, podemos seguir em frente e falar sobre árvores de decisão. Então isso é entropia, apenas uma medida da desordem de um conjunto de dados. Quão diferente ou igual é tudo? E você só precisa entender isso enquanto falamos sobre as árvores de decisão a seguir. 34. Windows: Como instalar Graphviz: Então esta vai ser a palestra mais curta do mundo no Windows. Você não tem que fazer nada especial para realmente usar árvores de decisão em Anaconda. Ele já instalou tudo o que você precisa para você automaticamente. Você pode notar que há vídeos configurados aqui para usuários de Mac e Lennox onde eles precisam seguir um passo extra. Mas você é bom. Então continue para a próxima lição, e podemos realmente começar a brincar com nossas árvores de decisão. 35. Mac: Como instalar Graphviz: Agora, antes que possamos realmente exibir árvores de decisão, precisamos de um pacote chamado gráfico Viz instalado no seu sistema e no Mac. A maneira mais fácil de fazer isso é através da Homebrew. Então, se você ainda não tem homebrew instalado, vá para brew dot s h aqui e instale Homebrew. Vamos copiar toda esta informação aqui, Comando. Vê? Vá para um terminal, solicite colá-lo no comando V e execute isso. Ele vai voltar? Ele precisa se autenticar. E lá vai tudo bem. Depois de alguns minutos, isso acabou. E agora podemos apenas digitar cerveja. Instalar gráfico é assim. Tudo bem. Parece que estamos no negócio. Vamos fechar esta janela do terminal para que possamos ter certeza de que vamos pegar o novo ambiente da próxima vez. E deve ser isso. Devemos estar prontos para ir agora. 36. Linux: como instalar o Graphviz: assim por diante Lenox. Antes de podermos realmente brincar com árvores de decisão, precisamos instalar um pacote chamado Graph Viz que nos permitirá realmente desenhar em Visualize dentro do nosso caderno. Para fazer isso, é realmente fácil, e Lennox, Eu vou ter que fazer é abrir um terminal e digitar sudo Apt Dash obter instalar visualização gráfico. Pelo menos é assim que ele funciona em uma benção para em diferentes sabores de winnicks. Você pode ter diferentes gerenciadores de pacotes, mas gráfico é provavelmente está lá. Então, basta fazer o que você precisa fazer para instalar. O gráfico está no seu sistema Lennox. Mas por que continuar e gráfico é agora instalado. É tão fácil assim. Então agora podemos continuar e começar a brincar com árvores de decisão. 37. Árvores de decisão: conceitos: Acredite ou não. Dado um conjunto de dados de treinamento, você pode realmente obter python para gerar um fluxograma para você realmente tomar uma decisão. Então, se você tem algo que você está tentando prever em alguma classificação, você pode usar uma árvore de decisão para realmente olhar para vários atributos que você poderia decidir sobre ele cada nível em um fluxograma. E você pode realmente imprimir um fluxograma real para você usar para tomar uma decisão com base no aprendizado de máquina real. Quão legal é isso? Vamos ver como funciona. Tudo bem, vamos falar sobre árvores de decisão. Esta é uma das aplicações mais interessantes em aprendizado de máquina que eu posso pensar. Acho que é muito legal, mas vamos falar sobre como funciona. Então, uma árvore de decisão basicamente lhe dá um fluxograma de como tomar algumas decisões para que você tenha alguma variável dependente, como se eu deveria ou não ir jogar lá fora hoje ou não baseado no tempo. E quando você tem uma decisão como essa, isso depende de vários atributos, múltiplas variáveis. Uma árvore de decisão pode ser uma boa escolha, então há muitos aspectos diferentes do clima que podem influenciar minha decisão de ir lá fora e jogar. Talvez eu tenha a ver com a umidade, a temperatura, seja ensolarado ou não. Por exemplo, uma árvore de decisão pode olhar para todos esses atributos diferentes do clima ou qualquer outra coisa e decidir onde os limiares, onde as decisões que eu preciso tomar em cada um desses atributos antes de chegar a um decisão de se eu deveria ou não ir brincar lá fora. Isso é tudo que a árvore de decisão é. Então é uma forma de aprendizagem supervisionada. A maneira como funcionaria neste exemplo seria que eu teria algum tipo de conjunto de dados de tempo histórico e se as pessoas saíram ou não para jogar naquele dia e eu iria alimentar o modelo esses dados do que, se estava ensolarado ou não em cada dia e que a umidade era, por exemplo, e se estava ventoso ou não, e se foi ou não um bom dia para ir jogar fora. E dado que os dados de treinamento, um algoritmo de árvore de decisão pode realmente chegar a uma árvore que lhe dá este fluxograma que você pode imprimir parece exatamente como este que você pode simplesmente passar e descobrir se é ou não um bom dia do dedo do pé jogar fora com base nos atributos atuais. Então você pode usar isso para prever a decisão de um novo conjunto de valores. É uma coisa muito incrível. Quero dizer, quão legal é isso? Sabe, temos um algoritmo que fará um fluxograma para você automaticamente, apenas baseado em dados observacionais. E o que é ainda mais legal é o quão simples tudo funciona quando você aprende como funciona. Então, por exemplo, vamos realmente fazer isso. Digamos que eu queira construir um sistema que irá automaticamente filtrar currículos e com base nas informações contidas no currículo. Então, um grande problema que as empresas de tecnologia têm é que temos toneladas e toneladas de currículos para nossas posições. Então temos que decidir quem realmente trazemos para uma entrevista porque pode ser caro levar alguém para fora e realmente tirar o tempo do dia para conduzir uma entrevista. Então e se houvesse uma maneira de realmente pegar dados históricos sobre quem realmente foi contratado e mapear as coisas que são encontradas em seu currículo, poderíamos construir uma árvore de decisão que nos deixaria passar por ele currículo individual e dizer, Esta pessoa tem a grande probabilidade de ser contratada ou não. Então podemos treinar uma árvore de decisão sobre esses dados históricos e percorrer isso para futuros candidatos. Seria uma coisa maravilhosa de se ter? Então vamos fazer alguns dados de contratação totalmente fabricados que eu vou usar neste exemplo. Temos candidatos que acabam de ser identificados por identificadores numéricos, e eu vou escolher alguns atributos que eu acho que podem ser interessantes para prever se eles são ou não uma boa contratação ou não. Quantos anos de experiência eles têm? Eles estão empregados atualmente? Quantos empregadores já tiveram antes desta? Qual é o nível de educação deles? Que grau eles têm? Eles foram para o que classificamos como uma escola de primeira classe? Fizeram um estágio enquanto estavam na faculdade? E podemos dar uma olhada nesses dados históricos e a variável dependente aqui é contratada. Será que essa pessoa realmente recebeu uma oferta de emprego ou não com base nessa informação Agora, obviamente há muita informação que não está neste modelo. Isso pode ser muito importante. Mas a árvore de decisão que treinamos a partir desses dados pode realmente ser útil em fazer uma passagem inicial, que ler alguns candidatos e bem, nós acabamos com pode ser uma árvore que se parece com isso. Então acontece que nos meus dados totalmente falsificados, qualquer um que fez um estágio na faculdade acabou recebendo uma oferta de emprego. Então a minha primeira decisão é, esta pessoa fez um estágio ou não? Se sim, vá em frente e traga-o. E você sabe, na minha experiência, estágios são realmente um bom preditor de como uma pessoa é boa, você sabe, se eles têm a iniciativa de realmente sair e fazer um estágio e realmente aprender Algo naquele estágio, isso é um bom sinal. Eles atualmente têm um emprego? Bem, se eles se eles estão atualmente empregados em meus dados de pensamento muito pequenos disseram, acabou que eles valem a pena contratar, você sabe, só porque alguém pensou que valia a pena contratar para eles. Obviamente, seria um pouco mais de uma decisão delicada no mundo real. Se não estiverem atualmente empregados, terão mais de um empregador a menos de um empregador anterior. Se sim, essa pessoa nunca teve um emprego, e eles nunca fizeram um estágio, também. Provavelmente não é uma boa decisão de contratação. Não contrate essa pessoa. Mas, você sabe, se eles tinham um empregador anterior, eles pelo menos vão para o topo da sua escola? Se não, é meio duvidoso. Se sim, então sim, devemos contratar essa pessoa com base nos dados em que treinamos. Então é assim que você percorre os resultados de uma árvore de decisão. É como passar por um fluxograma, e é incrível que um algoritmo possa produzir isso para você. O algoritmo em si é realmente muito simples. É assim que funciona. Então, em cada etapa do fluxograma da árvore de decisão, encontramos o atributo no qual podemos particionar nossos dados. Isso minimiza a entropia dos dados na próxima etapa. Ok, então você sabe que temos um conjunto resultante de classificações neste caso, mais alto, eu não contrato e queremos escolher a decisão de atributo em cada passo que irá minimizar a entrevista no próximo passo. Então, basicamente, a cada passo, queremos fazer com que todas as escolhas restantes resultem em tantas contratações conhecidas ou em tantas decisões mais altas quanto possível. Queremos fazer esse datum ou mais uniforme. Então, à medida que trabalhamos para baixo no fluxograma, acabamos por acabar com um conjunto de candidatos que são todos contratados são todos contratados que podemos classificar em, você sabe, sim, sem decisões sobre uma árvore de decisão. Então é isso. Sabe, nós apenas caminhamos pela árvore, minimizamos a entropia a cada passo escolhendo o atributo certo para decidir, e continuamos indo até que acabemos. E há um nome chique para este algoritmo é chamado idee três. Eu nem sei o que isso significa, mas isso é o que é conhecido como algoritmo ganancioso. Então, à medida que ele desce a árvore, ele apenas escolhe o atributo que irá minimizar a entropia nesse ponto. Isso pode não resultar em uma árvore ideal que minimiza o número de escolhas que você tem que fazer, mas resultará em uma árvore que funciona, dado o dia em que você a deu. Então isso é tudo o que há para ele. É uma ideia bem simples. Agora, um problema com as árvores de decisão é que elas são muito propensas a excesso de ajuste. Então você pode acabar com uma árvore de decisão. Como vimos que funciona lindamente para os dados em que você treinou. Mas pode não ser tão bom para realmente prever a classificação correta para novas pessoas que nunca viram antes. Essa decisão arvore tudo sobre chegar à decisão certa para os dados de treinamento que você deu. Está bem. E talvez você não tenha levado em conta os atributos certos. Talvez não deu o suficiente de uma amostra representativa de pessoas para aprender com estes pode resultar em problemas reais. Então, para lutar que usamos uma técnica chamada florestas aleatórias. E a idéia aqui é que nós realmente amostramos nossos dados que treinamos de maneiras diferentes para várias árvores de decisão diferentes. Então, cada árvore de decisão pega uma amostra aleatória diferente do nosso conjunto de dados de treinamento e conduz a verdade, constrói uma árvore a partir dela, e então cada tratado resultante pode votar sobre o resultado certo. Agora, essa técnica de amostragem aleatória de nossos dados com o mesmo modelo é um termo chamado bootstrap agregating ou ensacamento novamente, um termo extravagante para uma idéia muito simples. E esta é uma forma do que chamamos de aprendizado de conjunto, que abordará com mais detalhes em breve. Mas a ideia básica. Temos várias árvores, uma floresta de árvores, se preferir. Cada um que usa uma amostra aleatória dos dados que temos que treinar, e então cada uma dessas árvores pode votar no resultado final, e isso nos ajudará a combater sobre a adequação de um dado conjunto de dados de treinamento. A outra coisa que as florestas aleatórias podem fazer é realmente restringir o número de atributos que pode escolher entre em cada estágio é que ele está tentando minimizar a entropia é atrás vai e podemos escolher aleatoriamente quais atributos podem escolher em cada nível. Então isso também nos dá mais variação de árvore para árvore. E, portanto, temos mais de uma variedade de algoritmos que podemos competir uns com os outros, e todos eles podem votar nos resultados finais usando abordagens ligeiramente diferentes para chegar à mesma resposta. Então é assim que as florestas aleatórias funcionam. Basicamente, é uma floresta de árvores de decisão onde eles estão desenhando de diferentes amostras e também diferentes conjuntos de atributos em cada estágio que ele pode escolher entre. Ok, então com tudo isso, vamos tomar algumas árvores de decisão e nós vamos realmente usar forças aleatórias Bem, quando terminarmos porque como Hitler e torna muito, muito fácil de fazer como bem ver em um minuto. 38. Árvores de decisão: a previsão de decisões de contratação: Tudo bem, vamos tomar algumas árvores de decisão. É bem fácil. Na verdade, é loucura como isso é fácil. É uma coisa muito excitante. Se pudéssemos criar um fluxograma real a partir de dados de treinamento que realmente funciona com apenas algumas linhas de código em Python. Então vamos tentar. Então eu incluí um passado pneus ponto C S V arquivo com seus materiais do curso, e isso inclui apenas alguns dados fabricados que eu inventei sobre pessoas que ou receberam uma oferta de emprego ou não com base nos atributos desses candidatos. Então vá em frente e mude esse caminho para qualquer coisa. Onde quer que você instalou os materiais para este curso, eu não tenho certeza onde você colocá-lo, mas quase certamente não está lá. Então vá em frente e fim desse arquivo estavam no arquivo de caderno árvore Python decisão aqui agora . E nós vamos apenas usar pandas para ler isso é ESPN e criar um objeto de quadro de dados fora dele. Ok, então vamos em frente e ler isso, e podemos usar a função de cabeça no dedo do quadro de dados, imprimir as primeiras linhas e ter certeza de que parece que faz sentido, e com certeza, nós ter alguns validados aqui. Então, para cada candidato, eu d. Nós temos seus anos de experiência passada se eles estavam ou não empregados lá, número de empregadores anteriores, seu nível mais alto de educação, se eles foram para um topo escola de nível e se eles fizeram um estágio. E finalmente, aqui estão as respostas em que sabíamos que ou estendemos uma oferta de emprego a essa pessoa ou não . Ok, então como de costume, a maior parte do trabalho é apenas massagear seus dados, preparar seus dados antes de realmente executar os algoritmos nele. E é isso que precisamos fazer aqui. aprendizado psíquico requer que tudo seja novo. Milagre. Então não podemos ter sábios e fins e B s e m s é. E PhDs Temos que converter todas essas coisas em números para o trabalho do dedo do pé do modelo da árvore de decisão . Então, a maneira de fazer isso é usar um panda curto Isso que torna essas coisas fáceis . Basicamente, eu estou fazendo dicionário e python que mapeia a letra y para o número um e a letra final para o valor zero. Então eu quero converter todas as minhas esposas dos pés e termina 20 Então por que significa que um vai ser mau? Sim, e zero significará não. E o que eu posso fazer é apenas pegar a chamada contratada e do quadro de dados, usando esta sintaxe aqui e chamar mapa nele usando um dicionário. E o que isso fará é passar por toda a coluna contratada em todo o quadro de dados e usar esse dicionário. Procure transformar todas as entradas nessa coluna, e ele retorna uma nova coluna de quadro de dados que estou colocando de volta na chamada superior. Então isso basicamente substitui a coluna superior por um que foi mapeado dedos dos pés e zeros . Ok, e eu faço o mesmo pelos empregados. Fale com sua escola e estagiários para que todos sejam mapeados usando o dicionário sim não para que os sábios e os fins se tornem uns e zeros. Para o nível de educação, eu fiz o mesmo truque que eu criei dicionário que tem sinais Bs 20 m esto um e PhD para e usa isso para remapear esses nomes de graus para valores numéricos reais. Então, se eu for em frente e fizer isso e fizer em frente novamente, você pode ver que funcionou todos os meus sim são uns, meu nariz ou zeros, e meu nível de educação é agora representado por um valor numérico que tem significado real. Então agora nós só precisamos preparar tudo para realmente ir para o nosso classificador de árvore de decisão , o que não é tão difícil de fazer isso. Precisamos separar nossas informações de recursos, que são os atributos que estavam tentando prever e nossa coluna Target. Então, o que contém a coisa que estamos tentando prever? Então, para extrair a lista de colunas de nome de feição estavam indo apenas dizer, Criar uma lista de colunas até o número seis. Então as primeiras 6 colunas e vamos em frente e imprimir isso. E esses são os nomes de colunas que contêm nossa experiência de anos de informação empregados, funcionários anteriores nível de educação superior a sua escola e, por sua vez, estes ar os atributos de candidatos que queremos prever a contratação em e nós construímos o vetor R y aqui é atribuído ao que estamos tentando prever. Então essa é a nossa coluna contratada. Então isso extrai toda a coluna contratada e chama por quê, e então ele pega todas as nossas colunas para os dados da feição e coloca-as em algo chamado X. Então esta é uma coleção de todos os dados e todas as colunas de feição. E estas são as duas coisas que são Decision Tree classificador precisa. Então ele realmente cria o próprio classificador. Duas linhas de código que chamamos tratar-se classificador de árvore de decisão para criar o nosso classificador. E então nós o encaixamos em nossos dados de recursos, e a resposta é se as pessoas foram ou não contratadas. Então vamos em frente e executar isso bem rápido agora para exibi-lo. Não quero ter muitos detalhes. O que está acontecendo aqui? Basicamente, exibir dados gráficos é um pouco complicado. Basta considerar este código sobre como fazer isso. Você precisa entender como o gráfico é funciona em arquivos de ponto em todas essas coisas, mas não é importante. Basicamente, esta é a necessidade de Cody para exibir o resultado final de uma árvore de decisão. Então vamos em frente e executar isso. E lá temos. Quão legal é isso? Temos um fluxograma real aqui. Agora deixe-me mostrar-lhe como lê-lo para que coma palco. Temos uma decisão. Então lembre-se, a maioria dos nossos dados é sim. Não, vai ser zero ou um. Então o ponto de decisão aqui é empregado menos de 10.0.5, que significa que se tivermos um valor de emprego de zero Não, vamos para a esquerda. Emprego é um. Sim, nós vamos. Certo. Então, onde eles empregaram anteriormente, se não, ir para a esquerda? Se sim, vá. Certo. E acontece que nos meus dados de amostra, todos que estão empregados atualmente receberam uma oferta de emprego. Então eu posso dizer rapidamente, se você está empregado atualmente, sim, sim, você vale a pena trazê-lo. Vamos segui-lo até este nível. Como você interpreta isso? A pontuação de Gini é basicamente uma medida de entropia que está usando a cada passo. Lembre-se, enquanto estamos indo para baixo, o algoritmo está tentando minimizar a quantidade de entropia e as amostras ar o número restante de amostras que não foram basicamente seccionadas por um decisão. Maneira de ler as notas finais da folha aqui. Esta coluna de valor. Então, isso diz que neste momento não temos candidatos que não foram contratados e cinco que foram contratados. Então a maneira de interpretar isso é se empregado era um. Eu vou para a direita, o que significa que eles estão empregados atualmente. E isso me leva a um mundo onde todos receberam uma oferta de emprego. Então isso significa que devo contratar essa pessoa. Ok, agora, digamos que nós esta pessoa não tem um emprego no momento. A próxima coisa que veremos é se eles têm um estágio? Se sim, então estamos em um ponto em que os dados de treinamento de um artista, todos receberam uma oferta de emprego. Então, nesse ponto, podemos dizer que nossa entropia agora é zero porque todos são loucos e todos eles receberam uma oferta naquele momento . No entanto, se continuarmos a descer, estamos num ponto aqui onde a entropia é 0.0.32 está a ficar cada vez mais baixa. Isso é coisa boa. Então, em seguida, vamos ver quanta experiência eles têm eles têm menos de um ano de experiência. E se o caso é que eles têm alguma experiência e eles chegaram até aqui muito bom, nenhuma decisão mais alta. Então acabamos neste ponto em que temos entropia zero. Mas todas as três amostras restantes em nosso conjunto de treinamento não foram contratadas. Ok, nós temos três contratações sem contratações e zero contratações, mas se eles têm menos experiência do que lá, provavelmente acabados de sair da faculdade, eles ainda podem valer a pena olhar. A última coisa que veremos é se eles foram ou não para uma escola de nível superior, e se assim for, eles acabam sendo uma boa previsão para serem superiores. E se não, eles acabam sendo um não superior porque acabamos com um candidato que caiu nessa categoria que era um não maior e zero que eram maiores. Considerando que, neste caso, temos zero sem contratações e um maior, então você pode ver que continuamos até chegarmos a uma entrada de zero, se possível para cada caso. Agora vamos dizer que queremos usar uma floresta aleatória. Sabe, estamos preocupados que possamos estar ajustando nossos dados de treinamento. Na verdade, é muito fácil criar um classificador de floresta aleatório de várias árvores de decisão. Então, para fazer isso, podemos usar os mesmos dados que criamos antes novamente. Você só precisa de seu vetor X e y, o conjunto de recursos e o chamá-lo que você está tentando prever, e nós vamos apenas fazer um classificador florestal aleatório também disponível a partir de psíquico aprender e tudo que você precisa para passar é como muitas árvores que você quer em sua floresta? Então vamos fazer 10 árvores em nossa floresta aleatória. Podemos então encaixar isso no modelo, e você não tem que andar pelas árvores à mão. E quando você está lidando com uma floresta aleatória, você realmente não pode fazer isso de qualquer maneira. Então, em vez disso, vamos usar a função de previsão no modelo no classificador que fizemos. Vamos passar uma lista de todas as características diferentes para um determinado candidato que queremos prever emprego. Então, se você se lembrar disso, mapeia para essas colunas. Anos de experiência empregadas empregadores anteriores, nível de escolaridade, topo para a sua escola e internado interpretado como valores numéricos. Portanto, queremos prever o emprego de veterano de 10 anos desempregados. Podemos fazer isso ou queremos prever o emprego de um veterano desempregado de 10 anos. Poderíamos fazer isso, e com certeza conseguimos um resultado. Então, neste caso em particular, acabamos com uma decisão mais alta sobre ambos. Mas o que é interessante é que há um componente aleatório para isso, então você realmente não obtém o mesmo resultado todas as vezes. Na maioria das vezes, o desempregado não recebe uma oferta de emprego, e se você continuar dirigindo isso, você verá que geralmente é o caso. Mas a natureza aleatória do ensacamento de bootstrap agregando ele é uma dessas árvores significa que você não vai ter o mesmo resultado todas as vezes. Então talvez 10 não sejam árvores suficientes. Então, de qualquer maneira, boa lição a aprender lá para uma atividade. Se você quiser voltar e jogar com este Mesereau jogar dados de entrada. Vá em frente e edite o arquivo CSB de onde começamos e crie um universo alternativo onde é o mundo turvy topsy. Todos a quem dei uma oferta de emprego agora não recebem um e vice-versa. Veja o que isso faz com a sua decisão Árvore dispensado e ver o que você pode fazer e tentar interpretar os resultados. Então divirta-se com ele. Isto é coisa interessante. Eu acho que isso é muito legal, então isso é árvores de decisão e florestas aleatórias. Então essas são as árvores de decisão, uma das partes mais interessantes do aprendizado de máquina. Na minha opinião, eu sempre acho que é muito legal apenas gerar um fluxograma do nada assim, então espero que você ache isso útil. Vamos seguir em frente. 39. Aprendizagem de embasar: Então, quando falamos sobre florestas aleatórias, isso foi um exemplo de aprendizado de conjunto, onde estamos realmente combinando e vários modelos juntos para chegar a um resultado melhor do que qualquer modelo poderia chegar. Então vamos aprender sobre isso um pouco mais de profundidade. Vamos falar um pouco mais sobre a aprendizagem do conjunto. Já abordamos isso um pouco, mas há mais de uma maneira de fazer isso, então eu só quero cobrir. Algumas das técnicas básicas que existem para o aprendizado de conjunto é uma espécie de tópico importante , mas será uma palestra curta porque as idéias são bastante básicas. Então lembre-se aleatoriamente para nós. Nós tínhamos, ah, um monte de árvores de decisão que estavam usando diferentes sub-amostras dos dados de entrada e diferentes conjuntos de atributos que ele iria ramificar. E todos votaram no resultado final quando você estava tentando classificar algo no final. Então esse é um exemplo de aprendizagem em conjunto. Outro exemplo, quando estávamos falando sobre K significa agrupamento, tivemos a idéia de talvez usar diferentes K significa modelos com diferentes Centrowitz aleatórios iniciais diferentes e deixar que todos votem no resultado final também, também um exemplo de aprendizagem em conjunto. Basicamente, a idéia é que você tem mais de um modelo, e pode ser o mesmo tipo de modelo. Podem ser diferentes tipos de modelos, mas você executa todos eles do seu lado dos dados de treinamento, e todos eles votam no resultado final para o que quer que você esteja tentando prever. E muitas vezes você vai descobrir que este conjunto de diferentes modelos produz melhores resultados do que qualquer modelo único poderia por conta própria. Um bom exemplo de alguns anos atrás foi o Prêmio Netflix. Então, a Netflix fez um concurso onde eles ofereceram. Eu acho que foi um $1.000.000 para qualquer pesquisador que poderia superar seu algoritmo de recomendação de filmes existente e aqueles que um era ensemble abordagens, onde eles realmente executavam múltiplos. Recomendo os algoritmos dela de uma vez e deixe-os votar no resultado final. Assim, o aprendizado de conjunto pode ser uma ferramenta muito poderosa, mas simples, para aumentar a qualidade de seus resultados finais e aprendizado de máquina. Agora, florestas aleatórias novamente usaram uma técnica chamada ensacamento, que é abreviação de bootstrap agregação, que é mais um termo chique para um conceito simples. Tudo o que significa é que nós pegamos amostras aleatórias de nossos dados de treinamento e os alimentamos em diferentes versões do mesmo modelo e deixamos que todos votem no resultado final. Então, se você se lembra, Random Forest tomou muitas árvores de decisão diferentes que usam uma amostra aleatória diferente dos dados de treinamento para treinar, e então todos eles se juntaram no final da votação sobre o resultado final. Ok, então isso é ensacamento. Impulsionar é um shopping alternativo, e a idéia lá é que você começar o modelo. Mas cada modelo subseqüente aumenta os atributos que abordam as áreas que foram classificadas incorretamente pelo modelo anterior. Então você faz um teste de trem em um modelo, ele descobre, quais são os atributos que basicamente está errando? E então você aumenta esses atributos e modelos subseqüentes na esperança de que esses shoppings subseqüentes prestem mais atenção a eles e os acertem. Então essa é a ideia geral por trás do reforço. Você sabe, você executa um modelo, descobre seus pontos fracos, amplifica o foco nesses pontos fracos à medida que você vai e continua construindo mais e mais modelos que continuam refinando esse modelo com base nas fraquezas do anterior uma outra técnica. E isso é o que o vencedor do Prêmio Netflix fez foi chamado de um balde de modelos onde você pode ter modelos totalmente diferentes que tentam prever algo. Talvez eu esteja usando meios K e uma árvore de decisão e regressão. Posso executar todos esses três modelos juntos em um conjunto de dados de treinamento e deixar que todos votem no resultado final da classificação quando estou tentando prever algo. E talvez isso seja melhor do que aliviar qualquer um desses modelos isoladamente. Certo, empilhamento, mesma ideia. Então você sabe, você executa vários modelos nos dados combinados os resultados juntos de alguma forma. Então você sabe a diferença sutil lá, entre o balde de modelos e o balde de empilhamento de modelos, você basicamente escolhe o modelo que ganha, então você executaria um teste treinado. Você encontra o modelo que funciona melhor para seus dados e usa esse modelo? Onde está empilhamento irá combinar os resultados de todos esses modelos juntos para chegar a um resultado final. Agora há todo um campo de pesquisa sobre aprendizagem de conjuntos que tenta encontrar as melhores maneiras de fazer o aprendizado de conjunto. E se você quiser achar um som inteligente. Normalmente, isso envolve o uso da palavra baias muito, que você verá no slide. Portanto, existem alguns métodos muito avançados para fazer o aprendizado de conjunto. Mas todos eles têm pontos fracos. E eu acho que esta é mais uma lição em que você sempre deve usar a técnica mais simples que funciona bem para você. Então estas são todas técnicas muito complicadas, então eu realmente não posso entrar no escopo deste curso. Mas no final do dia, é difícil superar apenas técnicas simples que já falamos. Então, em teoria, há algo chamado o classificador ideal de baías que sempre será o melhor. Mas é impraticável. Você sabe que é computacional proibitivo fazê-lo. As pessoas têm tentado fazer variações do outono base um classificador para torná-lo mais prático, como Beijing parâmetro média anúncio. Mas ainda é vários sobre encaixe, e muitas vezes é superado pelo apoio, que é a mesma idéia por trás aleatório. Para nós, você apenas para re amostra os dados várias vezes que estamos em diferentes modelos e deixá-los todos votar no resultado final. Acontece que funciona tão bem, e é muito mais simples. Finalmente, há algo chamado combinação de margarida e modelo que tenta resolver todas as deficiências das abelhas, classificador ideal e média ocupada e parâmetro. Mas no final do dia, não faz muito melhor do que apenas cruzar a validação com uma combinação de modelos contra, você sabe, empilhamento basicamente. Então, novamente, você sabe, estas são técnicas muito complexas que são muito difíceis de usar na prática. Você está melhor com as mais simples que falamos com mais detalhes. Mas você quer parecer inteligente e usar a palavra dias muito. É bom estar familiarizado com essas técnicas, pelo menos saber o que elas são. Então isso é aprendizado de conjunto de novo. A retirada é que as técnicas simples como bootstrap, agregação ou ensacamento ou reforço ou empilhamento ou balde de modelos, ou geralmente, as escolhas certas. Existem técnicas muito mais sofisticadas por aí, mas elas são teóricas, mas pelo menos você sabe sobre elas agora, qualquer maneira. Ensemble learning sempre uma boa idéia para experimentar, você sabe, foi provado uma e outra vez que ele irá produzir melhores resultados do que qualquer modelo único , então definitivamente considerá-lo. Mesmo que seja mais trabalho, você obterá melhores resultados como resultado do uso do ensemble learning 40. [atividade] XGBoost: Então, agora que falamos sobre impulsionar e falamos sobre árvores de decisão neste curso. Vamos juntar esses conceitos e falar sobre o XGBoost, que é indiscutivelmente os algoritmos de aprendizado de máquina mais poderosos que existem atualmente. Então, capítulo muito importante aqui, XGBoost significa árvores intensificadas com gradiente extremo. Agora lembre-se, impulsionar é um método de conjunto. A idéia é que nós pegamos um modelo e temos várias versões desse modelo acorrentados juntos. Então o que acontece é que cada árvore dentro do nosso esquema de reforço aqui vai aumentar os atributos que levam a erros de classificação da árvore anterior. Então, basicamente, temos várias árvores estão apenas construindo um em cima do outro para corrigir os erros da árvore anterior antes dele. E acontece que essa idéia bastante simples é realmente, realmente incrível. Xgboost está vencendo rotineiramente competições do Kaggle. É muito fácil de usar. É muito eficiente computacionalmente. Então faz uma escolha realmente boa para um algoritmo começar a partir de qualquer que seja o seu problema, seja classificação ou regressão, há uma boa chance de que o XGBoost venha provar ser o melhor algoritmo para realmente tentar criar um modelo para seus dados e fazer previsões precisas com base nesse modelo. E é muito fácil de usar. Quero dizer, é, é quase perturbador como é fácil sob o capô tem um monte de características realmente legais que o tornam tão bom. Facilidade é algo chamado impulso regularizado. Então isso é o que o diferencia de outros métodos de árvore impulsionados lá fora. regularização é algo que impede o excesso de ajuste. Assim, ele garante que o modelo com o qual acabamos seja generalizado e não esteja realmente sobreajustado ao conjunto de dados em que você o treinou. Falaremos sobre regularização mais detalhadamente mais tarde no curso. Mas sob o capô ele usa regularização L1 e L2, que novamente falaremos mais tarde. Outro recurso realmente legal é que o XGBoost pode lidar com valores ausentes automaticamente. Assim, ele irá descobrir automaticamente a melhor maneira de lidar com os valores ausentes em seus dados. Você não tem que pensar muito nisso. Essa é uma característica muito legal porque, você sabe, lidar com valores ausentes e imputar esses valores ausentes pode ser uma grande parte do seu trabalho como cientista de dados. Mas o XGBoost faz com que isso aconteça. Também pode ser executado em paralelo. Então essa é a chave para sua eficiência. Ele pode realmente tirar proveito de todos os núcleos em sua CPU ou até mesmo tirar proveito de um cluster de computadores. Ele pode ser executado em paralelo em vários segmentos. E isso também significa que você pode usá-lo para big data, para grandes conjuntos de dados, eu não vou necessariamente caber em uma máquina. Portanto, não só é XGBoost são realmente poderoso e preciso algoritmo para pequenos conjuntos de dados. Ele também escala bem. Então o que há para não amar nisso, certo? Outra característica interessante é que você pode fazer a validação cruzada em cada iteração. Ainda não falamos muito sobre validação cruzada. Mas a idéia é que você pode avaliar o desempenho deste algoritmo do XGBoost em cada etapa de seu treinamento. E isso permite que você faça coisas como dizer, bem, eu realmente não estou vendo muito mais benefícios de outras iterações. Então eu vou em frente e parar essa iteração mais cedo. Ou eu posso realmente encontrar o número ideal de iterações enquanto eu estou treinando. Assim como eu posso monitorar a precisão do meu modelo como ele itera e descobrir quando eu deveria pará-lo e encontrar esse ponto ideal muito facilmente. Ele também suporta treinamento incremental. O que eu quero dizer com isso é que você pode realmente parar o treinamento de um modelo XGBoost e, em seguida, salvá-lo e voltar e buscá-lo mais tarde novamente. Então. Se você quiser realmente dividir o treinamento por um período de tempo ou em vários trabalhos em lotes. Essa é uma possibilidade também com o XGBoost. Além disso, ele permite que você conecte seus próprios objetivos de otimização. Isso o torna muito flexível na natureza. Portanto, qualquer que seja o problema que você tem, se você pode descrevê-lo em termos de algo que você deseja otimizar, você provavelmente pode fazer com que o XGBoost funcione nele. E finalmente usa um recurso chamado poda de árvore. Então, ao contrário das árvores de decisão normais, onde ele simplesmente pára de ramificar uma vez que ele pára de cantar, benefício de fazê-lo, ele tipo de toma uma abordagem diferente aqui, vai realmente ir muito fundo por padrão e então tentar podar aquela árvore para trás para que geralmente resulta em árvores mais profundas, mas árvores mais altamente otimizadas. E isso é parte da chave para o seu sucesso. Usar o XGBoost é ridiculamente fácil de instalar. Basta digitar pip install XGBoost do seu Anaconda Prompt. E uma vez instalado, você pode começar a usá-lo. Ele também oferece interfaces na interface de linha de comando para C plus, que é o que é escrito nativamente, também para a linguagem R Julia, e tem uma interface JVM. Então você pode usar XGBoost de forma muito eficiente dentro de programas como Java ou Scala e Spark usando Scala, por exemplo. Portanto, não é feito apenas para notebooks Scikit-learn e Python. É mais geral do que isso. E, como tal, tem sua própria interface. Então, não é realmente feito especificamente para o scikit-learn. Portanto, as coisas são um pouco diferentes quando você está usando o XGBoost dentro do scikit - aprenda isso em um notebook. A principal diferença é que ele usa algo chamado estrutura de dados da matriz D para manter o recurso e os dados rotulados. Mas usá-lo é muito fácil e é uma maneira muito fácil criar uma dessas estruturas de matriz d a partir de uma matriz NumPy. Então, na prática, não é grande coisa. E você passará todos os parâmetros do XGBoost como um dicionário gigante e falaremos sobre isso em um segundo. Uma vez que você fez isso, tudo que você tem que fazer o que é chamado de trem no modelo e , em seguida, chamar prever no modelo treinado para fazer previsões a partir dele. É muito, muito fácil. A parte difícil é ajustar todos esses hiperparâmetros do XGBoost. Então, há um monte de botões e mostradores e XGBoost. E para obter os melhores resultados, você precisa escolher as configurações certas. E muitas vezes isso é feito apenas através da experimentação. Alguma coisa vai ser bastante simples. Por exemplo, você pode escolher seu booster, suas prioridades. Uma árvore para problemas de classificação são lineares para problemas de regressão. E você também precisa escolher seu tipo de função objetiva. Então, por exemplo, eu poderia escolher softmax se eu quiser apenas escolher uma das muitas classificações e escolher a melhor classificação para qualquer coisa. Ou eu poderia dizer que eu quero multi prob soft que me dá probabilidades reais para cada classificação. Então isso poderia potencialmente me permitir obter uma lista de classificações prováveis, mais de uma para cada coisa que estou tentando prever. Além disso, o resto precisa ser aprendido através da experimentação. Então eta é provavelmente o parâmetro principal, o maior botão que você tem no XGBoost, se preferir. Você pode pensar nisso como taxas de aprendizagem. Então ele vai ajustar os pesos em cada etapa do treinamento. E o valor padrão de que vai ser 0.3. E muitas vezes você vai descobrir que, na prática, baixar um pouco para, apontar ou até mesmo para baixo, muitas vezes produzirá melhores resultados. Então essa é a principal coisa que você quer começar a mexer. Depois de tentar ajustar o desempenho do seu modelo XGBoost. Alguns outros parâmetros importantes ou uma profundidade máxima que vai ser a profundidade máxima da árvore. E, obviamente, se isso for muito pequeno, você não será capaz de criar um modelo muito preciso, mas se for muito grande, você pode acabar se encaixando demais. Então sintonizar isso pode ser uma coisa muito importante para tentar acertar. Há também um chamado Min peso infantil. Isso também pode ser usado para controlar o ajuste excessivo, certificando-se de que seu modelo não é muito específico para os dados em que você treinou. Mas se você definir muito alto, você vai acabar sob ajuste. Então você precisa obter o equilíbrio certo sobre isso também. Há um grande número de outros parâmetros e XGBoost também. Mas estes são os principais com os quais você deseja mexer e experimentar. E novamente, às vezes você só precisa experimentar para descobrir qual combinação de valores que funciona melhor. Dentro de um bloco de notas Python, você pode usar ferramentas como GridSearchCV para tentar automaticamente e matriz de diferentes valores para esses parâmetros e descobrir automaticamente qual é o certo. Ou se você estiver usando um sistema maior como AWS, SageMaker, ele terá tarefas como tarefas automáticas de ajuste de hiperparâmetros que você pode configurá-lo para tentar encontrar a combinação certa de parâmetros aqui. Então, ajustando essas chaves de ciclista para obter o melhor desempenho do XGBoost. Mas como você vai ver, você não precisa realmente pensar muito duro para obter bons resultados com isso. Portanto, lembre-se, o XGBoost é quase tudo o que você precisa saber para aprendizado de máquina atualmente em termos práticos. Para problemas simples de classificação ou regressão, as probabilidades são que você vai obter os melhores resultados do XGBoost e usar o seu muito fácil. Então, com isso, vamos realmente vê-lo em ação. Vamos jogá-lo no conjunto de dados da Iris. Este é um conjunto de dados comum usado para fins educacionais. É apenas um conjunto de dados de um monte de flores e medem o comprimento e a largura das pétalas e sépalas. As sépalas são apenas um tipo específico de pedal. Acho que é o que está no fundo da flor da íris. E com base nessas medidas das pétalas, não estamos tentando prever a que subespécie de vírus essa flor realmente pertence. E como veremos, o XGBoost é extremamente bom nisso. Então vamos mergulhar e tentar. Então vamos jogar com o XGBoost. Vamos começar trazendo nosso aviso Anaconda é sempre assim. Vou para o meu menu Iniciar aqui e vou para o Prompt Anaconda ou no Mac ou Linux, trazer o terminal. A primeira coisa que precisamos fazer é cd onde nossos materiais do curso estão armazenados. Para mim, isso vai ser CDC cólon barra invertida curso ML. E antes de acender o Jupyter Notebook, precisamos primeiro instalar o próprio XGBoost. Então eu já fiz isso, mas você provavelmente não fez. Então vá em frente e digite pip install XgBoost para cuidar disso. Para mim, ele não vai fazer nada porque eu já instalei. Mas para você deve estar indo lá fora e baixando e instalando a versão mais recente do XGBoost. Uma vez feito isso, podemos digitar o caderno Júpiter, Júpiter com y. Uma vez que estamos aqui, vá em frente e encontre o XGBoost, sem livro e abra isso. E vamos começar. Então, novamente, usar o XGBoost é muito fácil. Não há muito aqui para olhar, porque não há muito o que fazer. É muito fácil de usar e funciona. Então, já estávamos instalados, mas como um lembrete, é assim que você o instalaria se ainda não o fizesse. E novamente, nós vamos estar experimentando com o conjunto de dados da Iris. A idéia disso é que temos um conjunto de dados de flores onde temos medidas de ambas as pétalas e sépalas, que é apenas um tipo especial de pétala, o comprimento e a largura de cada um. Então, para cada flor, teremos quatro medidas para atributos ou feições, se preferir, o comprimento e a largura das pétalas e o comprimento e largura das sépalas. E o que precisamos fazer é prever qual subespécie de flor é baseada nessas medidas. E então acontece que existem três subespécies de flores de íris, setosa, versicolor e virginica. Vamos em frente e carregar os dados. Felizmente, isso já está embutido no scikit-learn. Então nós só tivemos que dizer carga sublinhado íris para carregar isso. E podemos explorar os parâmetros e características desses dados aqui. Então vamos fazer a forma data.dat para descobrir o que está nele exatamente, para tentar entender o que está lá dentro. Vá em frente e pressione Shift Enter lá para realmente executar isso. E podemos ver que isso consiste em 150amostras, então há apenas 150 flores em nosso conjunto de dados aqui. Cada, cada flor tem quatro características, o comprimento e a largura da pétala, e depois ligue-as com a sépala. E possíveis nomes de alvo. As categorias reais que estamos tentando prever os rótulos são setosa, versicolor e virginica. Então vamos começar dividindo esses dados no conjunto de dados treinamento e em um conjunto de dados de teste. A idéia aqui é que queremos ter certeza de que estamos apenas treinando nosso modelo com base em nossos dados de treinamento. E então vamos reservar 20% de nossos dados para realmente avaliar o modelo com. Então, queremos ter certeza de que estamos mantendo esses dados de teste de lado e não treinando a data nele para que possamos dizer, modelo Ok, modelo XGBoost. Quão bem você faz? Estou prevendo subespécies para flores que você nunca viu antes. Então isso garante que não estamos treinando. A resposta é que nós não somos como trapacear se você bem, certo, então a idéia é que nós vamos reservar 20% de nossos dados para fins de teste, treinar o modelo e os restantes 80%, e então avaliar o modelo com base nesses dados que foi retido. Então é isso que a divisão do teste de trem está fazendo, é apenas dividir aleatoriamente esses dados. Dessa forma, passamos os dados reais da feição, os dados rotulados. E dizemos que queremos reservar 20% dos dados para testes. E podemos dar a ele um estado aleatório específico para garantir que obtemos os mesmos resultados toda vez que executamos isso. Isso vai entrar em um monte de diferentes matrizes aqui, x é basicamente por convenção os dados do recurso, neste caso os comprimentos e larguras das pétalas e sépalas estabelecidas. E y por convenção refere-se aos dados rotulados. Então isso vai ser o que subespécie é. Então o que isso significa é que os dados do recurso, as medidas reais das pétalas vão para x trem para o conjunto de dados de treinamento e X teste para o conjunto de dados de teste. E os rótulos, as respostas, se você quiser, de que subespécie é, vamos entrar em por que o trem sublinhado para os dados de treinamento e teste de sublinhado y para os dados de teste. Vamos fazer isso antes que eu esqueça. E agora podemos carregar o próprio XGBoost. Então, como dissemos, XGBoost é um pouco peculiar e que você tem que usar essas coisas da matriz d em vez de apenas usar arrays numpy straight up. Mas como você pode ver aqui, é realmente fácil criá-los a partir de uma matriz NumPy. Então vamos dizer que todos os dados de treinamento serão uma matriz D que consiste nos dados da característica de treinamento, as medidas reais, e os dados rotulados, a subespécie real. E fazemos a mesma coisa para os dados de teste. Então, basicamente incorporamos todos os recursos e dados de rótulo para treinamento e teste nesses dois objetos da matriz d. Vá em frente e Shift Enter para executar isso. Em seguida, precisamos definir nossos valores de hiperparâmetro. E como dissemos, esta é muitas vezes a parte mais difícil de toda a coisa é tentar encontrar os valores certos dessas configurações, se você preferir. E então vamos começar com um palpite. Então vamos dizer que vamos começar com uma profundidade máxima de nossas árvores de quatro. Eta começará com a taxa de aprendizagem padrão de 0,3. E novamente, geralmente você quer ir um pouco mais baixo em que se alguma coisa, nossa função objetiva será Softmax. Softmax significa apenas que queremos olhar para a classificação mais provável para cada flor. Então, em contraste, poderíamos usar soft prompt para obter as probabilidades reais associadas a cada subespécie individual. Mas eu só estou interessado em uma resposta por flor, então eu quero que ela escolha automaticamente o melhor valor de classificação, e isso é o que softmax faz. Ele corrige a classificação com a máxima probabilidade. E vamos especificar o número de classificações que temos, neste caso três, porque há apenas três subespécies para escolher. Sua coisa, nós temos que adivinhar aqui em sintonia é o número de épocas ou iterações, se você vai chamá-lo do que você quer. Basicamente, quantas vezes vamos realmente executar este algoritmo? Então, com esse Shift Enter e podemos então treinar nosso modelo com uma linha de código. É tão fácil assim. Então, dizendo XGBoost dot train, nós apenas passamos em que parâmetros de dicionário, os dados de treinamento reais, que é o objeto d matrix. E quantas épocas queremos atropelá-lo. Vá em frente e Shift Enter. E você pode ver que já está feito. Como dissemos, o XGBoost é muito, muito rápido. Então agora podemos apenas fazer previsões baseadas no modelo do trem. Então vamos em frente e chamar a previsão de passar os dados de teste que retivemos, certo? Então lembre-se que pegamos 20% do nosso conjunto de dados, colocamos de lado para que o modelo nunca o visse durante o treinamento. E agora vamos avaliar o quão bem ele prevê as flores que nunca viu antes. E se imprimirmos essas previsões, podemos ver que ele está imprimindo os números de categoria de cada flor individual nesse conjunto de dados de teste. Então eu esqueci o que esses realmente correspondem. Acho que dois significam virginica, por exemplo, certo? Então estas são as previsões reais de subespécies para cada ponto de dados nos dados de teste que o modelo nunca viu antes. Vamos ver o quão bem ele realmente fez. Então eu só vou chamar pontuação de sublinhado de precisão do pacote de métricas scikit-learn lá, eu vou passar os valores corretos reais conhecidos que vão estar em Y e um teste de pontuação, esses são os classificações que conhecemos e os valores previstos. E vamos comparar o quão bem eles realmente combinam. E olha para isso. Na verdade, é perfeito. Você não vê isso com muita frequência. Digo, acabamos de adivinhar os hiperparâmetros certos para o XGBoost. E mesmo adivinhando, conseguimos resultados perfeitos com isso. Quero dizer, obviamente esses são excepcionalmente como você geralmente não vai ter uma precisão de 100 por cento, mas uau, isso é incrível desempenho aqui. Agora normalmente é uma atividade prática. Eu queria que você tentasse melhorar a precisão mexendo com os hiperparâmetros ainda mais, mas você não pode melhorar em um 100%. Então, em vez disso, o que eu quero que você faça é tentar tornar este modelo mais eficiente. Poderia realmente escapar com menos épocas ou iterações, poderia realmente escapar com árvores menores, diminuindo o parâmetro de profundidade máxima. Então tente otimizar a simplicidade deste modelo e, portanto, seu desempenho e ver o quão simples você pode torná-lo antes de realmente perder precisão. Então brinque com isso e tenha uma ideia de como esses hiperparâmetros afetam a precisão real de seus resultados. Mas sim, isso é inacção do XGBoost. Como você pode ver, produz resultados incríveis. Não é difícil de usar. Deve ser o teu algoritmo. E muitos casos. 41. Visão de vetores (SVM): Finalmente, vamos falar sobre máquinas vetoriais de suporte, que é uma maneira muito avançada de agrupar ou classificar dados dimensionais superiores. Então, e se você tiver vários recursos que você deseja prever com base no SPM pode ser uma ferramenta muito poderosa para fazer isso, e os resultados podem ser assustadores. Bom. É muito complicado sob o capô, mas as coisas importantes entendem quando usá-lo e como ele funciona em um nível alto. Então vamos cobrir isso agora. Vamos falar sobre máquinas vetoriais de suporte, e esta é uma palavra extravagante para o que realmente é um conceito extravagante, mas felizmente, é muito fácil de usar. O importante é saber o que faz e para que serve. Então apoie máquinas vetoriais. Ele funciona bem para classificar dados dimensionais mais altos, e por isso quero dizer muitas características diferentes. Então, é fácil usar algo como, Você sabe, K significa agrupamento para dados de cluster que tem duas dimensões, você sabe, talvez idade em um eixo e renda em outro. E se eu tiver muitos, muitos recursos diferentes que estou tentando? Teoh Predict baseado em nós vamos apoiar máquinas vetoriais pode ser uma boa maneira de fazer isso, matematicamente. O que ele pode fazer é encontrar esses vetores de suporte dimensionais superiores. É aí que ele recebe seu nome, que define esses planos dimensionais superiores que dividem os dados em diferentes clusters. E, obviamente, os métodos ficam muito estranhos muito rapidamente com tudo isso. Felizmente, o pacote psíquico aprendeu fará tudo por você sem ter que realmente entrar nele sozinho sob o capô. Você precisa entender, no entanto, que ele usa algo chamado truque do Coronel para realmente encontrar esses vetores de suporte. E existem diferentes kernels que você pode usar para fazer isso de maneiras diferentes. Tudo soa muito chique. Mas, novamente, o ponto principal é que você precisa usar SPM, Zahra Boa escolha. Se você tem dados dimensionais mais altos com muitos recursos diferentes, e há diferentes kernels que você pode usar que têm custos computacionais variados e podem ser mais adequados para o problema em questão. E também eu quero salientar que esta é uma técnica de aprendizagem supervisionada, então nós estamos realmente indo para treiná-lo em um conjunto de dados de treinamento, e nós podemos usar isso para fazer previsões para, você sabe, dados não vistos futuros ou dados de ensaio. Então é um pouco diferente do que K significa agrupamento. E que K significa foi completamente sem supervisão com o suporte da máquina Vector. É treinamento baseado em dados de treinamento reais onde você tem a resposta da classificação correta para algum conjunto de dados que ele pode aprender com. Ok, então S PM é útil para classificação, você sabe, agrupamento, se você quiser. Mas é técnica supervisionada. Certo, mantenha isso em mente. Então, um exemplo que você costuma ver foi o apoio. SPM está usando algo chamado classificações de vetores de suporte, e o exemplo típico usa o conjunto de dados irlandês. Então, um desses conjuntos de dados de amostra que vem com a psique aprende, é chamado de conjunto de dados irlandês, e o que é é uma classificação de diferentes flores, diferentes observações de diferentes flores de íris e suas espécies. E a ideia é classificá-los usando informações sobre o comprimento e largura do pedal em cada flor e o comprimento e largura da CEPAL de cada flor. E uma CEPAL aparentemente é uma pequena estrutura de suporte debaixo do pedal. Eu não sabia disso até agora , , mas você tem quatro dimensões de atributos. Lá você tem o comprimento e com do pedal e o comprimento e a largura de um CEPAL, e você pode usar esse dedo do pé. Preveja a espécie de uma íris, dada essa informação. Então aqui está um exemplo de fazer isso com a SBC. Basicamente, temos vários com e comprimento flexível projetado para baixo para duas dimensões, que possamos realmente visualizá-lo. E com diferentes kernels, você pode obter resultados diferentes. Então o SBC com um kernel linear produz algo assim, que parece, e então há um método SBC linear também. Também o kernel linear. Ele produz um resultado como esse, e você também pode usar kernels polinômios ou kernels mais sofisticados que podem se projetar até curvas em duas dimensões. Então você poderia fazer algumas classificações bem extravagantes desta forma, certo? Então esse é um exemplo novamente, eles têm custos computacionais crescentes, e eles podem produzir, você sabe, relacionamentos mais complexos. Mas, novamente, é um caso em que muita complexidade pode produzir resultados enganosos. Então você precisa ter cuidado e realmente usar teste treinado quando apropriado. Uma vez que estamos fazendo aprendizagem supervisionada, você pode realmente fazer testes de trem e encontrar o modelo certo que funciona. Ou talvez seja uma abordagem ensemble certa. Você precisa chegar ao coronel certo para a tarefa em mãos. E para coisas como SBC polinomial, qual é o grau certo de polinômio para usar? Você sabe, mesmo coisas como SBC linear terão diferentes parâmetros associados a eles que você pode precisar otimizar para, então vai fazer mais sentido com um exemplo real. Vamos mergulhar em algum código python real e ver como ele funciona. 42. Como usar o SVM para agrupar pessoas: Vamos brincar com máquinas vetoriais de suporte. Abra o caderno S V C em seus materiais de curso e, felizmente, é muito mais fácil usar máquinas vetoriais de suporte do que entender como elas funcionam. Então, para este exemplo, vamos voltar para os mesmos dados de amostra de agrupamento que criamos para o nosso K significa aula de agrupamento . Nós só temos esta função de dados de agrupamento de caixas aqui novamente, vamos colocar em uma semente aleatória consistente para que você veja os mesmos resultados que eu vejo aqui . Vamos passar em um determinado número de clusters que queremos e um número de pontos por cluster será calculado por um sobre K. Então, basicamente, estamos passando em quantos clusters você deseja e quantos pontos totais queremos distribuir entre eles. Aqui nós, em seguida, criar nossos raios X e y aqui X irá contêiner dados de recursos que serão dois pontos D consistindo de rendimentos e idades que ar gerado aleatoriamente e fabricado. E por que são rótulos representará os clusters aos quais esses pontos estão associados. Então, para cada cluster que queremos criar vai escolher um OID central de renda aleatória em um mil e oito Central tinham selecionado aleatoriamente entre 20 e 70 anos e US $220.000. E então para cada ponto por esse grupo, vamos criar um ponto fictício amostrado aleatoriamente com uma distribuição normal para uma determinada renda e idade em torno desses Centrowitz. Esses serão anexados ao nosso array ex feature e, em seguida, irá upend o cluster real. Número dois são por que matriz rótulo irá converter aqueles de volta para torta entorpecida, levantá-los e devolvê-los de volta. Tudo bem, então agora vamos realmente preparar nossos dados aqui para que nós vamos realmente chamar, criar Clustered Data. Vamos pedir 100 pontos divididos em cinco grupos diferentes, e eu função fará isso por nós. E vamos traçar o que vem com. Então vamos apenas dizer que queremos criar uma figura de oito por seis parcelas aqui, e vamos fazer um gráfico de dispersão com uma cor sendo correlacionada com o rótulo real associado a ele que irá certificar-se de que cada cluster recebe sua própria cor irá então plotar Isso. Agora acontece que, para que SBC toe funcione bem, em alguns núcleos, especialmente o coronel poli, precisamos dimensionar esses dados para um intervalo normalmente distribuído entre um negativo e um. Caso contrário, as soluções nunca convergem. Então nós também vamos escalar o declarado para baixo para o intervalo negativo Oneto um aqui. E para fazer isso, levantando algo chamado Min Max Scaler que sai do módulo de pré processamento de aprendizagem psíquica. E vamos apenas dizer que queremos corrigir todos os recursos no raio X, que contém todos os rendimentos e idades para o intervalo. Negativo 1 para 1 aplicará essa transformação aos nossos dados de feição e, em seguida, graficaremos os dados de escala resultantes também. Agora, se você já quis voltar ao intervalo de dados original, há também uma função de transformação inversa no scaler Min Max que você pode usar para voltar na outra direção. Mas para este exemplo, não precisaremos fazer isso de qualquer maneira. Vamos seguir em frente e executar estes antes que esqueçamos, então eu vou voltar para o bloco de definição de função aqui e executar esse turno. Entrar e, em seguida, no bloco para mudar, entrar novamente e você pode ver aqui o enredo de nossos resultados não qualificados, onde os rendimentos variaram de 20.000 a 200.000 mais ou menos algum valor ranhura seu e nosso ar gama cerca de 30 a 70 anos de idade para o acesso à idade. Então, basicamente, nossos dados de recursos consistem em rendimentos no eixo X e idades no eixo Y ano após escalá-lo, ele parece exatamente o mesmo. Exceto que os números reais foram reduzidos para o intervalo negativo Oneto um em ambos os eixos. Então isso é preparado nossos dados para ser amigável com S V C. Agora nós só temos que realmente aplicar spc, o que é incrivelmente fácil. Tudo o que temos que fazer é importar o pacote SPM da psicologia ele aprende e chamar SPM comprado SPC Especifique o coronel que você quer. Vamos começar com um kernel linear simples. O principal parâmetro hiper que importa aqui é C, que é por padrão um ponto. Oh, isso funciona bem e vamos pedir que ele se ajuste à nossa característica de um e R. Então basicamente dizendo ajuste com a nossa matriz de todos os dois pontos D de idades e rendimentos e todos os nossos rótulos de que clusters sabemos aqueles que são atribuídos originalmente para que irá treinar nosso modelo SPC. Vamos em frente e correr. Isso foi muito rápido. Então vamos dar uma olhada nos resultados que vamos fazer aqui é criar um gráfico onde podemos realmente visualizar os intervalos dentro deste espaço de dois D de idades e rendimentos que são coisas modelo correlacionam-se a determinados clusters, e ao mesmo tempo vamos traçar os resultados reais de quais clusters que pensam que cada ponto individual está neste poço, então, para construir este gráfico, primeiro precisamos construir uma matriz de dois D muito densa que podemos realmente criar previsões possamos na verdade traça o que esses clusters são em cada ponto deste espaço. Para fazer isso, estamos chamando grade de malha na torta entorpecida, dizendo que queremos uma grade de pontos de amostra aqui que variam entre um negativo e um no eixo x e Y em um espaçamento de apenas 0,1 separados um do outro. Então isso é perto o suficiente para que ele vai parecer uma gama contínua de cores Quando nós realmente plotar isso, então precisamos converter o resultado de malha grande melodia, corrida árbitro. Podemos usá-los com uma previsão de classificação e, em seguida, precisamos converter isso, por sua vez para uma lista de dois pontos de idade de renda D. Então a função Raval aqui é apenas converter isso de volta para raios de torta entorpecidos e o sublinhado np ponto c . Veja sublinhados abreviado para lata Katyn oito. Isso diz, eu vou pegar todos esses valores X e todos esses valores y e pode encaixá-los juntos em uma lista de pontos que têm x y x y x y x y y etcetera. Então agora que eu tenho essa lista de pontos de amostra, eu posso passar isso para prever. Agora, apenas ah, para esclarecer um ponto de confusão aqui, X e Y aqui podem corresponder aos eixos X e Y. Então N p X vai acabar sendo todos os dados de renda e MP y será todos os dados de idade . Certo, então não deixe que isso o confunda quando falamos sobre por que, nesse contexto, estou falando do eixo y, não dos dados do rótulo. Por quê? Então nós temos esta matriz de recursos que vamos passar para predizer, e isso nos dará de volta rótulos preditos, que são os números de cluster reais para cada ponto dentro deste espaço. Então só temos que traçar de novo. Faremos um oito por seis dígitos. Vamos remodelar esses resultados para garantir que ele corresponda à dimensão X do nosso enredo, e então vamos chamar Contour F. Isso vai basicamente passar por cada ponto que criamos na grade de malha e pegar seus rótulos que foram previsto. Então estes são os rótulos preditivos, não os rótulos reais, e plotá-los usando qualquer mapa de cores que queremos usar associado a esses valores. E depois disso, vamos realmente fazer um gráfico de dispersão que vai traçar os pontos originais que ainda estão vivendo em nossa matriz X capital. Há dados de feição novamente, que é renda e idade, e vamos colori-los com base nos clusters originais reais chamando Why, como tipo float para converter esses rótulos originais de volta para valores de cor para o gráfico. Então vamos em frente e executar isso e ver como ele se parece. Leva um pouco de tempo para criar tantas previsões, mas não muito tempo. E você pode ver aqui o que aconteceu. Então lembre-se do que estamos fazendo. Ele estava traçando os intervalos reais de previsões como cor de fundo, então estamos usando um núcleo linear. Então, temos linhas retas delineando cada região onde acredita que esses aglomerados correspondem. Então basicamente qualquer coisa neste triângulo vai ser um modelo para estar em um cluster. Qualquer coisa que esteja em um fundo vermelho será outro aglomerado. E nós estamos plotando sobre isso, os verdadeiros clusters originais de quando realmente criamos os dados. Agora, esses clusters se sobrepõem até certo ponto, então realmente não será possível ou realista realmente esperar que qualquer algoritmo seja feito para obter 100% sobre isso. Você pode ver que ele, Sr. Casais, por exemplo, nós temos esta característica azul aqui que está aparecendo é uma cor diferente do que o resto dos que estavam deveria estar no mesmo grupo. Ouvir que as cores de fundo não se correlacionam necessariamente com quatro gramas. Você pode ver quando um ponto não coincide com seus vizinhos ao redor. Para o resto desse cluster, provavelmente será um resultado incorreto. Além disso, temos este ponto roxo aqui para este aglomerado que parecia ter ah esgueirado nesta região vermelha aqui que realmente pertence a este outro aglomerado aqui. Então, alguns pontos que deram errado, mas não podem culpá-lo muito por isso. Thea Clusters, de fato, se sobrepõem agora. Você também pode usar a função de previsão no modelo de trem para fazer previsões para novos pontos específicos que o modelo nunca viu antes. Esse é o ponto de tudo isso. Então, neste exemplo em particular, estamos chamando s V c ponto Prever para prever um cluster para alguém com uma renda de US $200.000 aos 40 anos. E acontece que as terras e o grupo número três com o nosso modelo e para alguém com $50.000 por dia 65 que acabou no cluster número dois agora sabem que temos que reduzir esses números para nós antes de podermos realmente fazer uma previsão usá-los. Então lembre-se que antes de treinarmos este modelo, reduzimos todas as nossas entradas usando homens Max Scaler. Então temos que usar o mesmo scaler que nomeamos scaling e usá-lo para transformar nossos dados de entrada quando estamos tentando fazer previsões para novos pontos individuais também, então, tão importante não esquecer essa etapa. É muito fácil de fazer, e eu mesmo fiz isso. Mas com isso, eu vou desafiá-lo a estender isso e para sua atividade aqui, tente diferentes kernels, então linear é apenas um deles. Vá e procure a documentação em Psíquico Aprender on line para o modelo SPC, que em si é um bom exercício porque eu posso responder muitas de suas próprias perguntas dessa forma e descobrir quais são as outras possíveis opções de coronel. Vê se encontras uma melhor. Quando você entra em kernels não-lineares. Talvez aqueles conf o estado um pouco melhor, na verdade, e fazer um trabalho melhor nele. Então, faça algumas experiências. Tente diferentes kernels. Veja o efeito que isso tem sobre as formas dos aglomerados e as regiões que, para encontrá-los você pode achar interessante e também ver o efeito que ele tem no tempo de execução. Alguns deles são mais complicados do que outros, e alguns deles exigem mais recurso computacional é de outro, então isso também é um comércio off. Você tem que fazer conscientemente, também. Além disso, você pode querer mexer com alguns dos hiper parâmetros associados a esses diferentes modelos. Eles serão documentados na documentação em psicologia, que aprendeu para cada tipo de kernel. Muitos deles têm muitos parâmetros diferentes, e você só precisa experimentar para encontrar os parâmetros que funcionam melhor. Então brinque com isso também. Hiper, ajuste de parâmetros, parte muito importante do aprendizado de máquina. Então vá e suje suas mãos se quiser, e veja se você poderia fazer um trabalho melhor usando um tipo de coronel diferente. 43. Filtração colaborativa à base em usuários: Vamos falar sobre minha área pessoal de especialidade. Recomendo sistemas er. Então sistemas que podem recomendar coisas para as pessoas com base no que todos fizeram. Veja alguns exemplos disso de algumas maneiras para fazê-lo especificamente para técnicas chamadas de filtragem colaborativa baseada em usuário e baseada em item. Então vamos mergulhar. Eu quero falar sobre um assunto que é próximo e querido para o meu coração. Recomendo os sistemas dela. Se você se lembra, eu realmente passei a maior parte da minha carreira na amazon dot com e imdb dot com, e muito do que eu fiz lá foi desenvolver sistemas recomendados, coisas como pessoas que compraram, também compraram ou recomendaram para você e coisas que fizeram recomendações de filmes para as pessoas. Então isso é algo que eu sei muito sobre pessoalmente, e espero compartilhar um pouco desse conhecimento com vocês. Então, o que queremos dizer com recomendar seus sistemas? Bem, como eu disse, Amazon é um ótimo exemplo e com o qual estou muito familiarizado. Então, se você ir para a seção de recomendações aqui, você pode ver que ele realmente irá recomendar coisas que você pode estar interessado em comprar com base em seu comportamento passado no site e que podem incluir coisas que você está avaliado ou coisas que você comprou, e entre outros sinais que eu poderia usar este poço podem entrar em detalhes porque eles vão me caçar e, você sabe, fazer coisas ruins comigo. Mas é bem legal. É muito bom também, também, e você também pode pensar nas pessoas que compraram. Também comprado recurso na Amazon é uma forma de er recomendar, sistema. A diferença é que as recomendações que você está vendo aqui são baseadas em todo o seu comportamento passado , enquanto as pessoas que compraram também compraram ou as pessoas que viram também veem coisas assim são baseadas no que você está vendo agora, ou a coisa que você está pensando em comprar agora e mostrar coisas que são semelhantes a ele. Você também pode estar interessado nele. Acontece que o que você está fazendo agora é provavelmente o sinal mais forte do seu interesse de qualquer maneira. Outros exemplos da Netflix. Portanto, eles têm vários recursos que tentam recomendar novos filmes ou outros filmes que você ainda não viu. Baseado nos filmes que você gostou ou assistiu no passado, bem, então eles quebram isso por John Run Eles têm uma espécie de giro diferente em coisas onde eles tentam identificar os gêneros ou os tipos de filmes que eles pensam que você está gostando do mais, e eles mostram mais resultados desses gêneros. Então esse é outro exemplo de um sistema recomendado em ação. E o objetivo é ajudá-lo a descobrir coisas que você talvez não tenha sabido antes. Então é bem legal. Você sabe, dá filmes ou livros ou música ou qualquer outra chance de ser descoberto por pessoas que talvez não tenham ouvido falar sobre isso antes. Então, você sabe, não só é uma tecnologia legal, ela também meio que nivela o campo de jogo um pouco e ajuda novos itens a serem descobertos pelas massas. Por isso, desempenha um papel muito importante na sociedade de hoje. Pelo menos eu gostaria de pensar assim. Então, há algumas maneiras de fazer isso. Vamos falar sobre recomendar coisas com base no seu comportamento passado. Uma técnica é chamada de filtragem colaborativa baseada em usuário, e aqui está como ela funciona. Filtragem colaborativa, a propósito, apenas um nome chique para dizer coisas recomendadas com base na combinação do que você fez, o que todo mundo fez Ok, então é olhar para o seu comportamento e comparar isso com O comportamento de todos os outros para chegar, coisas que podem ser interessantes para você que você ainda não ouviu falar. Então, a idéia aqui é construir uma matriz de tudo que cada usuário que eu já tenha comprado, visto ou avaliado, ou qualquer sinal de interesse que você queira basear este sistema fora. Então basicamente acabar com uma linha para cada usuário no meu sistema. E essa linha contém todas as coisas que eles fizeram que podem indicar algum tipo de interesse em um determinado produto. Então imagine uma mesa. Tenho usuários para a Rose e cada coluna é um item. Certo, isso pode ser um filme. Ah, produto. Qualquer página da Web que você puder. Você pode usar isso para muitas coisas diferentes. Então eu uso essa matriz para calcular a semelhança entre diferentes usuários. Então eu basicamente troco tratar cada linha deste como um vetor, e eu posso calcular a semelhança entre cada vetor de usuários com base em seu comportamento. Então você sabe, para usuários que gostavam principalmente das mesmas coisas seria muito semelhante um ao outro, e eu posso então classificar isso por essas pontuações de similaridade. Então, se eu puder encontrar todos os usuários semelhantes a você com base em seu comportamento passado, eu posso então encontrar os usuários mais semelhantes a mim e, em seguida, recomendar coisas que eles gostaram que eu não olhei ainda. Ok, então você sabe, vamos olhar para um exemplo real, e vai fazer um pouco mais de sentido. Então, digamos que esta simpática senhora aqui assistiu Star Wars e o Império contra-atacar, e ela amou os dois. Então nós temos um vetor de usuário aqui desta senhora Like, deu cinco estrelas classificação mais especificamente para Star Wars, e o Império ataca de volta. Digamos que o Sr. Homem Moicano Nervoso apareça e só assistiu Star Wars. É a única coisa que ele viu que não sabe. O Império ataca ainda. De alguma forma, ele vive em um universo estranho onde ele não sabe que há na verdade muitos ,muitos filmes de Star Wars crescendo crescendo a cada ano, , na verdade , mas podemos dizer , mas podemos dizer, Esse cara é muito parecido com essa outra mulher porque ambos gostavam muito de Star Wars , então há semelhança. A pontuação é provavelmente bastante boa, e podemos dizer, OK, bem, o que essa senhora gostou que ele ainda não viu? E o império repreende este. Então nós podemos então tomar essa informação que esses dois usuários ar semelhante com base em seu prazer de Star Wars. Descobrir que esta senhora também gostou Empire ataca de volta. E isso pode ser uma boa recomendação para o Sr. Nervoso Mohawk Man. E podemos ir em frente e recomendá-lo. O Império ataca e provavelmente vai adorar porque, na minha opinião, é realmente um filme melhor. Mas não vou entrar em curso com você aqui. Agora, infelizmente, Filtro Clara baseado no usuário tem algumas limitações. Quando pensamos em relacionamentos e recomendar coisas com base em relacionamentos entre itens e pessoas sobre o que não tendemos, nossa mente tende a ir em relacionamentos entre as pessoas. Então queremos encontrar pessoas que são semelhantes a você e recomendar coisas que eles gostaram tipo de coisa intuitiva para fazer. Mas não é a melhor coisa a fazer. Um problema é que as pessoas são inconstantes, seus gostos estão sempre mudando. Então talvez aquela senhora simpática nos slides anteriores tenha tido uma espécie de breve fase de filme de ação de ficção científica enquanto ela passava e ela superou isso. E talvez mais tarde em sua vida, ela começou a se envolver mais em, você sabe, dramas ou filmes românticos ou colunas de Rahm, certo? Então, o que aconteceria se meu mohawk ousado acabasse com uma grande semelhança com ela? Baseado no período SciFi anterior dela? E acabamos recomendando comédias românticas para ele. Como resultado, isso seria ruim, certo? Quero dizer, há alguma proteção contra isso em termos de como calculamos as pontuações de similaridade para começar. Mas ainda polui nossos dados que os gostos das pessoas podem mudar ao longo do tempo. Então comparar pessoas com pessoas nem sempre é uma coisa direta de se fazer porque as pessoas mudam. O outro problema é que geralmente há muito mais pessoas do que há coisas em seu sistema. Então sete bilhões de pessoas no mundo e contando. Provavelmente não são sete bilhões de filmes no mundo ou sete bilhões de itens que você pode estar recomendando fora de seu catálogo. Assim, o problema computacional de encontrar todas as semelhanças entre todos os usuários em seu sistema é provavelmente muito maior do que o problema encontrar semelhanças entre os itens em seu sistema. Então, focando o sistema em usuários, você está tornando seu problema computacional muito mais difícil do que poderia ser porque você tem um monte de usuários, pelo menos espero que você faça se você está trabalhando para uma empresa de sucesso. O outro problema é que as pessoas fazem coisas ruins. Há um incentivo econômico muito real para garantir que seu produto ou seu filme ou o que quer que seja, seja recomendado para as pessoas. E há pessoas que tentam ganhar o sistema para fazer isso acontecer para seu novo filme ou seu novo produto ou seu novo livro ou qualquer outra coisa. E quando você está baseando isso em relacionamentos de usuário, é muito fácil fabricar personas falsas no sistema criando um novo usuário e fazendo com eles façam uma sequência de eventos que você sabe gosta de muitos itens populares e depois gosta do seu item a ser gravado. Isso é chamado de ataque de xelim, e queremos que o dedo do pé tenha um sistema que possa lidar com isso. Há pesquisas sobre como detectar e evitar esses ataques de bombardeio na filtragem colaborativa da base de usuários . Mas uma abordagem ainda melhor seria usar uma abordagem totalmente diferente totalmente que não seja tão suscetível a jogar o sistema, e falaremos sobre isso em nossa próxima palestra. Há uma maneira de pisar isso em sua cabeça e realmente fazer melhor do que o habitual. Aumente a filtragem colaborativa. Então essa é a filtragem colaborativa baseada no usuário Novamente, um conceito simples. Você olha para as semelhanças entre os usuários com base em seu comportamento e recomenda coisas que um usuário gostou que eram semelhantes a você e que você ainda não viu. Agora tem tem suas limitações, como falamos. Então vamos falar sobre virar a coisa toda em sua cabeça com uma técnica chamada Cloud baseada em item cresceu filtrando a seguir. 44. Filtros colaborativo à base em código: Então, vamos tentar resolver algumas das deficiências na filtragem Cloudera baseada em usuário com uma técnica chamada filtragem colaborativa baseada em item, e veremos como isso pode ser mais poderoso. Na verdade, é uma das técnicas que a Amazon usa sob o capô, e eles falaram sobre isso publicamente, então posso dizer isso. Mas vamos ver por que é uma ótima ideia. Então, falamos sobre filtragem colaborativa baseada em usuários, onde recomendamos itens com base no que pessoas semelhantes a você gostaram que você ainda não viu ou experimentou. E falamos sobre alguns dos problemas com a filtragem colaborativa da base de usuários. E daí se virarmos na cabeça dele? E em vez de basear nossas recomendações em relacionamentos entre pessoas, nós as baseamos em relacionamentos entre itens, e é isso que a filtragem colaborativa baseada em itens é. Então, isso atrai alguns insights. Por um lado, falamos sobre as pessoas serem inconstantes. Seus gostos podem mudar ao longo do tempo, então comparar uma pessoa com outra pessoa com base em seu comportamento passado torna-se bastante complicado. Sabe, as pessoas têm fases diferentes onde têm interesses diferentes, e você pode não estar comparando as pessoas que estão na mesma fase umas com as outras, mas um item sempre estará. Seja o que for, um filme será sempre um filme. Isso nunca vai mudar. Star Wars sempre será Star Wars bem, até George Lucas mexer um pouco com ele. Mas, na maior parte, os itens não mudam tanto quanto as pessoas. Então sabemos que essas relações são mais permanentes. E há mais de uma comparação direta que você pode fazer ao calcular similaridade entre itens, porque eles não mudam ao longo do tempo. A outra vantagem é que geralmente há menos coisas que você está tentando recomendar que há pessoas para quem você está recomendando. Então, novamente, sete bilhões de pessoas no mundo você provavelmente não está oferecendo sete bilhões de coisas em seu site. Para recomendar a eles para que você possa salvar um monte de recursos computacionais é avaliando relações entre itens em vez de usuários, porque você provavelmente terá menos itens do que você tem usuários em seu sistema. E isso significa que você pode executar suas recomendações com mais frequência, tornar as mais atuais mais atualizadas melhor. Você pode usar algoritmos mais complicados porque você tem menos relacionamentos para calcular, e isso é uma coisa boa. Também é mais difícil jogar o sistema. Então falamos sobre como é fácil obter uma abordagem de filtragem colaborativa baseada em usuários criando apenas alguns usuários falsos em como um monte de coisas populares. E então a coisa que você está tentando promover, com a nuvem baseada em item de filtragem que se torna muito mais difícil. Você tem que jogar o sistema em pensar que há relações entre os itens. E como você provavelmente não tem a capacidade de criar itens falsos com laços falsos para outros itens com base em muitos, muitos outros usuários, é muito mais difícil para Gaiman item baseado sistema de filtragem colaborar, que é um bom Coisa. Enquanto eu estou sobre o tema de jogar o sistema, outra coisa importante é certificar-se de que as pessoas estão votando com seu dinheiro. Então, uma técnica geral para evitar ataques de Schilling ou pessoas tentando ganhar o seu sistema er recomendado, certifique-se de que o comportamento que você está baseando-o fora de sua baseado em pessoas realmente gastando dinheiro para que você está sempre tipo de obter melhores e mais confiáveis resultados quando você baseou recomendações no que as pessoas realmente compraram em oposição ao que eles viram ou você sabe, o que eles clicaram em Ok, Tudo bem. Então vamos falar sobre como a filtragem Claverie baseada em itens funciona. É muito semelhante à filtragem colaborativa baseada em usuários, mas em vez de usuários estavam olhando para itens. Então, vamos voltar ao exemplo de recomendações de filmes. A primeira coisa que faríamos é encontrar cada par de filmes, cada emparelhamento de filmes que é assistido pela mesma pessoa. Então procuramos todos os filmes que foram assistidos por pessoas idênticas. E então medimos a semelhança de todas as pessoas que viram esse filme umas com as outras . Então, por isso podemos calcular semelhanças entre dois filmes diferentes com base nas classificações das pessoas que assistiram aos dois filmes. Então eu tenho um par de filmes. Ok, talvez Star Wars no Império revide. Eu acho uma lista de todos que assistiram os dois filmes comparam suas audiências umas com as outras. E se eles são semelhantes do que eu posso dizer, estes dois filmes ar semelhante porque eles foram classificados de forma semelhante por pessoas que assistiram a ambos . Ok, essa é a idéia geral aqui. Essa é uma maneira de fazer isso. Há mais de uma maneira de fazer isso, e então eu poderia apenas classificar tudo pelo filme e então pela força de semelhança de todos os filmes semelhantes a ele. E há os meus resultados para pessoas que gostaram também gostaram de pessoas que classificaram este altamente ulcerado, este altamente e assim por diante e assim por diante. E como eu disse, essa é apenas uma maneira de fazer isso. Então essa é uma espécie de etapa de filtragem colaborativa baseada em item. Primeiro, encontro relações entre filmes baseadas nas relações das pessoas que lavavam cada par de filmes. Fará mais sentido quando passarmos pelo exemplo. Então, por exemplo, digamos que a nossa simpática jovem aqui assistiu Star Wars e Empire ataca de volta e gosta de ambos, então lendo as duas cinco estrelas ou algo assim. Agora vem o Sr. Nervoso Mohawk Man, que também assistiu Star Wars em The Empire Strikes Back e também gosta de ambos. Então, neste ponto, enfraquecer digamos, há um relacionamento. Há uma semelhança entre Star Wars e o Império revive com base nesses dois usuários que gostam de ambos os filmes. Então o que vamos fazer é olhar para cada par de filmes. Temos um par de Star Wars e Empire Strikes de volta e então olhamos para todos os usuários que , assim, , assistiram ambos, que são esses dois caras. E se ambos gostam deles, então podemos dizer que eles são parecidos um com o outro ou se ambos não gostaram deles, podemos dizer que eles são parecidos um com o outro, certo? Então nós estamos apenas olhando para a pontuação de similaridade desses dois usuários comportamento relacionado a esses dois filmes neste par de filmes. Então vem o Sr. Bigode, ela lenhadora,homem hipster, homem hipster, e ele assiste The Empire ataca de volta, e ele vive em um mundo estranho onde ele quer que o Império ataca de volta, mas não tinha idéia que Star Wars o primeiro filme existiu. Bem, isso é bom. Calculamos uma relação entre o Império Ataca e Star Wars baseado no comportamento dessas duas pessoas. Então sabemos que esses dois filmes são semelhantes um ao outro. Assim, dado que o Sr. Hipster Man como o Império ataca, podemos dizer com boa confiança que ele também gostaria de Star Wars, e então podemos recomendar isso de volta para ele como sua recomendação de filme principal. Então você pode ver que você acaba com resultados muito semelhantes no final, mas nós meio que viramos a coisa toda em sua cabeça. Então, em vez de focar o sistema nas relações entre as pessoas estavam focando nas relações entre itens. E essas relações ainda são baseadas no comportamento agregado de todas as pessoas que assistiram. Mas fundamentalmente, estamos olhando para relações entre itens e não relações entre pessoas. Mas fundamentalmente, Consegui. Tudo bem, então vamos fazer isso. Na verdade, temos algum código python que usará pandas e todas as várias outras ferramentas à nossa disposição para criar recomendações de filmes com uma quantidade surpreendentemente pequena de código. Então, a primeira coisa que vamos fazer é mostrar a vocês a filtragem colaborativa baseada em itens na prática, para que criemos pessoas que assistiram. Também assisti. Basicamente, você sabe, pessoas que classificaram as coisas altamente também classificaram essa coisa muito bem. Então, construindo esses filmes para relacionamentos de filmes e vamos baseá-lo em dados reais que obtivemos do projeto de linhas de filme. Então, se você tem um filme lente dot org, é na verdade um filme aberto. Recomendar sistema er lá, onde as pessoas podem classificar filmes e obter recomendações para novos filmes, e eles fazem todos os dados subjacentes disponíveis publicamente para pesquisadores como nós. Então nós vamos realmente usar alguns dados de classificação de filmes riel. Está um pouco datado. Tem uns 10 anos de idade, então tenha isso em mente, mas são dados de comportamento reais que vamos trabalhar com finalmente aqui. E usaremos isso para calcular semelhanças entre filmes. E esses dados em si são úteis. Sabes, podes usar isso para dizer que as pessoas que gostavam também gostavam, certo? Então vamos dizer que eu estou olhando para uma página web para um filme que eu posso bem ali e depois e ali. Diga, se você gosta deste filme, já que você está olhando para ele, você provavelmente está interessado nele. Você também pode gostar desses filmes, e isso é uma forma de um sistema recomendado bem ali. Mesmo que nem saibamos quem você é agora, é real, são dados do mundo real. Então vamos encontrar alguns problemas do mundo real com ele. Nosso conjunto inicial de resultados não vai parecer bom, então vamos gastar um pouco de tempo extra tentando descobrir o porquê, o que é muito. O que você gasta seu tempo fazendo é um cientista de dados. Corrija esses problemas e volte novamente até termos resultados. Isso faz sentido. E, finalmente, bem, realmente fazer item de usuário baseado em filtragem colaborativa em sua totalidade, onde nós realmente recomendamos filmes para indivíduos com base em seu próprio comportamento. Então vamos fazer isso. Vamos começar. Então, essa é a filtragem colaborativa baseada em itens. Uma ideia maravilhosa pensada em pessoas muito mais espertas do que eu. Mas, você sabe, ele teve suas origens na Amazon, o que é meio legal. Como você pode ver, ele resolve um monte de deficiências de filtragem colaborativa baseada em usuário, e funciona muito bem. Então vamos realmente colocá-lo em prática e começar a escrever algum código python para fazê-lo acontecer . 45. Como encontrar semelhanças de filme: Então vamos aplicar o conceito de item baseado na filtragem Claverie para começar com semelhanças de filmes . Descubra quais filmes Air semelhante a outros filmes em particular tentará descobrir quais filmes Air semelhante ao Star Wars com base em dados de classificação do usuário. E vamos ver se saímos dessa. Vamos mergulhar. Ok, então vamos em frente e realmente calcular a primeira metade da filtragem Colaborar baseada em item, que é encontrar semelhanças entre os itens. Neste caso, nós vamos estar olhando para semelhanças entre filmes baseados no comportamento do usuário, e nós vamos estar usando alguns dados de classificação de filmes riel do projeto de lentes de grupo. Se você vai para linhas de grupo dot org que realmente torna publicamente disponível para pesquisadores como nós rial dados de classificações de filmes por pessoas reais que estão usando o site de trabalho filha lente de filme para classificar filmes e obter recomendações de volta para novos filmes Eles querem assistir. Então nós incluímos os arquivos de dados que você precisa do conjunto de dados de planos de grupo com os materiais do curso, e a primeira coisa que precisamos fazer é importá-los para um quadro de dados pandas, e nós realmente vamos ver todo o poder dos pandas neste exemplo, é uma coisa muito legal. Então a primeira coisa que vamos fazer é importar o arquivo de dados u dot. Isso faz parte do conjunto de dados das linhas de filme. E esse é um arquivo delimitado por tabulação que contém todas as classificações no conjunto de dados. Então, a maneira como isso funciona é tão mesmo lá estavam chamando ler Ver SV em Pandas enfraquecer especificar um separador diferente de uma vírgula. Neste caso, é uma guia. Então, estamos basicamente dizendo, Pegue as primeiras 3 colunas no arquivo de dados u dot e importado para um novo quadro de dados com três colunas. O usuário i d. o filme I d. e a classificação. Então o que acabamos com aqui é o quadro de dados que tem uma linha para cada usuário I D. que identifica alguma pessoa. E então para cada filme que eles classificaram, temos o filme I D. Qual é este? Uma nova abreviação milagrosa para um determinado filme. Então Star Wars pode ser o filme 53 ou algo assim, e eles estão classificando, você sabe, 1 a 5 estrelas. Então nós temos aqui um banco de dados, um quadro de dados de cada usuário, e cada filme que eles avaliam. Ok, Agora queremos ser capazes de trabalhar com títulos de filmes para que possamos realmente interpretar esses resultados mais intuitiva. Então vamos usar seus nomes legíveis humanos. Se você estiver usando um conjunto de dados verdadeiramente massivo, você diria isso até o fim porque você quer trabalhar com números. Eles são mais compactos durante o maior tempo possível, mas para fins de exemplo, no ensino manterá os títulos ao redor para que você possa ver o que está acontecendo. Então, há um arquivo de dados separado com o status de cinema que chamou You Don Item, e é Piper Limited, e as 2 primeiras colunas que importamos serão o filme I D e o título desse filme. Então agora temos que os quadros de dados são chamadas, tem todas as classificações de usuários e M chamadas tem todos os títulos para cada filme I D. E nós podemos usar esta função de fusão mágica em pandas para esmagá-lo completamente. O que acabamos com, é algo assim. Eu fui muito rápido, então acabamos com um novo quadro de dados que contém o usuário I D e classificação para cada filme que o usuário classificou e temos tanto um filme I D quanto o título que podemos ler e ver o que realmente é . Então a maneira de ler isso é usar sua identidade número 308 Leia uma história de brinquedo quatro estrelas usuário I D a 87 Radio Toy Story, cinco estrelas e assim por diante e assim por diante. E se continuássemos olhando para cada vez mais o estado do quadro, vemos diferentes classificações para diferentes filmes à medida que passamos por isso agora, a verdadeira magia dos Pandas entra. Então o que realmente queremos é olhar para as relações entre filmes com base em todos os usuários que assistiram a cada par de filmes. Então precisamos no final da matriz de cada filme e cada usuário e todas as classificações que cada usuário deu a cada filme e o comando tabela dinâmica em calcinha. Venha fazer isso por nós. Ele pode basicamente construir uma nova tabela a partir de um dado quadro de dados praticamente qualquer maneira que você quiser. Então o que estamos dizendo aqui, pegue nosso quadro de dados de leituras aqui, e eu quero criar um novo quadro de dados chamado classificações de filmes, e eu quero que o índice dele seja o usuário i d s. Então vamos ter Ah, ro para E eu vou ter cada coluna B os títulos dos filmes. Então eu vou ter uma coluna para cada título que eu encontrar naquele quadro de dados e no Sul. Cada célula conterá o valor de classificação se existir. Então vamos em frente e fazer isso. E acabamos com um novo quadro de dados que se parece com este tipo de incrível como isso apenas colocar tudo junto para nós agora esses n um n valores que não representa um número. E é exatamente como pandas indica um valor ausente. Então a maneira de interpretar isso é o usuário I D um, por exemplo, não assistiu o filme ganhou 900 mas o usuário I d um assistiu 101 Dalmations e lê-lo para as estrelas. Ele está certo. Ele ganhou também assistiu 12 homens irritados e classificou cinco estrelas, mas não assistiu ao filme Dois dias no Vale, por exemplo. Ok, então o que acabamos aqui com aqui é uma matriz esparsa, basicamente, que contém cada usuário e cada filme e em cada cruzamento onde um usuário classificou um filme. Há um valor de classificação. Ok, então você pode ver agora nós podemos muito facilmente extrair vetores de cada filme que o usuário do ar assistiu . E também podemos extrair vetores de cada usuário que classificou determinado filme, que é o que queremos. Então isso é útil para ambos baseados em usuário e item A de Clavier filtrando direito Se eu quiser encontrar relacionamentos entre usuários, eu poderia olhar para as correlações entre esses usuários aumentou. Mas se eu quiser encontrar correlações entre filmes para filtragem colaborativa baseada em itens, posso analisar as correlações entre colunas com base no comportamento do usuário. Ok, então é aqui que o Rial lançando as coisas em sua cabeça para usuários versus itens baseados semelhanças entra em jogo. Agora estamos indo com a filtragem colaborativa baseada em item, então queremos extrair colunas. Então vamos fazer isso a seguir. Vamos em frente e extrair todos os usuários que classificaram Star Wars, e podemos ver que a maioria das pessoas de fato assistiu e leu. Star Wars e todos gostaram. Então, pelo menos nesta pequena amostra que pegamos da cabeça do quadro de dados, então acabamos com um conjunto resultante de IDs de usuário e suas classificações para Star Wars. E ele é destro. Três não classificaram Star Wars, por exemplo, então tivemos um valor não numérico indicando um valor ausente lá. Mas está tudo bem. Você sabe, nós queremos ter certeza de que nós preservamos esses valores ausentes para que possamos comparar diretamente colunas de filmes diferentes e diferentes. Então, como fazemos isso? Bem, Pandas continua facilitando para nós e tem um núcleo com função aqui que podemos usar e que vai realmente ir em frente e correlacionar uma determinada coluna com todas as outras colunas no quadro de dados e calcular as pontuações de correlação e Devolva isso para nós. Então o que vamos fazer você ouve problemas centrais em todo o quadro de dados de classificações de filmes. É uma matriz inteira de avaliações de usuários e filmes correlacionadas apenas com a coluna de Leituras de Star Wars . Nós vamos então soltar todos os resultados ausentes com queda em um assim que apenas nos deixa com itens que realmente tinham uma correlação. Você sabe onde havia mais de uma pessoa que o viu, e vamos criar um novo quadro de dados com base nos resultados e olhar para os 10 melhores resultados. Então, novamente, apenas para recapitular, nós vamos construir a pontuação de correlação entre Star Wars e todos os outros filmes soltar todos e um valor não numérico para que nós só temos semelhanças de filmes que realmente existem onde mais de uma pessoa avaliou. E vamos construir um novo quadro de dados a partir dos resultados e olhar os 10 melhores resultados . E aqui estamos nós. Então nós acabamos com este resultado de partituras de correlação entre cada filme individual de Star Wars. E você pode ver, por exemplo, uma pontuação surpreendentemente alta de correlações com o filme Até que houve você. Uma correlação negativa, na verdade, com o filme 1900 uma correlação muito fraca com 101 Dalmações. Então agora tudo o que devemos fazer é classificar isso por pontuação de similaridade, e devemos ter o melhor filme simbolizar para Star Wars, certo? Vamos fazer isso. Basta chamar a ordem no quadro de dados resultante. Um Ken Pandas torna muito fácil, e podemos dizer que ascendente é igual a falso para realmente obtê-lo ordenado em ordem inversa por pontuação correlação. Então vamos fazer isso. Ok, então Star Wars saiu muito perto do topo porque Star Wars é semelhante a si mesmo. Mas o que são todas essas outras coisas? Que diabos? Homem do ano a toda velocidade fora da lei. Estes são tudo o que você sabe, filmes bastante obscuros que a maioria deles eu nunca ouvi falar. E ainda assim eles têm correlações perfeitas com Star Wars. Isso é meio estranho. Então, obviamente, estamos fazendo algo errado aqui. O que poderia ser? Bem, vamos falar sobre isso na nossa próxima palestra. Acontece que há uma explicação perfeitamente razoável, e esta é uma boa lição e por que você sempre precisa examinar seus resultados quando terminar com dados com qualquer tipo de tarefa de ciência de dados. Questione os resultados porque muitas vezes há algo que você perdeu. Pode haver algo que você precise limpar em seus dados. Isso pode ser algo que você fez errado. Você também deve sempre olhar cético. Seus resultados não os levam apenas pela fé. Ok? Se você fizer isso você vai ficar em apuros por causa de nossa realmente apresentar estes como recomendações para pessoas que gostam de Star Wars, eu seria demitido, não ser demitido, prestar atenção, os resultados . Então vamos mergulhar no que deu errado em nossa próxima palestra. Então esse é o nosso crack inicial e baseado em item filtragem colaborativa e encontrar um filme. Semelhanças baseadas no comportamento do usuário e os resultados iniciais realmente não são tão grandes. Mas acontece que há uma explicação perfeitamente racional para o porquê, uma forma perfeitamente simples de explicar isso. Então vamos mergulhar no que deu errado e corrigi-lo. 46. Como melhorar os resultados das semelhanças de filmes: Como você se lembra, nossos resultados iniciais para um filme semelhante ao Star Wars, usando técnicas de filtragem colaborativa baseadas em itens não saíram muito bem. Então vamos descobrir o porquê e ver se podemos fazer sobre isso. Então vamos descobrir o que deu errado com nossas semelhanças de filmes. Lá passamos por todo esse trabalho emocionante para muito facilmente com pandas. Calcule pontuações de correlação entre filmes com base em seus vetores de classificação de usuários e os resultados que tivemos meio que sugado. Então, lembrem-se que procuramos filmes parecidos com Star Wars usando essa técnica, e acabamos com um monte de recomendações estranhas no topo. Isso tinha uma correlação perfeita, e a maioria deles são filmes muito obscuros. Então, o que você acha que pode estar acontecendo lá? Bem, uma coisa que pode fazer sentido é, digamos que temos muitas pessoas que assistem Star Wars e algum outro filme obscuro. Acabamos com uma boa correlação entre quem e esses dois filmes porque eles estão ligadospor Star Wars. Acabamos com uma boa correlação entre quem e esses dois filmes porque eles estão ligados Mas no final do dia, queremos realmente basear nossas recomendações no comportamento de, você sabe, você sabe, uma ou duas pessoas que assistem algum filme obscuro. Provavelmente não. Quero dizer, sim, as duas pessoas no mundo ou o que quer que seja que assistem o filme a toda velocidade e ambos gostaram além de Star Wars. Talvez seja uma boa recomendação para eles, mas provavelmente não é uma boa recomendação para o resto do mundo. Você sabe, nós precisamos ter algum tipo de nível de confiança em nossas semelhanças aplicando um limite mínimo de quantas pessoas assistiram um determinado filme. Sabe, não podemos fazer um julgamento que um determinado filme é bom para espaçar o comportamento de uma ou duas pessoas. Então vamos tentar colocar essa visão em ação aqui. Então o que vamos fazer é dar uma olhada, tentar identificar os filmes que não foram classificados por muitas pessoas sobre isso. Apenas jogue-os fora, ok e veja o que conseguimos. Então, para fazer isso, vamos pegar nosso quadro de dados de classificações originais, e vamos dizer grupo por título novamente. Pandas tem todos os tipos de magia nele, e isso basicamente cripará um novo quadro de dados que agrega todas as linhas para um determinado título em uma linha, e podemos dizer que queremos agregar especificamente na classificação e queremos mostrar o tamanho, o número de classificações para cada filme e a pontuação média a classificação média desse filme. Então, quando fazemos isso, quando era algo assim. Então isso está nos dizendo, por exemplo, para o filme 101 Dalmations, 109 pessoas classificaram esse filme, e sua classificação média foi de 2,9 estrelas. Então, não é uma boa pontuação. Realmente? Então você sabe disso. Se olharmos para esses dados, podemos dizer OK, bem, bem, Movie disse, eu considero obscuro como 187 tinha 41 classificações, mas 101 Dalmações. Já ouvi falar disso. Já ouvi falar de 12 homens zangados. Parece que há um valor de corte natural em cerca de 100 classificações onde talvez esse seja o valor mágico onde as coisas começam a fazer sentido. Então vamos em frente e nos livrar de filmes classificados por menos de 100 pessoas. E sim, você sabe, eu estou fazendo isso intuitivamente neste ponto, como vamos falar sobre mais tarde. Há mais maneiras principais de fazer isso. Poderíamos realmente fazer experimentos. Você treina experimentos de testes em diferentes valores-limite para encontrar aquele que realmente executa o melhor. Mas, inicialmente, vamos usar nosso senso comum e filtrar filmes que foram recebidos por menos de 100 pessoas. Mais uma vez, Pandas torna isso muito fácil de fazer. Então poderíamos dizer filmes populares. Um novo quadro de dados vai ser construído olhando para as estatísticas de filmes, e nós vamos apenas levar Rose digno. O tamanho da classificação é maior ou igual a 100 e eu vou então classificar isso por uma classificação média apenas por diversão, para ver os melhores filmes, amplamente assistidos. Sabe, estou recebendo esse aviso agora. Desde que originalmente criei este curso, uma nova versão do Panis entrou. Você poderia apenas usar os valores de sublinhado de classificação lá, e ele funcionará tão bem, não aviso. Vai-te embora e acabamos com isto. Então, você sabe, temos basicamente aqui uma lista de filmes que foram invadidos por mais de 100 pessoas classificadas por sua pontuação média de classificação, e isso em si é um sistema er recomendar filmes populares altamente classificados. Um barbear perto, aparentemente, era um filme muito bom, e muitas pessoas lavaram, e eles realmente gostaram. Então, novamente, este é um conjunto de dados muito antigo do final dos anos noventa. Então, mesmo que você não é, pode não estar familiarizado com o filme um barbear perto pode valer a pena voltar e redescobrir adicionado ao seu Netflix aqui, qualquer que seja a Lista de Schindler. Não é uma grande surpresa lá que aparece no topo da maioria das listas de filmes top As calças erradas . Outro exemplo de um filme obscuro que aparentemente era muito bom. E também era muito popular. Então algumas descobertas interessantes já lá. Só fazendo isso, então as coisas parecem um pouco melhores agora. Então vamos em frente e basicamente fazer nosso novo quadro de dados de filmes de recomendações de Star Wars semelhantes a Star Wars, onde nós apenas baseamos em filmes que aparecem neste novo quadro de dados. Então vamos usar a operação conjunta para ir em frente e juntar nosso quadro de dados de filmes originais e similares a este novo quadro de dados de filmes Onley que têm mais de 100 classificações. Certo, então criamos um novo quadro de dados baseado em filmes similares onde extraímos a coluna Similaridade . Junte-se a isso com nossas estatísticas de filmes. State of Frame, que é o nosso popular filme State of Frame, e vamos olhar para os resultados da combinação e lá vamos nós. Então, agora restringimos apenas a filmes que foram classificados por mais de 100 pessoas. A pontuação de semelhança com Star Wars. Então agora tudo o que precisamos fazer é resolver isso melhor. Receba esse aviso de novo. Sim, permite que você classifique valores em vez de classificar reverso ordenado, e nós vamos apenas dar uma olhada nos primeiros 15 resultados. E, ei, isso está começando a parecer um pouco melhor. Então Star Wars sai por cima porque é semelhante a si mesmo. Empire ataca de volta. É o número dois, vire os olhos de jato número três Caçadores da Arca Perdida. Número quatro. Você sabe que ainda não é perfeito, mas isso faz muito mais sentido, certo? Então você esperaria que os três filmes de Star Wars da trilogia original fossem semelhantes uns aos outros. O estado que remonta antes dos próximos três filmes e Raiders of the Lost Ark, também um rubi muito semelhante a Star Wars em grande estilo sai, é o número quatro. Então estou começando a me sentir um pouco melhor sobre esses resultados reais. Ainda há espaço para melhorias. Mas temos alguns resultados que fazem sentido. Que agora, idealmente, também filtraríamos Star Wars. Você não quer olhar para semelhanças com o filme em si que você começou, mas se preocupe com isso mais tarde. Então, se você quiser jogar este pouco mais como eu disse, 100 foi palavra de um corte arbitrário para o número mínimo de classificações. Se você quiser experimentar com diferentes valores de corte, eu encorajo-o a voltar e fazê-lo Veja o que isso faz com os resultados. Você sabe, você pode ver aqui que os resultados que realmente gostamos realmente tinham muito mais de 100 classificações em comum. Então, com Austin Powers chegando lá muito alto com apenas 130 classificações, então talvez centenas não seja alto o suficiente. Pinóquio preso em 101 não muito parecido com Star Wars, então você pode querer considerar um limite ainda maior lá e ver o que ele faz. Portanto, tenha em mente que Este é um conjunto de dados muito pequeno e limitado que usamos para fins de experimentação, e é baseado em dados muito antigos está aqui, apenas indo para ver filmes mais antigos. Então, você sabe, interpretar esses resultados intuitivamente pode ser um pouco desafiador como resultado, mas não resultados ruins. Então, vamos seguir em frente e realmente fazer a filtragem colaborativa completa baseada em itens explodidos. Recomendamos que o usuário recomende filmes para pessoas que usam um sistema mais completo fará isso em seguida , modo que está olhando muito melhor. Você sempre precisa trabalhar. Cuidado com relacionamentos espúrios, para haja uma certa confiança ou apoio que você deve ter. Quando você está analisando relacionamentos em dados e aplicando esse limite mínimo de suporte, acabamos com resultados muito melhores e mais razoáveis. Então, boa lição para aprender lá. Vamos levá-lo para o próximo nível e realmente fazer a nuvem completa baseada em itens explodidos ou filtragem e recomendações produzidas para um usuário inteiro com base em todo o seu histórico. E podemos construir um sistema que poderia fazer isso para qualquer usuário em nosso conjunto de dados. Faremos isso a seguir. 47. Como fazer recomendações de filmes: Ok, vamos realmente construir um sistema de recomendação completo que pode olhar para todas as informações de comportamento de todos e quais filmes? Eles lêem em todos os filmes e usam isso para realmente produzir os melhores filmes de recomendação para qualquer usuário em nosso conjunto de dados tipo de incrível, e você vai se surpreender como é simples. Vamos lá. Ok, vamos colocar tudo junto e realmente fazer a filtragem de colaboração completa baseado em item soprado onde podemos recomendar filmes para qualquer usuário com base em todo o comportamento do que todos classificaram cada filme. Quão incrível é isso? O que é realmente incrível é como os pandas simples fazem isso. Então vamos passar por isso. Ok, então vamos começar importando o conjunto de dados de lentes de filme que temos novamente. Estamos usando um subconjunto que contém apenas 100.000 classificações por enquanto. Mas há conjuntos de dados maiores que você pode obter do grupo Lynn Stott ou ir até milhões de classificações se você está tão inclinado. Tenha em mente, entanto, quando você começar a lidar com esse realmente big data, você estará empurrando os limites do que você pode fazer em uma única máquina no que os pandas podem lidar. Então, você sabe, eu tenho outros cursos sobre técnicas como faísca e redução de mapas que podem lidar com recomendações de escala muito maior . Então, se você está curioso, vá conferir. Mas, por enquanto, vamos trabalhar com isso. Assim como antes, vamos importar o arquivo de dados u dot que contém todas as classificações individuais para cada usuário que filme eles invadiram. E então vamos amarrar isso junto com o título do filme para não trabalharmos apenas com o novo filme do Miracle. Eu DS. Vá em frente e faça isso, e acabamos com essa forma de quadro de dados para ler isso. Por exemplo, usuário I D 308 classificou Toy Story quatro estrelas e o usuário I D 66 classificou Toy Story três estrelas, e isso iria conter todas as classificações para cada usuário para cada filme e novamente, assim como antes, usamos o maravilhoso e pandas para construir um novo quadro de dados. Com base nessa informação onde o índice de cada linha é o usuário, i D. E as colunas eram compostas de todos os títulos de filmes exclusivos no meu conjunto de dados, e cada célula contém uma leitura. Então, o que acabamos com é essa matriz esparsa incrivelmente útil que contém usuários para cada linha e filmes para cada coluna. E nós temos basicamente todas as classificações de usuários para cada filme nesta matriz. Então o usuário I D um, por exemplo, deu 101 Dalmations duas estrelas. E novamente, todos esses Entei terminam. Não é um número representa dados ausentes, modo que apenas indica, por exemplo, usuário i D um não classificou o filme ganhou 900. , Novamente, dedo do pé da natureza é muito útil. Se estivéssemos fazendo filtragem colaborativa baseada em usuário, poderíamos calcular correlações entre usuários entre cada usuário individual do vetor de classificação para encontrar usuários semelhantes. E como estamos fazendo com base em item, filtragem colaborativa eram mais relações entre os alunos entre as colunas. Assim como fazer uma pontuação de correlação entre duas colunas que nos dará uma pontuação de correlação para um determinado par de filmes. Então, como fazemos isso? Acontece que os pandas tornam isso incrivelmente fácil de fazer também. Ele tem uma função de núcleo embutido que irá realmente calcular a pontuação de correlação para cada prejuízo de chamada encontrado em toda a matriz. É quase como se estivessem pensando em nós, então vamos em frente e fazer isso. É uma coisa bem computacional e cara de se fazer. Então vai demorar um momento para realmente voltar com um resultado. Mas aí nós temos. Então, o que temos aqui? Nós temos aqui, um novo quadro de dados onde cada filme está na linha e na coluna para que possamos olhar para a interseção de quaisquer dois filmes específicos e encontrar sua pontuação de correlação com o outro com base nos dados de classificação do usuário que tivemos aparecer Originalmente? Quão legal é isso? Assim, por exemplo, o filme 101 Dalmations está perfeitamente correlacionado consigo mesmo, claro, porque tem vetores de classificação de usuários idênticos. Mas se você olhar para 101 Dalmations relacionamento com o filme 12 Homens Angry, é uma pontuação de correlação muito menor porque esses filmes ar bastante diferente, faz sentido, certo. Então eu tenho essa matriz maravilhosa agora que vai me dar a pontuação de semelhança de dois filmes um com o outro. É incrível e muito útil para o que vamos fazer agora. Assim como antes, nós temos que lidar com resultados espúrios, então eu não quero olhar para relacionamentos que são baseados em uma pequena quantidade de informações de comportamento . Então, acontece que a função central pandas realmente tem alguns parâmetros que você pode dar . Um deles é o método de pontuação de correlação real que você deseja usar. Então, vou dizer “Use a Correlação Pearson”. Mas também tem um parâmetro de períodos masculinos que você pode dar a ele, e isso basicamente diz, eu só quero que você considere pontuações de correlação que são apoiadas por, pelo menos neste exemplo, 100 pessoas que classificaram ambos os filmes e isso vai se livrar dessas relações espúrias que são baseadas em apenas um punhado de pessoas um pouco diferentes do que fizemos. E o exercício de semelhanças de itens onde acabamos de jogar fora qualquer filme que foi invadido por menos de 100 pessoas. O que estamos fazendo aqui é jogar fora semelhanças de filmes onde menos de 100 pessoas classificaram os dois filmes. Ok, então você pode ver agora que nós temos muito mais em fins e a matriz resultante. Na verdade, até mesmo os filmes que eu era semelhante a eles mesmos são jogados fora. Então, por exemplo, o filme 1.900 foi supostamente assistido por menos de 100 pessoas, então ele só é jogado inteiramente 101. Dalmações, no entanto, sobrevive com uma pontuação de correlação de um, e na verdade não há filmes nesta pequena amostra do dia é definido que são diferentes uns dos outros que tinham 100 pessoas em comum que assistiam Ambos. Mas há filmes suficientes que sobrevivem para obter resultados significativos. Então, fazemos bem esses dados, o que queremos fazer é recomendar filmes para as pessoas. Então, a maneira como fazemos isso enquanto olhamos para todas as classificações foram dadas, pessoa encontra filmes semelhantes ao que classificou, e esses são candidatos ou recomendações para essa pessoa. Então vamos começar criando uma pessoa falsa para criar recomendações para Então eu realmente adicionei um IDde usuário falso ID número zero para a linha de filme Status disse que estamos processando manualmente, e esse tipo de representa Alguém como eu que amava Star Wars e o Império ataca mas odiava filmes “E o Vento Levou”. Então isso representa alguém que realmente ama Star Wars, mas não gosta de estilo antigo sobre dramas românticos. Ok, então eu dei uma classificação de cinco estrelas para a Empire Strikes em Star Wars e um começo a ler para o Vento Levou”. Então eu vou tentar encontrar recomendações para este usuário fictício. Então, como faço isso? Bem, vamos começar criando uma série chamada Candidatos SIM, e eu vou ver todos os filmes que eu avaliá-lo. Então, para eu e Rain zero através do número de classificações que eu tenho em minhas classificações, eu vou somar filmes semelhantes aos que eu classifiquei. Então eu vou pegar aquele núcleo matriz State of Frame, aquele mágico que tem todas as semelhanças do filme. Vou criar uma matriz de correlação com a queda das minhas classificações, quaisquer valores ausentes. E então eu vou escalar essa pontuação de correlação resultante pelo quão bem eu classifiquei aquele filme . Então a idéia aqui é que eu vou passar por todas as semelhanças para os ataques do Império , por exemplo, e eu vou escalá-los todos por cinco porque eu realmente gostei dos ataques do Império. Mas quando eu passar e obter as semelhanças para ir com o vento, eu só vou escalar aqueles por um porque eu não gosto de Levou com o Vento. Então, isso dará mais força aos filmes que é semelhante aos filmes que eu gostei e menos força a dois filmes semelhantes que são semelhantes aos filmes que eu não gostei. Ok, então eu só vou através e construir esta lista de candidatos semelhança recomendação candidatos. Se você vai classificar os resultados e colocá-lo para fora, vamos ver o que conseguimos. Ei, esses não parecem muito ruins, certo? Então, obviamente, o Império ataca em Star Wars sai por cima porque eu gosto desses filmes explicitamente. Eu já os observei e a taxa deles, mas chegando ao topo da lista voltou ao Jato I, o que esperaríamos, e aos Caçadores da Arca Perdida. Então vamos começar a refinar esses resultados um pouco mais. Estamos vendo que estamos recebendo valores duplicados de volta, então se tivermos um filme que foi semelhante a mais de um filme que eu classifiquei, ele voltará mais de uma vez nos resultados. Então, queremos combiná-los juntos. Então, se eu tiver de fato o mesmo filme de retorno dos Jedi, por exemplo, com semelhante a Guerra das Estrelas e o Império ataca de volta. Talvez isso deva ser adicionado em conjunto em uma combinação, recomendações mais fortes. Pontuação. Vamos em frente e fazer isso. Vamos usar o grupo por comando novamente para agrupar todas as estradas que são para o mesmo filme, e vamos resumir lá. Pontuações de correlação e olhar para os resultados. Ei, isso está parecendo muito bom. Então o retorno dos Jedi sai bem no topo, como deveria, com uma pontuação de sete Caçadores da Arca Perdida, um segundo próximo e cinco. E então começamos a chegar a Indiana Jones e Última Cruzada e mais alguns filmes. Ponte sobre o rio Kwai de volta ao futuro do Sting. Estes são todos filmes que eu realmente gostaria de assistir. Sabe, eu também gosto de filmes antigos da Disney . Então não é tão louco quanto parece. Então a última coisa que precisamos fazer é filtrar os filmes que eu já classifiquei porque ele não tem acesso a recomendar filmes que você já viu para que eu possa descartar quaisquer linhas que estejam nas minhas classificações originais. Veja a Siri sobre os 10 melhores resultados. Lá temos ele. Devolva o jato. Eu devolvo raios da Arca Perdida. Indiana Jones Todos os melhores resultados para o meu usuário fictício, e todos eles fazem sentido ver alguns filmes amigáveis para a família. Você sabe, Cinderela era DeVos Dumbo rastejando? Provavelmente baseado na presença de “Levou com o vento “lá dentro, apesar de ter sido a palavra mais baixa, ainda está lá dentro. Ainda está a ser contado, e lá temos os nossos resultados. Então aí está. Muito legal. Nós realmente geramos resultados, recomendações para dar usuário, e podemos fazer isso para qualquer usuário em todo o nosso quadro de dados. Então vá em frente, jogar que se você quiser em seguida, Eu quero falar sobre como você pode obter suas mãos sujas pouco mawr e jogar com esses resultados tentando tentar melhorar sobre eles. Muito bem, estou muito entusiasmado com estes resultados até agora. Eles estão realmente parecendo muito razoáveis. há espaço para melhorar, Mashá espaço para melhorar, e esse será o meu desafio para você na próxima palestra. Vamos falar sobre algumas maneiras que você pode realmente estender e construir sobre este caderno python e realmente fazer recomendações de filmes melhores do que o que eu lhe dei para começar . Então, há um pouco de arte nisso. Você sabe, você precisa continuar iterando e tentando diferentes idéias e técnicas diferentes até obter melhores e melhores resultados. E você pode fazer isso praticamente para sempre. Eu fiz uma carreira inteira com isso, então não espero que você passe os próximos 10 anos tentando refinar isso como eu fiz. Mas há algumas coisas simples que você pode fazer, então vamos falar sobre isso. 48. Como melhorar o recomendador: Então, como um exercício, eu quero desafiá-lo a ir e tornar essas recomendações ainda melhores. Então vamos falar sobre algumas idéias que eu tenho, e talvez você tenha algumas das suas próprias para isso. Você pode realmente experimentar e experimentar, sujar as mãos e tentar fazer melhores recomendações de filmes. Ok, então há muito espaço para melhorias. Ainda assim, nestes resultados de recomendação, então é que você pode ver que há uma espécie de arte para ele. Há muitas decisões que tomamos sobre como diferentes resultados de recomendação com base na sua classificação do item de origem, ou qual limite você deseja escolher para o número mínimo de pessoas que classificaram para determinados filmes. Então, há muitas coisas que você pode ajustar muitos algoritmos diferentes que você pode tentar, e você pode se divertir muito tentando fazer melhores recomendações de filmes fora do sistema. Então, se você está se sentindo bem, eu estou desafiando você a ir e fazer exatamente isso. Então aqui estão algumas idéias sobre como você pode realmente tentar melhorar os resultados nesta palestra, então você pode simplesmente ir em frente e jogar com o item baseado cf dot i python arquivo notebook e mexer com ele. Então, por exemplo, vimos que o método de correlação realmente tinha alguns parâmetros para a computação do YouTube de composição de correlação . Usamos o Pearson em nosso exemplo, mas há outros que você pode olhar para cima e experimentar. Veja o que ele faz com seus resultados. Utilizou-se um valor de período mínimo de 100. Talvez seja muito alto. Talvez seja muito baixo. Nós apenas escolhemos arbitrariamente. O que acontece se você brincar com isso com esse valor? Se você baixasse isso, por exemplo, eu esperaria que você visse alguns filmes novos. Talvez você nunca ouviu falar, mas ainda pode ser uma boa recomendação para essa pessoa, ou se você levantá-lo mais alto, você veria que você não sabe nada além de blockbusters. Então, às vezes você tem que pensar sobre o que o resultado é que você quer fora de um recomendar seu sistema. Há um bom equilíbrio entre mostrar filmes às pessoas que eles ouviram falar de um filme que se move que eles não ouviram falar? Quão importante é a descoberta de novos filmes para essas pessoas versus ter confiança no sistema recomendado ao ver um monte de filmes que eles ouviram fora. Então, de novo, há uma espécie de arte nisso. Também podemos melhorar o fato de que vimos muitos filmes nos resultados que foram semelhantes a “Levou With the Wind”, mesmo que eu não gostasse de “Levou com o Vento”. os Esperámososresultados mais baixos do que filmes de semelhanças que gostei. Mas talvez esses filmes devessem ser penalizados se eu odiasse tanto o Vento Levou com o Vento . Talvez semelhanças com “E o Vento Levou “, como “O Mágico de Oz “, devessem ser penalizadas e, você sabe, reduzidas em sua pontuação em vez de aumentarem tudo. Então essa é outra modificação simples que você pode fazer e brincar com. Provavelmente existem alguns outliers em nosso conjunto de dados de classificação de usuários. E se as pessoas descartáveis que invadiram uma quantidade ridícula de filmes, talvez estejam a distorcer tudo? Você poderia realmente tentar identificar esses usuários e jogá-los fora como outra idéia. E se você realmente quer um grande projeto, se você realmente quer afundar os dentes para este material, você pode realmente avaliar os resultados desta recomendação, mas motor recomendado usando as técnicas de teste treinado. Então, e se, em vez de ter uma pontuação de recomendação arbitrária que resume a correlação, pontuações de cada filme individual realmente reduziram isso para uma classificação prevista para cada filme específico. Então, se a saída do meu sistema er recomendado fosse filme e minha classificação prevista para esse filme em um sistema de teste de trem, eu poderia realmente tentar descobrir quão bem eu prevejo filmes que esse usuário tem de fato , assistiu e lê-lo antes? Ok, então eu poderia, tipo, deixar de lado alguns dos dados de classificação e ver quão bem meu sistema recomendado é capaz prever. As classificações dos usuários eram aqueles filmes, e isso seria uma maneira quantitativa e principal de medir o erro deste. Recomendo o motor dela. Mas, de novo, há um pouco mais de arte do que uma ciência nisso. Mesmo que o Prêmio Netflix realmente tenha usado essa área, métrica chamada Router Me significa erros quadrados. O que eles costumavam ser bastante particular é que realmente uma medida de um bom sistema er recomendar . Basicamente, você está medindo a capacidade do seu sistema er de recomendação para prever as classificações de filmes que uma pessoa já assistiu, mas não é o propósito de um mecanismo recomendado para recomendar filmes que uma pessoa não assistiu que eles podem desfrutar? Há duas coisas diferentes. Então, infelizmente, não é muito fácil medir a coisa que você realmente quer medir. Então, às vezes você tem que seguir seu instinto e o caminho certo para medir os resultados de uma recomendação. O motor dela é medir os resultados que você está tentando promover através dele. Talvez eu esteja tentando fazer com que as pessoas assistam mais filmes ou grandes filmes novos com mais força ou comprem mais coisas. Executar experimentos controlados reais em um site real seria a maneira certa de otimizar para isso, vez de usar testes treinados. Então, você sabe, eu fui a um pouco mais de detalhes lá do que eu provavelmente deveria ter feito. Mas a lição é, você sempre pode pensar sobre essas coisas em preto e branco. Você sabe, às vezes você não pode realmente medir as coisas direta e quantitativamente, e você tem que usar um pouco de senso comum, e isso é um exemplo disso. De qualquer forma, aqui estão algumas idéias sobre como voltar e melhorar os resultados deste motor er recomendar que escrevemos. Então, por favor, sinta-se livre para mexer com ele. Veja se você pode melhorar isso. No entanto você deseja e se divertir um pouco com ele. Esta é realmente uma parte muito interessante do curso, então eu espero que você goste. Então vá dar uma chance. Veja se você pode melhorar nossos resultados iniciais. Ali. Há algumas idéias simples lá para tentar fazer essas recomendações melhores e algumas muito mais complicadas, também. Agora, não há resposta certa ou errada. Não te vou pedir para entregares o teu trabalho, e não vou rever o teu trabalho. Você sabe, você só tem que brincar com ele e ter alguma familiaridade com ele, experimentar e ver quais resultados você obtém. Esse é o objetivo só para você se familiarizar com o uso do python para esse tipo de coisa e se familiarizar com os conceitos por trás da filtragem colaborativa baseada em itens. Então divirta-se um pouco com ele. Viu o que eu inventei? Se você chegar a alguns resultados realmente bons, certifique-se de postar aqueles para todos os nossos outros alunos para ver nas discussões aqui eu estaria curioso para ver o que você vem acima com. Então, tenha isso 49. K-Nearest-Neighbors: node K-Nearest-Neighbors: conceitos: Vamos falar sobre mais algumas técnicas de mineração de dados e aprendizado de máquina que as pessoas esperam que você conheça. Vamos começar com um muito simples chamado K vizinhos mais próximos Air Cannon para abreviar. E você vai se surpreender com o quão simples uma boa técnica de aprendizado de máquina supervisionada pode ser. Vamos dar uma olhada. Então vamos falar sobre mais algumas técnicas de aprendizado de máquina de mineração de dados que os empregadores esperam você saiba sobre algumas mais que ainda não abordamos. Um dos mais simples é chamado K vizinhos mais próximos, então vamos começar com isso. Parece chique, mas na verdade é uma das técnicas mais simples lá fora. A idéia é, digamos que você tem um gráfico de dispersão e você pode calcular a distância entre dois pontos naquele plano de Skylar, certo? Então a idéia de K vizinhos mais próximos é Digamos que você tem um monte de dados que você já classificou, que você pode treinar o sistema se eu tiver um novo ponto de dados. Tudo o que faço é olhar para os vizinhos mais próximos com base nessa métrica de distância e deixar que todos votem na classificação desse novo ponto. Então, vamos dar o exemplo aqui. Imaginemos que este enredo de dispersão aqui está tramando filmes, e talvez os Quadrados Azuis representem filmes de ficção científica, e os triângulos vermelhos representam filmes dramáticos. Ok, e talvez isso seja traçar classificações versus popularidade ou qualquer outra coisa que você possa sonhar. Então, temos algum tipo de distância que podemos manter computacional com base na classificação e popularidade entre dois pontos no gráfico de dispersão. Digamos que um novo ponto vem em um novo filme que não conhecemos o John R. Four. Mas podemos fazer é dizer, Vamos definir K 23 e levar os três vizinhos mais próximos a este ponto no gráfico de dispersão. Eles podem então votar nas classificações para que você possa ver se eu pego os três vizinhos K's mais próximos . Eu tenho que filmes de drama e um filme de ficção científica, e eu deixaria que todos votassem e nós escolheríamos desclassificação de drama para este novo ponto baseado em que esses três vizinhos mais próximos. Agora, se eu expandesse esse círculo para incluir cinco vizinhos mais próximos K de cinco, eu recebo uma resposta diferente. Então, nesse caso, eu pego três ficções científicas em filmes dramáticos se eu deixar todos votarem, eu acabaria com uma classificação de ficção científica, então você pode ver que a escolha de K pode ser muito importante. Você quer ter certeza de que é pequeno o suficiente para que você não tenha que ir muito longe e se tornar Comece pegar seus vizinhos relevantes, mas ele tem que ser grande o suficiente para e fechar pontos de dados o suficiente para obter uma amostra significativa tantas vezes você terá que usar teste treinado ou uma técnica semelhante para realmente determinar o que o valor certo de K é perdoado. Conjunto de dados. Mas no final do dia você tem que começar sua intuição e trabalhar a partir daí. Isso é tudo o que há para ele. É tão simples assim. Então, mesmo sendo uma técnica muito simples, como você está? Está literalmente levando os vizinhos mais próximos DK em um gráfico de dispersão e deixando todos votarem na classificação. Ele qualifica uma aprendizagem supervisionada porque está usando os dados de treinamento de um conjunto de pontos conhecidos e classificações conhecidas para informar a classificação de um novo ponto. Mas vamos fazer algo um pouco mais complicado com ele e realmente brincar com filmes apenas com base em seus metadados. Então vamos ver se podemos realmente descobrir os vizinhos mais próximos de um filme baseado apenas nos valores intrínsecos desses filmes de que as classificações para o John ou informações para ele . Então, em teoria, poderíamos recriar algo semelhante aos clientes que assistiam. Também lavar, Você sabe, esta é uma captura de tela da Amazon Dot com. Só usando os vizinhos mais próximos e eu poderia dar um passo adiante. Uma vez identificar os filmes que são semelhantes a um determinado filme baseado no algoritmo K vizinhos mais próximos , eu posso deixar que todos votem em uma classificação prevista para esse filme. Então é isso que vamos fazer no nosso próximo exemplo. Vamos chegar a ele. Então lá você tem os conceitos de Can e K vizinhos mais próximos. Vamos em frente e aplicar isso a um exemplo de realmente encontrar filmes que são semelhantes entre si e usar os filmes vizinhos mais próximos para prever a classificação de outro filme que nunca vimos antes. 50. Como usar o KNN para a avaliação para um filme: Tudo bem, nós vamos realmente pegar a idéia simples de Cayenne NK vizinhos mais próximos e aplicar isso a um problema mais complicado. E isso é prever a classificação de um filme, dado apenas seu gênero e informações de leitura. Então vamos mergulhar e fazer isso Vamos nos divertir um pouco com K e N e realmente tentar prever classificações de filmes apenas com base no algoritmo K vizinhos mais próximos e ver onde chegamos. Então, se você quiser continuar, vá em frente e abra o caderno Python alto canhão e você pode jogar junto comigo. É o que vamos fazer é definir uma métrica de distância entre filmes apenas com base em seus metadados e por metadados, apenas eu e informações que são intrínsecas à informação do filme associada ao filme. Especificamente, vamos olhar para as classificações de gênero do filme. Cada filme em nosso conjunto de dados Lens de filme tem informações adicionais sobre o que John ou Is pertence, e um filme pode pertencer a mais de um gênero. Um sorteado está sendo algo como ficção científica, drama ou comédia. Você sabe o que você tem filmes de animação, e nós também vamos olhar para a popularidade geral do filme dada pelo número de pessoas que invadiram. E também sabemos a classificação média de cada filme. Então eu posso combinar todas essas informações juntas para basicamente criar uma métrica de distância entre dois filmes apenas com base em informações de classificação e John ou informação. Então vamos ver o que conseguimos. Então usamos pandas novamente para tornar a vida simples. E se você estiver seguindo novamente, certifique-se de mudar o caminho para os dados das linhas de filme definido para onde quer que você instalou, que quase certamente não será o que está neste caderno python. Então vá em frente e mude isso. Se você vai acompanhar como antes, nós vamos apenas importar o arquivo de dados de classificações reais em si, que é você pontos dados usando a função ler See SV e Pandas, onde até que ele realmente tem uma guia, delimitado ou Não, uma vírgula. E nós vamos importar as 3 primeiras colunas, que representam o usuário I d filme I D e classificação para cada classificação de filme individual em nosso conjunto de dados. Então vamos em frente, executar isso e olhar para o topo dele. Podemos ver que está funcionando. Nós acabamos com um quadro de dados que tem o usuário ID do filme idéia e classificação, por exemplo,o usuário I D classificou filme I D 50 que eu acredito ser Star Wars, cinco estrelas e assim por diante e assim por diante. filme idéia e classificação, por exemplo, usuário I D classificou filme I D 50 que eu acredito ser Star Wars, Então, se você quiser obter informações agregadas sobre as classificações alcançam o filme, essa é a próxima coisa que temos que descobrir. Então nós vamos usar o grupo por função em Pandas para realmente agrupar tudo por idéias de filmes . Então vamos combinar todas as classificações alcançam um filme individual, e vamos colocar o número de classificações e a pontuação média que significam para cada filme. Então vamos em frente e fazer isso volta muito rápido. Então isso nos dá outro quadro de dados que nos diz, por exemplo, filme I D um tinha 452 classificações, o que é uma medida de sua popularidade. Quantas pessoas realmente assistiram e invadiram e uma pontuação média de 3,8. Então 14 52 pessoas assistiram ao filme I D um, e eles deram uma avaliação média de 3.87 que é muito bom Agora. O número bruto de classificações não é útil para nós? Quero dizer, não sei, 452 significa que é popular ou não. Então, para normalizar que o que vamos fazer é basicamente medir isso contra o número máximo e mínimo de classificações alcançam o filme. E nós poderíamos fazer isso usando esta pequena função lambda aqui para que possamos aplicar uma função a um quadro de dados inteiro desta forma e vamos fazer é usar as funções NUM Pie Min e Max para encontrar o número máximo de classificações no número mínimo de classificações encontradas em todo o conjunto de dados. Então vamos pegar o filme mais popular no filme menos popular e encontrar o alcance lá e normalizar tudo contra esse alcance. Então, o que isso nos dá, nós o executamos. É basicamente uma medida de popularidade para cada filme em uma escala de 0 a 1. Então uma pontuação de zero aqui significaria que ninguém assistiu. É o filme menos popular, e uma pontuação de um significaria que todos assistiram. É o filme mais popular onde especificamente é o filme mais popular, o filme que a maioria das pessoas assistiu. Ok, então nós temos uma medida de popularidade do filme agora que podemos usar para nossa distância. Métrico. Próximo. Vamos extrair da informação do Jonah. Então, acontece que há um arquivo de item do Utah que não só contém os nomes dos filmes, mas também todos os gêneros aos quais cada filme pertence. Então este pequeno pedaço de código vai realmente passar. Cada linha de seu item ponto está fazendo isso da maneira mais difícil que não estamos usando. Você sabe que quaisquer disfunções pan estavam indo apenas para usar em linha reta uma python desta vez, Certifique-se de mudar esse caminho para onde quer que você instalou esta informação. Então vamos abrir nosso arquivo de item você ponto, e então vamos alfabetizar através de cada linha no arquivo uma de cada vez, Russ, tirar a nova linha no final e dividi-la com base no pipe. Os limitadores neste arquivo e vamos extrair o filme I D. O nome do filme e todos os campos de gênero individuais. Então, basicamente, há um monte de zeros e uns em 19 campos diferentes no alcance dos dados de origem . Um desses campos representa um determinado gênero, então vamos ver como isso se parece, e vamos construir um dicionário python no final que mapeia o filme I DS para seus nomes, gêneros, e então nós também vamos dobrar novamente em nossas informações de classificação. Então, teremos chamado popularidade gênero em uma escala 01 ea classificação média. Então é isso que esse pequeno trecho de código faz. Vamos fazer isso e só para ver o que acabamos com, podemos extrair o valor para a identificaçãodo filme Um identificação , que acontece de ser Toy Story. Vai Pixar filme de 1995 você provavelmente já ouviu falar, e o que temos em nosso dicionário é para entrada. Um movimento o I D Won. O nome é Toy Story. Esta é uma lista de todos os gêneros onde um zero indica que não é parte desse gênero, e um indica que é parte desse gênero. E há um arquivo de dados no conjunto de dados da lente de filme que irá dizer-lhe o que cada um desses John ou Campos realmente corresponde. Mas para os nossos propósitos, não é importante, certo? Estamos apenas tentando medir a distância entre os filmes com base em seus gêneros, então tudo o que importa matematicamente é como esse vetor de gêneros é semelhante a outro filme . Ok, o verdadeiro Jonah são eles mesmos. Não é importante. Só queremos ver como são os mesmos ou diferentes dois filmes. E lá, John ou classificações de custo. Então você tem aquele John Relist. Temos a pontuação de popularidade que calculamos, e temos lá a classificação média ou média para Toy Story. Então vamos em frente e descobrir como combinar todas essas informações em uma métrica de distância . Então, confinamos os vizinhos mais próximos para uma história de brinquedo, por exemplo. Então eu calculei arbitrariamente essa função de distância que leva dois filmes I DS e calcula uma pontuação de distância entre os dois. E vamos basear isso em primeiro lugar na semelhança, usando uma métrica de semelhança co sign entre os dois John Reflectors. Então, como eu disse, vamos pegar a lista de gêneros para cada filme e ver como eles são semelhantes um ao outro novamente. Um zero indica que não faz parte desse gênero. Um indica que é. Vamos então comparar as pontuações de popularidade e apenas pegar a diferença bruta valor absoluto da diferença entre essas duas pontuações de popularidade e usar isso para a métrica de distância também, e vamos usar essa informação sozinho para definir a distância entre dois filmes. Então, por exemplo, se fôssemos calcular a distância entre as idéias de filme dois e quatro, esta função retornaria alguma função de distância baseada em Lee na popularidade desse filme e nos gêneros daqueles filmes. Ok, então imagine que é um gráfico de dispersão, se você quiser, volta ao nosso exemplo original nos slides onde um acesso pode ser uma medida de semelhança de gênero baseado na métrica co sign, o outro acesso pode ser popularidade. Certo, só estamos encontrando a distância entre essas duas coisas. Então, para este exemplo, onde estamos tentando calcular a distância usando nossa métrica de distância entre os filmes dois e quatro, acabamos com uma pontuação de 40,8. E lembrem-se, a distância A significa que não é semelhante, certo? Queremos os vizinhos mais próximos com menor distância. Então uma pontuação de 0,8 número bastante alto em uma escala de 0 a 1. Então isso está me dizendo que esses filmes realmente não são semelhantes. Nós só fazemos uma rápida verificação de sanidade e vemos o que esses filmes realmente são. Acontece que são os filmes GoldenEye e Get Shorty, que são muito diferentes filmes. Você sabe que você tem James Bond ação aventura aqui em um filme de comédia e não muito parecido em tudo. Na verdade, são comparáveis em termos de popularidade. Mas a diferença de John R. fez isso. Ok, então vamos juntar tudo em seguida. Nós vamos corrigir um pouco de código para realmente pegar um determinado filme I D e realmente encontrar os vizinhos mais próximos K. Então tudo o que temos que fazer é calcular a distância entre Toy Story e todos os outros filmes em nosso dicionário de filmes e classificar os resultados com base em sua pontuação de distância. E é isso que este pequeno trecho de código faz aqui. Tire um momento para enrolar sua cabeça. É bastante simples, mas como dizemos, temos uma pequena função get neighbors que levará o filme que estamos interessados e os vizinhos K que queremos encontrar analfabetos através de todos os filmes que temos. Se não for, se é realmente um filme diferente do que quando estamos olhando, ele irá calcular essa pontuação de distância de antes de uma caneta, que para a lista de resultados que temos classificar esse resultado e então vamos arrancar o K principais resultados. Ok, então neste exemplo, temos que levar o Rosset K para 10. Encontre os 10 vizinhos mais próximos. Vamos encontrar os 10 vizinhos mais próximos usando obter vizinhos, e então vamos alfabetizar através de todos esses 10 vizinhos mais próximos e calcular a classificação média para cada um de cada vizinho. E essa classificação média nos informará de nossa previsão de leitura para o filme em questão . E como efeito colateral, também temos os 10 vizinhos mais próximos com base em nossa função de distância, que poderíamos chamar de filmes semelhantes. Então essa informação em si é útil. Voltando a isso. Os clientes que assistiram também assistiram exemplo. Se você quiser fazer um recurso semelhante que foi apenas baseado nesta métrica de distância e não dados de comportamento reais, este pode ser um lugar razoável para começar, certo? Então vamos em frente e executar isso e ver se acabamos com os resultados não são tão irracionais. Então nós estamos usando como um exemplo do filme Toy Story, que é o filme I.D. I.D. Um e o que nós voltamos com para os 10 melhores vizinhos mais próximos são, ah, muito boa seleção de comédia e Crianças filmes. Então, dado que a história do brinquedo é uma comédia popular e filmes infantis. Temos um monte de comédia popular e filmes infantis, então parece funcionar. Não precisávamos usar um monte de algoritmos de filtragem colaborativa chiques. Estes resultados não são tão ruins. E se quisermos apenas prever o uso de Cannon para prever a classificação, onde estamos pensando em uma leitura são as classificações. Neste exemplo, acabamos com uma classificação prevista de 3.34 que, na verdade, não é tão diferente da classificação real para aquele filme, que foi 3.87 Então não é ótimo. Isso também não é tão ruim. Quero dizer, ele realmente funciona surpreendentemente bem, dado o quão simples este algoritmo é. A maior parte da complexidade neste exemplo era apenas determinar nossa métrica de distância e, você sabe, nós intencionalmente ficamos um pouco extravagantes lá apenas para mantê-lo interessante, mas você poderia fazer qualquer outra coisa que você quiser. Então, se você quiser brincar com isso, eu definitivamente o encorajo a fazê-lo. Nossa escolha de 10 para K foi completamente fora do ar. Eu inventei isso. Como você faria? Como isso responde a diferentes valores K? Você obtém melhores resultados com um valor maior de K ou com um valor mais baixo K Não importa, você pode? Na verdade, e eu? Se você realmente quer toe fazer amore envolvido exercício, você pode realmente tentar implicar teste de trem para realmente encontrar o valor K que mais otimamente pode prever a classificação de um determinado filme baseado em kn n, e você pode usar apenas diferentes métricas de distância. Eu meio que inventei isso para jogar em torno da métrica de distância talvez possa usar diferentes fontes de informação ou como as coisas de forma diferente pode ser coisa interessante de fazer. Talvez a popularidade não seja tão importante quanto a informação do Jonah. Ou talvez seja o contrário. Veja em que impacto isso tem resultados. Então vá em frente e mexa com esses algoritmos mexeu com co. E corra com ele e veja o que consegue. E se você encontrar uma maneira significativa de melhorar essa parte que com seus colegas de classe, isso é pode acabar em ação. Então, um conceito muito simples, mas pode ser realmente muito poderoso. Então aí você tem, e aí você tem. Filmes semelhantes apenas com base no gênero e popularidade e nada mais funciona surpreendentemente bem. E nós usamos o conceito de pode acabar realmente usar os vizinhos mais próximos para prever uma classificação para um novo filme, e isso realmente funcionou muito bem, também. Então isso é K e inação. Técnica muito simples, mas muitas vezes funciona muito danado bom. 51. Reduçãode dimensão: Tudo bem. Hora de ficar todo trippy. Vamos falar sobre dimensões mais altas e redução da dimensionalidade. Parece assustador. Há uma matemática extravagante envolvida, mas conceitualmente, não é tão difícil de entender como você pode pensar. Então vamos falar sobre redução da dimensionalidade e análise de componentes principais. Em seguida, vamos falar sobre a maldição da dimensionalidade. som muito dramático. Normalmente, quando as pessoas falam sobre isso, eles estão falando sobre uma técnica chamada análise de componentes principais e uma técnica específica chamada decomposição de valor singular. RSVP. Então PC e S V. T.S. V. D são os tópicos desta palestra. Vamos mergulhar nele. Então, qual é a maldição da dimensionalidade? Bem, muitos problemas podem ser pensados em ter muitas dimensões diferentes. Então, por exemplo, quando estávamos fazendo recomendações de filmes, tínhamos atributos de vários filmes, e cada filme individual poderia ser pensado em sua própria dimensão nesse espaço de dados. Então, se você tem um monte de filmes, isso é um monte de dimensões, e você não pode realmente envolver sua cabeça em mais de três, certo, porque é isso que nós crescemos para evoluir dentro. Ou você pode ter algum tipo de dados que tem muitos recursos diferentes que você gosta. Em um momento, vamos olhar para um exemplo de flores que queremos classificar e que as classificações apostam com base em quatro medidas diferentes das flores e essas quatro características diferentes. Essas quatro medidas diferentes podem representar quatro dimensões, o que novamente é muito difícil de visualizar. Portanto, existem técnicas de redução de dimensionalidade para encontrar uma maneira de reduzir informações dimensionais mais altas em informações dimensionais mais baixas. E isso não só pode tornar mais fácil olhar e classificar as coisas, mas também tem que ser útil para coisas como comprimir dados. Assim, preservando a quantidade máxima de variância enquanto reduzimos o número de dimensões, foram representando de forma mais compacta um conjunto de dados enquanto ainda tentava preservar a variância nesse conjunto de dados. Portanto, a aplicação muito comum de redução de dimensionalidade não é apenas para visualização, mas também para compactação e para extração de recursos. Falaremos sobre isso um pouco mais em um momento. Um exemplo muito simples de redução de dimensionalidade pode ser pensado de seu K significa agrupamento . Então você sabe, por exemplo, você pode começar com muitos pontos que representam muitas dimensões diferentes em um conjunto de dados . Mas, finalmente, podemos resumir isso a K diferente Centrowitz e sua distância para aqueles centralizados. Então essa é uma maneira de difundir dados para uma representação dimensional mais baixa. Mas geralmente quando as pessoas falam sobre redução da dimensionalidade, estão falando de uma técnica chamada análise de componentes principais. E esta é uma técnica muito mais chique. Entra em algumas matemáticas bastante envolvidas, mas em um nível alto. Tudo o que você precisa saber é que ele leva um espaço de dados dimensional maior, e ele encontra planos dentro desse espaço de dados em dimensões mais altas. E esses planos dimensionais mais elevados de ar chamados hiper planos. E elas são definidas por coisas chamadas vetores Eigen, e você pega quantos aviões quiser dimensões. No final, projete esses dados nesses hiper planos, e esses se tornam os novos eixos em seu espaço de dados dimensional inferior. Sabes, a menos que estejas familiarizado com matemática dimensional superior e tenhas pensado nisso antes, vai ser difícil envolver-te na cabeça. Mas no final do dia isso significa que estamos escolhendo planos em um espaço dimensional mais alto que ainda preservam a maior variação em nossos dados e projetam os dados nesses planos dimensionais mais altos que então trazemos para um espaço dimensional inferior. Ok, você sabe, quero dizer, você realmente não tem que entender toda a matemática para usá-la. O ponto importante é que é uma maneira muito fundamentada de reduzir um conjunto de dados para um espaço dimensional mais baixo enquanto ainda preserva a variância dentro dele. Falamos sobre compressão de imagem é uma aplicação deste. Então você sabe, se eu quiser reduzir a dimensionalidade em uma imagem, eu poderia usar o PC A para resumir a sua essência. O reconhecimento facial é outro exemplo. Então, se eu tiver ah, conjunto de dados de rostos, você sabe, talvez cada face representa 1/3 dimensão de duas imagens D e eu quero resumir isso. SPD e análise de componentes principais pode ser uma maneira de identificar as características que realmente contam em um rosto para que ele possa acabar focando mais nos olhos. E a boca, por exemplo, é características importantes que são necessárias para preservar a variância dentro desse conjunto de dados. Então é ele pode produzir alguns resultados muito interessantes e muito úteis que apenas surgiram naturalmente dos dados, o que é meio legal para torná-lo. Realmente, vamos usar um exemplo mais simples, usando o que é chamado de conjunto de status IRA. E este é um conjunto de dados incluído no aprendizado psíquico. É usado muito comumente em exemplos, e aqui está a idéia por trás disso. Então, o que? Iris tem dois tipos diferentes de pedais em sua flor uma vez chamado de pedal, que é, você sabe, você sabe, as pétalas de flores com as quais você está familiarizado. E também tem algo chamado CEPAL, que é um tipo de apoio inferior conjunto de pedais na flor. E podemos pegar um monte de vírus em diferentes espécies de vírus e medir o comprimento do pedal com e o comprimento da CEPAL. E com isso juntos, o comprimento e a largura do pedal no alongamento com da CEPAL são quatro medições diferentes que correspondem a quatro dimensões diferentes no nosso conjunto de dados. E quero usar isso para classificar a que espécie e Iris podem pertencer. Agora, P.C. P.C. A. vai nos deixar visualizar que está em duas dimensões em vez de quatro, enquanto ainda preserva a variância nesse conjunto de dados. Então vamos ver o quão bem isso funciona e realmente escrever algum código python para fazer PC a acontecer no conjunto de dados irlandês. Então, esses são os conceitos de redução da dimensionalidade, análise de componentes principais e valor singular. Decomposição todas as grandes palavras extravagantes. E, no entanto, é um tipo de coisa chique. Sabe, estamos lidando com a redução, redução de espaços dimensionais mais altos para espaços dimensionais menores de uma forma que preserva suas variantes. Felizmente, psíquico aprendido nos torna extremamente fácil de fazer, como três linhas de código é tudo o que você precisa para realmente aplicar PC A. Então vamos fazer isso acontecer. 52. Exemplo de PCA com o conjunto de dados de Ise: Então, vamos nos candidatar. análise de componentes principais para o conjunto de dados irlandês é um conjunto de dados de quatro dimensões que vamos reduzir para duas dimensões, e vamos ver que ainda podemos preservar a maioria das informações nesse conjunto de dados, mesmo por jogando fora metade das dimensões. É uma coisa muito legal. É muito simples, então vamos mergulhar. Certo, vamos fazer uma análise de componentes principais e curar a maldição da dimensionalidade. Então, é realmente muito fácil de fazer usando a aprendizagem psíquica como de costume e novamente técnica de redução da dimensionalidade do PC ese . Soa muito ficção científica. E como toda essa conversa de dimensões mais elevadas, mas apenas para torná-lo mais concreto e real novamente. Ah, compactação de imagem de aplicativos comuns. Então você pensa em uma fotografia em preto e branco, uma imagem de uma imagem em preto e branco como três dimensões, onde você tem com seu X e seu eixo Y de altura, e então cada célula individual tem algum valor de brilho em uma escala de 0 a 1 que você sabe , é preto dedo do pé branco ou algum valor no meio. Então isso seria dados tridimensionais. Você sabe que você tem que dimensões espaciais e, em seguida, uma dimensão de brilho e intensidade. Além disso, se você estivesse morto para continuar com isso para dizer duas dimensões sozinho, seria uma imagem comprimida. E se você fizesse isso em uma técnica que preserva a variância dessa imagem o mais bem possível , você ainda poderia reconstruir a imagem sem muita perda na teoria. Então isso é a redução da dimensionalidade, você sabe, destilada até um exemplo prático. Agora vamos usar um exemplo diferente aqui, usando o conjunto de dados irlandês e psíquico aprendido inclui isso. Tudo isso é um conjunto de dados de várias medidas de flores de íris e a classificação de espécies para cada íris nesse conjunto de dados. E também tem, como eu disse, antes da medição de comprimento e largura tanto da pétala quanto da maleável para cada espécime de íris . Assim, entre o comprimento e a largura do pedal e o comprimento e largura da CEPAL, temos quatro dimensões de ah características dados de informação. Em nosso conjunto de dados, queríamos que ainda fosse algo que pudéssemos realmente olhar e entender, porque sua mente não lida com quatro dimensões muito bem, mas você pode olhar para duas dimensões em um pedaço de papel muito facilmente. Então vamos em frente e carregar isso. Aqui há uma função de íris de carga dandy útil construído em psique. Ele aprendeu que só vai carregar isso para você sem nenhum trabalho adicional, então você pode apenas se concentrar na parte interessante. E se dermos uma olhada em como esse conjunto de dados se parece, você pode ver que estamos extraindo a forma desse conjunto de dados, que significa quantos pontos de dados temos nele 150. E quantos recursos ou quantas dimensões esse conjunto de dados tem, e isso é quatro. Então temos 100 50 exemplares de íris em nosso conjunto de dados com quatro dimensões de informação. Mais uma vez, esse é o comprimento e a largura do flexível no alongamento, com do pedal para um total de quatro características, que podemos pensar em suas quatro dimensões. E também podemos imprimir a lista de nomes de alvos no conjunto de status, que são as classificações, e podemos ver que cada íris pertence a uma de três espécies diferentes, Sentosa versus Cor ou Virgin Icka. Então, esses são os dados que estamos trabalhando com 150 espécimes IRA classificados em uma de três espécies, e temos quatro características associadas a cada íris sendo o comprimento e a largura do pedal no comprimento e largura do flexível. Então vamos ver como o PC A é fácil, mesmo que seja uma técnica muito complicada sob o capô. Fazê-lo são apenas algumas linhas de código atribuídas a todo o conjunto de status do IRA, e vamos chamá-lo de X. Vamos então criar um PC, um modelo, e vamos dizer e componentes é igual a dois. Então queremos dimensões. Vamos de 4 para 2. Vamos usar iguais branqueados. Verdade, isso significa que vamos normalizar todos os dados e garantir que tudo seja agradável e comparável. Normalmente, você vai querer fazer isso para obter bons resultados, e então vamos ajustar o PC um modelo para o nosso conjunto de dados irlandês X, e então podemos usar esse modelo. Em seguida, também, transforme os dados definidos em duas dimensões. Vamos em frente e fazer isso aconteceu bem rápido. Então pense no que acabou de acontecer lá. Na verdade, criamos um PC um modelo para reduzir quatro dimensões para duas. E ele fez isso escolhendo quatro vetores dimensionais para criar hiper planos ao redor para projetar esses dados de dúvida de quatro dimensões, e você pode realmente ver o que esses quatro vetores dimensionais são. Esses vetores Eigen imprimindo os componentes reais dos PCs OPC A significa análise de componentes principais . Esses componentes principais são os vetores i n que escolhemos para definir nossos planos sobre. Ok, e você pode realmente olhar para esses valores aqui. Não vai significar muito para você porque você não pode realmente imaginar para dimensões de qualquer maneira. Mas só para que você possa ver que ele está realmente fazendo algo com componentes principais. Então vamos ter ah, vamos avaliar nossos resultados. O PC um modelo nos dá de volta algo chamado a razão de variância explicada, e basicamente isso diz quanto da variância nos dados quatro dimensionais originais foi preservada como eu reduzi para duas dimensões. Então vamos em frente e dar uma olhada nisso. O que lhe dá de volta é na verdade ah, lista de dois itens para as duas dimensões que preservamos. Então isso está me dizendo que na primeira dimensão eu posso realmente preservar 92% da variância nos dados. E a segunda dimensão só me deu 5% adicionais de variantes. E se eu encetar juntos, essas duas dimensões em que eu projetei meus dados ainda preservaram mais de 97% da variância nos dados de origem, então quatro dimensões não eram realmente necessárias para capturar todas as informações nesses dados foi bem interessante. É uma coisa muito legal. Então, se você pensar sobre isso, o que você acha que pode ser? Bem, talvez este tamanho geral da flor tenha alguma relação com a espécie em seu centro. Talvez, é a relação entre comprimento e largura para o pedal e o flexível. Você sabe, algumas dessas coisas provavelmente se movem juntos em conjunto um com o outro para uma dada espécie ou tamanho total perdoado de uma flor. Então, talvez haja relações entre essas quatro dimensões que o PC A está extraindo por conta própria. É muito, muito legal e muito poderoso. Vamos visualizar isso. Então, o objetivo de reduzir isso para duas dimensões é que para que pudéssemos fazer um gráfico de dispersão de dentes. Pelo menos esse é o nosso objetivo para este pequeno exemplo aqui. Então vamos fazer um pouco de Matt trama um pouco de magia aqui para fazer isso. Há algum tipo de coisa chique acontecendo aqui que eu deveria pelo menos mencionar. Então vamos fazer é criar uma lista de cores vermelho, verde e azul. Vamos criar uma lista de alvos. Então o valor 01 para eles após as diferentes espécies IRA para três espécies diferentes que temos. E o que vamos fazer é fechar tudo isto com os nomes reais de cada espécie. Então, esta pequena linha aqui para eu ver rótulo em zip alvo idéias, cores, íris, nomes de alvo significa que vamos analfabeto através de três diferentes espécies IRA. E como vamos, vamos ter tanto o índice para essa espécie ah, cor associada a ela e o nome real do rótulo legível humano para essa espécie. Então vamos pegar uma espécie de cada vez e plotado em nosso gráfico de dispersão apenas para essa espécie com uma determinada cor e o rótulo dado pessoas, em seguida, adicionar em nossa lenda e mostrar os resultados, e isso é o que nós acabamos com. Então, esses são nossos dados de íris de quatro dimensões projetados para duas dimensões. Coisas muito interessantes que você pode ver. Ainda são agrupados muito bem. Você sabe, você tem todos os virgens nigga sentados juntos aqui. Toda a cor dos versos está sentada no meio deste brinde é muito fora do lado aqui, e é realmente difícil imaginar o que os valores reais representam. Mas o ponto importante é que projetamos 40 dados para dois D e de tal forma que ainda preservamos a variância. E ainda podemos ver delineamentos claros entre esses dois entre essas três espécies um pouco intermitente se misturando acontecendo lá dentro. Não é perfeito, você sabe. Mas, em geral, foi bastante eficaz. Então, se você quiser jogar com esse pequeno recall torcido a partir das razões de variância explicadas , nós realmente capturamos a maioria dos rolamentos em uma única dimensão. Você sabe, talvez o tamanho geral das flores tudo o que realmente importa e classificá-lo, e você poderia especificar isso com uma característica. Então vá em frente e modifique os resultados. Se você está se sentindo bem. Veja se consegue escapar com duas dimensões ou uma dimensão em vez de duas. Então vá mudar isso e componentes do dedo do pé um e veja que tipo de proporção variada você obtém. O que acontece é que faz sentido, então brinque com ele, tenha alguma familiaridade com ele, e isso é redução da dimensionalidade, análise de componentes principais e valor singular. Decomposição em ação. muito, Termosmuito, muito extravagantes. E, sabe, para ser justo, é uma matemática bem extravagante sob o capô. Mas como podem ver, é uma técnica muito poderosa. E com o aprendizado psíquico, não é difícil de aplicar, então mantenha isso em seu baú de ferramentas. Então, aí você tem, um conjunto de dados de quatro dimensões de informação de farinha se resumiu a duas dimensões que podemos visualizar facilmente e também ainda ver delineamentos claros entre as classificações que estavam interessados em So PC A funciona muito bem neste exemplo, e novamente, é uma ferramenta útil para coisas como compressão ou extração de recursos ou reconhecimento facial também. Então guarde isso na sua caixa de ferramentas. Não, está lá para você. 53. Armazenamento de dados de som, ETL e ELT: seguida, vamos falar um pouco sobre data warehousing, e este é um campo que realmente foi alterado recentemente pelo advento do Hadoop e algumas técnicas de big data e computação em nuvem. Então, um monte de grandes palavras de zumbido lá, mas conceitos que são importantes para você entender. Então vamos mergulhar e explorar esses conceitos. Vamos falar sobre E, L T e E. T.L e data warehousing. Em geral, isso é mais de, ah , conceito, ao contrário de técnicas práticas específicas, que vamos falar sobre isso conceitualmente. Mas é algo que provavelmente surgirá no cenário de uma entrevista de emprego. Então, vamos nos certificar de que você entende esses conceitos. Vamos começar falando sobre armazenamento de dados em geral. Então, o que é um armazém de dados? Bem, é basicamente um banco de dados gigante que contém informações de muitas fontes diferentes e as une para você. Então, por exemplo, talvez você trabalhe em uma grande empresa de comércio e eles possam ter um sistema de pedidos que alimenta informações sobre as coisas que as pessoas compraram em seu armazém de dados. E você também pode ter informações de logs do servidor Web que são ingeridas no data warehouse uma onda, e isso permitiria que você junte informações de navegação no site com o que as pessoas finalmente encomendaram. Por exemplo, talvez também poderia informações italianas de seus sistemas de atendimento ao cliente e medir se há uma relação entre o comportamento de navegação e como os clientes estão felizes no final do dia. Assim, um data warehouse tem o desafio de pegar dados de muitas fontes diferentes, transformando-os em algum tipo de esquema que nos permite consultar essas diferentes fontes de dados simultaneamente. E isso nos permite fazer insights por meio da análise de dados usando essas fontes de dados diferentes. Então grandes corporações e organizações têm esse tipo de coisa muito comumente isso. Estamos entrando no conceito de big data aqui, certo? E você pode ter um banco de dados Oracle gigante, por exemplo, que contém tudo isso. Sabe, talvez seja particionado de alguma forma e replicado e todo tipo de complexidade lá. E você poderia apenas consultar isso através de linguagem de consulta estruturada sequela ou através de ferramentas. Ferramentas gráficas como o Tableau são muito populares nos dias de hoje, e é isso que um analista de dados faz. Eles consultam grandes conjuntos de dados usando coisas como tableau. Essa é a diferença entre um analista de dados em um cientista de dados. Você pode estar realmente escrevendo código para fornecer para executar ou técnicas avançadas em dados que fazem fronteira em um I, vez de apenas usar ferramentas para extrair gráficos e relacionamentos de um data warehouse . E é um problema muito complicado. Sabe, na Amazon, tínhamos um departamento inteiro de armazenamento de dados que cuidava dessas coisas em tempo integral, e eles nunca tiveram pessoas suficientes, posso dizer que é um grande trabalho, você sabe, há um monte de desafios em fazer data Warehousing um é a normalização de dados. Então você tem que descobrir como todos os campos nesses dados diferentes. Fontes realmente se relacionam umas com as outras. E como eu realmente tenho certeza de que uma coluna em uma fonte de dados é comparável a uma coluna de outra fonte de dados e tem o mesmo conjunto de dados na mesma escala usando a mesma terminologia? Como faço para lidar com dados ausentes? Como faço para lidar com dados corrompidos ou, você sabe, dados de outliers ou de robôs e coisas assim? Todos grandes desafios. Manter esses feeds de dados também um problema muito grande. Muito pode dar errado quando você está importando todas essas informações para seu data warehouse, especialmente. Temos uma transformação muito grande que precisa acontecer para levar os dados brutos seguros de Weblogs em uma tabela de banco de dados de estrutura real que pode ser importada para o seu data warehouse. dimensionamento também pode ficar complicado quando você está lidando com um data warehouse monolítico. Você sabe, eventualmente seus dados vão ficar tão grandes que houve transformações que começam a se tornar um problema, e isso começa a entrar em toda a coisa E l T vs CTL. Então vamos primeiro falar sobre E. T. L era que significa sentido para extrair, transformar e carregar. E é aí que a maneira convencional de fazer o armazenamento de dados. Então, basicamente, primeiro você extrai os dados que deseja dos sistemas operacionais que deseja. Então, por exemplo, eu poderia extrair todos os logs da Web de nossos servidores Web todos os dias que eu preciso para transformar todas essas informações em uma tabela de banco de dados de estrutura real que eu possa importar para o meu data warehouse. Então esse estágio de transformação pode passar por cada linha do que desses logs de servidor Web extrair transformar isso em uma tabela nacional onde eu estou arrancando de cada linha Weblog web . Coisas como a Sessão I D e que página eles olharam e que horas eram e qual era a referência. Coisas como a Sessão I D e que página eles olharam e que horas eram e qual era a E coisas assim. E eu posso organizar isso em uma estrutura tabular que eu possa então carregar no próprio armazém de dados como uma tabela real no banco de dados. Assim, à medida que os dados se tornam cada vez maiores, essa etapa de transformação pode se tornar um problema real. Você sabe, pense em quanto trabalho de processamento é necessário para passar por todos os logs da Web como Google ou Amazon ou qualquer site grande, e transformar isso em algo que um banco de dados pode ingerir. Isso se torna um desafio de escalabilidade e algo que pode introduzir, você sabe, problemas de estabilidade para todo o pipeline de data warehouse. Então é aí que o conceito de E. L. T. entra, e meio que vira tudo em sua cabeça. Ele diz. Bem, e se não usarmos uma instância enorme do oráculo? E se, em vez disso, usarmos algumas dessas técnicas mais recentes que nos permitem ter um banco de dados mais distribuído um cluster Hadoop e que nos permita tomar o poder desses bancos de dados distribuídos. Você sabe, essas coisas construídas no Hadoop como alta para faísca ou um mapa reduzem e usam isso para realmente fazer a transformação depois que ele foi carregado. Então a idéia aqui é que vamos extrair as informações que queremos, como fizemos antes, você sabe, digamos, digamos, de um conjunto de logs do servidor Web. Mas então vamos carregar isso diretamente no nosso repositório de dados, e vamos usar o poder do próprio repositório para realmente fazer a transformação no lugar. Então a idéia aqui é, em vez de fazer um processo off-line para transformar meus weblogs como um exemplo em um formato estruturado, eu vou apenas sugá-los como arquivos de texto bruto e passar por eles uma linha de cada vez, usando o poder de algo como o Hadoop para realmente transformá-los em um formato mais estruturado que eu possa então consultar em toda a minha solução de data warehouse. Portanto, coisas como o hive permitem que você hospede um banco de dados massivo em um cluster Hadoop. E há coisas como uma sequência de faíscas que permite que você também faça. Consulta está em uma sequela muito como data warehouse como maneira em um data warehouse que é realmente distribuído em um cluster Hadoop. Há também distribuir nenhum armazenamento de dados sequela, segunda equerry usando faísca e mapa reduzir. E três idéia é que em vez de usar um banco de dados monolítico para um data warehouse, você em vez de usar algo construído em cima do Hadoop ou algum tipo de cluster que pode realmente não só escalar o processamento e consulta desses dados, mas também dimensionar a transformação desses dados também. Então, novamente, você primeiro extraiu dados brutos. Mas então vamos carregá-lo no próprio sistema de data warehouse como está, e então usar o poder do data warehouse, que pode ser construído no Hadoop para fazer essa transformação como o terceiro passo. Então eu posso consultar as coisas juntos. Então é um projeto muito grande, tópico muito grande. Você sabe, armazenamento de dados é uma disciplina inteira e por si só. E vamos falar sobre faíscas amore neste curso muito em breve. Que é uma maneira de lidar com isso. Isso é algo chamado Sequela Spark, em particular, que é relevante. Além disso, coisas como hive mapa reduzir técnicas de big data em geral que são que são mais modernos que podemos cobrir, e há outros cursos que eu oferecer em faísca e mapa reduzir. Isso lhe dará mais informações sobre esta casa de um curso gratuito sobre conceitos básicos de big data. Você pode conferir, hum, mas muito para aprender sobre o deles. Então, novamente, o conceito geral, entanto, é se você mover de um banco de dados monolítico construído no Oracle ou minha sequela para um desses bancos de dados distribuídos mais modernos construídos em cima do Hadoop. Você pode tomar esse estágio de transformação e realmente fazer isso depois de carregar os dados brutos em vez de antes. E isso pode acabar sendo mais simples e mais dimensionado e aproveitando o poder dos grandes clusters de computação disponíveis atualmente. Então esse é o E.T.L vs CLT. Como a maneira legada de fazer isso. Antes, tínhamos muitos clusters em todo o lugar e computação baseada em nuvem versus uma maneira que faz sentido hoje, quando temos grandes nuvens de computação disponíveis para nós para transformar grandes conjuntos de dados. Esse é o conceito. Então, de novo, é o jeito da velha escola de fazer isso. Você transforma um monte de dados fora de linha antes de importá-los e carregá-los em um data warehouse gigante . dados monolítico. Mas as técnicas atuais com bancos de dados baseados em nuvem e Hadoop e hive, faísca e mapa reduzem você pode realmente fazer isso um pouco mais eficientemente e aproveitar o poder de um cluster para realmente fazer essa etapa de transformação depois de carregar os dados brutos no seu armazém de dados. Então isso está realmente mudando o campo. É importante que você saiba de novo. Há muito mais a aprender sobre este assunto, por isso encorajo-vos a explorar mais sobre este assunto. Mas esse é o conceito básico, e agora você sabe do que as pessoas estão falando quando falam sobre E T l vs E L T. 54. Aprendizagem de reforço: Nossa próxima parada é divertida. Aprendizagem de reforço, e podemos realmente usar essa ideia com um exemplo de Pac Man. Nós podemos realmente criar um agente Pacman pouco inteligente que pode jogar o jogo Pac Man realmente bem por conta própria. E você vai se surpreender como a técnica é simples para construir a inteligência por trás deste inteligente Pac Man. Vamos dar uma olhada. Vamos falar sobre aprendizado de reforço. Este é tipo de, ah, divertido pouco conceito aqui você pode pensar em termos do jogo Pac Man, um dos meus favoritos de todos os tempos. Então a idéia por trás do aprendizado de reforço é que você tem algum tipo de agente neste caso , Pacman, que explora algum tipo de espaço. E no nosso exemplo, esse espaço será o labirinto em que Pac Man está. E como vai, ele aprende o valor de diferentes mudanças de estado dentro de diferentes condições. Assim, por exemplo, aqui o estado de Pac Man pode ser definido pelo fato de que ele tem um fantasma ao sul e uma parede a oeste e espaços vazios a norte e leste, e que pode definir o estado atual de Pac Man e as mudanças de estado que pode levar seriam para se mover em uma determinada direção, e eu posso então aprender o valor de ir em uma determinada direção. Então, por exemplo, se eu me mudasse para o norte, nada realmente aconteceria. Não há recompensa real associada a isso. Mas se eu fosse para o sul, eu seria destruído pelo fantasma, e isso seria um valor negativo. Então, enquanto eu vou e exploro todo este espaço, eu posso construir um conjunto de todos os estados possíveis que Pacman transmitir e os valores associados a mover uma determinada direção em cada um desses estados. E isso é aprendizado de reforço. Assim, enquanto explora todo esse espaço, ele refina os valores de recompensa para um determinado estado, e pode então usar esses valores de recompensa de lojas para escolher a melhor decisão a tomar, dado um conjunto atual de condições. Então, além de Pac Man, isso também é um jogo chamado rato gato. Esse é um exemplo que usar comumente que vai olhar mais tarde. E o benefício dessa técnica é que, uma vez que você tenha explorado todo o conjunto de possíveis estados em que seu agente pode estar, você pode rapidamente ter um desempenho muito bom quando você executa diferentes iterações disso. Então você sabe, você pode basicamente fazer um PacMan inteligente executando reforços, aprendendo e deixando-o explorar os valores de diferentes decisões que podem tomar em diferentes estados e, em seguida, armazenando essas informações muito rapidamente tomar a decisão certa , dado um estado futuro que vê em um conjunto desconhecido de condições. Então, uma implementação muito específica da aprendizagem de reforço é chamada de aprendizagem Q e isso formaliza o que acabamos de falar um pouco mais. Então, novamente, você começa com um conjunto de estados ambientais que vamos chamar isso de s e possíveis States Air. Você sabe, as condições circundantes dos agentes. Assim como existe um fantasma ao meu lado. Tem uma pílula de poder na minha frente? Coisas assim e eu tenho um conjunto de possíveis ações que eu posso tomar nesses estados. Vamos chamar esse conjunto de ações A e, no caso de Pac Man, as ações possíveis são movidas para cima, para baixo, baixo, esquerda ou para a direita, e então temos um valor para cada par de ação de estado que vai chamar Q. que É por isso que chamamos de aprendizagem Q Então, para cada estado, você sabe, um determinado conjunto de condições em torno de Pacman dada ação terá um valor. P: Então, mover para cima pode ter um determinado valor. Que movendo-se para baixo pode ter um valor Q negativo se isso significa encontrar fantasma, por exemplo, então começamos com um valor Q de zero para cada estado possível que Pac Man poderia estar em. E enquanto Pacman explora maravilhas como coisas ruins acontecem com Pac Man, reduzimos o valor Q para o estado em que Pac Man estava dentro do tempo. Se o Pac Man acabar sendo comido por um fantasma, penalizamos o que ele fez naquele estado atual. Se o Pac Man acabar sendo comido por um fantasma, E como coisas boas acontecem com Pac Man enquanto ele come uma pílula de poder ou come um fantasma aumentará o valor Q para essa ação para o estado em que ele estava. Ok, e então o que podemos fazer é usar esses valores Q para informar as escolhas futuras do Pac Man e construir um pequeno agente inteligente que possa ter um desempenho ideal e fazer um testamento perfeito. O Pacman. Então, voltando a um exemplo real aqui algumas ações estaduais aqui, Pac Man, poderíamos definir o estado atual de Pac Man pelo fato de que ele tem uma parede para o oeste, espaço vazio para o norte e leste de Ghost para o sul, e podemos olhar para as ações que ele pode tomar. Você sabe que ele não pode realmente mover para a esquerda, mas ele pode mover para cima, para baixo ou para a direita, e podemos atribuir valor a todas essas ações. Então, indo para cima ou para a direita, nada realmente acontece. Não há pílula de poder ou pontos para consumir, mas se ele for para a esquerda, é definitivamente um valor negativo. Então você pode dizer, para o estado, dada pelas condições atuais que Pac Man está cercado por se mudar para baixo seria uma péssima escolha. Deve haver um valor Q negativo para que Movendo para a esquerda simplesmente não pode ser feito tudo e movendo-se para cima ou para a direita ou apenas neutro. Assim, o valor-chave permaneceria zero para essas opções de ação para esse determinado estado. Agora, você também pode olhar para frente um pouco para torná-lo ainda mais inteligente, agente. Estou a dois passos de pegar uma pílula de poder aqui. Então, enquanto Pac Man explorava este estado, se eu tivesse que comer aquela pílula de poder no próximo estado. Eu poderia realmente fatorar isso no Vale Q para o estado anterior. E você sabe, se você tiver algum tipo de fator de desconto baseado em quão longe você está no tempo, quantos passos de distância você está, você pode considerar isso tudo junto. Então essa é uma maneira de realmente construir um pouco de memória no sistema. Assim, o valor Q que eu experimentei quando eu consumi essa pílula de poder pode realmente dar um impulso para os vales Que anteriores que eu encontrei ao longo do caminho. Então essa é uma maneira de fazer você aprender ainda melhor. Portanto, um problema com o que temos na aprendizagem do reforço é o problema da exploração. Como posso garantir que abranjo eficientemente todos os diferentes estados e ações dentro desses estados durante a fase de exploração? Então tipo de abordagens ingênuas para sempre escolher a ação para um determinado estado com o maior Que Valley que eu computei até agora. E se houver um empate, basta escolher aleatoriamente então inicialmente, todos os meus vales de cue podem ser zero, e eu vou apenas escolher ações que aleatórias que primeiro e como eu começar a ganhar informações sobre melhores valores de sinalização para um dadas ações e estados dados, eu vou começar a usá-los como eu ir. Mas isso acaba sendo bastante ineficiente, e eu posso realmente perder muito do passado dessa maneira se eu apenas me amarrar a este algoritmo rígido de sempre escolher o melhor Q Valley que computou até agora. Então, uma maneira melhor de introduzir um pouco de variação aleatória em minhas ações enquanto estou explorando. Chamamos isso de termo Epsilon. Então nós temos algum valor para eu rolar um dado. Eu tenho um número aleatório, e se ele acaba sendo menor neste valor de Epsilon, eu realmente não seguir o valor de Q mais alto. Eu não faço a coisa que faz sentido. Eu só tomo um caminho aleatoriamente para experimentar e ver o que acontece. E isso realmente me permite explorar uma gama muito mais ampla de possibilidades, uma gama muito maior de ações para uma gama mais ampla de estados de forma mais eficiente durante essa fase de exploração. Então o que acabamos de fazer pode ser descrito em termos matemáticos muito extravagantes, você sabe, conceitualmente é bem simples eu explorar algumas ações que eu poderia tomar para um determinado conjunto de estados. Eu uso isso para informar as recompensas associadas com a ação dada para determinado conjunto de estados. E depois que essa exploração é feita, eu posso usar essa informação esses valores Q para navegar inteligentemente através de um labirinto inteiramente novo , por exemplo. Ok, mas isso também pode ser chamado de processo de decisão de Markov, então eu posso, ah, muita ciência de dados é apenas atribuir nomes extravagantes, intimidantes, conceitos simples. E há uma tonelada disso no aprendizado de reforço. Então, se você procurar a definição de processos de decisão de Markov, é um quadro matemático para modelagem, tomada de decisão, tomada decisão. Que ação tomamos, dado um conjunto de possibilidades para determinado estado em situações em que resultados ar parcialmente aleatório tipo de como a nossa expiração aleatória lá, e em parte sob o controle de um tomador de decisão, o tomador de decisão sendo nossos valores Q que computamos? Então os processos de decisão M DPS Markov são uma maneira extravagante de descrever nosso algoritmo de exploração que acabamos de descrever para um aprendizado de reforço, e a notação é mesmo estados semelhantes ou ainda descreveu seu S e S. Prime é o próximo afirmam que nos encontramos. Temos funções de transição de estado que são definidas como peça de um estado perdoado de SNS prime, e temos nossos valores Q são basicamente representantes ou função de recompensa, então um são algum valor para um dado sns prime. Assim, passar de um estado para outro deu uma recompensa recente associada a ele, e mover-se de um estado para outro é definido por uma função de transição de estado. Então novamente descrevendo o que acabamos de fazer. Apenas uma notação matemática e ele mais sofisticado soando a palavra Markov processos de decisão. E se você quiser parecer ainda mais inteligente, você também pode chamar um processo de decisão de Markov por outro nome. Um processo de controle estocástico de tempo discreto. Santa vaca. Parece inteligente, mas o conceito em si é a mesma coisa que acabamos de descrever. Assim, palavras ainda mais extravagantes programação dinâmica pode ser usado para descrever. O que acabamos de fazer foi bem, uau, isso soa como computadores de inteligência artificial, programando eles mesmos, Exterminador 2, coisas Skynet. Mas não, foi o que acabamos de fazer. Então, se você procurar a definição de programação dinâmica, é um método para resolver um problema complexo, como criar um homem Pac inteligente. Isso é um bastante complicado e resulta por dividi-lo em uma coleção de sub-problemas mais simples . Então, por exemplo, qual é a ação ideal a tomar para um determinado estado em que o Pac Man possa estar? Há muitos estados diferentes em que Pac Man poderia se encontrar. Mas cada um desses estados representa um problema mais simples onde há um conjunto limitado de escolhas que eu poderia fazer. E há uma resposta certa para a melhor jogada para fazer e armazenar suas soluções. Essas soluções são os valores Q que eu associei a cada ação possível em cada estado, idealmente usando uma estrutura de dados baseada em memória. Bem, é claro, eu preciso armazenar esses valores Q e associá-los com o estado de alguma forma certo na próxima vez o mesmo sub problema ocorrer na próxima vez que Pac Man estiver em um dado estado que eu tenho um conjunto de valores Q. Quatro. Em vez de re computar sua solução quando simplesmente olha para cima, a solução previamente computada que o valor Q já tem a partir do estágio de exploração, economizando assim o tempo de computação à custa de um espaço de armazenamento de expansão modesto. Foi exatamente o que fizemos com a aprendizagem de reforço. Temos uma fase de exploração complicada que encontra as recompensas ideais associado ID com cada ação perdoada estado e foi, temos essa tabela da ação certa para tomar estado perdoado. Podemos usar isso rapidamente para fazer nosso Pacman se mover de uma maneira ideal e um novo labirinto que ele nunca viu antes. Assim, a aprendizagem de reforço é também uma forma de programação dinâmica. Uau. Então, recapitulando, você poderia fazer um agente inteligente PacMan apenas fazendo seu semi aleatoriamente explorar diferentes escolhas de movimento dadas condições diferentes onde essas escolhas ou ações, essas condições ou estados, mantemos o controle da recompensa de penalidade associada a cada ação ou estado à medida que vamos e podemos realmente descontar, você sabe, retrocedendo vários passos se você quiser torná-lo ainda melhor. E então armazenamos esses valores Q que acabamos associando com cada estado. E podemos usar isso para informar suas escolhas futuras para que possamos entrar em um novo milho e ter um pacman muito inteligente que pode evitar os fantasmas e comê-lo de forma bastante eficaz . Conceito bem simples. Muito poderoso, no entanto, e você também pode dizer que você entende um monte de termos extravagantes porque é tudo chamado a mesma coisa. Que aprendizagem, reforço, aprendizagem processo de decisão Markov é programação dinâmica todos amarrados no mesmo conceito. Então eu acho que é muito legal que você possa realmente fazer uma espécie de pacman artificialmente inteligente através de uma técnica tão simples, e realmente funciona. Se você quiser olhar para ele com mais detalhes, aqui estão alguns exemplos que você pode olhar. Ele tem um código-fonte real que você pode olhar e potencialmente jogar com. Portanto, há uma caixa de ferramentas de processo de decisão Python Markov que você conhece e encerra. Em toda essa terminologia que falamos, há um exemplo. Você pode olhar para um exemplo de trabalho do jogo de gato e rato, que é semelhante, e há realmente um exemplo Pacman que você pode olhar on-line também. Isso vincula mais diretamente o que estávamos falando, então sinta-se livre para explorar esses links e aprender ainda mais sobre isso. Mas isso é aprendizado de reforço em poucas palavras. Então isso é reforço. Aprender de forma mais geral, é uma técnica útil para construir um agente que pode navegar por um possível conjunto diferente de estados que têm um conjunto de ações que podem ser associadas a cada estado . Então falamos sobre isso principalmente no contexto de um jogo de labirinto. Mas você pensa mais amplamente. E sempre que você tem uma situação em que você precisa prever o comportamento de alguma coisa, dado um conjunto de condições atuais e um conjunto de ações que podem exigir reforço, aprendizagem e aprendizagem Q pode ser uma maneira de fazê-lo, então mantenha em mente. 55. : por isso reforço A aprendizagem tornou-se muito mais popular nos últimos anos à medida que a emoção sobre o aprendizado de máquina em geral cresceu. E felizmente, há um novo pacote chamado Open Ai Jim. Isso torna muito fácil para você configurar casos de teste para aprendizagem de reforço. Então, vamos realmente fazer algumas mãos na prática usando isso. Primeiro, no entanto, precisamos instalar Jim. Então, para fazer isso, vá para o seu prompt anaconda no Windows ou seu terminal no Lennox ou Mac OS e basta digitar pip Install Jim. Certifique-se de controlar Ver fora do caderno de Júpiter. Se ainda estiver em primeiro lugar, é claro. E Jim realmente funciona melhor em máquinas Lenox do que no Windows. Máquinas permitem que você faça coisas como espaço de jogo, invasores e treinamento, como jogar invasores de espaço e desgraça ou jogos gráficos de vídeo no Windows. Vai ser mais limitado porque não tem acesso ao sistema gráfico, mas como verá, ainda podemos usá-lo. Tudo bem, então temos pelo menos a versão Bare Bones do Jim instalada aqui. Vamos começar o nosso caderno. Júpiter um caderno e, claro, Eu já estou na pasta do curso ML onde meus materiais do curso estão, e procurar o caderno de aprendizagem Q. Lá está ele. E vamos ver se funciona. Tudo bem, então o que vamos brincar aqui é o chamado problema do táxi vai fazer mais sentido quando olharmos para ele aqui. Mas basicamente estamos modelando um táxi que pode pegar passageiros em um de um conjunto de locais fixos, deixá-los em outro local e tentar chegar lá no tempo mais rápido, evitando obstáculos. Então, basicamente vamos treinar nosso táxi sobre como levar passageiros de um ponto para outro da maneira mais rápida possível, usando o aprendizado de reforço. Então vamos começar importando o ambiente que precisamos irá importar o pacote de ginástica que acabamos de instalar e aleatoriamente dar-nos uma semente aleatória consistente. Então, obtemos os mesmos resultados cada vez, e vamos fazer nosso ambiente chamado Taxi V para que apenas contêm tipo de regras deste jogo, se você quiser, sobre como tudo funciona. Vamos chamar isso de ruas modelo resultantes e depois renderizá-lo. Nós podemos visualizar como este ambiente se parece, então vamos em frente e mudar Enter e lá temos ele. Então aqui está como interpretar o que você está vendo aqui. Basicamente as letras RGB e por que eles são qual correspondente? Vermelho, verde, azul e amarelo ou algo assim. O que você quiser. Aqueles ao ar os locais válidos de recolha e entrega. Assim, um passageiro pode optar por ser recolhido em qualquer um dos locais que possam optar por ser deixados por um dia. Esses locais são táxi precisa aprender a obtê-los de um ponto para outro o mais rápido possível . Agora, qualquer que seja a letra colorida, azul é onde precisamos pegar alguém e sempre que a carta é colorida em Magenta indica para onde o passageiro quer ir. Ok, então lembre-se que a letra azul é de onde estamos vindo. As letras magenta para onde vamos. Então, neste caso, nossos clientes são pegos no B e querem ir para G. Agora essas linhas sólidas representam paredes, então o táxi não pode cruzar essas linhas. Isso é tipo, você sabe, você sabe, a beira da estrada lá ou o que quer que seja. E o retângulo preenchido que ah quadrado amarelo laranja é na verdade o táxi em si. Isso representa onde o táxi está agora, quando está vazio, será amarelo. E quando é verde, isso significa que é, carregando um passageiro. Então temos esse jogo virtual de táxi aqui, e precisamos treinar nosso táxi. Como jogar o jogo. Então nós temos um pequeno mundo aqui, e nós o chamamos de ruas. É basicamente uma grade de cinco por cinco, e podemos definir o estado deste mundo a qualquer momento, com apenas algumas coisas onde o táxi está, que é um dos 25 locais possíveis qual é o destino atual, que é um dos quatro possibilidades e onde o passageiro está, que é cinco possibilidades. Na verdade, pode ser um dos destinos ou dentro do táxi para 1/5 possibilidade. Então, no total, isso funciona para 500 estados possíveis que poderiam descrever nosso mundo a qualquer momento. Esse é um número gerenciável para cada estado possível, cada um desses cinco estados. Há seis possíveis ações associadas a esse estado, e precisamos aprender quais dessas ações fazem sentido para cada estado, certo? Então, para cada estado, podemos nos mover para sudeste, oeste para norte. Podemos pegar um passageiro ou deixar o passageiro. Então, como nosso táxi virtual aqui está explorando esse ambiente e aprendendo sobre ele, precisamos basicamente associar recompensas e penalidades como ele faz as coisas, pois aplica ações diferentes a esses diferentes estados. Então vamos definir essas coisas assim. Se o nosso táxi deixar alguém de onde pertence, nós lhe daremos uma recompensa de 20 pontos. Se você der um passo de tempo enquanto dirige um passageiro, mas não deixá-lo, você recebe uma penalidade negativa de um ponto que servirá para garantir que recompensamos o caminho mais curto ao longo do tempo. E se você fizer algo ruim, como pegar ou deixar em um local ilegal, isso lhe dá uma penalidade negativa de 10 pontos para que ele não tenha nenhuma inteligência embutida para saber o que você sabe antes do tempo, onde você estão autorizados a pegar e deixar os passageiros. Tem que aprender isso também. E quanto às paredes vão bem, sim, ele sabe sobre as paredes. Só não permitimos que isso aconteça. Você não pode atravessar a parede, não importa o que aconteça. Isso é fisicamente impossível. Tudo bem, então vamos começar com um estado inicial. Nosso estado inicial aqui será apenas com um táxi no local x dois e por que três? O passageiro será um local de coleta número dois, e o destino será no local zeros. Codificamos esse estado como a localização do táxi, A para três passageiros e o local de destino. Vamos definir nossas ruas, ficar com isso e renderizá-lo para que possamos visualizá-lo novamente. E aí está. Classifique os táxis no local inicial para três. O local inicial de coleta do passageiro indicado pela carta azul é o local para, e eles querem ir para Localização zero, que é colorido em magenta. Então basicamente você quer o dedo do pé. Nosso táxi está começando aqui. Tem que pegar um passageiro aqui em baixo, e eu quero deixá-los lá em cima. Muito bem, vamos dar uma olhada na nossa tabela inicial de recompensas para esse estado inicial. Então aqui está como você realmente interpreta a tabela de recompensas aqui agora? Cada rosa vai corresponder a uma ação potencial neste estado? Como dissemos, há seis ações potenciais para cada estado para que eles possam se mover para sul, norte , leste ou oeste, pegar ou soltar e os quatro valores em cada linha ou as probabilidades atribuídas a isso ação e, em seguida, o próximo estado que resulta dessa ação. A recompensa por essa ação e se essa ação indicava uma queda bem-sucedida ocorreu . Assim, por exemplo, podemos ver que mover para o norte deste estado nos colocaria no estado número 368. Seria incorrer em uma penalidade negativa por apenas tomar um passo de tempo. E isso não resulta em uma queda bem sucedida e inicialmente são probabilidades são todos um ponto. Porque ainda não aprendemos nada. Vamos cuidar disso. Então vamos realmente fazer algum que aprender aqui como falamos sobre os slides. A primeira coisa que precisamos fazer é treinar nosso modelo. Então, em um nível alto, vamos treinar 10.000 corridas de táxi simuladas e para cada corrida passaremos pelo tempo com 10% de chance de apenas fazer um passo exploratório aleatório em vez de usar os valores de Q aprendidos para guiar nossas ações. Então basicamente temos um fator de exploração de 10% aqui que estamos usando para fazer a fase de aprendizagem rapidamente, percorrer o código aqui. Ah, começamos definindo uma tabela que, que é uma pira entorpecida, e que contém ah dois matriz D que representa cada estado e ação possíveis dentro do nosso espaço virtual aqui e inicializar. Esses valores Q são todos zero? Temos alguns hiper parâmetros aqui é, bem, bem, a taxa de aprendizagem. Isso é basicamente a rapidez com que tentamos aprender fator de desconto. Tudo isso entra na equação de aprendizagem Q que olhamos nos slides e nossa taxa de exploração, que, que, como dissemos, é de 10% e o número de blocos F que iam treinar mais de 10 mil. Então analisamos todas as 10 mil corridas de táxi. Nós reiniciamos nosso campo de jogo virtual aqui, e enquanto não estamos bem feitos, primeiro, desenhe um número aleatório entre zero e um. Se esse número for menor taxa de expiração central, que é 10.1, então nós vamos realmente apenas explorar uma ação aleatória. Caso contrário, vamos apenas ir com o valor Q mais alto associado às ações que estão disponíveis para nós. Ok, então como a exploração é 0,1, isso é basicamente uma chance de 10% de um número aleatório ser menor do que esse caso nós apenas escolhemos uma ação aleatória. Caso contrário, vamos com o valor máximo Q disponível para nós para as ações que temos em mãos. Nós então chamado ST Starts stepped, realmente aplicar essa ação que nos dá de volta o próximo estado que resulta dessa ação . A recompensa resultante, se terminamos ou não naquele ponto em que deixamos nosso passageiro com sucesso e mais informações também. Nesse ponto, precisamos realmente fazer a equação de aprendizagem Q. Esta é basicamente a versão de código da equação que olhamos nos slides. Havia apenas dando uma olhada em Thea atual valor Q do que um do próximo estado e, em seguida computando o novo valor Q, com base na equação de aprendizagem Q que leva são taxa de aprendizagem e fator de desconto em conta. E então nós atribuímos a tabela Q para esse estado dado em ação para o valor Q recém-aprendido , e nós definimos nosso estado para o próximo estado e fazemos tudo de novo até que nós estamos realmente feito e realmente cair fora para um passageiro e eu completar uma única corrida do táxi, e então nós fazemos isso 10.000 vezes, então isso pode levar um pouco de, Ah, um pouco de tempo para correr. Vamos realmente experimentá-lo. Nós vamos clicar aqui e mudar, entrar e apenas vê-lo ir. Pena que levou alguns segundos. Isso é impressionante, certo? Certo, então vamos ver o que temos. Então agora devemos ter construído uma tabela de valores Q que podemos usar rapidamente para determinar a próxima ação ideal para qualquer estado. Então vamos dar uma olhada. Vamos dar uma olhada na mesa fofa para o nosso estado inicial de onde começamos. Então aqui você pode ver que o menor valor Q corresponde à ação. É bem perto aqui, mas corresponde à ação. Vai para o oeste, o oeste, pelo que faz sentido. Se você olhar para trás para o nosso estado inicial, uh , sim, quero dizer, nós queremos ir por ali, certo? Então, tipo, nós queremos pegar nosso cara em torno desta parede como se a única direção que faz sentido fosse ir para o oeste. Parece que funcionou até agora. Isso é muito legal. Certo, então vamos ver isso em ação. Uma coisa legal sobre aberto ei Jim é que ele tipo de permite que você animar o que está acontecendo, e é realmente divertido de assistir. Então o que vamos fazer neste bloco de código, é realmente simular Ah, 10 viagens diferentes aqui em cada passo vai, para cada viagem vai redefinir o estado das ruas, e nós vamos apenas caminhar através dele um passo de cada vez, aplicando qualquer ação que aprendemos com que aprender que tabela. Portanto, não há nenhuma aprendizagem que tenha que acontecer aqui, e que já aprendemos a ação ideal para cada estado possível que poderíamos ter neste mundo. Podemos muito rapidamente guiar o nosso táxi através de qualquer situação em tudo. Então esse é realmente o poder da aprendizagem Q. Você sabe, uma vez que você aprendeu que tabela Q realmente alimentando uma IA para passar pelo seu ambiente virtual é super rápido e super simples, e a parte realmente divertida aqui é que nós poderíamos chamar ST Stop renderizado, realmente animar esse táxi se movendo através como vamos. Então vamos assistir. Lá vai ele, pegando nosso passageiro em ah, por que local pegou e entregou para G legal e estamos na viagem número três agora pegando seu passageiro novamente. Está na caixa verde agora. Está no táxi e foi deixado com sucesso, começando de novo, pegando um passageiro no local azul e indo para Magenta o mais rápido possível . Isto é muito divertido. Então, de novo, pegamos um pastor e agora o deixamos lá embaixo. Por que começou? Tomou um caminho muito rápido. Então isso realmente parece funcionar. Pessoal, quão legal é isso? Então nós realmente treinamos um táxi virtual de como encontrar o caminho mais rápido entre dois pontos para pegar um passageiro e deixá-los em um determinado local. Coisas tão divertidas. Ensinamos um pequeno veículo virtual a navegar por este mundo sozinho. Isso é divertido, pessoal. Você pode assistir isso para sempre. Mas de qualquer forma, se você quiser brincar com isso, Samora definitivamente te desafiará a fazer isso. Eso tentar modificar este pequeno bloco experimental aqui para manter o controle do número total de passos que leva para realmente passar por todas as 10 viagens. E isso será realmente uma métrica útil de quão bom nosso sistema é basicamente se ele passar por essas 10 viagens no mínimo de tempo, isso implica que ele está fazendo um bom trabalho, certo? Então, se você quiser realmente amostra em um número maior de viagens, você pode remover essa função de sono lá para torná-la mais rápida, e isso permitirá que você execute mais amostras mais rapidamente. Assim que você tiver essa métrica em vez de quantos passos é preciso para passar por essas viagens , você pode começar a jogar com esses hiper parâmetros. Então tente ver o quão baixo você pode fazer o número de caixa F ir antes que o modelo comece a sofrer . Preciso mesmo de 10.000 passos de treino? Você pode criar um vale melhor para a taxa de aprendizagem ou o fator de desconto ou os fatores de expiração para tornar o treinamento ainda mais eficiente? Esses fatores podem influenciar como épocas maney? Você realmente precisa obter um bom resultado. Então, essas coisas boas de ar para obter uma sensação intuitiva e ver como esses valores influenciam o seu modelo resultante. A taxa de exploração em particular vai ser interessante para experimentar. Então, se você só tem tempo para jogar com um valor. Eu recomendaria essa. É um pequeno exemplo divertido, não é? Então isso é que aprendizagem em ação treinamento um táxi virtual. E agora você realmente aplicou o aprendizado de reforço em um exemplo real. 56. Entendendo uma matriz de confusão: Algo que você pode encontrar é o conceito de matrizes de confusão. Então vamos mergulhar no que se trata. Para que serve a matriz de confusão? Bem, a coisa é, às vezes a precisão não conta toda a história e uma matriz de confusão pode ajudá-lo a entender os resultados mais matizados do seu modelo. Por exemplo, um teste para uma doença rara pode ser 99,9% preciso apenas adivinhando, não, o tempo todo eu dizendo que você não tem. Um modelo que faz isso pareceria no papel para ter uma precisão muito alta, mas na realidade, é pior do que inútil, certo? Então você precisa entender com um caso como este, quão importante é um verdadeiro positivo ou verdadeiro negativo. Quão importante é um falso positivo ou falso negativo para o que você está tentando realizar. E ser capaz de medir o quão bom seu modelo é que cada um desses casos. E uma matriz de confusão é apenas uma maneira de ilustrar essas nuances na precisão do seu modelo. Um pode parecer assim. Este é o formato geral do mesmo. Então imagine que temos uma situação binária em que estamos apenas prevendo sim ou não. Como se eu tivesse essa doença ou eu não tivesse essa doença ID ou eu testasse positivo para essa droga, certo? Não dê positivo para esta droga. Esta imagem tem um gabinete ou esta imagem não tem um gabinete. Este é o formato do que seria parecido. Então você vê que nas linhas temos valores preditos e nas colunas temos valores reais. Então, passe por isso. Se previmos que algo é verdade e realmente é, então isso é um verdadeiro positivo. Se previmos sim, mas na verdade é não, realmente negativo. Isso será um falso positivo se prevermos isso, não, mas na verdade é sim e isso é um falso negativo. E se previmos que não e na verdade é não, isso é um verdadeiro negativo. Quero dizer, fica um pouco confuso, mas se você pensar no que tudo isso faz sentido, certo? Uma matriz de confusão real, essas células irá conter números reais de quantas vezes seu modelo realmente fez isso em seu conjunto de dados de teste. Portanto, tenha em mente também que você tem que prestar atenção aos rótulos. Não há convenção real de como isso é ordenado. Às vezes você verá previsões aqui e os valores reais aqui. Não pule apenas assumindo que uma determinada matriz de confusão é de um certo formato. Preste atenção em como ele é rotulado e certifique-se de entender o que ele está dizendo antes de tirar conclusões dele. Outra coisa que vale a pena notar aqui é que você surdo normalmente quer ter a maioria dos seus valores aqui e aqui, certo? Então, a diagonal aqui, se sua matriz de confusão é onde a maioria de seus resultados deve estar, é aqui que a precisão vive, certo? Então é aqui que eu tenho um verdadeiro positivo. Aqui é onde eu tenho um verdadeiro negativo. Você quer que eles sejam bons números grandes e falsos negativos e falsos positivos para ser comparavelmente números baixos, certo? Então, um modelo preciso teria números altos ao longo deste valor diagonal aqui. Vamos ligar alguns números reais para ver como isso pode parecer. Digamos que eu tenha um modelo de aprendizado de máquina que está tentando descobrir se uma imagem contém uma imagem de um gato ou não. Se previssemos que um tinha um gato e realmente tinha um gato que tinha sido 50 vezes no meu conjunto de testes. Mas às vezes eu previ que era uma capital, não era um gato, ele era um cão, um peixe ou algo assim. E isso não fez 5 vezes, eles previram que não era conta, mas realmente não era um gato. Isso tinha sido 10 vezes este exemplo. E se eu disse que não era um gato em, realmente não era um gato que tinha sido um 100 vezes neste caso. Então é assim que você interpreta uma matriz de confusão. E vamos falar sobre como fazer métricas esses dados que são mais úteis para análise. Em breve. Às vezes você verá matrizes de confusão em um formato diferente onde nós realmente adicionamos coisas em cada linha e coluna também. Então isso é algo que você pode ver de vez em quando. Tudo o que é isso é somar quantos nós reais temos, quantos sim reais nós temos, quantos não previram que temos e como ele previu sim como nós temos no total. Então, só para que você tenha visto esse formato antes, é assim que parece. A parte interna é apenas a mesma matriz de confusão que olhamos antes. E novamente, lembre-se, as coisas podem ser invertidas até onde os valores previstos e os valores reais estão. Portanto, certifique-se de prestar atenção aos rótulos dessas coisas. E você sabe, o que eu posso dizer? Matrizes de confusão podem ser confusas. Às vezes você vai vê-los neste tipo de formato também. Então talvez tenhamos um modelo de classificação multi-classe aqui para imaginar que temos um sistema de reconhecimento de escrita manual que está tentando identificar alguém escrevendo os valores de 0 a 9. Então, uma matriz de confusão mais complicada pode parecer assim, onde em vez de apenas sim, nenhuma resposta é que na verdade temos múltiplas classificações, mas funciona da mesma maneira. Então aqui temos previsto rótulos neste eixo e rótulos verdadeiros neste eixo. Então estamos dizendo que se eu previu que algo era um cinco e realmente um cinco, bem esse tom de azul corresponde a algum número aqui. Então, duas coisas que são diferentes neste exemplo. Primeiro de tudo, temos mais do que sim, nenhuma opção aqui temos classificação múltipla, então nossa matriz de confusão é maior. Vamos mergulhar em outro exemplo lá só para dirigir para casa. Então, às vezes eu previ que era um 1, mas era realmente um oito que tem um tipo de azul claro lá. Talvez isso tenha acontecido, você sabe, 20 vezes mais ou menos neste exemplo. E também estamos usando o que é chamado de mapa de calor. Então, em vez de apenas exibir números nessas células individuais, estamos mapeando esses números para colunas onde a escuridão dessa cor corresponde a quão alta de um número é. Você esperaria ver uma espécie de linha escura descendo a diagonal aqui representando uma boa precisão em verdadeiros positivos e verdadeiros negativos. E algumas cores mais esparsas e mais claras aqui fora, idealmente. Mas essa cor será mapeada para um valor real e apenas facilita a visualização de como sua matriz de confusão é definida. Tudo bem, façam sentido, pessoal, é disso que se trata uma matriz de confusão. E pode ser um pouco confuso, mas apenas olhe para esses exemplos um pouco e deve fazer sentido para você. 57. Como medir classificadores (precisão, remos, f1, ROCC e AUC): Vamos falar sobre algumas métricas que você pode derivar de uma matriz de confusão. Então vamos revisitar nosso amigo a matriz de confusão novamente, neste exemplo particular de um, nós temos valores reais indo para baixo as colunas e valores preditos através das linhas. Isso pode ser diferente. Mas neste formato, temos o número de verdadeiros positivos no canto superior esquerdo. O número de negativos verdadeiros no canto inferior direito, o número de falsos negativos no canto inferior esquerdo e o número de falsos positivos no canto superior direito. Ok? Portanto, certifique-se de entender onde estão seus verdadeiros positivos e negativos, onde estão seus falsos positivos e negativos quando você está começando a olhar para uma matriz de confusão. E, novamente, pode variar com base no layout da própria matriz de confusão. Vamos começar com o recall. Então recall é computado como os verdadeiros positivos sobre verdadeiros positivos mais os falsos negativos. Você deveria memorizar isso. Você precisa saber disso. Tem outros nomes também só para tornar as coisas mais confusas. Então também é conhecido como sensibilidade, verdadeira taxa positiva e completude. E a completude meio que retribui ao seu uso original no mundo da recuperação de informações. Então, é uma boa escolha de métrica quando você se importa muito com falsos negativos, ok, então detecção de fraude é um ótimo exemplo de onde você pode estar focando em recall, porque um falso negativo no mundo da fraude significa que algo era fraude, mas você não consegue identificá-lo como fraude. Você teve uma transação fraudulenta que foi sinalizada como sendo perfeitamente boa, esse é o pior resultado possível em seu sistema que deveria estar detectando fraudes, certo? Você quer estar errando do lado de falsos positivos e falsos negativos nesse caso. Então lembre-se, boa escolha simétrica quando você se importa com falsos negativos. A detecção de fraudes sendo um exemplo disso, é verdadeiros positivos sobre verdadeiros positivos mais falsos negativos. Vamos fazer disso um exemplo real aqui. Então, neste exemplo particular de uma matriz de confusão, novamente, lembrar é verdadeiros positivos sobre verdadeiros positivos mais falsos negativos. Nós apenas conectamos os valores dessa matriz de confusão. Neste layout particular, dois positivos serão cinco, falsos negativos serão 10. Então dizemos 5 sobre 5 mais 10, que é 5 sobre 15 ou 1 terço ou 33,3, 33, 33, 33 por cento, certo? Então isso é recordação. Recorda que um parceiro no crime é precisão, e precisão é computada como verdadeiros positivos sobre verdadeiros positivos mais falsos positivos. Isso também atende por outros nomes, incluindo a taxa positiva correta ou a porcentagem de resultados relevantes. Portanto, esta é uma medida de relevância no mundo da recuperação de informações. Quando você deve se importar com precisão? Bem, é uma métrica importante quando se preocupa com falsos positivos. Alguns exemplos seriam triagem médica ou testes de drogas. Você não quer dizer que alguém está, sabe, drogado ou algo assim quando não está, que teria efeitos muito ruins na vida, carreira e coisas assim, certo? Então, novamente, precisão quando você se importa com falsos positivos, mais do que falsos negativos. O teste de drogas é um exemplo clássico disso. Novamente, ele é computado como verdadeiros positivos sobre verdadeiros positivos mais falsos positivos. E novamente, vamos mergulhar em um exemplo aqui. Nesta matriz de confusão particular, os verdadeiros positivos serão cinco, os falsos positivos neste exemplo ou 20. Assim, a precisão é calculada como cinco sobre 25, que é 20 por cento. Há outras métricas também. Por exemplo, especificidade, que é o verdadeiro negativo sobre o verdadeiro negativo mais falso positivo. Também conhecido como a verdadeira taxa negativa. Também pontuação F1 é uma coisa muito comum que é usado. Isso é duas vezes o verdadeiro positivo sobre 2 vezes verdadeiro positivo mais falsos positivos mais falsos positivos mais falsos negativos. Você também pode computá-lo como duas vezes o tempo de precisão recuperar mais de 2, sobre a precisão. Lembre-se de qualquer maneira funciona. Matematicamente, é a média harmônica de precisão e sensibilidade. Então, se você se importa com precisão e recall, lembre-se, recall e sensibilidade são a mesma coisa. pontuação F1 é uma métrica que equilibra os dois. Se você sabe que seu modelo não se preocupa apenas com precisão e deseja capturar precisão e recall. pontuação de F1 pode ser uma maneira de fazer isso. Mas no mundo real, você provavelmente vai se importar com precisão ou lembrar mais do que o outro. Então vale a pena pensar sobre o que você se importa mais. Usando pontuação F1, na minha opinião, é um pouco de um atalho, um pouco de preguiça. Também RMSE é frequentemente usado como uma métrica. É apenas uma medida direta de precisão e é exatamente o que parece, a raiz média do erro quadrado. Então você apenas somar todos os erros quadrados de cada previsão de seu verdadeiro valor real e pegar a raiz quadrada dela. É isso. Então só se preocupa com respostas certas e erradas. Não entra nas nuances de precisão e recordação. Então, se você só se importa com precisão, RMSE é uma métrica comum usada para isso. Outra maneira de avaliar seus modelos é a curva ROC, que significa curva característica operacional do receptor. E o que ele faz é traçar sua taxa positiva verdadeira ou sua recuperação versus sua taxa de falso positivo em várias configurações de limite em seu modelo. Então, como você escolhe diferentes limites de escolha entre verdadeiro e falso, essa curva era semelhante? Basicamente, a maneira de interpretar uma curva ROC é que você quer que ela esteja acima da linha diagonal lá. Então a curva ideal seria apenas um único ponto no canto superior esquerdo, apenas um grande ângulo direito onde o, onde a coisa toda está naquele lado superior esquerdo do gráfico, se você preferir, à esquerda dessa linha diagonal. Assim, quanto mais curvada ou curva ROC estiver em direção ao canto superior esquerdo, melhor. É assim que você interpreta essas coisas. Também podemos falar sobre a área sob a curva, que é a área sob a curva ROC, exatamente como soa. Então você pode realmente interpretar esse valor como a probabilidade de um classificador classificar uma instância positiva escolhida aleatoriamente maior do que uma negativa escolhida aleatoriamente. Então, uma AUC de 0,5 seria o que você esperaria ver se estivesse na linha diagonal, certo? Então, se você realmente tivesse a área embaixo linha diagonal onde as coisas não são melhores do que aleatórias. Isso acaba por ser uma área de 0,5, certo? Então isso meio que faz sentido. Então, se você ver uma AUC de 0,5 ou menos, isso é inútil ou pior do que inútil. O classificador perfeito teria uma área sob a curva e AUC de 1. Isso seria novamente o caso perfeito onde a curva é apenas esta direita, um ângulo reto com um 1 em 01 lá em cima no canto superior esquerdo. Isso incluiria toda a área, aquele gráfico inteiro, que funciona para um. Assim, a AUC pode ser uma métrica útil para comparar diferentes classificadores juntos. Onde estão quanto maior o valor, melhor? Então, aí está. Algumas métricas comuns para avaliar a recordação de precisão dos classificadores, pontuação de F1, ROC e AUC são as mais importantes a serem lembradas. 58. Bias vira: nesta próxima seção, vamos falar sobre os desafios de lidar com os dados do mundo real e algumas das peculiaridades que você pode encontrar. Então vamos começar falando sobre o viés das variantes. Tradeoff Apenas uma espécie de uma maneira mais fundamentada de falar sobre as diferentes maneiras que você pode se encaixar em dados de ajuste e como tudo em se relaciona entre si. Vamos dar uma olhada. Então, um dos desafios básicos que enfrentamos ao lidar com dados do mundo real é mais adequado versus baixo ajuste de suas regressões a esses dados ou seus modelos de suas previsões. E quando falamos sobre encaixe e excesso de ajuste, muitas vezes podemos falar sobre isso no contexto de viés e variância e as compensações de variância de viés . Então vamos falar sobre o que isso significa. Então, conceitualmente viés e ar variância bastante simples vieses apenas quão longe você está dos valores corretos. Então, quão boas suas previsões em geral na previsão do valor geral certo para ter a média de todas as suas previsões? Eles são mais ou menos do lugar certo? Ou seus erros são consistentemente distorcidos em uma direção ou outra? Se assim for, então suas previsões de ar tendencioso em uma determinada direção. A variação é apenas uma medida de quão espalhadas são suas previsões. Então, se suas previsões forem espalhadas por todo o lugar, isso é alta variação. Mas se eles estão muito bem focados em quais são os valores corretos, ou mesmo valor incorreto no caso de alta tendência, sua variância é pequena. Então vamos olhar para esses exemplos aqui. Vamos imaginar que este quadro de dardos representa um monte de previsões estavam fazendo onde o valor real que estamos tentando prever está no centro do olho do touro. Então, começando no canto superior esquerdo, você pode ver que nossos pontos estão espalhados pelo centro. Então, no geral, você sabe o significado. O erro aparece para ser, você sabe, uma realidade muito próxima. Nosso preconceito. Na verdade, é muito baixo porque nossas previsões estão em torno do mesmo ponto correto. No entanto, temos variância muito alta porque esses pontos estão espalhados por todo o lugar. Então este é um exemplo de baixa tendência e alta variância. Se avançarmos para este, para o canto superior direito, vemos aqui que são pontos, todos eles são consistentemente distorcidos de onde deveriam estar para o noroeste aqui. Então este é um exemplo de alta tendência em nossas previsões em que eles estão consistentemente fora de uma certa quantidade, e nós temos baixa variação porque eles estão todos agrupados firmemente em torno deste ponto errado. Mas pelo menos eles estão juntos, então estamos sendo consistentes. Nossas previsões e isso é baixa variação. Mas os preconceitos altos assim, novamente, este é um alto preconceito. Baixa variância neste exemplo. No canto inferior esquerdo, você pode ver que nossas previsões estão espalhadas pelo ponto médio errado. Então, temos preconceito alto, tudo distorcido para algum lugar onde não deveria estar. Mas nossa variância também é alta, então essa é a pior de ambos os mundos. Aqui temos alto viés e alta variância neste exemplo. E, finalmente, em um mundo maravilhoso e perfeito, teríamos um exemplo, como a imagem inferior direita aqui, onde temos baixa tendência, onde tudo centrado em torno de onde deveria estar e baixa variância, onde as coisas estão agrupadas muito firmemente em torno de onde deveriam estar. Então, em um mundo perfeito, é com isso que você acaba. Mas na realidade, muitas vezes você precisa escolher entre um ou outro Então vamos dar uma olhada neste exemplo um pouco de uma maneira diferente de pensar em viés e variância aqui. Então aqui nós temos uma linha reta e você pode pensar nisso como estar tendo um muito baixo variantes em relação a essas observações. Ok, então não há muitas variantes nesta linha baixa variância para o viés. Você sabe, o erro de cada ponto individual. Na verdade, é alto. Ok, agora contrasta isso com estes dados ajustados aqui onde nós meio que saímos do nosso caminho para encaixar essas observações. Esta linha tem alta variância, mas baixa tendência porque cada ponto individual é muito próximo onde deveria estar. Então este é um exemplo de onde nós trocamos, variação por viés. Agora, no final do dia, você não está fora para apenas reduzir viés ou apenas reduzir variantes. Você quer reduzir o erro, certo? Isso é o que realmente importa. E acontece que você pode expressar erro em função de viés e variância, então o erro é igual a comprar um quadrado mais variantes. Portanto, essas 10 coisas contribuem para o erro geral com viés realmente contribuindo mais, mas tenha em mente, é a área que você realmente quer minimizar, não o viés ou a variante específica e excessivamente complexa. Modelo provavelmente vai acabar tendo uma alta variância e baixo viés, enquanto que um modelo de dois simples terá baixa variância e alta, mas viés. Mas ambos podem acabar tendo termos de erro semelhantes no final do dia. Então você só tem que encontrar o meio feliz certo dessas duas coisas quando você está tentando ajustar seus dados e vamos falar sobre algumas maneiras mais princípios de realmente evitar excesso encaixe em nossas próximas palestras. Mas é apenas o conceito de viés e variância que eu quero passar porque as pessoas falam sobre isso. Espera-se que saibas o que significa se ligarmos isso a alguns conceitos anteriores . Neste curso. Por exemplo, em K vizinhos mais próximos, se aumentarmos o valor de K, começamos a espalhar nosso bairro que estava em média para alertar uma área maior . Então isso tem o efeito de diminuir as variantes porque nós estamos meio que suavizando as coisas um espaço maior, mas pode aumentar nosso viés porque nós estaremos captando uma população maior que pode ser cada vez menos relevante ao ponto Começamos a partir de. Então, ao suavizar a lata e em um número maior de vizinhos, podemos diminuir a variação porque estamos suavizando as coisas em mais valores. Mas podemos estar introduzindo viés porque estamos introduzindo mais e mais pontos que são menos, a menos que relacionados com o ponto que começamos com árvores de decisão e outros exemplos. Então sabemos que uma única decisão árvores proto sobre encaixe, modo que pode implicar que ele tem uma alta variância. Mas as florestas aleatórias procuram trocar parte dessa variância por redução de viés. E ele faz isso por ter várias árvores que são aleatoriamente variantes e médias de todas as soluções lá juntas. Então, tipo, quando mediamos as coisas. Ao aumentar K e K e N, podemos avaliar os resultados de uma árvore de decisão usando mais de uma árvore de decisão usando florestas aleatórias. Ideia semelhante. Então essa é a idéia básica de variância de viés na troca de variância de viés. Espero que faça pouco sentido. Vamos seguir em frente. Então isso é tendencioso. Vários negociam fora, Você sabe, novamente, há às vezes a decisão que você tem que tomar entre a precisão geral de seus valores e como espalhados ou quão firmemente agrupados eles são. Então essa é a troca de variação de viés e ambos contribuem para o erro geral, que é a coisa que você realmente se importa em minimizar, então tenha esses termos em mente. 59. Validação de cruz à velha: No início do curso, falamos sobre o teste de trem como uma boa maneira de evitar o excesso de ajuste e realmente prever, medindo o quão bem o seu modelo pode funcionar nos dados. Nunca tinha visto antes. Podemos levar isso para o próximo nível com uma técnica chamada validação cruzada de k fold. E vamos falar sobre isso em seguida é uma ferramenta importante em seu baú de ferramentas para lutar contra overfitting. Então vamos falar sobre outra ferramenta poderosa em seu arsenal para lutar contra overfitting, K-fold validação cruzada. E você deve se lembrar que falamos sobre teste de trem no início deste curso sobre uma boa maneira de lutar por ajuste também. validação cruzada de dobra K torna o teste de trem ainda melhor. Então vamos aprender como isso funciona. Então, se você se lembra do teste de trem, a idéia era que nós dividimos todos os nossos dados que estamos construindo um modelo de aprendizado de máquina baseado em dois segmentos, um conjunto de dados de treinamento e um conjunto de dados de teste. A idéia é que treinamos nosso modelo usando apenas os dados em nosso conjunto de dados de treinamento. E então avaliamos seu desempenho usando os dados que reservamos para um conjunto de dados de teste que nos impede de se adequar aos dados que temos porque estamos testando o modelo em relação a dados que ele nunca viu antes. No entanto, treinados ainda tem suas limitações. Você ainda pode acabar se ajustando ao seu teste específico de trem. Talvez seu conjunto de dados de treinamento não seja realmente representativo de todo o conjunto e muita coisa acabou em seu conjunto de dados de treinamento que distorce as coisas. Então é aí que entra a validação cruzada de K-fold. É preciso teste de trem e chuta um entalhe. Então a ideia, embora pareça complicada, é bastante simples. Em vez de dividir nossos dados em dois baldes, um para treinamento e outro para testes. Nós dividimos em k baldes. Para cada bucket, usaremos esse bucket como nosso conjunto de dados de teste e usaremos os dados restantes como dados de treinamento. Em seguida, medimos a pontuação de erro ao quadrado r resultante usando esse bucket como nossos dados de teste. Em seguida, passamos para o próximo de nossos baldes K e usamos como nossos dados de teste e os restantes k menos 1 baldes como nossos dados de treinamento e medimos o erro novamente. Continuamos fazendo isso até que tenhamos tentado usar todos os k baldes como nosso conjunto de testes. E nós apenas mediamos todas as pontuações R-quadrado que acabamos com para obter uma medida mais robusta da precisão do nosso modelo. E isso é tudo o que é. A validação cruzada de dobra K é uma maneira mais robusta de fazer o teste de trem, e essa é uma maneira de fazê-lo. Existem outras variações sobre isso. Por exemplo, você pode reservar um bucket como seus dados de teste e em seguida, treinar contra os baldes individuais restantes e fazer uma média dessas pontuações juntos. Mas a técnica descrita neste slide é como o scikit-learn faz isso, e é com isso que vamos jogar a seguir. Então, felizmente, scikit-learn torna isso muito fácil de fazer e é ainda mais fácil do que fazer teste de trem normal. É extremamente simples fazer a validação cruzada de k fold, então você pode muito bem apenas fazê-lo. Agora, a maneira como tudo isso funciona nas práticas, você terá um modelo que você está tentando ajustar e você terá diferentes variações desse modelo ou parâmetros diferentes que você pode querer ajustar nele. Por exemplo, o grau de polinômio para um ajuste polinomial. Então, a idéia é tentar valores diferentes do seu modelo. Diferentes variações, mede-as todas usando validação cruzada de k fold e encontre aquela que minimiza o erro em relação ao seu conjunto de dados de teste. E esse é o seu ponto ideal. Então, na prática, você deseja usar a validação cruzada k para medir a precisão do seu modelo em relação a um conjunto de dados de teste. E continue refinando esse modelo. Continue tentando valores diferentes dentro dele, continue tentando diferentes variações desse modelo ou talvez até mesmo diferentes modelos inteiramente até encontrar a técnica que reduz o erro do mais usando a validação cruzada de k fold. Vamos mergulhar em um exemplo e ver como ele funciona. Vamos aplicar isso ao nosso conjunto de dados Iris novamente, revisitando o SVC. E vamos jogar com a validação cruzada k e ver como é simples. Vamos realmente colocar k-fold cross-validation e train-test em prática aqui, usando algum código Python real, você verá que é realmente muito fácil de usar, que é uma coisa boa porque esta é uma técnica que você deve ser usando para medir a precisão, a eficácia de seus modelos e aprendizagem supervisionada. Então vá em frente e abra a validação cruzada K-fold nenhum livro e siga junto se você quiser. E vamos olhar para o conjunto de dados da Iris novamente. Novamente, lembre-se que introduzimos isso quando falamos sobre redução da dimensionalidade. E apenas para atualizar sua memória, o conjunto de dados Iris contém um conjunto de 150 medições de flores de íris. Cada flor tem um comprimento e largura de seu pedal e um comprimento e largura de sua sépala. E então também sabemos a qual das três espécies diferentes de íris cada flor pertence. Então o desafio aqui é criar um modelo que possa prever com sucesso a espécie de flor da íris apenas dado o comprimento e largura de sua pétala e sépala. Está bem. Então vamos em frente e fazer isso. Vamos usar o modelo SVC. Se te lembrares outra vez, é só uma forma de classificar os dados que é bastante robusto. Há uma palestra sobre isso se precisar refrescar sua memória. Então o que vamos fazer é usar a biblioteca de validação cruzada do Scikit-learn. E vamos começar fazendo apenas uma divisão convencional de testes de trem. Apenas um único teste de trem dividido e ver como isso vai funcionar. Para fazer isso, temos uma função de divisão de teste de trem que torna muito fácil. Então a maneira como isso funciona é que podemos alimentar, treinar, testar, dividir, um conjunto de dados de recursos. Os dados de ponto da íris contêm apenas todas as medidas reais de cada flor. E Íris ponto alvo, que é basicamente o que estamos tentando prever. Então, neste caso, contém todas as espécies para cada flor. E nosso tamanho de teste aqui diz, qual porcentagem queremos treinar versus testes. Então 0,4 significa que vamos extrair 40% desses dados aleatoriamente para fins de teste e você 60% para fins de treinamento. E o que isso nos dá de volta é para conjuntos de dados, basicamente um treinamento para um conjunto de dados de treinamento e um conjunto de dados de teste para os dados de recurso e os dados de destino. Assim, o trem x acaba contendo 60% de nossas medidas de íris e o teste X contém 40% das medições usadas para testar os resultados do nosso modelo. E o comboio y e o teste y contêm as espécies reais para cada um desses segmentos. Então vamos em frente e construir um modelo SVC para prever espécies de Íris dadas suas medidas aqui. E você verá que estamos construindo isso apenas usando os dados de treinamento. Então vamos ajustar este modelo SVC usando um kernel linear usando apenas os dados de recurso de treinamento e os dados de destino de dados de espécies de treinamento. E vamos chamar esse modelo de CLF. Agora podemos chamar a função de pontuação no CLF para apenas medir seu desempenho em relação ao nosso conjunto de dados de teste. Então vamos marcar este modelo contra os dados de teste que reservamos para as medições da íris e as espécies de íris de teste e ver o quão bem ele funciona. E acontece que faz muito bem. Mais de 96% das vezes o nosso modelo é capaz de prever corretamente a espécie de uma íris que nunca tinha visto antes, apenas com base nas medidas da íris. Então isso é muito legal. Mas este é um conjunto de dados bastante pequeno, 150 flores, se bem me lembro, então estamos usando apenas 60% de 150 flores para treinamento e apenas 40% de 150 flores para testes. Estes ainda são números bastante pequenos, então. Nós ainda podemos estar sobreajustando nosso teste específico de trem dividido que fizemos. Então vamos usar a validação cruzada k para proteger contra isso. E acontece que usar a validação cruzada de k fold, mesmo sendo uma técnica mais robusta, é na verdade ainda mais fácil de usar do que o teste de trem. Então isso é muito legal. Então vamos ver como isso funciona. Então já temos um modelo, o modelo SVC que definimos para esta previsão. E tudo que você precisa fazer é chamar a pontuação cruzada Val no pacote de validação cruzada. Então você passá-lo em um modelo de um determinado tipo e todo o conjunto de dados que você tem. Então estes são todos os meus dados de características e todos os meus dados alvo, todas as medidas, todas as espécies. E nós vamos dizer, eu quero uma validação cruzada dobras de cinco. E isso significa que ele vai realmente usar cinco conjuntos de dados de treinamento diferentes, ok? Ao reservar um para testes. Basicamente, ele vai executá-lo cinco vezes. E isso é tudo o que precisamos fazer para avaliar automaticamente nosso modelo em relação a todo o conjunto de dados, dividir cinco maneiras diferentes e nos devolver os resultados individuais. Então, se imprimir de volta a saída disso, ele nos dá de volta uma lista da métrica de erro real de cada uma dessas iterações, cada uma dessas dobras. E podemos mediá-los juntos para obter uma métrica de erro geral baseada na validação cruzada de k fold. E quando fazemos isso em cinco vezes, podemos ver que nossos resultados são ainda melhores do que pensávamos 98% de precisão. Então isso é muito legal. Na verdade, em algumas corridas tivemos precisão perfeita. Então, coisas incríveis. Então vamos ver se podemos fazer melhor ainda. Estamos usando um kernel linear aqui. E se usássemos um núcleo polinomial? E Deus, ainda mais chique, isso será sobreajustado ou caberá melhor nos dados que temos? Depende se há realmente uma relação linear ou uma relação polinomial entre essas medições de pétalas e a espécie real ou não. Então vamos tentar isso. Vamos executar tudo isso novamente usando a mesma técnica, mas desta vez vamos usar um kernel polinomial e vamos fazer a mesma coisa, vai caber isso ao nosso conjunto de dados de treinamento. E isso realmente importa? Nós encaixamos para você neste caso, porque cross Val pontuação vai apenas continuar re-rodando para você. E acontece que filmes um ajuste polinomial, acabamos com uma pontuação geral que é ainda menor do que nossas corridas originais. Então isso nos diz que o kernel polinomial provavelmente está sobreajustado. Quando usamos a validação cruzada de k fold, revolta revela com uma pontuação real mais baixa do que com o nosso kernel linear. E o ponto importante aqui é que, se usarmos apenas uma divisão de teste de trem, fomos ter percebido que teríamos realmente obtido o mesmo resultado se fizéssemos uma única divisão de teste de trem aqui como fizemos no núcleo linear. Então, podemos inadvertidamente estar sobreajustando nossos dados lá e nem sequer ter sabido que se não usássemos a validação cruzada de k fold. Então bom exemplo aqui de onde k-fold vem para o resgate e avisa que você tem excesso de ajuste onde uma única divisão de teste de trem inquilino pode não ter pego isso. Então mantenha isso no seu baú de ferramentas. Você quer brincar com isso um pouco mais. Vá em frente e tente graus diferentes. Então nós tentamos. Você pode realmente especificar um número diferente de graus. O padrão é três graus para o kernel polinomial. Mas você pode tentar diferente, você pode tentar. Será que isso faz melhor? Se você descer para um que se degrada basicamente para um núcleo linear, certo? Então talvez ainda haja uma relação polinomial e talvez seja apenas um polinômio de segundo grau. Então vá descobrir, experimente e veja o que você ganha de volta. Então vá brincar com isso. Isso é validação cruzada K-fold. Isso é validação cruzada K-fold. Como você pode ver, é muito fácil de usar graças ao scikit-learn. Então use-o. É uma maneira importante de medir o quão bom seu modelo é de uma maneira muito robusta. 60. Limpeza de dados e normativa: Agora, esta é uma das mais simples, mas ainda assim pode ser a palestra mais importante em todo este curso. Vamos falar sobre a limpeza de seus dados de entrada, que você vai gastar muito do seu tempo fazendo e quão bem você limpa seus dados de entrada e entende que seus dados de entrada brutos vai ter um enorme impacto na qualidade de seus resultados, talvez até mais do que o modelo que você escolhe ou quão bem você ajusta seus modelos. Então preste atenção. Isto é importante. Então vamos falar sobre uma verdade inconveniente da ciência de dados. E é isso que você gasta a maior parte do seu tempo, na verdade, apenas limpando e preparando seus dados e, na verdade, relativamente pouco deles analisando-os e experimentando novos algoritmos. Então não é tão glamoroso como as pessoas podem parecer ser o tempo todo. Mas isso é uma coisa extremamente importante para prestar atenção, então há um monte de coisas diferentes que você pode encontrar em dados brutos que entram em você apenas dados brutos vai ser muito sujo. Vai ser poluído em Maio de maneiras diferentes. E se você não lidar com isso. Isso vai distorcer seus resultados, e acabará em seu negócio tomando as decisões erradas. E se você sabe o que vem de volta que você cometeu um erro em que você ingeriu um monte de dados ruins e não levou em conta isso não limpou esses dados. E o que você disse ao seu negócio era fazer algo baseado nesses resultados que mais tarde se tornaria completamente errado. Você vai estar em apuros, então preste atenção. Há um monte de diferentes tipos de problemas Índia que você precisa ter cuidado. Um deles está fora mentirosos. Então talvez você tenha, você sabe, pessoas que estão se comportando estranhamente em seus dados. E quando você investigá-los, eles acabam por ser, você sabe, dados que você não deveria estar olhando em primeiro lugar. Um bom exemplo seria se você está olhando para os dados de log da Web e você vê uma sessão I d. que continua voltando uma e outra vez, continua fazendo algo a um ritmo ridículo que um humano nunca poderia fazer. Mas você provavelmente está vendo que há um robô, você sabe, um script que está sendo executado em algum lugar para realmente raspar seu site, ou pode até ser algum tipo de ataque malicioso. Mas, de qualquer maneira, você não quer que esses dados de comportamento informem seus modelos que são feitos para prever o comportamento de seres humanos reais usando seu site. Então, observar por outliers é uma maneira de identificar tipos de dados que você pode querer remover se o seu modelo, quando você está construindo dados ausentes, o que você faz quando a data simplesmente não está lá? Voltando ao exemplo de um weblog? Você pode ter uma referência nessa linha ou você pode não. O que você faz se não estiver lá? Você cria novas classificações A para ausentes ou não especificadas? Ou você joga essa linha completamente fora? Você tem que pensar sobre o que é a coisa certa a fazer. Há dados maliciosos como falamos? Pode haver pessoas tentando jogar seu sistema. Pode haver pessoas tentando enganar o sistema, e você não quer que essas pessoas se safem. Digamos que você está fazendo um sistema er recomendado. Pode haver pessoas lá fora tentando fabricar dados de comportamento ou apenas para promover seu novo item. Certo? Então você precisa estar atento a esse tipo de coisa e ter certeza de que você está identificando esses ataques de bombardeio ou outros tipos de ataques em seus dados de entrada e filtrando-os dos resultados. E não os deixe ganhar dados errôneos. E se houver um software? Mas em algum lugar em algum sistema, isso é apenas escrever os valores errados em algumas situações. Isso pode acontecer, infelizmente, não é uma boa maneira para você saber sobre isso, Mas se você vê dados que apenas parece suspeito ou os resultados não fazem sentido para você, cavar profundamente o suficiente às vezes pode descobrir um que está fazendo com que os dados errados sejam gravados em primeiro lugar. Talvez as coisas não estejam sendo combinadas corretamente em algum momento. Talvez as sessões não estejam sendo realizadas durante toda a sessão. As pessoas podem estar desistindo de sua sessão i D e obtendo novas ideias de sessão à medida que passam por um site, por exemplo, dados irrelevantes. Você sabe, muito simples. Um aqui pode ser o seu único interesse em dados de pessoas de Nova York ou algo assim. Por alguma razão. Nesse caso, todos os dados de pessoas do resto do mundo são irrelevantes. O que você está tentando descobrir e a primeira coisa que você queria era apenas jogar todos os dados e restringir seus dados. Limite-o para os dados que você realmente se importa. Dados inconsistentes. Este é um grande problema. Está bem. Por exemplo, em endereços, as pessoas podem escrever o mesmo endereço de várias maneiras diferentes. Eles podem abreviar rua ou não abreviar Street. Eles podem não colocar a rua no final do nome da rua. Eles podem combinar linhas de maneiras diferentes. Podem soletrar as coisas de forma diferente. Eles podem usar um CEP nos EUA ou um CEP mais quatro nos EUA. EUA Eles podem ter um país nele. Eles podem não ter um país nele. Você precisa descobrir de alguma forma quais são as variações que você vê, e como posso normalizá-las todas juntas? Talvez eu esteja olhando para dados sobre filmes e um filme pode ter nomes diferentes em diferentes países ou um livro pode ter nomes diferentes em diferentes países, mas eles significam a mesma coisa. Então você precisa descobrir que você precisa olhar para fora para essas coisas onde você precisa normalizar seus dados, onde os mesmos dados podem ser representados de muitas maneiras diferentes, e você precisa combiná-los para obter os resultados corretos. Ok, formatação isso também pode ser um problema. As coisas podem ser formatadas de forma inconsistente. Tomemos o exemplo de datas nos EUA que sempre fazemos mês, dia ano. Mas em outros países eles podem fazer dia, mês, ano, quem sabe? Mas você precisa estar ciente dessas diferenças de formatação podem ser números de telefone. Tem parênteses ao redor do código de área. Talvez não saibam. Talvez tenham traços entre cada seção dos números. Talvez não saibam. Talvez os números da Segurança Social tenham traços. Talvez não saibam. Estas são todas as coisas que você precisa ter cuidado. E você precisa ter certeza de que as variações na formatação não são tratadas como entidades diferentes ou classificações diferentes durante o processamento. Então, muitas coisas para ter cuidado. E isso é apenas ah, apenas os principais para estar ciente. Ok, lembre-se de lixo no lixo fora. Seu modelo é tão bom quanto o dia que você dá a ele, e isso é extremamente, extremamente verdade. Você sabe que você poderia ter um modelo muito simples que funciona muito bem se você dar-lhe uma grande quantidade de dados limpos e ele poderia realmente superar um modelo complexo em um conjunto de dados mais sujo . Então, você sabe, certificar-se de que você tem dados suficientes e dados de alta qualidade muitas vezes é a maior parte da batalha. Ficaria surpreso como são simples alguns dos algoritmos mais bem sucedidos usados no mundo real . E só há sucesso em virtude da qualidade dos dados que entram nele e da quantidade de dados que entram nele. Você sabe, você nem sempre precisa de técnicas chiques para obter bons resultados. Muitas vezes, a qualidade e a quantidade de seus dados contam tanto quanto qualquer outra coisa. E sempre questiona seus resultados. Sabe, você não quer voltar, procurar anomalias e seus dados de entrada. Apenas quando você obtém um resultado que você não gosta, você sabe que irá introduzir um viés involuntário em seus resultados, onde seus principais resultados que você gosta ou espera, passam por inquestionáveis, certo? Você quer questionar as coisas o tempo todo para ter certeza de que você está sempre cuidando dessas coisas porque mesmo se você encontrar um resultado que você gosta. Se for errado, ainda está errado. Ainda vai informar a sua empresa na direção errada, e isso pode voltar a morder-te mais tarde. Então, como exemplo, eu tenho um site chamado No Hate News. Não é lucro, então não estou tentando ganhar dinheiro falando sobre isso. Mas digamos que eu só quero encontrar as páginas mais populares neste site que eu possuo. Isso soa como um problema bem simples, não é? Eu só deveria ser capaz de percorrer meus logs da Web e contar quantos hits cada página tem e classificá-los corretamente. Quão difícil pode ser? Bem, acontece que é muito difícil. Então vamos mergulhar neste exemplo e ver por que e ver alguns exemplos de limpeza de dados do mundo real que tem que acontecer. Então vamos ver o quão importante a limpeza de dados pode ser. Temos uma tarefa muito simples pela frente. Encontre as páginas de visualização superior em um site muito pequeno. Quão difícil pode ser? Bem, vamos mergulhar nisso em seguida e ver o quão difícil é 61. Como limpar dados de log de de web: Então vamos mostrar a importância de limpar seus dados. Ter alguns dados de log da Web de um pequeno site que eu possuo, e nós vamos apenas tentar encontrar as melhores páginas visualizadas nesse site. Parece muito simples, mas como você verá, é realmente bastante desafiador. Então vamos passar por um exemplo simples. Na verdade, não é tão simples onde eu só quero descobrir as páginas da Web mais visualizadas no meu site. Parece muito fácil, não é? Bem, vamos ver. Então, se você quiser seguir ao longo das páginas superiores I caderno Python é aquele que estamos trabalhando a partir daqui. E vamos começar então realmente ter um log de acesso que eu tirei do meu site real. É um log de acesso http riel do Apache, e que está em seus materiais do curso. Então eu fui e peguei este pequeno trecho de código na Internet que vai analisar um logline de acesso Apache em um monte de campos. Então ele contém coisas como o host e o usuário e a hora e as solicitações de página reais e status, e eles se referem, e o agente do usuário, o que significa que navegador realmente foi usado para visualizar esta página. Então este acúmulo foi chamado de expressão regular, e estamos usando a biblioteca Ari para usá-lo. E isso é basicamente uma linguagem muito poderosa para fazer correspondência de padrões em uma string grande . Então, usando essa expressão regular, podemos realmente aplicar isso a cada linha do nosso log de acesso e agrupar automaticamente os bits de dados, os bits de informação nesse logline de acesso nesses campos diferentes. Ok, então se você quiser jogar junto aqui, certifique-se de atualizar o caminho para mover o log de acesso para onde você salvou o material do curso para este curso e vamos em frente e executar isso. Certo, então temos um caminho para o nosso arquivo de dados. Então, a coisa óbvia a fazer aqui, vamos preparar um pequeno script que conta cada um. Você é l que encontramos que foi solicitado e mantém contagem de quantas vezes foi solicitado. Então podemos classificar essa lista e acertar nossas páginas de cima? Parece bastante simples. Então vamos construir um pequeno dicionário python aqui chamado suas contas, e vamos abrir nosso arquivo de log e para cada linha, vamos aplicar nossa expressão regular. E se ele realmente voltar com uma correspondência bem sucedida para o padrão que estamos tentando igualar , vai dizer, OK, isso parece uma linha decente em nosso registro de acesso. Vamos extrair o campo de solicitação dele, que é a solicitação http real. Qual página está realmente sendo solicitada pelo navegador dividir isso em seus três componentes. Um concurso consiste em, ah, ação como obter o nosso post, o ano real L sendo solicitado e o protocolo sendo usado. Então, dada a informação dividida, podemos então apenas ver se você é l já existe no meu dicionário. Se assim for, aumentarei a contagem de quantas vezes a Europa foi encontrada por uma. Caso contrário, introduzirei uma nova entrada no dicionário. Para isso, sua Ellen inicializá-lo com o valor de um. Faço isso para cada linha no registro, ordeno os resultados em sentido inverso, ordeno numericamente e imprimo-o. Então vamos em frente e executar isso. Oops. Acabamos com esse grande e velho erro aqui, e está nos dizendo que precisamos de mais de um valor para impactar. Então, aparentemente, estamos recebendo alguns campos de solicitação que não contêm uma ação por ano em um protocolo. Contém outra coisa. Vamos ver o que está acontecendo lá. Então, se imprimirmos todas as solicitações que não contêm três itens, podemos ver o que realmente está aparecendo aqui. Então nós vamos fazer Aqui está um pequeno trecho de código semelhante, mas nós vamos realmente fazer isso. Dividir no campo de solicitação e imprimir casos em que não obtemos os três campos esperados e ver o que realmente está lá dentro. Quer dizer, um monte de campos vazios, esse é o nosso primeiro problema. Mas depois temos este sentimento seguir, apenas lixo. Sabe, quem sabe de onde isso veio. São dados claramente errôneos, então tudo bem. Vamos modificar o nosso script vai realmente apenas jogar fora quaisquer linhas que não têm os três campos esperados na solicitação. E isso parece uma coisa legítima a se fazer, porque isso, de fato , tem dados completamente inúteis dentro dele. Não é como se estivéssemos perdendo nada por fazer esse script tão bem modificador. Para fazer isso, nós introduzimos isso se emprestar campos é igual a três leões antes que ele realmente tente processá-lo , e vamos executar isso Hey, nós temos um resultado, mas isso realmente não se parece com o topo páginas no meu site. Lembre-se, este é um site de notícias. Então, estamos recebendo muito dos hits de arquivos PHP. Isso é, você sabe, scripts PERL. O que está acontecendo? Há resultado superior É este xml rpc dot PHP script e, em seguida, WP log in dot PHP seguido pela página inicial. Portanto, robôs não muito úteis ponto texto no grupo de arquivos XML. Sabe, quando investiguei isso mais tarde, descobri que meu ligeiro estava sob um ataque malicioso. Alguém estava tentando invadir isso, e esse script XML RPC era a maneira como eles estavam tentando adivinhar minhas senhas, e eles estavam tentando fazer login usando o script de logon e, felizmente, e, felizmente, eu desligue-los antes eles poderiam realmente chegar a este site. Mas este foi um exemplo de dados maliciosos sendo introduzidos no meu fluxo de dados que eu tenho filtrar. Então, você sabe, olhando para esse enfraquecimento, veja que não só foi aquele ataque malicioso, você sabe, olhando para arquivos PHP, mas também estava tentando executar coisas. Então não estava apenas fazendo um pedido de “get”. Ele estava fazendo um pedido de postagem no roteiro. Na verdade, tente executar código no meu site. Agora eu sei que os dados que eu me importo com você sabe, no espírito da coisa que eu estou tentando descobrir, são as pessoas recebendo páginas da Web do meu site. Então, uma coisa legítima para eu fazer é filtrar qualquer coisa que não seja um pedido get fora dessas perdas. Vamos fazer esse ninho. Então vamos verificar novamente se temos três campos em nosso campo de solicitação, e então nós também vamos verificar se a ação é get. E se não for, vamos ignorar essa linha completamente. Então devemos estar mais perto do que queremos agora. E, sim, isso está começando a parecer mais razoável, mas ainda não passa um cheque de areia. Este é um site de notícias. As pessoas vão até ele para ler notícias, e eles estão realmente lendo meu blogueiro sobre isso? Isso só tem alguns artigos? Eu acho que não. Isso parece um pouco suspeito, então vamos mergulhar um pouco e ver quem realmente está olhando para essas páginas blawg. se você realmente entrar nesse arquivo e examiná-lo manualmente, você veria que muitas dessas solicitações Blawg não têm realmente nenhum agente de usuário no GDT . Eles só têm um usuário. Agente de Dash, que é altamente incomum por causa de um ser humano real com um navegador real, estava tentando obter esta página. Diria algo como Mozilla ou Internet Explorer ou algo assim, certo? Ou cromo? Então parece que isso solicita ar vindo de algum tipo de raspador novamente, tráfego potencialmente malicioso que não está identificando quem é ISS. Então, OK, talvez devêssemos estar olhando para os agentes de usuários para ver se estes são humanos reais fazendo pedidos ou não. Vamos em frente e imprimir todos os diferentes agentes de usuários que estavam encontrando. Então, no mesmo espírito do código que realmente resumiu o diferente que você ou então nós estamos vendo. Podemos olhar para todos os diferentes agentes de usuário que estávamos vendo e classificá-los pelas cadeias de caracteres de Agentes do usuário mais populares neste log e você pode ver que a maioria parece legítima, então você sabe que é pelo menos se é um raspador, e neste caso, na verdade não foi um ataque malicioso, mas eles estavam fingindo ser um navegador legítimo. Mas este agente de usuário traço aparece muito para, então eu não sei o que é isso, mas eu sei que não é um navegador natural. Um navegador de verdade, você sabe, seria algo mais parecido com isso. A outra coisa que estou vendo é muito tráfego de aranhas de webcrawler. Então por fazer é um motor de busca na China. Google comprou aviso, rastreando a página. Acho quevi o Yandex aqui para omotordebusca russo. que Acho quevi o Yandex aqui para o de Então, nossos dados estão sendo poluídos por muitos rastreadores que estão apenas tentando minar nosso site para fins de mecanismo de busca. E, novamente, esse tráfego não deve contar para o propósito pretendido da minha análise de ver quais páginas os seres humanos reais estão olhando no meu site. Estes são todos scripts automatizados. Tudo bem, então isso fica um pouco complicado. Você sabe, não há uma boa maneira de identificar aranhas ou robôs apenas com base na string do usuário sozinho, mas podemos pelo menos pegar uma rachadura legítima e filtrar qualquer coisa que tenha a palavra botnet ou qualquer coisa da minha ficha de dinheiro que possa estar solicitando páginas com antecedência também. E também vamos tirar o nosso amigo único traço. Então, vamos mais uma vez refinar o nosso script para, além de tudo o resto strip out e um usuário agentes que parecia suspeito e o que temos . Tudo bem, então aqui nós Oh ho, isso está começando a parecer mais razoável para as 2 primeiras entradas. A página inicial é mais popular, o que seria esperado. Orlando Headlines também é popular porque eu uso este site mais do que qualquer outra pessoa, e eu vivo em Orlando. Mas temos um monte de coisas que não são páginas brancas. Bando de scripts de muitos arquivos CSS. Não são páginas da Web. Então, novamente, eu poderia apenas aplicar algum conhecimento sobre o meu site onde acontece de eu saber que todas as páginas legítimas no meu site Justin com uma barra em seu euro. Então vamos em frente e modificar isso de novo para tirar qualquer coisa que não termine com uma barra . Finalmente, estamos obtendo alguns resultados que parecem fazer sentido. Então, parece que a página superior solicitada de seres humanos reais no meu pequeno site de notícias sem ódio é a página inicial, seguida por manchetes de Orlando seguido pelo World News seguido pelos quadrinhos do que o tempo na tela sobre. Então isso está começando a parecer mais legítimo. Se você fosse cavar ainda mais fundo, no entanto, você vê que ainda há problemas com esta análise. Por exemplo, essas páginas de alimentação ar ainda vindo de robôs apenas tentando obter dados X RSS do meu site . Portanto, esta é uma ótima parábola e como uma análise aparentemente simples requer uma enorme quantidade de pré-processamento e limpeza dos dados de origem antes de obter resultados que façam algum sentido. E novamente, certifique-se de que as coisas que você está fazendo para limpar seus dados ao longo do caminho ou princípios e você não é apenas problemas de escolha cereja que não coincidem com suas noções preconcebidas. Então sempre questione seus resultados. Sempre olhe para seus dados de origem e procure por coisas estranhas que estão nele. Tudo bem. Se você quiser, tipo, tipo, enviar mais uma mensagem, você pode resolver o problema do feed. Vá em frente e tire coisas que incluem feed, porque sabemos que isso não é uma página web real e apenas para ter alguma familiaridade com o código ou ir olhar para a lei um pouco mais de perto, você sabe, ganhar alguns compreensão de onde essas páginas de feed estão realmente vindo. E talvez haja uma maneira ainda melhor e mais robusta de identificar esse tráfego como uma classe maior. Então sinta-se livre para mexer com isso. Mas espero que tenhas aprendido a lição. Limpeza de dados extremamente importante, e vai levar muito do seu tempo. Então, é bastante surpreendente como foi difícil obter alguns resultados razoáveis sobre a simples questão como, Quais são as poucas páginas no meu site? E você pode imaginar se tanto trabalho teve que ir para limpar os dados para um problema tão simples . Pense em todas as maneiras que os dados sujos podem realmente impactar os resultados de problemas mais complexos e algoritmos complexos. Muito importante para entender seus dados de origem. Olhe para ele. Olhe para uma amostra representativa. Certifique-se de entender o que está entrando em seu sistema e sempre questionar seus resultados e vinculá-lo de volta aos dados de origem originais para ver de onde vêmos resultados questionáveis vêm 62. Normalizando dados numerais: Esta é uma palestra muito rápida. Eu só quero lembrá-lo que às vezes você precisa normalizar ou branco em seus dados entrando em um algoritmo. Então mantenha isso na parte de trás da sua cabeça porque às vezes isso afetará a qualidade de seus resultados. Se não der um sermão tão rápido aqui. Eu só quero lembrá-lo sobre a importância às vezes de normalizar seus dados, certificando-se de que seus vários dados de recursos de entrada estão na mesma escala e são comparáveis. E às vezes importa, e às vezes não importa. Mas você só tem que estar ciente de quando isso acontecer. Assim, às vezes, os shoppings serão baseados em vários atributos numéricos diferentes. Lembre-se, como modelos multi-variantes. Você sabe, nós podemos ter diferentes atributos de um carro que estamos olhando, e eles podem não ser medições diretamente comparáveis ou, por exemplo, se estamos olhando para relações entre idades e rendimentos. As idades podem variar de 0 a 100, mas os rendimentos e dólares podem variar de zero a bilhões, e dependendo da moeda, pode ser uma faixa ainda maior. Algumas modelos estão bem com isso. Você sabe, se você está fazendo como uma regressão, geralmente isso não é grande coisa, mas outros modelos não funcionam tão bem, a menos que esses valores baixem para nós para uma escala comum. Então, se você não tiver cuidado, você pode acabar com alguns atributos contando mais do que outros. Talvez a renda acabaria contando muito mais do que a idade se você estivesse tentando tratar esses dois valores como valores comparáveis em seu modelo, modo que pode emitir também um viés e os atributos que também podem ser um problema. Então talvez você um conjunto de seus dados esteja distorcido. Você sabe, às vezes você precisa normalizar as coisas versus o alcance real visto para esse conjunto de valores , e não apenas para, ah, zero a qualquer que seja a escala máxima. E você sabe que não há nenhuma regra definida para quando você não deve fazer isso não deve fazer esse tipo de normalização. Mas tudo o que posso dizer é, sempre leia a documentação para qualquer técnica que você está usando. Assim, por exemplo, em psicologia, ele aprende sua implementação PC tem um branco e opção que irá normalizar automaticamente seus dados para você. Você provavelmente deve usar isso, e ele também tem alguns módulos de pré-processamento disponíveis que irão normalizar e dimensionar a partir de coisas para você automaticamente. Uma ondulação, você sabe. Esteja ciente, também, de dados textuais que devem ser representados numericamente ordenadamente. Então, se você tem dados sim ou não, você pode precisar converter esse dedo um ou zero e fazer isso em uma questão consistente. Então, novamente, basta ler a documentação. A maioria das técnicas funcionam bem com dados brutos normalizados. Mas antes de começar a usar um novo dado, uma nova técnica pela primeira vez, basta ler a documentação e entender se as entradas devem ou não ser dimensionadas ou normalizadas ou clareadas primeiro, e em caso afirmativo, secular provavelmente tornará muito fácil para você fazer isso você só tem que se lembrar de fazê-lo . Não se esqueça de re Scalea resultados quando você estiver pronto, se você estiver dimensionando os dados de entrada. Então, se você quiser ser capaz de interpretar os resultados obtidos, às vezes você precisa escalá-los de volta ao seu intervalo original depois de terminar. Então, se você está dimensionando as coisas e talvez até mesmo tendenciando-as para uma certa quantidade antes inseri-las em um modelo, certifique-se de que você não as qualificou e imparcial antes de realmente apresentar esses resultados para alguém ou então eles não vai fazer nenhum sentido. Certo, só um lembrete. Um pouco de uma parábola se você sempre verificar para ver se você deve normalizá-la. Branquear seus dados antes de passá-los para um determinado modelo. Então nenhum exercício associado a esta palestra é apenas algo que quero que se lembre. Só estou tentando levar o ponto para casa. Alguns algoritmos requerem clareamento de uma normalização. Alguns nem sempre lêem a documentação. Se você precisa normalizar os dados que entram em um algoritmo, ele geralmente lhe dirá isso e tornará muito fácil fazê-lo. Então fique ciente disso. 63. Como detectar os: Às vezes, seu mundo real para dados conterá outliers, e eles podem ser outliers legítimos. Eles podem ser causados por pessoas reais, e não por algum tipo de tráfego malicioso ou dados falsos, e você terá que decidir como você vai lidar com eles. Então, às vezes, é apropriado removê-los. Às vezes, não é. Certifique-se de tomar essa decisão de forma responsável. Então, por exemplo, se eu estiver fazendo filtragem colaborativa e estou tentando fazer recomendações de filmes ou algo assim, você pode ter alguns usuários avançados que assistiram a todos os filmes já feitos e avaliaram cada Um filme já feito. E eles podem acabar tendo uma influência excessiva nas recomendações para todos os outros. E você não quer que um punhado de pessoas tenha tanto poder em seu sistema. Então isso pode ser um exemplo de onde seria uma coisa legítima para filtrar um outlier e identificá-los por como Maney classificações eles realmente colocaram no sistema. Ou talvez um outlier seria alguém que não tem audiência suficiente. Ou podemos estar olhando para os dados de log da Web como vimos no nosso exemplo anteriormente, onde estamos fazendo a limpeza de dados outliers pode estar dizendo que há algo muito errado com seus dados, para começar. Pode ser tráfego malicioso. Podem ser bots ou outros agentes que devem ser descartados que não representam seres humanos reais que você está tentando modelar. Mas se alguém realmente queria, digamos a média de renda nos Estados Unidos e não o meio, eles querem especificamente a média. Você não deveria jogar fora os bilionários do país só porque você não gosta deles. O fato é que bilhões de dólares vão empurrar essa quantia média para cima, mesmo que não mude muito a mediana. Então, não fudge seus números jogando fora mentirosos, mas através de mentirosos. Se não é consistente com o que está tentando modelar agora, como identificamos mentirosos? Bem, lembra-se do nosso velho amigo desvio padrão? Abordamos isso muito cedo neste curso. É uma ferramenta muito útil para detectar outliers de uma maneira muito fundamentada. Ele calcula o desvio padrão de um conjunto de dados que deve ter uma distribuição mais ou menos normal . E se você vir um ponto de dados que está fora de um ou dois desvios padrão, lá você tem um outlier. Lembre-se, falamos sobre os diagramas de caixa e bigode para, e aqueles também têm uma maneira integrada de detectar e visualizar mentirosos. E aqueles definem outliers como deitado fora 1.5 do intervalo inter quartil. Então, qual múltiplo você escolhe? Bem, você meio que tem que usar o bom senso. Não há nenhuma regra rígida e rápida sobre o que é um outlier. Você tem que olhar para seus dados e meio que olhar para eles. Olhe para a distribuição. Olhe para a história, Graham. Veja se há coisas reais que se destacam para você é óbvio outliers e entender o que eles são antes de você simplesmente jogá-los fora. Então vamos olhar para algum código de exemplo e ver como você pode fazer isso na prática. Se você quiser acompanhar, volte para o caderno outliers em seus materiais de curso e vamos rever nosso exemplo de dados de distribuição de renda. Então, como antes, vamos usar n p dot aleatório para criar uma distribuição normal centrada em torno de US $27.000 por ano com um desvio padrão de US $15.000 irá criar 10.000 desses rendimentos normalmente distribuídos e agora apenas uma bagunça. As coisas sobem um pouco bem, através de um bilionário na mistura. Que Jeff Bezos, quem quer que você queira imaginar isso vai depender disso para a lista dos dados de renda que temos Agora você pode ver que isso estraga as coisas muito rapidamente, mesmo apenas tentando visualizar esses dados. Então são estudantes. Tentamos traçar um graham histórico desses dados. Vemos que todos os chamados, você sabe, pessoas normais que estão ganhando cerca de US $27.000 por ano aqui, neste grande pico aqui e aqui fora, US $1 bilhão. Nós temos um único ponto de dados que você nem consegue ver, mas já estragou nossa capacidade de visualizar esses dados, para que um bilionário acabasse apertando todos os outros nesta linha minúscula da nossa história. Graham e também distorceu a nossa média de forma bastante significativa. Então vamos em frente e executar isso para realmente obter esses dados no sistema aqui. Se você calcular a média, veremos que não é US$27.000. É mais como $127.000 só por causa daquele outlier. Então, é muito importante, neste caso, cavar no reboque o que está causando seus outliers e entender de onde eles estão vindo? Você quer ter certeza de que se você está jogando dados fora, é justificável. É baseado em algo de princípio, certo? Então, se o propósito desta análise era realmente entender os rendimentos de aspas americanos típicos, filtrar esse punhado de bilionários pareceria uma coisa legítima a se fazer, você só quer ter certeza de que Transparente, que você fez isso quando você está apresentando seus dados Agora há algo um pouco mais robusto que você poderia fazer no justo ditado, se você é um bilionário, eu vou jogá-lo para fora. Poderíamos dizer, por exemplo, qualquer coisa além de dois desvios padrão do valor mediano no conjunto de dados será definido como um outlier, e podemos escolher qualquer valor de desvio padrão que queremos lá. Então aqui está uma pequena função que descobre isso para nós. Eu chamei isso de rejeitar outliers. Ele começa computando a mediana de um conjunto de dados e o desvio padrão desse conjunto de dados , e esta pequena linha de código aqui apenas verifica se ou não soprar dois desvios padrão da mediana ou acima de dois padrões desvios da mediana e retorna o conjunto de dados do filtro que os joga fora. Então chamamos Filtrado igual a, rejeitar outliers renda, e isso apenas aplica essa função de filtro para todo o conjunto de dados e retorna o conjunto filtrado em seu lugar. Poderíamos então traçar esse conjunto de dados de filtro, e veremos se ele funciona. Com certeza, ele faz. E a coisa boa aqui é que ele não gosta de mim ao longo de um monte de dados, certo? Então ainda temos uma curva agradável e limpa de sino aqui, mas nosso bilionário se foi sem ter que escrever qualquer lógica especial que diga, se você ganhar mais do que $1.000.000.000 vale a pena jogá-lo fora em vez disso, baseado em um múltiplo de desvios padrão, que é um pouco mais de uma coisa de princípio para Dio e nossa média será, bem, mais significativa agora também. Vamos fazer isso antes que eu esqueça. Então, agora, se calcularmos a média do conjunto de dados filtrados que está de volta perto de US $27.000 seus resultados serão um pouco diferentes por causa da aleatoriedade envolvida. Mas nós conseguimos filtrar com sucesso são bilionários sem ter que codificar um caso especial para eles. Nós somos apenas muito princípios maneira rejeitar outliers além de dois desvios padrão da mediana. Isso é, ah, coisa razoável a se fazer. Então aqui está a atividade, pois se você quiser jogar com isso um pouco mais em vez de um único aliado bilionário, ou adicionar vários mentirosos gerados aleatoriamente aos dados, você sabe, escolher um intervalo de valores lá e apenas Jogue-os lá dentro. Experimente com diferentes valores do múltiplo, o desvio padrão para identificar esses outliers e ver o efeito que ele tem nos resultados finais . É só, ah, oportunidade de colocar suas mãos nisso e brincar um pouco mais diretamente, se você quiser. Então dê uma chance se quiser, e então seguiremos em frente 64. Engenharia de de a de a de a de de a de de a de que a de de que de de: Vamos mergulhar no mundo da engenharia de recursos, no mundo do aprendizado de máquina. O que é engenharia de recursos afinal? Bem, basicamente é o processo de aplicar o que você sabe sobre seus dados para cortar os recursos que você está usando ou talvez criar novos recursos ou transformar os recursos que você tem. O que eu quero dizer com recurso também. Esses são os atributos de seus dados de treinamento que as coisas que você está treinando, a largura do seu modelo. Vamos dar um exemplo. Então vamos dizer que estamos tentando prever quanto dinheiro as pessoas ganham com base em vários atributos das pessoas. Então suas características nesse caso podem ser a idade de uma pessoa, sua altura, seu peso, seu endereço, que tipo de carro ela dirige, várias coisas, certo? Algumas dessas coisas serão relevantes para as coisas que você está tentando prever e outras não serão. Então, o processo de engenharia de recursos é, em parte, apenas selecionando quais recursos são importantes para o que estou tentando prever e escolhendo esses recursos com sabedoria. Muitas vezes você precisa transformar esses recursos de alguma forma também. Talvez os dados brutos não sejam úteis para esse modelo específico que você está usando. Talvez as coisas precisem ser normalizadas ou dimensionadas de alguma forma, sejam codificadas de alguma forma específica. Muitas vezes você terá coisas como dados ausentes. No mundo real, muitas vezes você não tem dados completos para cada ponto de dados. E a maneira que você escolhe lidar com isso pode influenciar muito a qualidade do modelo resultante que você tem. Também às vezes você deseja criar novos recursos dos existentes que você tem. Talvez as tendências numéricas nos dados que você tem para um determinado recurso sejam melhor representadas tomando o log de lá, o quadrado dele ou algo assim. Ou talvez seja melhor tirar vários recursos e combiná-los matematicamente em um para reduzir sua dimensionalidade. Isso é tudo o que a engenharia de recursos é sobre. Você não pode simplesmente pegar todos os dados que você tem e jogá-los neste grande funil de aprendizado de máquina e esperar que coisas boas saiam do outro lado. Esta é realmente a arte do aprendizado de máquina. É aqui que sua experiência é aplicada para realmente obter bons resultados com isso. Não é apenas um processo mecânico onde você segue essas etapas, pega todos os dados que você tem, joga-os neste algoritmo e vê quais previsões você faz. Isso é o que separa os bons praticantes de aprendizado de máquina dos maus. Os que podem realmente fazer engenharia de recursos são os que são os mais bem-sucedidos e mais valiosos no mercado de trabalho, é claro. E isso não é coisa que geralmente é ensinada, certo? Então isso é em grande parte um monte de coisas que são aprendidas através da experiência e realmente estar lá fora no mundo real e praticando aprendizado de máquina. Por que a engenharia de recursos é importante em primeiro lugar? Bem, é sobre a maldição da dimensionalidade. O que queremos dizer com isso? Bem, como eu disse, você não pode simplesmente jogar todos os recursos que você tem na máquina e esperar que coisas boas aconteçam. Muitos recursos podem realmente ser muito problemáticos por algumas razões diferentes. Primeiro é que, pelo menos, um dado esparso. Então, novamente, volte ao exemplo de tentar treinar um modelo sobre atributos de pessoas. Há centenas de atributos em uma pessoa que você poderia inventar, certo? Como dissemos, idade, altura, peso, que carro você dirige? Quanto dinheiro você ganha? Onde você mora? Quem sabe? Onde você foi para a faculdade? A lista continua e continua. E você pode realmente imaginar cada pessoa como um vetor no espaço dimensional de todas essas feições. Ok, então fique comigo aqui. Imagine, por exemplo, que a única característica que temos é a idade de uma pessoa. Você poderia representar uma pessoa por um vetor ao longo de um único eixo etário, certo, indo de 0 a 100 ou o que for. Agora jogamos em outra dimensão, digamos sua altura. Temos outra dimensão e outro eixo que temos este vetor apontando para que codifica tanto sua idade em um eixo quanto sua altura em outro, certo? Então agora temos um vetor bidimensional jogado uma terceira dimensão lá, digamos quanto dinheiro eles ganham. Agora temos um vetor em três dimensões onde uma dimensão é sua idade, uma dimensão é sua altura, uma dimensão é quanto dinheiro eles ganham. E à medida que continuamos adicionando mais e mais dimensões, o espaço disponível com o qual temos de trabalhar continua a explodir, certo? Isto é o que chamamos de maldição da dimensionalidade. Assim, quanto mais recursos você tiver, maior será o espaço em que podemos encontrar uma solução. E ter um grande espaço para tentar encontrar a solução certa só torna muito mais difícil encontrar essa solução ideal. Portanto, quanto mais recursos você tiver, mais escassos seus dados se tornam dentro desse espaço de solução. E o mais difícil é encontrar a melhor solução. Então, é melhor você levar esses recursos até os que mais importam, que lhe darão dados menos escassos e tornarão muito mais fácil encontrar a solução correta. Além disso, apenas do ponto de vista do desempenho, imagine tentar criar uma rede neural que tenha entradas para cada um desses recursos codificados de qualquer maneira que ele precise, certo? Esta rede neural teria que ser enorme, extremamente ampla na parte inferior, provavelmente extremamente profunda também para realmente encontrar todas as relações entre essas muitas características. E vai ser ridiculamente difícil conseguir isso convergir para qualquer coisa. Portanto, uma grande parte do sucesso no aprendizado de máquina não é apenas usar o algoritmo, não apenas limpar seus dados, mas também escolher os dados que você está usando em primeiro lugar. E é disso que se trata a engenharia de recursos. Novamente, muito disso se resume a conhecimento de domínio e tipo de usar seu senso comum sobre o que funcionará e o que alguém faria para melhorar seu modelo e apenas experimentar coisas diferentes. O que faz um efeito e o que não faz, o que ajuda, o que dói as coisas? Então, muito disso é apenas ir e voltar com esse recurso ajuda as coisas? - Não. Está bem. Nós não vamos usá-lo. Ele faz esse recurso ajuda as coisas? - Não. Está bem. Tente outra coisa. Agora você nem sempre tem que adivinhar para ser justo, existem algumas maneiras mais fundamentadas de fazer a redução da dimensionalidade. Então, um deles é chamado de Análise de Componentes Principal da PCA. Pca é uma maneira de tomar todas essas dimensões mais altas, todas as características diferentes que você tem e destilá-los para um número menor de feições para um número menor de dimensões. E ele tenta fazer isso de uma forma que preserva as informações da melhor forma possível. Então, quero dizer, se você tem poder computacional suficiente para realmente usar PCA em um grande conjunto de recursos que é uma maneira mais baseada em princípios de destilá-lo até os recursos que realmente importam. E os recursos que você acaba com não são realmente coisas que você pode colocar um rótulo. São apenas recursos criados artificialmente que capturam a essência dos recursos com os quais você começou. K-significa agrupamento é outra maneira de fazer isso. O que é bom é que estas duas técnicas não supervisionadas, então você não precisa realmente treiná-las em nada. Você pode simplesmente lançar os dados do recurso que você tem qualquer um desses algoritmos e ele irá ferver se você quiser, um conjunto menor de dimensões que irá funcionar tão bem, espero que perto também. Mas, novamente, mais recursos não é melhor. Isso leva ao que chamamos de maldição da dimensionalidade. E essa é uma das principais razões pelas quais queremos fazer engenharia de recursos. E uma das principais coisas que você vai fazer nesse processo. 65. Técnicas de imputação para dados não se: Então, uma grande parte da engenharia de recursos é a imputação de dados ausentes. O que você faz quando seus dados têm elementos de dados ausentes nele? Isto é o que acontece no mundo real. Para cada observação que você tem, haverá alguns pontos de dados ausentes mais do que provável. Bem, a solução simples é chamada de substituição média. A idéia é que se você tiver atributos ou feições ausentes dentro de uma das linhas de seus dados, basta substituí-lo pela média de toda a coluna. E lembre-se, estamos falando de colunas, não linhas aqui. Você quer pegar a média de todas as outras observações dessa mesma característica, realmente não faz sentido tomar a média de todas as outras características para essa linha, certo? Então substituição média é tudo sobre tomar a média dessa coluna e substituir todos os valores vazios com essa média. Então é fascínio fácil. Estes são alguns dos aspectos positivos desta abordagem. Ele também não afeta a média ou o tamanho amostral de seu conjunto de dados geral porque você está apenas substituindo dados ausentes pela média. Isso não afetará a média geral de todo o conjunto de dados, o que pode ser bom. Agora, uma nuance é que se você tem um monte de outliers em seu conjunto de dados, que também é algo que você tem que lidar com ao preparar seus dados. Você pode achar que a mediana é na verdade uma escolha melhor do que a média. Então, se você tem um conjunto de dados de um monte de pessoas e talvez uma dessas colunas como renda. E algumas pessoas não relatam sua renda porque acham que é sensível. Você pode ter sua maldade distorcida por um bando de milionários e bilionários em seu conjunto de dados. Então, se você quer dizer imputação e isso é uma espécie de situação em que você tem outliers. Você pode acabar com um valor excessivamente alto ou excessivamente baixo que você está usando para substituição. Então, se você tem outliers que estão distorcendo sua média, você pode querer pensar em usar mediana em vez disso. Isso será menos sensível a esses outliers. Mas, de um modo geral, não é a melhor escolha para imputação. Primeiro de tudo, ele só funciona no nível da coluna. Portanto, se houver correlações entre outros recursos em seu conjunto de dados, ele não vai pegar neles. Então, se há uma relação entre, digamos, idade e renda, essa relação vai ser totalmente perdida. Então você pode acabar dizendo que uma criança de 10 anos está ganhando, você sabe, 50 mil dólares por ano porque essa é a média do seu conjunto de dados, mas realmente não faz sentido, certo? Quero dizer, uma criança de 15 anos não estaria ganhando tanto dinheiro ainda. Então, é uma abordagem muito ingênua desse ponto de vista. A outra questão é que você não pode realmente usá-lo em recursos categóricos. Como você entende a média de uma parte categórica de dados que simplesmente não faz sentido, certo? Embora você possa usar o valor mais freqüente que parece que a categoria mais comumente vista seria uma coisa razoável para fazer nesse caso, é uma espécie de no mesmo espírito é a substituição média, mas não realmente a mesma coisa. No geral, embora não seja um método muito preciso. É uma tentativa de imputação com presunto. Então, embora seja rápido e fácil e tenha algumas vantagens na prática. Se alguém está perguntando sobre um exame de certificação, qual é a melhor maneira de fazer a imputação de dados? Substituição média, provavelmente, não é? Também provavelmente não é apenas deixar cair as linhas que faltam. Embora, como vimos, às vezes, isso seja uma coisa razoável a se fazer. Se você tiver dados suficientes de tal forma que descartar algumas linhas não importa se você não tem muitas linhas que contêm dados ausentes. Bem, não parece tão irracional. A outra coisa também é que você quer ter certeza de que largar o Rosetta tem dados ausentes não viés seu conjunto de dados. E de alguma forma, se houver uma relação real entre quais linhas estão faltando dados e algum outro atributo dessas observações. Por exemplo, digamos que estamos olhando para a renda. Novamente. Pode haver uma situação em que as pessoas que têm rendimentos muito altos ou muito baixos são mais propensos a não relatá-lo. Então, removendo ou retirando todas essas observações, você está realmente removendo um monte de pessoas que têm rendimentos muito altos ou baixos do seu modelo. E isso pode ter um efeito muito ruim na precisão do modelo que você acaba com. Então você quer ter certeza de que se você está indo para soltar dados, que ele não vai distorcer o conjunto de dados de alguma forma como um subproduto, certo? Então é uma coisa muito rápida e fácil de fazer. Provavelmente a coisa mais rápida e fácil de fazer. Você pode literalmente fazer isso em uma linha de código em Python, mas provavelmente nunca será a melhor abordagem. Então, novamente, se um exame está perguntando qual é a melhor maneira de imputar dados perdidos? Largar dados provavelmente não é a resposta certa. Quase tudo vai ser melhor. Talvez pudesses substituir um campo semelhante, certo? Quero dizer, isso também seria uma maneira simples de fazer isso. Por exemplo, posso ter um conjunto de dados de avaliações de clientes em filmes, certo? Talvez se eu tiver um resumo de revisão e uma revisão de texto completo também, faria mais sentido apenas pegar o resumo da revisão e copiar isso para o texto completo para as pessoas que deixaram o texto completo em branco. Como exemplo, quase tudo é melhor do que simplesmente deixar cair dados. Mas no mundo real, se você está apenas tentando fazer algo rápido e sujo e tipo de começar a experimentar com alguns dados apenas para começar a jogar com eles. Pode ser uma coisa razoável de se fazer. Eu só não deixaria isso no lugar para produção necessariamente. A coisa que você provavelmente realmente quer fazer em produção é usando o aprendizado de máquina para imputar os dados que estão faltando em seu treinamento de aprendizado de máquina. Então é uma espécie de coisa do Meta. Há maneiras diferentes de fazer isso. Um é chamado KNN, que significa k vizinhos mais próximos. E se você tiver alguma experiência com aprendizado de máquina, provavelmente já sabe o que isso é. A idéia geral é encontrar o k onde k é algum número da rosa mais semelhante àqueles que você está olhando que tem dados faltando e apenas calculou juntos os valores dessas linhas mais semelhantes. Então você pode imaginar ter algum tipo de métrica de distância entre cada linha. Talvez seja apenas a distância euclidiana entre as características normalizadas dentro de cada linha ou algo assim. E se você encontrar o, digamos, 10 linhas mais próximas que são mais semelhantes àquele que está faltando dados. Você pode simplesmente pegar a média desse recurso a partir dessas dez linhas mais semelhantes e imputar o valor a partir disso. Então, isso tira proveito das relações entre os outros recursos do seu conjunto de dados, o que é uma coisa boa. Um problema com isso, porém, é que essa idéia assume que você tem dados numéricos que você está tentando imputar e não dados categóricos. É difícil pegar a média de uma categoria, mas há maneiras de fazer isso com técnicas como distância de martelar. Mas N é geralmente um melhor ajuste para dados numéricos, não categóricos. Se você tem dados categóricos, provavelmente é melhor servido desenvolvendo um modelo de aprendizagem profunda. As redes neurais são ótimas em fazer problemas de categorização. Então a idéia seria realmente construir um modelo de aprendizado de máquina para imputar os dados para o seu modelo de aprendizado de máquina, certo? É uma espécie de ciclo lá. E isso funciona muito bem para dados categóricos. É muito bom, é difícil estar aprendendo profundamente nos dias de hoje. No entanto, é claro que é complicado. Há um monte de código envolvido em um monte de ajustes também. Mas é difícil ser os resultados se você realmente tem um modelo de aprendizado profundo que tenta prever o que um recurso ausente é baseado em outros recursos em seu conjunto de dados. Isso vai funcionar. Muito trabalho, muito esforço computacional, mas vai lhe dar os melhores resultados. Você também pode apenas fazer uma regressão múltipla sobre os outros recursos que estão em seu conjunto de dados. Isso também é uma coisa totalmente razoável de se fazer. E três regressões, você pode encontrar relações lineares ou não lineares entre seu recurso ausente e os outros recursos que estão em seu conjunto de dados. E há uma técnica muito avançada ao longo destas linhas chamada camundongos, que representa uma imputação múltipla por equações encadeadas. É meio que o estado da arte neste espaço agora para imputar dados em falta. Então, tudo bem, e finalmente, provavelmente a melhor maneira de lidar com dados ausentes é apenas obter mais dados. Então, se você tem um monte de linhas que têm dados ausentes, talvez você só precise se esforçar mais para obter dados mais completos de pessoas. E é difícil estar apenas recebendo mais dados reais para que você não tenha que se preocupar com todas as estradas que tinham dados faltando. Novamente, você quer ter cuidado para que, se você estiver descartando dados, você não está tendenciando seu conjunto de dados de alguma forma. Mas, na verdade, a melhor maneira de lidar com não ter dados suficientes é quando você apenas obtém mais, às vezes você só precisa voltar e descobrir de onde esses dados vieram e coletar dados de melhor qualidade. E assim, quanto melhor os dados de qualidade você tiver entrando em seu sistema, melhores serão os resultados que você obterá. E enquanto as técnicas de imputação são uma maneira de encobrir problemas em que você simplesmente não tem dados suficientes e você não pode obter mais deles. É sempre uma boa ideia obter mais e melhores dados, se possível. 66. Como lidar com dados desequilibrados: a dupla de de desequilibrar: a sombra e SMOTe: Outro problema no mundo da engenharia de recursos é lidar com dados desbalanceados. O que queremos dizer com isso? Bem, vamos supor que temos uma grande discrepância entre nossos casos positivos e negativos em nossos dados de treinamento. Portanto, um exemplo comum está no mundo da detecção de fraudes. Fraude real é bem raro, certo? Portanto, a maioria dos seus dados de treinamento conterá linhas de treinamento que não são fraudulentas. Isso pode levar a dificuldades na construção de um modelo que possa identificar fraudes porque tinha tão poucos pontos de dados para aprender em comparação com todos os pontos de dados não fraudes. Então é muito fácil para um modelo dizer, ok, bem, já que fraude na verdade só acontece como 0,01% do tempo, eu só vou prever que não é fraude o tempo todo. E hey, minha precisão é incrível agora, certo? Então, se você tem um conjunto de dados desequilibrado como esse, você pode acabar em uma situação como aquela em que você tem um modelo de aprendizado de máquina que parece ter alta precisão, mas é apenas adivinhar que não todas as vezes. E isso não ajuda, certo? Portanto, há maneiras de lidar com isso na engenharia de recursos. Primeiro, não deixes que a terminologia te confunda. Isso é realmente algo que eu fiquei preso em muito no início quando eu digo casos positivos e negativos, eu não estou falando de bom e ruim, então não confunda positivo e negativo com um resultado positivo, negativo. Positivo significa, é isso que estou testando? Foi isso que aconteceu? Então isso pode ser fraude, certo? Então, se eu, se meu modelo está tentando detectar fraudes, então fraude é o caso positivo. Mesmo que a fraude seja uma coisa muito negativa. Lembre-se, positivo é apenas o que você está tentando detectar, seja lá o que for. Então bata isso na sua cabeça porque se você continuar combinando positivo e negativo com julgamentos morais. Agora o que é sobre isso, neste contexto, isso é principalmente um problema com redes neurais a propósito. Portanto, é um problema real que se você tem um conjunto de dados desequilibrado como este, provavelmente não vai aprender a coisa certa e nós temos que lidar com isso de alguma forma. Qual é uma maneira de lidar com isso? Apenas sobreamostragem é uma solução simples. Então pegue amostras da sua turma minoritária. Neste exemplo de fraude, basta pegar mais amostras que são conhecidas por serem fraude e copiá-las uma e outra vez e outra vez. Faça um exército de clones, se preferir, de seus casos de teste fraudulentos. E você pode fazer isso aleatoriamente. Você pensaria que isso não ajudaria, mas ajuda com uma rede neural. Então isso é uma coisa muito simples que você pode fazer. Basta fabricar mais do seu caso minoritário fazendo cópias de outras amostras daquele caso minoritário. Do outro lado, você pode ir como sub-amostragem. Então, em vez de criar mais casos de minorias, remova os casos da maioria. Então, no caso de fraude, estaríamos falando sobre remover alguns desses casos não fraudulentos para equilibrar um pouco mais. No entanto, jogar dados fora geralmente não é a resposta certa. Quero dizer, por que você iria querer fazer isso? Você está descartando informações, certo? Então, o único momento em que a subamostragem pode fazer sentido é se você está especificamente tentando evitar algum problema de escala com seu treinamento, certo? Talvez você tenha apenas mais dados do que você pode lidar e o hardware que você recebe. E se você tiver muitos dados para processar e lidar, tudo bem, jogue fora alguns dos casos maioritários eu poderia ser uma coisa razoável para fazer, mas a melhor solução seria obter mais poder computacional, certo? E, na verdade, escalar isso em um cluster ou algo assim. Então, subamostragem, geralmente não é a melhor abordagem. Algo que é ainda melhor do que subamostragem ou sobreamostragem é algo chamado fumado. E isso é algo que você pode ver significa uma técnica de minoria sintética, uma espécie de acrônimo criativo. O que ele faz é gerar artificialmente novas amostras da classe minoritária usando vizinhos mais próximos. Assim como falamos sobre usar a KNN para imputação, a mesma ideia aqui. Estamos procurando vizinhos mais próximos em cada amostra da classe minoritária. E então criamos novas amostras desses resultados da KNN tomando a média desses vizinhos. Então, em vez de apenas, você sabe, ingenuamente fazer cópias de outros casos de teste para a classe minoritária. Estamos fabricando novos com base em médias de outras amostras e fabricá-las dessa forma funciona muito bem. Então, ambos geram novas amostras. E sob amostras, a classe maioritária do estrume, o que é bom. Então, isso é melhor do que apenas exagerar fazendo cópias porque na verdade está fabricando novos pontos de dados que ainda têm alguma base na realidade. Então lembre-se, se você está lidando com dados desequilibrados, fumado é uma escolha muito boa. Uma abordagem mais simples para é apenas ajustar os limites quando você está realmente fazendo inferências e realmente aplicando seu modelo aos dados que você tem. Então, quando você está fazendo previsões para uma classificação, digamos fraude ou não fraude, você vai ter algum tipo de probabilidade limite em que você diz, Ok, isso provavelmente é fraude. A maioria dos modelos de aprendizado de máquina, então apenas produzir uma fraude ou não fraude. Na verdade, vai lhe dar algum tipo de probabilidade de que seja fraude ou não fraude. E você tem que escolher um limite de probabilidade no qual você diz, Ok, isso é provavelmente fraude, merece alguma investigação. Então, se você tiver muitos falsos positivos, quando consertarmos isso, é só aumentar esse limite, certo? Então isso é garantido para reduzir sua taxa de falsos positivos, mas isso vem ao custo de mais falsos negativos. Então, antes de fazer algo assim, você tem que pensar sobre o impacto desse limiar terá. Então, se eu aumentar meu limite, isso significa que eu vou ter menos coisas reais que são sinalizadas como fraude, isso significa que eu perdi alguma transação fraudulenta real sehr, mas eu não vou estar incomodando meus clientes tanto dizendo, Se eu pilotar isto como fraude, desligo o teu cartão de crédito. Você pode realmente querer o efeito oposto, certo? Talvez eu queira ser ainda mais liberal e quando estou sinalizando como fraude, então eu baixaria esse limite para realmente obter mais casos de fraude que são sinalizados. E fraude pode ser um caso onde você é melhor adivinhar errado se não é fraude do que o contrário, certo? Então você precisa pensar sobre o custo de um falso positivo versus um falso negativo e escolher seus limites de acordo. 67. Como filar, de binar, transformação, codificação, dimensionamento e shuffling: Vamos passar rapidamente por algumas outras técnicas que você pode usar no processo de engenharia de recursos. Um é chamado de binning. O ID aqui é apenas para pegar seus dados numéricos e transformá-los em dados categóricos, juntando esses valores com base em intervalos de valores. Então, como exemplo, talvez eu tenha as idades das pessoas no meu conjunto de dados. Eu poderia colocar todos em seus 20 anos em um balde, todos seus 30 em outro balde e assim por diante. Isso seria um exemplo de binning onde eu estou apenas colocando todos em um determinado intervalo em uma determinada categoria. Então, em vez de dizer que temos que treinar baseado no fato de que você tem 22 e 3 meses de idade. Eu só vou colocar você na proibição de crianças de 20 anos, certo? Então eu mudei esse número de 22, seja lá o que for, em uma categoria de 20 coisas. Então isso é tudo o que licitar é. Por que você iria querer fazer isso? Bem, há algumas razões. Uma é que às vezes você tem alguma incerteza em suas medidas. Então talvez suas medidas não sejam exatamente precisas e você não esteja adicionando nenhuma informação dizendo que essa pessoa tem 22,37 anos versus 22,38 anos de idade. Talvez algumas pessoas se lembrem do aniversário errado ou algo assim, ou você pergunta-lhes em dias diferentes e você tem valores diferentes como resultado. Portanto, o binning é uma maneira de encobrir com precisão em suas medidas. Essa é uma maneira de você, essa é uma razão. Outra razão pode ser que você realmente quer usar um modelo que funciona em dados categóricos em vez de dados numéricos. É uma coisa duvidosa de se fazer, porque você está jogando algumas informações fora, certo? Então, se você está fazendo isso, você deve pensar bem sobre por que você está fazendo isso. A única razão realmente legítima para fazer isso é se houver incerteza ou erros em suas medidas subjacentes reais que você está tentando se livrar. Agora há também algo chamado binning quantil que você deve entender. A coisa boa sobre binning quantil é que um categoriza seus dados pelo seu lugar na distribuição de dados. Assim, ele garante que cada um de seus compartimentos tenha um número igual de amostras dentro deles. Assim, com quantiles dobrando, eu me certifico de que eu tenho meus dados distribuídos de tal forma que eu tenho o mesmo número de amostras em cada resultante sido. Às vezes isso é uma coisa útil para fazer, lembre-se, binning quantil terá tamanhos iguais em cada compartimento. Outra coisa que podemos fazer é transformar nossos dados. Aplicar algum tipo de função ao nosso recurso é torná-lo mais adequado para nossos algoritmos. Então, por exemplo, se você tiver dados de feição que tenham uma tendência exponencial dentro dela, isso pode se beneficiar de fazer uma transformação logarítmica para fazer com que os dados pareçam mais lineares. Isso pode ajudar seu modelo e realmente encontrar tendências reais nele. Às vezes, os modelos têm dificuldade com dados não-lineares entrando nele. Um exemplo do mundo real é o YouTube. Eles publicaram um artigo sobre como suas recomendações funcionam, que é uma ótima leitura, a propósito, há uma referência a isso no slide aqui. Eles têm uma seção inteira sobre engenharia de recursos lá que você pode achar útil. E uma coisa que eles fazem é para qualquer saída numérica que eles têm, você sabe, por exemplo, quanto tempo faz desde que você assistiu o vídeo? Eles também se alimentam no quadrado e na raiz quadrada dele. E a idéia lá é que eles podem aprender funções super e sub-lineares nos dados subjacentes dessa forma. Então eles não estão apenas jogando dentro, os valores brutos também estão jogando no quadrado ea raiz quadrada apenas para, apenas para ter cuidado e ver se eles são realmente são tendências não-lineares lá que eles devem estar pegando em. Eles descobriram que, que realmente melhorar seus resultados. Então esse é um exemplo de transformação de dados. Não é necessariamente substituir dados por uma transformação. Às vezes você está realmente criando um novo recurso de transformar um existente. Isso é o que está acontecendo aqui. Então eles estão alimentando tanto a característica original x e x ao quadrado e a raiz quadrada de x. Você pode ver neste gráfico aqui por que você pode querer fazer isso. Então, se eu estou começando com uma função de x aqui e a linha verde, você pode ver que tomando o LN, o logaritmo disso, eu acabo com uma relação linear em vez disso, que pode ser mais fácil para milhas de pegar. Eu também poderia apagar isso para um poder maior, que na verdade pioraria as coisas neste caso, mas, às vezes, mais dados são melhores. Novamente, estamos falando sobre a maldição da dimensionalidade, então há um limite para isso, mas é disso que a engenharia de recursos se trata. Tentando encontrar esse equilíbrio entre ter informações suficientes e muita informação. Outra coisa muito comum que você fará ao preparar seus dados é a codificação. E você vê isso muito no mundo da aprendizagem profunda. Então, muitas vezes seu modelo vai exigir um tipo muito específico de entrada e você tem que transformar seus dados e codificá-lo no formato que seu modelo requer. Um exemplo muito comum é chamado de codificação one-hot. Certo, então certifique-se de entender como isso funciona. A idéia é que ele criou um bucket para cada categoria que eu tenho. E basicamente eu tenho um que representa isso, essa categoria existe e é 0 que representa que não é essa categoria. Vejamos esta imagem como um exemplo. Digamos que estou construindo um modelo de aprendizagem profunda que tenta fazer reconhecimento de escrita manual em pessoas desenhando os números de 0 a 9. Este é um exemplo muito comum que veremos mais tarde. Então, para codificar essa informação. Eu sei que essa coisa representa o número oito e para representar isso de uma maneira codificada, basicamente eu tenho 10 baldes diferentes para cada dígito possível que, que pode representar 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. Agora eu costumo começar a contar em 0 aqui. Então você pode ver aqui que no nono slot lá, há um que representa o número oito. E todos os outros slots há um 0 representando que não é essa categoria. Isso é tudo uma codificação quente é. Então novamente, se eu tivesse um no primeiro slot, isso representaria o número 0. Se eu tivesse um no segundo slot que representam o número um e assim por diante e assim por diante. Fazemos isso porque na aprendizagem profunda, os neurônios geralmente estão ligados ou desligados, são ativados ou não ativados. Então eu não posso apenas alimentar o número oito é o número um em um neurônio de entrada e esperar que ele funcione. Não é assim que estas coisas funcionam. Em vez disso, eu preciso ter este esquema de codificação one-hot onde cada valor de treinamento único esse rótulo, ele vai realmente ser alimentado em 10 neurônios de entrada diferentes foram apenas um deles representa a categoria real que eu tenho. Também podemos informá-lo sobre o dimensionamento na normalização dos seus dados. Novamente, praticamente todos os modelos exigem isso também. Muitos modelos preferem que seus dados de recursos sejam normalmente distribuídos em torno de 0. E isso também é verdade para a maioria das redes neurais e de aprendizagem profunda. E, no mínimo, maioria dos modelos exigirá que os dados do recurso sejam, pelo menos, dimensionados para valores comparáveis. Quero dizer, existem modelos lá fora que não se importam tanto, como árvores de decisão, mas a maioria deles será sensível à escala de seus dados de entrada. Caso contrário, se você tiver recursos que têm magnitudes maiores ainda acabam tendo mais peso em seu modelo do que deveriam. Voltando ao exemplo das pessoas, se eu estou tentando treinar um sistema baseado em sua renda, que pode ser um número muito grande como, você sabe, 50000 e também sua idade, que é um número relativamente pequeno como 30 ou 40. Eu não estava normalizando esses dados para intervalos comparáveis antes de treinar sobre ele, que a renda teria um impacto muito maior no modelo do que suas idades. E isso vai resultar em um modelo que não faz um bom trabalho. Agora é muito fácil fazer isso, especialmente com scikit-learn em Python, ele tem um módulo de pré-processador que ajuda você com esse tipo de coisa. Ele tem algo chamado minmax scalar que vai fazer isso para você muito facilmente. A única coisa é que você tem que lembrar de dimensionar os resultados de volta se o que você está prevendo, não são apenas categorias e dados numéricos reais. Então, às vezes, se você está prevendo algo, você tem que se certificar de reaplicar esse dimensionamento e reverter para realmente obter um resultado significativo do seu modelo no final do dia. Finalmente, vamos falar sobre embaralhar. Muitos algoritmos se beneficiam de embaralhar seus dados de treinamento. Caso contrário, às vezes há uma espécie de sinal residual em seus dados de treinamento resultante da ordem em que esses dados foram coletados. Então você quer ter certeza de que você está eliminando quaisquer subprodutos de como os dados foram realmente coletados embaralhando e apenas aleatorizando a ordem que é alimentada em seu modelo. Muitas vezes isso faz a diferença na qualidade também. Há muitas histórias que eu vi em que alguém obteve um resultado muito ruim de seu modelo de aprendizado de máquina, mas apenas embaralhando a entrada e as coisas ficaram muito melhores. Então não se esqueça de fazer isso também. E esse é o mundo da engenharia de recursos em poucas palavras. 68. Notas de instalação de Spark: maneira. - nenhum De jeito , De jeito nenhum, de jeito nenhum. 69. Como instalar o Spark - parte 1: até agora neste curso, falamos sobre muitas técnicas gerais de mineração de dados e aprendizado de máquina que você pode usar sua carreira em ciência de dados. Mas todos eles estão sendo executados em seu desktop. E como tal, você sabe, você só pode executar o máximo de dados que uma única máquina pode processar usando algumas dessas técnicas usando python e psíquico learning e o que nem agora todo mundo fala sobre big data, e você sabe o que é. Você pode estar trabalhando para uma empresa que, de fato, tem big data para processar big data, que significa que você não pode realmente controlar tudo. Você não pode realmente disputar tudo em apenas um sistema que você precisa realmente computar. Usar esse recurso é de uma nuvem inteira. Um cluster de recursos de computação é, e é aí que o Apache Spark entra. Então, nesta próxima seção, vou definir para você configurar usando o Apache Spark e mostrar alguns exemplos de realmente usar o Apache Spark para resolver alguns dos mesmos problemas que resolvemos usando um único computador no passado neste Claro. Mas a primeira coisa que precisamos fazer é colocar faíscas no seu computador, então vamos te mostrar como fazer isso. As próximas palestras. É muito simples, mas há alguns guaches, então não pule essas palestras. Há algumas coisas que você precisa prestar atenção especial para obter faísca funcionando com sucesso, especialmente em um sistema de janelas. E novamente, vamos desenvolver esses exemplos usando seu próprio computador. Mas os mesmos exemplos podem ser dimensionados para serem executados em um cluster Hadoop posteriormente, se desejar. Então vamos começar. Tudo bem, vamos configurar o Apache faísca no seu sistema para que você possa realmente mergulhar e começar a brincar com ele. Uma ferramenta muito poderosa para gerenciar big data e fazer machine learning em grandes conjuntos de dados. Agora vamos estar executando isso apenas em seu próprio desktop por enquanto durante este curso, mas os mesmos programas que estavam indo para escrever nesta seção poderiam ser executados em um cluster Hadoop real . Então, se você pegar os mesmos scripts que estavam escrevendo e executando localmente em sua área de trabalho e acionar o modo autônomo, você pode pegar esses mesmos scripts e realmente executá-los a partir do nó Master de um cluster real que faz e, em seguida, deixá-lo dimensionar até todo o poder de um cluster e processo do Hadoop. Dados massivos são assim. Portanto, mesmo que vamos configurar as coisas para serem executadas localmente em seu próprio computador, lembre-se de que os mesmos conceitos que fazemos também serão dimensionados para serem executados em um cluster também . Agora obter faísca instalada no Windows envolve vários passos que o guiarão por aqui. E eu vou supor que você está no Windows, porque a maioria das pessoas faz esse curso em casa. Vamos falar um pouco sobre lidar com outros sistemas operacionais em um momento. Mas aqui, os passos básicos. Então, se você já está familiarizado com, você sabe, instalar coisas e lidar com variáveis de ambiente em seu computador, então você pode simplesmente pegar esta pequena folha de truques e sair e fazê-lo. Mas vou guiá-lo um passo de cada vez. Nos próximos vídeos, as coisas que você precisa fazer você precisa instalar primeiro para J.D.K. J.D.K. J.D.K. Isso é um trabalho, um kit de desenvolvimento para que você possa simplesmente ir para o site Dio Sons e não baixar isso e instalado se você precisar. Precisamos do J.D.K. J.D.K Porque mesmo que nós vamos estar desenvolvendo e python durante este curso que traduzido sob o capô para código Scalia, que é o que faísca é desenvolvido em nativamente e Scalia, por sua vez, é executado em cima do interpretador Java. Então, a fim de executar código python, você precisa do sistema de um Scala, que será instalado por padrão com a melhor parte do Smarck. E também precisamos de Java. Job é intérprete para realmente executar esse código acadêmico. Então é como este bolo de camada de tecnologia. Obviamente você é apenas python, Mas se você foi para este ponto no curso, você já tem um ambiente python configurado. E felizmente, faísca. O site Apache disponibiliza versões pré-construídas do Spark que acabará de correr para fora da caixa que são pré-compilados para as senhoras para fazer a versão para que você não tem que construir nada. Você pode baixar isso para o seu computador e colocá-lo no lugar certo e ser bom para ir na maior parte do tempo. Então temos algumas coisas de configuração para cuidar. Então, uma coisa que queremos fazer é ajustar nosso nível de advertência, que não tenhamos um monte de tempo de aviso quando executarmos nossos trabalhos e veremos como fazer isso. Basicamente, você precisa renomear um dos arquivos de propriedades e, em seguida, ajustar o erro, definindo-o dentro dele. E então nós decidimos algumas variáveis de ambiente para garantir que você pode realmente executar faísca de qualquer lugar a partir de qualquer caminho que você possa ter. Então, vamos adicionar um ambiente doméstico faísca, variável apontando para onde você instalou faísca, e então vamos adicionar Spark home Slash foi para o seu caminho do sistema para que quando você executar sparked , enviar ou pizza faísca ou Seja qual for o comando de faísca que precisar, saberemos onde encontrá-lo. Finalmente, no Windows, há mais uma coisa que precisamos fazer. Precisamos estudar Hadoop Home Variable. Está bem, porque vai esperar encontrar um pouco do Hadoop, mesmo se você não estiver usando o Hadoop em seu sistema autônomo, e então precisamos instalar um arquivo chamado Win You inclina dot eggs e para esse caminho, e há um link para ganhar. Você inclina dot xy dentro do recurso é para esta palestra para que eu possa chegar lá. Então, se você quiser percorrer isso com mais detalhes, podemos fazer essa observação rápida sobre a instalação do faísca em outros sistemas operacionais para que os mesmos passos se apliquem basicamente. A principal diferença será e como você define variáveis de ambiente em seu sistema tal forma que elas serão aplicadas automaticamente sempre que você fizer login. Então isso é tipo de variar de O esto s. Mac OS não diferentemente de vários sabores do Linux. Então você vai ter que estar pelo menos um pouco familiarizado com o uso de um prompt de comando de terminal UNIX e como manipular seu ambiente para fazer isso. Mas você sabe, maioria dos usuários de Mac OS ou Lennox que estavam fazendo desenvolvimento já tem esses fundamentos sob seu cinto. E, claro, você não vai precisar quando você arrasar ovos e se você não estiver no Windows. Então essas são as principais diferenças para instalar em diferentes sistemas operacionais está tudo bem, vamos começar instalando realmente um J.D.K. J.D.K . Então eu vou orientá-lo através disso muito rapidamente e, em seguida, em nossa próxima palestra, irá passar por todos os outros detalhes de se configurar com faísca. Então, como eu mencionei antes faísca é executado em cima da vieira, que por sua vez é executado em cima do ambiente Java. Então, se você ainda não tem um emprego, um kit de desenvolvimento instalado em seu sistema, você precisará ir buscar um e simplesmente passar por isso rapidamente. Vá ao seu motor de busca favorito e procure por J.D. J.D. K. deve aparecer. Basta pegar o mais recente que você confinou, e isso deve redirecioná-lo para você, o site da Oracle. E você só quer selecionar a versão apropriada para o seu sistema. Então, no Windows, vou aceitar o contrato de licença. Vou procurar a versão do Windows X 64 no meu exemplo. Então eu estou executando uma versão de 64 bits do Windows. Vá em frente e abaixe isso. Ele vem e 100 87 megabytes depois. Devemos ter algo que possamos instalar, então nada de especial aqui. Você sabe que é apenas o seu instalador padrão, mas esse é o primeiro passo para obter java esquecendo faísca instalado em execução superior em seu sistema. Agora em nossa próxima palestra irá em frente e falar sobre os passos restantes que estão instalando faísca em si e, em seguida, todos os arquivos de configuração associados e também um pouco gotcha extra e janelas. O quando você inclina o arquivo de saída ponto que precisa ser instalado em um lugar especial. Então estamos chegando lá, e esse download também está chegando lá. Você clica nisso. Ela acabou de orientá-lo através de um instalador padrão para o kit de desenvolvimento Java SC. Então vá em frente e provavelmente tudo bem. Ele estava apenas aceitando todos os padrões e deixando-o fazer a sua coisa, e isso é tudo o que há. Então vamos passar para os próximos passos. Muito bem, estamos a caminho de instalar faísca no seu computador. Temos um J.D. J.D K montado. Esse é o primeiro passo. Então, vamos passar para os passos restantes na próxima palestra. 70. Como instalar o Spark - parte 2: Tudo bem. Há um monte de pequenos detalhes que precisamos trabalhar para que o faísca realmente funcione em sua área de trabalho no modo autônomo. Então vamos passar por todos eles e tirá-lo do caminho. Então, até agora, nós instalamos Python. Instalamos a necessidade do Java na próxima semana para instalar o faísca em si. Então, de volta a uma nova guia do navegador aqui só disse para faísca ponto Apache ou GTA e clique no botão grande download amigável faísca. Ok, agora, este curso foi testado com disparado 2.1 ponto um. Então, você sabe, dada a escolha qualquer coisa além do 2.0, deve funcionar muito bem. Mas é onde estamos hoje. Certifique-se de obter uma versão pré-construída, ok? E nós vamos apenas fazer um download direto. Então, todos esses padrões ar perfeitamente bem. Vá em frente e baixe esse pacote. Agora, o que está baixando é um arquivo T GZ que soa para tar e Jesus. Então novamente, faísca, você sabe, janelas é uma espécie de pensamento tardio com faísca, muito honestamente. E no Windows, você não vai ter um utilitário embutido para realmente descompactar arquivo t gz. Portanto, talvez seja necessário instalar um. Se você ainda não tem um, o que eu uso é chamado de rugido do vento. E você pode pegar isso em um site chamado Raw ou nossos laboratórios ponto com assim. E basta ir para a página de downloads, se você precisar dele e baixar o instalador para rar vento 32 bit ou 64 bit, dependendo do seu sistema operacional, e que permitirá que você realmente descomprimir. Teague Easy arquivos no Windows, se você precisar. Então aperte, pause e vá instalar isso, se necessário. Caso contrário, vamos verificar novamente o download do Apache faísca. Aqui. Parece que caiu. Então eu vou ir em frente e mostrar isso na minha pasta Downloads e vamos em frente e clicar com o botão direito sobre isso e extraí-lo para uma pasta de minha escolha Novamente. Winrow está fazendo isso por mim neste momento, ok, então agora eu deveria ter uma pasta associada a esse pacote. Com certeza, aí está. Vamos abrir isso, tudo bem. E há faísca em si, então eu preciso instalar isso em algum lugar onde eu vou me lembrar. Você não quer deixá-lo em sua pasta de downloads, obviamente. Então vamos em frente e abrir uma nova janela do Explorador de arquivos aqui, e eu vou para a minha unidade C e eu vou criar uma nova pasta e vamos chamá-la faísca. Então minha instalação faísca vai viver sob C cólon volta última faísca novamente. Agradável e fácil de lembrar. Abra isso. Vou entrar no controle A para selecionar tudo no controle de distribuição de faíscas. Veja, para copiá-lo de volta para onde eu quero colocá-lo em ver faísca e controle V para colá-lo. Tudo bem, agora, uma coisinha que precisamos fazer aqui. Abra a pasta con onde instalamos Sparked para e renomeado Log for Jadot propriedades dot template tal que você acabou de tirar o modelo fora. Então ele deve ser apenas registrado para propriedades Jadot em vez disso. Sim, tenho certeza que quero mudar. E agora posso abrir isso se precisar. Direito, clique lá e diga abrir com e selecione o teclado de palavras. E o que eu quero fazer é mudar esta linha aqui onde diz informações de categoria de rota. Quero mudar isso para erro. E isso só vai remover a confusão de toda a lei expandir que fica impressa quando eu dirijo coisas. Então mude isso em erros de foto. Salve-o e feche o seu editor. Ok, então agora onde estamos? Isso é meio cansativo. Instalamos Python. Instalamos o Java. Instalamos faísca. Agora, a próxima coisa que precisamos fazer é instalar algo que fará seu PC pensar que a fraude dela existe. E, novamente, este passo só é necessário nas janelas. Então você pode pular este passo se você estiver usando cavala Lennix. Mas para as poucas pessoas janelas, eu quero que você vá para este link aqui. Você deveria nos encontrar lá. O recurso está associado a esta palestra sobre plataformas que tem tal coisa. Mas se quiseres, podes escrever este link à mão, está bem? E se você baixar isso, isso vai te dar uma cópia de ah, pequeno forno de snippet executar ervas. Isso poderia ser usado para enganar faísca em pensar que você realmente tem Hadoop. Agora, já que vamos estar executando nossos scripts apenas localmente em nosso desktop, não é grande coisa. Não temos que ter um dupe instalado de verdade. É só mais uma vez fica em torno de mais uma peculiaridade de correr faísca nas janelas. Então, agora que temos isso, vamos mostrar esse controle, Veja, para copiá-lo para fora da minha pasta de downloads e vamos para a nossa unidade C e criar um lugar para ele viver. Então eu vou criar uma nova pasta novamente. Vamos chamar isso de vitória, você trabalha, e eu vou abrir isso quando você inclinar pasta que eu fiz e criar outra pasta dentro dela chamada Been. E dentro dessa pasta bin eu vou colar o arquivo que eu acabei de baixar. Ok, este próximo passo só é necessário em alguns sistemas, mas apenas para ser seguro, abra um prompt de comando nas janelas para que você possa fazer isso indo para o seu menu Iniciar e indo para baixo para o Windows System Command prompt. E a partir daqui, eu quero que você digite CD C dois-pontos vitória barra invertida. Você inclina barra invertida tinha sido que é onde nós preso nosso util vento parou arquivos E X Se você fizer um d i r. Você deve ver que há e agora digite o seguinte quando você inclina ponto t X, c c h m o d espaço 777, barra invertida TMP hive e que apenas certifique-se de que todas as permissões de arquivo que você precisa para realmente executar faísca com sucesso estão no lugar sem quaisquer erros. Então você pode fechar esse prompt de comando agora que você terminou com essa etapa. Uau, estamos quase terminando, acredite ou não. Agora a última coisa que precisamos para configurar alguma variável de ambiente. Então todo o software sabe onde se encontrar. Então, para fazer isso, ele é fechado fora deste navegador. Saia de todas essas coisas que eu vou clicar com o botão direito do mouse no meu ícone do Windows e novamente em diferentes sistemas operacionais. Você definirá variáveis de ambiente de maneiras diferentes, mas no Windows você faz isso através do painel de controle e clicando no sistema e sistema de segurança e seguida, configurações avançadas do sistema. E a partir daqui você clica em variáveis de ambiente. Então precisamos montar alguns aqui. Vamos começar. Então eu vou apertar o novo botão para minhas variáveis de ambiente de usuário, e eu vou começar definindo um para uma faísca sublinhado home. E isso vai ser o diretório instalado faísca no qual é C dois pontos invertidos faísca. Ok, em seguida, crie outro. Este vai ser chamado Java sublinhado home. E foi aí que instalei o J.D . J.D K. e isso vai ser a barra invertida C cólon J D K. E finalmente, preciso montar uma casa falsa. Isso seria onde eu coloquei o estudo vitória Util, veja arquivo. E isso será apenas cólon C. barra invertida ganha você arrasa assim. E eu preciso finalmente atualizar meu caminho. Então eu vou clicar na variável de ambiente caminho hit, editar e eu vou adicionar um novo caminho. Vai ser sinal de porcentagem, faísca sublinhado Início sinal de porcentagem barra invertida sido Eu vou adicionar outro sinal de um por cento Java sublinhado Início percentual Sign barra invertida sido tudo bem. Quem? Acho que é isso. 71. Introdução no Spark: Vamos começar com uma visão geral de alto nível do Apache Spark e do que se trata, o que é bom para como ele funciona. Vamos mergulhar. Deixe-me dar-lhe uma breve visão geral de alto nível sobre o que o Apache faísca é tudo sobre. Introdução civil de todo o conceito. Então, o que é faísca? Bem, se você for ao site da faísca, eles lhe dão uma resposta ondulada de alto nível. Um mecanismo rápido e geral para processamento de dados em larga escala. Fatias. Ele cuza. Ele lava a sua roupa. Bem, não realmente, mas é uma estrutura para escrever trabalhos ou scripts que podem processar grandes quantidades de dados. E ele gerencia a distribuição desse processamento em um cluster de computação para você, de modo basicamente faísca funciona, permitindo que você carregue seus dados nesses objetos grandes chamados RTGs de armazenamento de dados distribuídos resilientes e pode executar automaticamente operações que transformar e criar ações baseadas nesses RTGs, que você poderia pensar. É como grandes quadros de dados, basicamente, e a beleza disso é que a faísca espalhará automaticamente e otimamente esse processamento entre um conjunto inteiro de computadores. Se você tiver um disponível para que você não se restrinja ao que você pode fazer em uma única máquina ou memória de uma única máquina. Você pode realmente espalhar isso para fora de todos os recursos de processamento e memória que estão disponíveis para um cluster de máquinas. E nos dias de hoje, computação é muito barata. Você pode realmente alugar tempo em um cluster através de coisas como o mapa elástico da Amazon, reduzir o serviço e apenas alugar algum tempo em um cluster inteiro de computadores por apenas alguns dólares e executar seu trabalho que você não poderia executar em seu próprio desktop. Então, como é escalável? Bem, é um pouco mais específico aqui e como tudo funciona. Então, a maneira como funciona é você escrever um programa de driver. É apenas um pequeno script que se parece com qualquer outro script python, na verdade, verdade, e ele usa a biblioteca de faíscas para acertar. Você é seu script com e dentro dessa biblioteca que você define foi chamado de contexto de faísca, que é uma espécie de objeto de rota que você trabalha dentro quando você está desenvolvendo e faísca, e a partir daí, a estrutura de faísca tipo de assume distribui coisas para você. Então, se você está rodando no modo autônomo em seu próprio computador como nós vamos estar fazendo nas próximas palestras. Tudo fica no seu computador, obviamente. Mas se você estiver executando em uma faísca do gerenciador de cluster e descobrir isso e automaticamente tirar proveito disso, Spark realmente tem seus próprios gerenciadores de cluster integrados. Você pode realmente usá-lo por conta própria sem sequer ter um dupe instalado. Mas se você tiver um cluster Hadoop disponível para você, ele também poderá usar isso. Então Hadoop é mais do que redutores de mapa, na verdade, um componente de um fazer chamado um fio que está apenas separando para fora. Toda a parte de gerenciamento de cluster do Hadoop e do Spark uma interface com o yard realmente usou isso para distribuir de forma otimizada. Os componentes do seu processamento entre o recurso estão disponíveis para esse cluster Hadoop . Assim, dentro de um cluster, você pode ter tarefas de executor individuais que estão sendo executadas, e elas podem estar sendo executadas em computadores diferentes. Eles podem estar sendo executados em núcleos diferentes do mesmo computador, e eles uns aos outros em dinheiro individual e suas próprias tarefas individuais que eles executam e o programa de driver que desencadeiam contexto no gerenciador de cluster trabalham juntos para coordenar todos os este esforço e retornar o resultado final de volta para você. A beleza disso é. Tudo o que você precisa fazer é escrever este pequeno script aqui que usa um contexto de faísca para descrever em um nível alto o processamento que você deseja fazer com esses dados e faísca trabalhando em conjunto com o gerenciador de cluster que você está usando, descobre como para espalhar isso e distribuir, você não tenha que se preocupar com todos esses detalhes bem, até que ele não funcione. Obviamente, você pode ter que fazer algum problema para descobrir se você tem recursos suficientes disponíveis para a tarefa em questão. Mas, em teoria, é tudo magia. Agora. Qual é o problema do Spark? Quero dizer, existem tecnologias semelhantes, como redução de mapas, que já existem por mais tempo. O Smart é rápido, porém, e no site eles afirmam que a faísca é até 100 vezes mais rápida do que a redução do mapa ao executar um trabalho na memória ou 10 vezes mais rápido no disco. Claro, as palavras-chave aqui são até a sua quilometragem pode variar. Eu não acho que eu já vi nada realmente correr muito mais rápido do que o produzido desde, hum, mapa bem trabalhado bonito co. Ainda pode ser bastante eficiente. Mas eu vou dizer que o Spark faz um monte de operações comuns mais fáceis. Você sabe, redução de mapa força você a realmente quebrar as coisas em mapeadores e redutores. Onde ele disparou é um nível um pouco mais alto, então você não precisa sempre pensar tanto em fazer a coisa certa com o Spark. E parte disso leva a outra razão pela qual faíscas mercado tão rápido. Ele tem um engenheiro Dag dirigiu uma sucata ciclista. Isso é difícil de dizer. A dirigiu um gráfico cíclico. Diga isso 10 vezes rápido. E enquanto isso é outra palavra chique, o que significa? O que isso significa é que a maneira como o Spark funciona é que você escreve um script que descreve como processar seus dados e que você pode ter em RTD. Isso é basicamente como um quadro de dados, e você pode fazer algum tipo de transformação nele ou algum tipo de ação sobre ele. Mas nada realmente acontece até que você realmente execute em ação sobre esses dados. Então o que acontece nesse ponto é faísca vai dizer OK, então este é o resultado final que você quer sobre esses dados. Quais são todas as outras coisas que eu tive que fazer para chegar a este ponto e qual é o caminho ideal ? Estabeleça essa estratégia para chegar a esse ponto. Então, sob o capô, descobrirá a melhor maneira de dividir esse processamento e distribuir essa informação para obter o resultado final que você está procurando. Então, a visão chave aqui é que a faísca espera até que você diga para realmente produzir um resultado . E só nesse ponto ele realmente vai e descobre como produzir esse resultado. Então é tipo de , conceito legal lá, e essa é a chave para um monte de sua eficiência. Inteligente, tecnologia muito quente, relativamente jovem. Por isso, ainda está a emergir e a mudar rapidamente. Mas um monte de pessoas grandes estão usando isso. Assim, a Amazon, por exemplo, é alegado que eles estão usando no eBay, grupo de Laboratórios de Propulsão a Jato da NASA no conselheiro de viagem Yahoo e muitos, muitos outros. Tenho certeza que há muita coisa usando isso que não confessa. Mas se você for para a página wiki do Spark Apache aqui, essa é na verdade uma lista que você pode procurar de grandes empresas conhecidas que estão usando faísca para resolver problemas de dados do mundo real. Então, se você está preocupado que você está entrando na borda sangrando aqui. Não tenha medo. Você está em muito boa companhia com algumas pessoas muito grandes que estão usando faísca na produção para resolver problemas reais, e é bastante estável neste momento. Também não é tão difícil. Você tem sua escolha de programação em Python, Java ou Scalia, e eles são todos construídos em torno do mesmo conceito que eu acabei de descrever anteriormente. O resiliente aos dados distribuídos definir RTD para abreviar, e vamos falar sobre isso com muito mais detalhes nas próximas palestras. Spark realmente tem muitos componentes diferentes que é construído de Então, há um núcleo de faísca que permite que você faça muito. Você sabe, você pode fazer praticamente qualquer coisa que você pode sonhar apenas usando as funções centrais da faísca sozinho. Quero dizer, eu tenho um curso onde eu faço todo um sistema er recomendar apenas usando faísca ou mas existem essas outras coisas construídas em cima de faísca que também são úteis. Por exemplo, streaming de faíscas é uma biblioteca que permite processar dados em tempo real para que os dados possam fluir para um servidor, digamos continuamente a partir de Weblogs, e o streaming de faíscas pode ajudá-lo a processar esses dados no tempo real como você vai para sempre Sparks igual, permite que você realmente tratar dados como um banco de dados sequela e realmente emitir consultas sequela sobre ele. O que é legal se você está familiarizado com sequela Já Ml Live é onde vamos estar focando nesta seção. Então, essa é na verdade uma biblioteca de aprendizado de máquina que permite executar algoritmos comuns de aprendizado de máquina com faísca sob o capô para realmente distribuir esse processamento em um cluster para que você possa realizar aprendizado de máquina em conjuntos de dados muito maiores do que você poderia ter de outra forma. E, finalmente, gráficos. Isso não é para fazer você saber, gráficos bonitos e gráficos que se referem ao gráfico no gráficos bonitos e gráficos que se referem ao gráfico nosentido da teoria da rede. Então pense em uma rede social, por exemplo. É um exemplo de gráfico. E gráficos só tem algumas funções que levaram a analisar as propriedades de um gráfico de informações. Agora eu recebo alguma coisa, às vezes sobre usar python quando estou ensinando as pessoas sobre o Apache Spark. Mas há um método para a minha loucura agora. É verdade que muitas pessoas usam Kala quando estão escrevendo código faísca porque é nisso que faísca é desenvolvida nativamente. Então você está incorrendo em um pouco de sobrecarga por uma faísca forçando para traduzir seu código python em Scala e, em seguida, em , você sabe, comandos de interpretador Java no final do dia, mas pythons muito mais fácil, e você não precisa compilar coisas. Gerenciar dependências é muito mais fácil, então você pode liberar foco seu tempo nos algoritmos e no que você está fazendo e menos na minúcia de realmente obtê-lo construído em execução e compilação e todo esse absurdo. Além disso, obviamente este curso tem sido focado em Python até agora, e faz sentido continuar usando o que aprendemos e ficar com python. Ao longo destas palestras, No entanto, eu vou dizer que se você fosse fazer alguma programação faísca no mundo real, há uma boa chance de que as pessoas estão usando Scalia. No entanto, não se preocupe muito com isso, porque em pie em python faísca e código vieira e alguns olhando muito semelhante porque é tudo em torno do mesmo conceito RTD. A sintaxe é um pouco diferente, mas não é assim tão diferente. Então você sabe, se você pode descobrir como você faz como fazer faísca usando python, aprender como usá-lo em Scala não é tão grande de um salto, realmente? Então vamos dar uma olhada em alguns exemplos e mergulhar. Então, esses são os conceitos básicos de faísca em si e por que é tão importante e como ele é tão poderoso em permitir que você execute algoritmos de aprendizado de máquina em conjuntos de dados muito grandes ou qualquer algoritmo, realmente? Então vamos falar um pouco mais de detalhes sobre como ele faz isso e o armazenamento de dados distribuído resiliente em seguida. 72. Spark e a: Vamos aprofundar um pouco mais o funcionamento do Spark. Vamos falar sobre o armazenamento de dados resiliente a distribuído conhecido como nosso DDS. É uma espécie de núcleo que você usa uma vez programando e faísca, e nós teremos alguns trechos de código para tentar torná-lo real. Então vamos dar uma olhada. Então vamos fazer um curso intensivo em Apache Spark aqui. Há muito mais profundidade do que o que vamos abordar nas próximas palestras, mas vou dar o básico a vocês. Você precisa realmente entender o que está acontecendo nesses exemplos e espero que você comece e aponte na direção certa. Então, a peça mais fundamental da faísca é chamada de resiliente ao conjunto de dados distribuídos em nosso d. D. E este será o objeto que você usa para realmente carregar e transformar e obter as respostas que você quer fora do que você está tentando processar. Então, a coisa muito importante para entender é que ele representa umconjunto de dados resiliente e distribuído, conjunto de dados resiliente e distribuído, por isso é um conjunto de dados. No final do dia. É apenas um monte de linhas de informações que podem conter praticamente qualquer coisa. Mas a chave é que estão no primeiro D, por isso é resiliente nessa faísca. Certifique-se de que, se você estiver executando isso em um cluster e um desses clusters ficar inativo, ele poderá se recuperar automaticamente e tentar novamente. Agora que a resiliência só vai tão longe lembrá-lo se você não tem recursos suficientes disponíveis para o trabalho que você está tentando executar. Ele ainda vai falhar, você sabe, e você vai ter que correr mais. Recurso é para ele, e há apenas tantas coisas que podem se recuperar. Quero dizer, há um limite para quantas vezes ele tentará novamente uma determinada tarefa, mas ele faz o seu melhor para garantir que, diante de um cluster instável ou instável ou de uma rede instável, ele ainda continuará tente o seu melhor para executar até a conclusão. E obviamente é distribuído. O objetivo de usar o faísca é que você pode usá-lo para problemas de big data, onde você pode realmente distribuir o processamento por toda a CPU e poder de memória de um cluster de computadores, e isso pode ser distribuído horizontalmente. Procurando por muitos computadores. Como você quer um determinado problema. Quanto maior o problema, mais computadores Não há realmente nenhum limite superior o que você pode fazer lá agora você sempre inicia seus scripts de faísca obtendo um objeto de contexto de faísca, e este é o objeto que tipo de incorpora as entranhas de faísca. É o que vai lhe dar seus rgds para processar em. Então é o que gera os objetos que você usa em seu processamento. Você sabe, você realmente não pensa muito sobre o contexto da faísca quando você está realmente escrevendo programas de faísca, mas é uma espécie de substrato que está rodando para você sob o capô. Se você estiver executando no shell de faísca interativamente, ele tem um objeto SC já disponível para você que você pode usar para criar RTGs e outras coisas. Mas em um script autônomo, você terá que criar esse contexto de faísca explicitamente, e você terá que prestar atenção aos parâmetros que você usa porque você pode realmente dizer ao contexto da faísca como você quer que seja distribuído. Devo tirar proveito de todos os núcleos disponíveis para mim, devo estar sendo executado em um cluster ou apenas sozinho no meu computador local? Então é aí que você configura as configurações fundamentais de como o brilho opera. Então vamos olhar para alguns pequenos trechos de código de realmente criar RTGs, e eu acho que vai fazer um pouco mais de sentido. Então aqui está um exemplo muito simples. Se eu só quiser fazer um RTD fora de uma lista de Python velha plano, eu posso chamar a Função Paralisada e Spark, e isso irá converter uma lista de coisas neste caso, apenas números 1234 em um objeto RTD chamado numbs para que seja o mais simples caso de criar um RDD apenas a partir de são rígida lista codificada de coisas e que foi poderia vir de qualquer lugar. Também não precisa ser codificado. Mas você sabe que esse tipo derrota o propósito do big data, certo? Quero dizer, se eu tiver que carregar todo o conjunto de dados na memória antes de poder criar um já d a partir dele , qual é o ponto? Então eu também posso carregar um RDD de um arquivo de texto, e isso pode estar em qualquer lugar. Então, neste exemplo, talvez eu tenha algum arquivo de texto gigante. Isso é, você sabe, toda a enciclopédia ou algo assim. E eu estou lendo isso do meu disco local neste exemplo, mas isso irá realmente converter cada linha desse arquivo de texto em sua própria linha em um r d d Então você pode pensar que o RTD é um banco de dados de Rose, e nesse exemplo, ele irá carregar meu arquivo de texto em um RTD onde cada linha, cada linha contém uma linha de texto, e eu posso então fazer o processamento adicional que RTD para analisar ou, você sabe, quebrar o delimitador de dados. Mas é daí que eu começo. Lembre-se de quando falamos sobre E T l e E L t. Então este é um bom exemplo de onde você pode realmente estar carregando dados brutos em um sistema e fazendo a transformação no próprio sistema que você usou para consultar seus dados para que você pudesse pegar raw arquivos de texto que não foram processados tudo e usam o poder da faísca. Na verdade, transforma-os em dados mais estruturados. Também pode falar com coisas como urticária. Então, se você tem, você sabe, um alto de banco de dados existente configurado em sua empresa, você pode criar um alto contexto que é baseado em seu contexto faísca. E quão legal é isso? Você pode realmente criar um RTD neste caso chamado Rose que é gerado realmente executando uma consulta sequela em seu banco de dados hive. Então esse é um exemplo de também criar um RDD. E há mais maneiras de criar RTGs também. Você pode criá-los a partir de conexões J. D. D. BC Então, basicamente, qualquer base de dados que suporta J DBC também pode falar, faísca e ter rgds criados a partir dele. Cassandra H. BaseCassandra H. A última pesquisa também arquivos no formato Jason. Veja arquivos de sequência de formato SV, arquivos de objeto e um monte de outros arquivos compactados como Orc ou o que você tem. Eu não quero entrar em detalhes de todos aqueles que você pode, você sabe, ir pegar um livro e procurar aqueles se você precisar. Mas o ponto é, é muito fácil criar um já D a partir de dados onde quer que ele esteja. Seja em um sistema de arquivos local ou armazenamento de dados distribuído é chamar a atenção para isso novamente. Parece que estou carregando de um arquivo local usando o sistema File Earl, mas eu também poderia usar s três. E se eu quiser uma anfitriã arquivá-lo em um balde de três ou H DFS distribuído da Amazon se eu quiser fazer referência a dados armazenados em um cluster H DFS distribuído que significa Hadoop sistema de arquivos distribuído. Se você não estiver familiarizado com H DFS, quando estiver lidando com big data e estiver trabalhando com um cluster Hadoop, geralmente é onde seus dados viverão. Então, novamente, RTD apenas uma maneira de carregar e manter grandes quantidades de dados e manter o controle de tudo de uma vez, mas conceitualmente dentro do seu script. E RTD é apenas um objeto que contém um monte de dados. E você tem que pensar sobre a escala porque faísca faz isso para você. Agora, existem dois tipos diferentes de classes de coisas que você pode fazer em nosso DDS. Uma vez que você os tem, você pode fazer transformações, e você pode fazer ação. Então vamos falar sobre transformações primeiro, então as transformações são exatamente o que parece. É uma maneira de pegar um rdd e transformar cada linha nesse RTD para algum novo valor com base em alguma função que você fornece, então mapa e mapa plano são os que você verá mais frequentemente. Ambos terão qualquer função que você pode sonhar que levará sua entrada um RTD roven , e ele irá produzir uma linha transformada. Então, por exemplo, você pode tomar entrada bruta de algum arquivo See SV e você é operação de mapa pode pegar essa entrada e dividi-lo em campos individuais com base no comum o limitador e retornar uma lista python, por exemplo, que tem esses dados em um formato mais estruturado no qual você pode executar processamento adicional. E você pode encadear operações de mapa juntos para que a saída de um mapa possa acabar criando um novo IDT que você, em seguida, fazer outra transformação e assim por diante e assim por diante e de novo. A chave é desencadear distribuir essas transformações pelo cluster para que ele possa tomar parte do seu RTD e transformá-lo em uma máquina e outra parte de você já na transformação em outra. Como eu disse, mapa e mapa plano são a transformação mais comum de se ver. A única diferença é que eles diferem nesse mapa só permitirá que você produza um valor para cada linha onde é plana. Mapa vai deixar a saída de vários nova rosa para uma dada rosa, assim você pode realmente criar um maior um RTD ou um RTD menor do que você começou usando mapa plano . Além disso, filtro pode ser usado se o que você quer fazer é apenas criar uma função booleana que diz, Este Roby deve preservado ou não? Sim ou não? E houve algumas transformações menos comumente usadas também, como distintas, como distintas, que só retornarão a valores de fedor dentro de sua amostra RTD que você tira uma amostra aleatória dela. E então você pode executar operações de interseção como Unit A interseção, subtrair ou até mesmo produzir cada combinação cartesiana que existe dentro de um RTD. Aqui está um pequeno exemplo de como pode funcionar. Então vamos dizer que eu criei um RDD apenas a partir da lista. 1234 Eu posso chamar então RTD mapa ponto com uma função lambda de X que leva em cada linha cada valor de que RTD chama X, e, em seguida, ele se aplica à função. X vezes x dois quadrados-lo Assim, a saída deste se eu fosse então recolher a saída deste IDT seria 149 e seis porque iria tomar cada entrada individual que RTD e quadrá-lo e colocá-lo em um novo IDT. Ok, faz sentido agora se você não se lembra quais são as funções do Lambda. Nós falamos um pouco mais cedo neste curso, mas como um atualizador, a função do Lambda é apenas uma abreviação para definir uma função em linha. Então Lambda X Colon X Vezes X é exatamente a mesma coisa que definir uma função separada que chamamos Quadrado It que retorna X Vezes X e dizendo rdd dot mapa quadrá-lo. Portanto, é apenas uma mão curta para funções muito simples que você deseja passar. É uma transformação elimina a necessidade de realmente declarar isso como uma função nomeada separada de sua própria. E você sabe que essa é toda a função de Ah, essa é toda a idéia de programação funcional. Então você poderia dizer que você entende programação funcional agora, a propósito. Mas, na verdade, é apenas uma notação abreviada para definir uma função em linha como parte dos parâmetros para uma função de mapa ou qualquer transformação, para esse assunto. Você também pode executar ações em RTD, então quando você quiser realmente obter resultados, você pode chamar coletar em um R D D. E isso vai lhe dar de volta um objeto python velho simples que você pode, então ele array através e imprimir os resultados, ou salvá-los em um arquivo ou qualquer coisa que você deseja fazer. Você também pode chamar count, o que irá forçá-lo a realmente ir contagem. Quantas entradas? Aaron, o RTD neste momento, contagem por valor irá dar-lhe uma repartição de quantas vezes cada valor único dentro que já ocorre. E você também pode provar a partir do Arditti usando take, que levará você sabe, algum número aleatório de entradas do Ártico para o seu topo, que lhe dará as primeiras entradas em que já. Se você quiser apenas dar uma olhada no que está lá dentro para fins de depuração, a ação mais poderosa é reduzida, e isso realmente permitirá que você combine valores juntos para o mesmo valor de chave comum. Assim, você também pode usar RTGs no contexto de dados de valor chave, e a função reduzida permite definir uma maneira de combinar todos os valores para uma determinada chave. Muito semelhante e espírito que um mapa produz. Então, usando reduções reduzidas, você sabe basicamente a operação analógica análoga a um redutor e mapear reduzir e mapear é análoga aos mapeadores, então muitas vezes é muito simples pegar um mapa, reduzir o trabalho e convertido em faísca usando essas funções. Lembre-se, também, que nada realmente acontece em faísca até que você chame uma ação. Então, uma vez que você chama um desses métodos de ação, é quando Spark sai e faz sua magia com gráficos cíclicos direcionados e na verdade calcula a maneira ideal de obter a resposta que você quer. Mas lembre-se, nada acontece até que essa ação aconteça. Então, isso às vezes pode tropeçar você quando você está escrevendo scripts do Sparks porque você pode ter uma pequena declaração de impressão lá e você pode esperar para obter uma resposta lá, mas ele realmente não aparece até que a ação é realmente executada. Então vamos entrar em alguns. Vamos falar um pouco mais sobre Ml lib em seguida, e para entrar em mais detalhes sobre como isso funciona conceitualmente, modo que é faísca um, um em uma em poucas palavras. Esses são os conceitos básicos de que você precisa para programação de faíscas. Basicamente, o que é um rdd e uma das coisas que você pode fazer para um RTD e uma vez que você começa esses conceitos que e você pode escrever algumas partes faísca código up. Em seguida, vamos falar sobre ML lib e alguns recursos específicos e faísca que permite que você faça algoritmos de aprendizado de máquina usando faísca. 73. Como introduzir o MLLib: Então, felizmente, você não tem que fazer as coisas da maneira mais difícil e faísca quando você está fazendo aprendizado de máquina. Ele tem um componente integrado chamado ml lib que vive em cima do núcleo de faísca, e isso torna muito fácil executar algoritmos complexos de aprendizado de máquina usando conjuntos de dados maciços e distribuindo esse processamento em um cluster inteiro de computadores. Coisas muito excitantes. Vamos aprender mais sobre o que ele pode fazer. Mais uma coisa que preciso cobrir antes de começarmos a mergulhar em algum código real. E nesse ponto, coisas como muito mais sentido é refluxo de ml, e isso é um componente construído sobre a faísca para aprendizado de máquina, a Biblioteca de Aprendizagem de Máquina. Então, obviamente, isso é muito relevante para este curso. Então, onde algumas das coisas que ml lib pode fazer bem, uma é extração de recursos, então uma coisa que ele pode fazer em escala é frequência de termo e freqüência de documentos inversos coisas, e isso é útil para criar, por exemplo, índices de pesquisa. E nós vamos realmente passar por um exemplo disso em algumas palestras a partir de agora. Então, a chave novamente é que ele pode fazer isso em todo o cluster usando conjuntos de dados maciços para que você saiba, você pode criar seu próprio mecanismo de pesquisa para a Web com isso potencialmente, ele também oferece, você sabe, seu funções estatísticas básicas Chai Square testes, Pearson ou Spearman, Correlação e algumas coisas mais simples, como homens e Max, média e variância daqueles ar terrivelmente emocionante em e de si mesmos. Mas o que é emocionante é que você poderia realmente calcular as variantes ou a média ou qualquer outra coisa, ou a pontuação de correlação em um conjunto de dados massivo e realmente quebrar esses dados configurados em vários blocos executados em um cluster inteiro de necessário. Então, mesmo que algumas dessas operações não sejam terrivelmente sexy, o que é sexy nele é uma escala na qual ele pode operar. Ele também pode suportar coisas como regressão linear e regressão logística. Então, se você precisa ajustar uma função a um conjunto massivo de dados e usá-lo para previsões, você pode fazer isso também. Ele também suporta suporte a máquina vetorial, então estamos entrando em alguns dos algoritmos mais ah extravagantes aqui. Algumas das coisas mais avançadas em que dois podem escalar até conjuntos de dados massivos usando faíscas , um l lib. Havia um classificador Bayes ingênuo construído nos lábios da Emma. Lembra daquele classificador de spam que construímos há algumas palestras? Você poderia realmente fazer isso para um sistema de e-mail inteiro usando faísca e escalar isso até onde você quer decidir árvores, uma das minhas coisas favoritas em aprendizado de máquina que, também, é suportado por faísca na verdade ter um exemplo disso mais tarde. Neste curso, K significa agrupamento. Além disso, faça um exemplo disso mais tarde no curso, e você pode fazer agrupamento. Usar K significa usar conjuntos de dados maciços usando faísca uma lib ML, mesmo análise de saída de componente principal e S VD. Podemos fazer isso com faísca também, e teremos um exemplo disso também. E, finalmente, há um algoritmo de recomendações construído chamado alternando mínimos quadrados que é construído em NL lib. Pessoalmente, eu tive um tipo de resultados misturados com ele. Você sabe, é um pouco demais de uma caixa preta para o meu gosto, mas eu sou uma espécie de recomendar seu sistema esnobe. Então tome isso com um grão de sal. Usar ML ao vivo é geralmente bastante simples. Você sabe, há apenas algumas funções de biblioteca que você precisa chamar. Ele introduz alguns novos tipos de dados, no entanto, que você precisa saber sobre um é um vetor e um exemplo de um vetor. Lembra quando estávamos fazendo semelhanças de filmes e recomendações de filmes? Por exemplo, um vetor pode ser uma lista de todos os filmes em um determinado usuário avaliado como ok e a diferença entre um fator esparso em um vetor denso. Então, digamos que temos que lembrar, há muitos, muitos filmes no mundo, e um vetor denso realmente representaria dados para cada filme que esse usuário assistiu, quer eles realmente assistiu o Então, por exemplo, digamos que eu tenha um usuário que assiste Toy Story. Obviamente, eu armazenaria sua classificação para Toy Story, mas se eles não assistissem o filme Star Wars, eu realmente armazenaria o fato de que não há um número. Você sabe que não há valor. Há dados faltando lá para Star Wars, então acabamos ocupando espaço para todos esses pontos de dados perdidos com um vetor denso, um fator esparso. Onley armazena os dados existentes, para que não desperdice espaço de memória em dados ausentes. OK, então é uma forma mais compacta de representar um vetor internamente, mas obviamente isso introduz alguma complexidade durante o processamento. Então é uma boa maneira de salvar memória se você souber que seus vetores terão muitos dados ausentes neles. Há também um tipo de dados de ponto rotulado que aparece. E isso é exatamente o que parece, um ponto que tem algum tipo de rótulo associado a ele que transmite o significado desses dados em termos legíveis por humanos. E há um tipo de dados de classificação que você encontrará se estiver usando recomendações com lábio ML. Então você sabe que realmente pode tomar em uma classificação que representa um 1 para 5 ou 1 para 10 qualquer estrela lendo uma pessoa pode ter e usar isso para informar recomendações de produtos automaticamente. Então eu acho que você finalmente tem tudo o que precisa para começar aqui. Vamos mergulhar e realmente olhar para algum código lib ml riel e executá-lo. E então vai fazer muito mais sentido. Então, isso é ml lib torna muito fácil executar algoritmos complicados de aprendizado de máquina potencialmente em conjuntos de dados muito grandes e distribuir esse processamento em um cluster inteiro . Como eu disse antes, faísca ainda é jovem e está crescendo a cada dia, então espero que essas capacidades continuem expandindo e evoluindo à medida que o tempo passa. Coisas legais. Vamos realmente sujar Ah, sujar nossas mãos e escrever no código suave e realmente fazer algum aprendizado de máquina real usando faísca a seguir. 74. Árvores de decisão no Spark: Então, vamos tornar isto real. Vamos olhar para algum código faísca real para fazer uma árvore de decisão usando ML live que ele pode realmente escalar até um cluster se você quiser. Na verdade, é bem simples. Vamos dar uma olhada. Então vamos brincar com uma faísca de ml. Abra seu aviso anaconda seu terminal dependendo do seu sistema operacional. E, a propósito, se você fez, basta instalar uma faísca. Lembre-se, nós definimos algumas variáveis de ambiente, então você precisará fechar e reabrir seu prompt anaconda se você já tiver uma aberta para pegá-las. Tudo bem, então vamos ver a nossa pasta de materiais do curso, como sempre fazemos. E aqui há um par de scripts Python que podemos usar com faísca. Agora, ao contrário de antes, podemos realmente executar isso em um caderno. Eso foram em vez de apenas ir para usar qualquer editor de texto, nós temos que olhar para esses arquivos e tipo de olhar para o que eles estão fazendo. Podemos usar Spider. Esse é o editor Python que vem com Anaconda. Então vá em frente e digite aranha com o porquê e nós para que isso venha para cima e aqui estamos. Então vá em frente, aperte o ícone aberto e navegue até o curso CNL materiais do curso. E queremos o guião faísca árvore decisória ponto tudo bem, então vamos ver o que está acontecendo aqui? Devemos? Agora, novamente, nós não estamos usando um caderno python olho desta vez. Na verdade, estamos apenas usando um script python autônomo. Daí o ponto p y extensão em vez de i p y N b. Na verdade, é possível executar código faísca dentro de um notebook, mas envolve ainda mais etapas de configuração. E eu acho que já fizemos o suficiente disso por enquanto, apenas para executar alguns exemplos de faíscas aqui. Então vamos manter isso como um roteiro independente no mundo real. A maneira como você executará isso em um cluster normalmente será. Você copiará o script para a nota mestre desse cluster, e há um script chamado Spark Dash Submit que vem com o Spark, que ele realmente interpretará esse script e o destruirá em todo o resto do cluster para você. Então essa é realmente a maneira que você gostaria de fazê-lo no mundo real de qualquer maneira, Você É possível começar com um caderno, mas é apenas um pouco mais de problema do que eu quero lidar agora. De qualquer forma, vamos ver o que este guião está a fazer. É simples o suficiente eso. Isso pode ser novo para você, então vou passar por tudo um pouco devagar. Começamos importando todos os pacotes que precisamos, é claro, e precisamos de algumas coisas de M l vivo. Obviamente, se vamos fazer o código M l Love, precisamos de algo chamado Ponto Rotulado e a própria árvore de decisão de Emma Live, ambos sobre os quais falamos antes. E praticamente todos os scripts de faísca também importarão o contexto do parque de conferências do faísca . Nós também estamos indo para matriz importante de um pie, que permite usar corrida torta entorpecida como estamos manipulando nossos dados e preparando-o aqui. Agora, tenha em mente que a faísca não vai magicamente fazer tudo de nenhuma torta e psicologia aprender um distribuível e paralisado através de um cluster. Se você chamar pira dormente, psíquica aprender funções dentro deste script, ele vai ser apenas executá-lo dentro do conhecimento específico que isso está sendo executado em, então ele não vai distribuir automaticamente esse trabalho em seu cluster para você. Você tem que estar usando as funções reais dentro ml live para que isso aconteça. Então, tenha isso em mente. Sim, você ainda pode usar torta dormente. É como se aprendesse aqui, mas esses métodos não serão distribuídos. Se você quer aprendizado de máquina distribuído, você tem que ficar com o que está dentro deles. Eu vivo. Tudo bem. Então, para iniciar um script de faísca para nós, precisamos definir um contexto de faísca, que é o ambiente em que estamos executando faísca. E isso basicamente cuida de todos os detalhes de como realmente distribuir essas coisas e como organizar a ordem em que as coisas estão sendo executadas juntas novamente em seu cluster. A beleza da faísca é que ele faz tudo isso pensando por você. Não precisa se preocupar com isso. Parte disso criou um contexto de faísca. No entanto, precisamos primeiro de um objeto de configuração. E o que está acontecendo aqui é que estamos enviando o novo conjunto de objetos faísca con Master local significa que nós só vamos estar rodando em nosso PC local para este exemplo porque eu não tenho um cluster à mão. Se você estivesse executando em um cluster real, você mudaria isso para outra coisa. E nós também vamos definir um nome de aplicativo para que quando você visualizar este e o console do faísca , se tivéssemos um em execução, você veria que se referia a esse nome. Então, com isso, nós configuramos nosso contexto faísca e vamos pular essas funções por agora, vamos voltar para eles e quando nós realmente chamá-los e se nós descermos abaixo dessas funções, você começa a chegar às linhas reais de código que será realmente executado aqui. Então começamos carregando nossos dados brutos do passado. Arquivo CSP inicial mais alto. Vimos isso anteriormente em nosso exemplo de árvore de decisão. Vamos em frente e abrir isso para nos refrescarmos sobre o que parece. Então, se vocês dois são materiais de curso, devemos encontrá-lo aqui, pneus passados na CSB. Vamos abrir isso e isso vai abrir no Excel para mim. Então ele vai fazer tudo parecer uma tabela bonita, mesmo que seja apenas um arquivo de valores separados por vírgula. Então, novamente, temos nossa estrutura. Aqui está a primeira linha é os títulos para as colunas reais aqui. Então nossa primeira linha nos diz o que essas colunas significam. Anos de experiência, estejam ou não empregados. Número anterior de empregadores, nível de escolaridade. Assim por diante e assim por diante. E como antes, temos muitos dados aqui que precisam ser convertidos em dados numéricos. Como qualquer algoritmo de aprendizado de máquina. Ele lida melhor com números e letras. Então vamos ter que transformar esses sábios e termina nos uns e zeros. E estes níveis doutorado de educação de doutorado e M terão de ser convertidos num novo milagre. Dados originais em vez disso. Então é com isso que estamos lidando aqui. Vamos voltar ao nosso guião. Tudo bem, então a primeira coisa que precisamos fazer é tirar aquele hetero porque isso não é realmente informação útil para os algoritmos. Certo. Então, para fazer isso, o truque que estamos fazendo é este. Dizemos cabeça r é igual ao ponto de dados brutos primeiro. Então, o que aconteceu quando chamamos de arquivo de texto de ponto C. Está carregada todas as fileiras individuais disso? Veja arquivo SV em um rdd chamado dados brutos. Ok, então agora nós temos um já chamado de dados brutos que apenas contém apenas as cadeias cruas, separadas por vírgulas de cada linha desses dados. O que estamos fazendo aqui é extrair a primeira linha desses dados, que vai ser o nosso hetero que apenas contém os nomes das colunas. E então podemos chamar a função de filtro em nossos dados brutos já d com uma função lambda novamente. Esta é uma função em linha. Basicamente, isso diz que desde que a estrada dada não seja igual, o hetero irá preservá-la. Então, fazendo isso, nós basicamente fazemos uma cópia de dados brutos que na verdade filtra o primeiro hetero. E dizemos isso em um novo dados brutos. Então, basicamente, nós temos um dado bruto já neste ponto onde o primeiro teve uma linha foi filtrado. Agora, este é um bom momento como qualquer outro para mencionar que no código de faísca moderno, há algo chamado um conjunto de dados em vez de um RDD, e que tende a ser usado mais amplamente nesses dias porque tem um desempenho ligeiramente melhor em alguns casos, bem, ele tem um desempenho muito melhor em alguns casos Depende. Como você está usando isso? E ele também permite que você apenas executar sequela contra os dados direito no lugar. Então, por causa dessas conveniências, as pessoas estão migrando mawr para usar conjuntos de dados em vez de já DS. É basicamente uma estrutura de nível superior, mas neste caso, não faz grande diferença. Então podemos usar o nosso trabalho liberal DDS ml basicamente da mesma maneira com ele. Hum, então nós vamos ficar com RTGs por enquanto. Minha maneira de olhar para ele é, se você tem uma solução simples e uma solução mais complicada e não há grande diferença de desempenho, fique com a solução simples. Então eu vou ficar com RGDS aqui. Mas só para você saber, quando você fala com as pessoas hoje sobre faísca, elas provavelmente estarão trabalhando com conjuntos de dados ou quadros de dados em vez de rgds. O mesmo conceito geral só tem mais funcionalidade. Certo, então agora precisamos dividir nossos valores separados por vírgulas em campos reais aqui. E para fazer isso, nós vamos chamar uma função de mapa e nós estamos indo para um pouco na linha lambda função aqui novamente, que chama dividir na linha real usando a vírgula que vai pegar cada linha de dados e dividi-lo com base nos comentários em campos individuais na lista. Então nós temos um novo RTD chamado See SV Data, onde nós realmente estruturamos esses dados um pouco. Nós realmente retiramos as vírgulas em vez de apenas um valor que contém uma grande vírgula, lista separada de coisas. Temos uma estrada que contém campos individuais que estavam interessados. Agora precisamos realmente converter esses campos para o que queremos, então vamos chamar um mapa com uma função real neste ponto chamado Criar Pontos Rotulados. Então vamos subir para essa função e ver o que ela faz. Tudo bem, então criar pontos de rótulo leva em uma lista de campos que vieram de dados RCs V depois separá-lo com base nos comentários, e converte-los no formato que realmente precisamos para treinar nossa árvore de decisão. Então a primeira coisa que fazemos é converter os primeiros campos, que representa três anos de experiência em um inteiro. Em vez de uma string, vamos pegar o campo empregado e chamar nossa função binária sobre ele, então Campos um vai ser uma sensação que contém ou a letra posterior Por que ou final direita comunica onde eles não estão. Eles estão empregados atualmente. A função binária diz: “ Se for mentira, devolva outra. Devolver zero. Então esta função vai ser chamada cada vez em cada linha para converter isso. Por que, para um um ou um fim para um zero? Mas lembre-se, aprendizado de máquina geralmente quer números, não cordas ou letras. Sempre que possível, vamos converter o número anterior de empregadores para um inteiro de uma string o nível de educação . Vamos chamar essa função de educação mapa nesse campo e isso apenas converte B S, M s e PH. D para os valores orginais 12 e três. E nós vamos apenas chamar a função binária novamente para conversar com sábio e termina se eles vieram de uma escola de nível superior onde eles tiveram um estágio anterior e os dados rótulo final de se eles foram contratados ou não de sábio e termina dois zeros e uns. E como você deve se lembrar, Ml Lib quer pontos rotulados como sua entrada. Então vamos retornar uma estrutura de ponto rotulado que contém com rótulo, que é o campo mais alto seguido por todos os dados da feição, que será uma matriz que contém os anos de experiência em que eles não são, eles são empregados empregadores anteriores, assim por diante e assim por diante. Então o ponto do rótulo contém o rótulo, que é a coisa que estamos tentando descobrir, se eles devem ou não ser contratados e, em seguida, os recursos, que são todas as características diferentes de cada pessoa que podem influenciar se ou não seriam contratados ou não. Tudo bem, então neste ponto, se você voltar para onde isso foi chamado, nós temos um novo RTD chamado dados de treinamento que contém todos os nossos dados de negociação, convertidos em dados numéricos e, finalmente, convertidos em rotulado pontos, que é o que NL espera. Tão incrível. Agora podemos começar a brincar com ml lib. Então vamos criar um conjunto de candidatos de teste para realmente experimentar isso com, e este exemplo apenas irá configurar uma pessoa aqui. Então vamos configurar um array que contém informações que representam 10 anos de experiência anterior. Eles estão atualmente empregados. Eles tinham três empregadores anteriores que atualmente têm um grau B. Eles não são de uma escola de nível superior e eles não fizeram um estágio. Certo, então nós meio que montamos esse candidato falso para ver se podemos realmente fazer uma previsão sobre essa nova pessoa que nunca vimos antes. Uma vez que nossa árvore de decisão foi criada, e então nós pegamos esse candidato de teste e criamos um RDD fora dele para que possamos realmente alimentá-lo em faísca usando a função paralisada que apenas converte esta matriz de candidatos de teste, que é realmente apenas um candidato em um RTD chamado dados de teste. Em seguida, vamos realmente tomar a nossa decisão. Classificador de árvore irá chamá-lo de modelo. E podemos chamar a árvore de decisão que vem do classificador de trem biblioteca ml Lib passando em nossos dados de treinamento já D que contém todos os dados de treinamento rotulados e um monte de hiper parâmetros. Aqui. Classes NUM indicam que só temos duas classes que estamos tentando classificar as pessoas se elas são ou não contratadas, sim ou não. São duas classes diferentes. Nós também temos que passar em uma matriz para encontrar quais são características de ar categórico na natureza . E então podemos especificar como a própria árvore de decisão é construída com que função impureza, sua profundidade máxima e o número máximo de Ben. Tudo bem. Assim que tivermos esse modelo treinado, podemos usá-lo para fazer previsões. Então vamos fazer isso. Vamos chamar o modelo Doc Predict, dado os nossos dados de teste RTD que contém o nosso candidato de teste, e vamos imprimir os resultados disso. Vamos imprimir o resultado real dessa previsão. E aqui está o ponto importante. Então, neste ponto, estamos realmente dizendo que eu quero chamar previsões ponto coletar. Eu quero realmente obter algo de volta do Spark me dando uma resposta. Não é até este ponto que a faísca realmente faz alguma coisa. Então tudo o que tem acontecido até este ponto é que um gráfico cíclico dirigido foi construído de todas as coisas que a faísca precisa fazer para produzir isso. Essa resposta em grande escala. Uma vez que eu realmente digo que eu quero um resultado, eu quero uma resposta. Ele vai voltar e, como, instruir a maneira ideal de colocar tudo junto e a maneira ideal de distribuí-lo . Se eu estava em um cluster e nesse ponto vai sair e começar chugging longe e produzir uma resposta para mim então vai realmente imprimir nossa última previsão maior, e nós também imprimir o próprio modelo. Há um método útil para depurar string no modelo de árvore de decisão que nos permitirá entender o que está acontecendo dentro da árvore de decisão e quais decisões está tomando com base em quais critérios. Então, com isso, podemos tentar agora novamente, com sparked, precisamos executar isso realmente dentro do próprio ambiente de faísca. Eu não posso apenas executar isso de dentro do Spider, pelo menos não sem fazer um monte de etapas extras. Então vamos fechar uma aranha ou pelo menos minimizar isso por enquanto. E se voltarmos ao nosso aviso de anaconda, é realmente abrir um novo, hein? De volta para Anaconda Anaconda. Prompt. Isto irá certificar-se de que onde temos anacondas python ambiente disponível para nós novamente será CD para nossos materiais do curso. E agora o que podemos fazer é digitar em faísca traço submeter, seguido por esse nome de script, que foi acionado árvore de decisão ponto p y. Agora o script de envio de ponto faísca é parte da própria faísca. Isto é o que realmente leva o script em decide como distribuí-lo e realmente alimentá-lo no motor de faísca. O que é isso? Entre e veja o que acontece. Então, se você instalou o Sparks com sucesso, ele deveria estar vendo algo assim. E lá temos. Tudo bem, então para o nosso usuário de teste lá, nós realmente previmos que iríamos contratar essa pessoa. E também temos a própria árvore decisória impressa aqui. Agora, nós realmente não podemos obviamente fazer uma representação gráfica bonita como fizemos antes, porque estamos apenas em um console de comando aqui, mas você ainda pode interpretar isso. Então, basicamente, ele diz se apresentam um em zero. Então, a maneira de interpretar isso é, se olharmos para trás em nossos dados fonte aqui, se começarmos a contar com zero recurso, 101 seria empregado. Está bem? E lembre-se, nós nos convertemos. Por quê? Uma ponta do pé um e zero. Então ele diz, basicamente, se você não está empregado se o recurso um que é empregado está no conjunto zero, que contém um único valor de zero. Então, para dados categóricos, você verá essa sintaxe em, você sabe, colchetes e quaisquer que sejam as categorias. Tudo bem, então se você não está empregado, e se o recurso cinco também é zero. Então 012345 Isso é um estágio. Então, se você está desempregado, você não fez um estágio. E, ah, isso diz, se você tem menos de meio ano de experiência, basicamente você não tem experiência e você tem apenas um diploma de bacharel em ciências. Nós não vamos contratar você. É o que a previsão é, e você pode passar e descobrir o resto da estrutura aqui, se quiser. Mas é assim que você lê essas coisas. Basicamente legal. Então, aí está, uma árvore de decisão real em execução dentro do Apache Spark. E embora isso pareça uma forma complicada de fazer as coisas em um único computador , quero dizer, a beleza é que se você realmente executasse isso na nota mestre de um verdadeiro cluster Hadoop ou um verdadeiro cluster de faíscas, isso só funcionaria. Ele realmente distribuiria esse trabalho em todo o cluster. Quão legal é isso? Então, você pode realmente alimentar um conjunto de dados massivo de dados de treinamento e um grande conjunto de pessoas para as quais você deseja fazer previsões, e pode distribuir isso por todo um cluster e dar resultados de volta, não importa como grande que o conjunto de dados pode ser. Então é isso que é realmente empolgante sobre isso. Você sabe, você poderia imaginar um mundo onde você está trabalhando para uma grande empresa ou alguma empresa que produz, você sabe, contratando software de recrutamento, e você poderia realmente executar isso em escala massiva através de um grande número de pessoas. Deixarei de lado as preocupações éticas de realmente fazer algo assim no mundo real , onde você está apenas tentando resumir as pessoas em um número e alimentá-las em um modelo. Quero dizer, obviamente, eu não gostaria que as decisões de contratação do Rial fossem baseadas apenas nisso. Esse não seria um mundo em que eu gostaria de viver. Mas por uma questão de ilustração, é assim que funcionaria para que tenhamos uma decisão árvores em faísca correndo de verdade. E lá você tem uma árvore de decisão real construída usando faísca uma lib ML que realmente funciona e realmente fazem sentido coisas muito impressionantes para que você possa ver que é muito fácil de fazer, e você pode escalá-lo até o maior de um conjunto de dados que você pode imaginar se tem um cluster grande o suficiente, então lá você tem 75. Conde no: Próximo. Vamos tomar o nosso K significa clustering exemplo que usamos anteriormente neste curso e resolvê-lo desta vez usando faísca e ml lib e você verá que é apenas um ZZ, talvez ainda mais fácil. Então novamente do Spider, vamos abrir um arquivo aqui, e nossos materiais do curso desta vez navegarão para a localização do material do curso, é claro, sob o curso CML, e desta vez queremos o script. Spark K significa não p sábio para ir em frente e abrir isso. E como antes, vamos dar um exemplo que fizemos anteriormente no curso em um único PC usando apenas aprendizagem psíquica e realmente faremos a mesma coisa usando o Apache Spark Então nós poderíamos realmente dimensionar isso para um cluster inteiro. Então vamos passar por este código. Tudo bem, então novamente, algumas coisas caldeiradas que vamos importar o K significa pacote do pacote de ml de agrupamento . Nós vamos para o Ray importante e aleatório de Numpie porque novamente estamos livres para usar o que você quiser. Este é um script python no final do dia, e Emma ao vivo muitas vezes não requer nenhuma torta. Nenhum árbitro levantado como entrada. Nós vamos importar a função raiz quadrada e as coisas caldeiradas usuais que precisamos para desencadear contexto da faísca da conferência praticamente toda vez da Pie Spark. Também vamos importar a função de escala da psiquiatria. Aprenderá isso de novo. OK, você aprendeu psicologicamente, desde que você tenha certeza que ele está instalado em todas as máquinas que você vai executar este trabalho em. E também não suponha que o psíquico aprendido vai se escalar magicamente só porque você está rodando em faísca. Mas como só estou usando para a função de dimensionamento, está tudo bem. Tudo bem, vamos em frente e preparar as coisas, então eu vou enviar uma variável global K 25 Então eu vou correr. K significa agrupamento neste exemplo com um k A cinco com cinco clusters diferentes, e eu vou em frente e configurar uma tosse faísca local apenas em execução no meu próprio desktop de Deus. Defina o nome do meu aplicativo para acender médias K e crie um objeto de contexto de faísca que eu possa usar para criar rtgs que são executados na minha máquina local. Vamos ignorar esta função por enquanto, vá para a primeira linha de código que é executado. A primeira coisa que vamos fazer é criar RTD paralisando alguns dados falsos que estou criando. E isso é o que esta função de dados em cluster faz. Basicamente, eu estou dizendo a ele para criar 100 pontos de dados agrupados em torno de K Central Lloyds, e isso é praticamente idêntico ao código que olhamos quando jogamos com K significa agrupamento no início do curso. Então, se você quer uma atualização, vá em frente e volte e olhe para a palestra. Mas basicamente o que vamos fazer é criar um monte de Centrowitz aleatórios em torno do qual normalmente distribuímos alguns dados de idade e renda. Então o que estamos fazendo é tentar agrupar pessoas com base em sua idade e renda, e estamos fabricando alguns pontos de dados para fazer isso. Tudo bem, então isso retorna uma matriz de torta dormente de nossos dados falsos. Agora, a outra coisa que estamos fazendo, então quando esse resultado voltar da criação de dados agrupados, eu estou chamando escala sobre ele, e isso irá garantir que minha idade é e renda ar em escalas comparáveis. Lembra-te, minha palestra diz que tens de te lembrar da normalização dos dados. Este é um desses exemplos em que é importante. Então, estamos normalizando esses dados com escala para que obtenhamos bons resultados das médias de K. E, finalmente, paralisamos a lista resultante de matrizes em um r d d usando paralisado. Então agora o nosso RTD de dados contém todos os nossos dados falsos. Tudo o que temos que fazer isso é ainda mais fácil do que uma chamada de árvore de decisão k significa ponto train em nossos dados de treinamento, passando o número de clusters que queremos nosso par de valores K de parâmetros que colocam um limite superior em quanto processamento ele vai fazer. Diga a ele para usar o modo de inicialização padrão de K significa onde nós apenas escolher aleatoriamente nossos roids centrais iniciais para nossos clusters antes de começar a iteração neles. E volta vem o modelo que podemos usar. Vamos chamar esse grupo. Tudo bem, agora podemos brincar com isso. Então vamos começar por imprimir as atribuições de cluster para cada um de nossos pontos. Então vamos pegar nossos dados originais e mapear isto é, transformá-lo usando esta função lambda. Esta função está indo apenas para transformar cada ponto no número do cluster que é previsto a partir do nosso modelo. Ok, então de novo. Estamos apenas pegando nosso RTD de pontos de dados. Estamos chamando clusters para fora. Preveja para descobrir a qual agrupamento arcano significa que o modelo está atribuindo-os. E nós vamos apenas colocar os resultados em nosso RDD resultado. Agora, uma coisa que eu quero salientar aqui é esta chamada em dinheiro aqui. Então, uma coisa importante quando você está fazendo faísca é que a qualquer momento você vai se acalmar ou de uma ação em RTD, é importante descontar primeiro porque lembre-se, quando você chama em ação em RTD, faísca apaga e figura o DAG para a frente e como toe chegar de forma otimizada para esse resultado e vai sair e realmente executar tudo para obter esse resultado. Por isso, se eu apelar a acções diferentes sobre a mesma IDT acabará por avaliar essa IDT duas vezes. E se você quiser evitar todo esse trabalho extra, você pode descontar seu RTD, a fim de ter certeza de que ele não re computá-lo mais de uma vez. Então, fazendo isso, garantimos que essas duas operações subsequentes façam a coisa certa. Então, a fim de obter um resultado real deste resultado, RTD ou Borgonha foi usado contagem por valor e O que isso vai fazer é nos dar de volta um rdd que tem quantos pontos, Aaron cada cluster. OK, então lembre-se de resultado RTD mapeou cada ponto individual para o cluster que acabou com. Então agora podemos usar contagem por valor para apenas contar quantos valores vemos para cada determinado cluster I d e podemos imprimir essa lista e podemos realmente olhar para os resultados brutos de que são tediosos. Bem, essa chamada cobrar sobre ele e isso vai me devolver cada atribuição de cluster de pontos e nós podemos imprimir todos eles. Agora, como medimos? Quão bons são os clusters? Bem, uma métrica para isso é chamada, mas dentro de conjunto soma de erros quadrados. Uau, isso parece chique. É um termo tão grande. Precisamos de uma abreviatura para isso. Ws SSC Tudo o que é, nós olhamos para a distância de cada ponto para a sua centralmente a final centralmente em cada cluster Pegue o quadrado desse erro e resuma-o para todo o conjunto de dados. Ok, então é apenas uma medida de quão longe cada ponto está do seu OID central. - Obviamente. Sabe, se há um monte de erros no nosso modelo, então eles tendem a ser distantes da central. É isso que pode implicar que precisamos de um valor maior sobre K, por exemplo. Então vamos em frente e computar que Valium imprimi-lo. Como fazer isso? Definimos essa função de erro que calcula o erro quadrado para cada ponto. Ele apenas leva a distância do ponto para o centro de OID central de cada cluster e resume-o. Então, para fazer isso, estamos pegando nossos dados de origem chamando essa função lambda nele que realmente calcula o ar de seu ponto central central. E então podemos encadear diferentes operações juntos aqui. Então estamos chamando mapa para primeiro calcular o ar para cada ponto. Ok, e então para obter um total final que representa todo o conjunto de dados estavam chamando reduzir nesse resultado. Então estamos fazendo mapa de pontos de dados para calcular o ar para cada ponto e, em seguida, ponto reduzido para pegar todos esses erros e adicioná-los todos juntos. E isso é o que esta pequena terra reduzida uma função faz. Esta é basicamente uma forma extravagante de dizer que quero que somemos tudo nesta IDT num resultado final. Certo, então reduza. Vamos pegar o RDD inteiro duas coisas de cada vez e combiná-las usando qualquer função que você fornecer. Então a função que eu estou fornecendo aqui é pegar as duas estradas que eu estou combinando e apenas adicioná-las. E se fizermos isso ao longo de cada entrada do IDT, tivemos o total final resumido, pode parecer um pouco de uma maneira complicada de resumir um monte de valores. Mas fazendo isso dessa maneira, podemos nos certificar de que podemos realmente distribuir essa operação se precisarmos. Você sabe, nós poderíamos realmente acabar computando a soma deste pedaço de dados aqui nesta máquina e uma soma de uma peça diferente sobre esta outra máquina. E então pegue essas duas somas e combine-as em um resultado final. Certo, então você vê como isso funciona? Esta função reduzida está dizendo, Como faço para levar qualquer para valores, você sabe, resultados intermediários desta operação e combiná-los juntos. Tudo bem. Então, novamente, sinta-se livre para tomar um momento e olhar para isso um pouco mais se você quiser afundar. Nada realmente extravagante acontecendo aqui. Mas há alguns pontos importantes. Introduzimos o uso de dinheiro. Se você quiser ter certeza de que você não faz cálculos re desnecessários em RTD que você vai usar mais de uma vez, introduzimos o uso da função reduzida, e temos um par de funções mapeadoras interessantes. Uma ondulação aqui. Portanto, há muito para aprender neste exemplo, mas no final do dia, ele vai apenas u K significa agrupamento. Então vamos em frente e executá-lo de modo que antes vai abrir em Anaconda solicita que você ou seu terminal em outras plataformas. Vamos CD para o nosso curso. Os materiais são e vamos digitar em bunda brilhante Enviar faísca K significa parar ey e apenas deixar que correr e ver o que acontece. E temos um resultado. Muito legal. Tudo bem, então é como se primeiro tivéssemos uma contagem por valor aqui, onde é apenas mostrando quantos de cada ponto foram atribuídos a cada cluster, e estes parecem bastante distribuídos uniformemente. Tivemos 20 pontos, categoriza cluster dois e 20 0 23 20 e 17. Então isso é um bom sinal, porque criamos um número par de pontos diferentes em nossos dados fabricados que estávamos tentando treinar contra. Certo? E se você olhar para as atribuições de cluster reais novamente, se você se lembrar de como geramos os dados para começar, nós realmente geramos um cluster de cada vez. Então é um bom sinal que este ar completamente temos todos os dois, todos os zeros, todos os uns, todos os três. E, você sabe, começa a ficar um pouco confuso com as forças de um jogado no meio lá. Um par mais uma vez lá, então nem sempre acertou. Alguns desses aglomerados estavam um pouco sobrepostos, que parece. E, finalmente, temos uma métrica W s S e, na verdade, computando o quão bom é de 20,3. Legal. Então funcionou. Nós realmente fizemos. K significa clustering usando o Apache faísca distribuído potencialmente em um cluster se tivéssemos um tão legal. E se você quiser se desafiar a mergulhar ainda mais profundamente, há algumas coisas aqui. Você pode tentar que nós apenas tentar aumentar ou diminuir o valor de K. Um dos grandes desafios e K significa clustering é escolher o valor certo. Ok, então veja o impacto que isso tem. Obviamente, há um valor real de K aqui que geramos os dados com e será informativo para ver o que ter o valor errado de K faz com seus resultados. Além disso, o que acontece se você não normalizar os dados de entrada antes de agrupá-los? Isso afeta a qualidade deste algoritmo? E o que acontece se você alterar acelerações de tema ou executar parâmetros? As hiper primárias, se você quiser, no veio e significa algoritmo em si. Então vá brincar que poderia essas coisas para tentar e ver você para vir acima com. Aí está você. K significa agrupamento feito em faísca uma lib ml coisas muito simples. E a beleza disso é que você poderia realmente através de um conjunto de dados grande, massivo e real. E se você executasse isso em um cluster, ele iria realmente dividi-lo para você e distribuir todo esse processamento automaticamente. E ainda funcionaria muito bem. Bastante incrível. Vamos passar para um exemplo ainda mais legal 76. TF / IDF: Então, nosso exemplo final de ML ao vivo vai ser usando algo chamado frequência de termo inverso de freqüência de documento ou T F I D E F, que é o bloco de construção fundamental de muitos algoritmos de pesquisa. Então, primeiro, vamos falar sobre os conceitos de T F I D E F. E como podemos usar isso para resolver um problema de pesquisa. Nosso exercício final com Apache Spark um ML ao vivo vai ser sobre frequência de termo inverso frequência de documento. Isso é o que o F I D F representa como de costume. Parece complicado, mas não é tão complicado quanto parece e o que realmente vamos fazer com T F D. D. F. é criar um motor de busca rudimentar para a Wikipédia usando Apache Spark e ML ao vivo. Quão incrível é isso? Então, vamos começar. T f i D E f stands retornam frequência uma frequência de documento inverso. E estas são basicamente duas métricas que estão intimamente inter-relacionadas para fazer pesquisa e descobrir a relevância de uma determinada palavra para um documento dado um corpo maior de documentos. Assim, por exemplo, cada artigo na Wikipédia pode ter uma frequência de termo associada a ela cada página no Inter. Qual Internet poderia ter uma frequência de termo associada a ela? Por cada palavra que aparece nesse documento? Parece chique. Mas como você verá, é um conceito bastante simples. Todas as médias de frequência do termo é a frequência com que uma determinada palavra ocorre em um determinado documento. Então, dentro de uma página da Web dentro de um artigo da Wikipédia dentro de um seja lá o que for, quão comum é uma dada palavra dentro desse documento? Sabe, qual é a proporção da taxa de ocorrência de palavras em todas as palavras nesse documento? É isso. Isso é tudo. A frequência do termo é a frequência do documento, mesma ideia chamada pouco confusingly. Mas tudo o que é é a frequência dessa palavra em todo o corpo de documentos. Então, quantas vezes essa palavra ocorre em todos os documentos que eu tenho todas as páginas da Web, todos os artigos na Wikipédia. Ok, então você sabe, por exemplo, palavras comuns como um ou o teria uma freqüência de documento muito alta, e eu esperaria que eles também tivessem uma freqüência de termo muito alta. Mas isso não significa necessariamente que eles são relevantes para um determinado documento. Você poderia ver onde estamos indo com isso. Então, digamos que temos uma frequência muito alta e uma frequência de documento muito baixa para uma determinada palavra. A proporção dessas duas coisas pode me dar uma medida da relevância dessa palavra para o documento. Então, se eu ver uma palavra que ocorre é muitas vezes em um determinado documento, mas não muito frequentemente no espaço geral de documentos que eu sei que esta palavra provavelmente transmite algum significado especial para este documento em particular, ele pode re transmitir o que este documento é realmente sobre. Então essa é a ideia da TF. Apenas significa frequência do termo vezes frequência inversa do documento, que é apenas uma maneira extravagante de dizer frequência do termo sobre a frequência do documento, que é apenas uma maneira extravagante de dizer, que frequência esta palavra ocorre neste documento em comparação com a frequência com que ocorre em todo o corpo de documentos? Isso é tudo. T f I D F significa que é simples assim. Então, na prática, há alguns pequenos novos desejos é a forma como usamos isso. Por exemplo, usamos o log real da freqüência do documento inverso em vez do valor bruto, e isso porque as freqüências de palavras na realidade tendem a ser distribuídas exponencialmente. Então, tomando o log, acabamos com uma espera ligeiramente melhor de palavras, dada a sua popularidade geral e são algumas limitações para essa abordagem. Obviamente, uma é que nós basicamente assumimos que um documento é nada mais do que um saco cheio de palavras. Assumimos que não há relações entre as próprias palavras. E obviamente isso nem sempre é o caso. E, na verdade, analisá-los pode ser uma boa parte do trabalho porque você tem que lidar com coisas como sinônimos e vários tempos de palavras. Abreviações, letras maiúsculas, erros ortográficos. Sabes, isto volta à ideia de limpar os teus dados. Ser uma grande parte do seu trabalho é os cientistas de dados, e é especialmente verdade quando você está lidando com coisas de processamento de linguagem natural. Felizmente, existem algumas bibliotecas que podem ajudá-lo com isso, mas é um problema real, e isso afetará a qualidade de seus resultados. Outro truque de implementação que usamos com T F I. D. F. é em vez de realmente armazenar palavras de string reais com suas freqüências de termos e freqüências de documentos inversos para economizar espaço e tornar as coisas mais eficientes, nós realmente mapear cada palavra para um valor numérico um valor hash, nós chamamos isso. Então a idéia é que temos alguma função que pode pegar qualquer palavra, tipo de olhar para suas letras e atribuir isso de alguma forma bastante bem distribuída para um conjunto de números em algum intervalo. Assim, em vez de chamar, você sabe, usando a palavra representada que pode ter um valor de hash de 10. E podemos nos referir à palavra representantes 10 a partir de agora. Agora, se o espaço de seus valores de hash não for grande o suficiente, você pode acabar com palavras diferentes sendo representadas pelo mesmo número, o que soa pior do que ISS. Mas, você sabe, você quer ter certeza de que você tem um espaço de hash bastante grande, modo que é improvável que isso aconteça. Esses são chamados de colisões de hash. Eles podem causar problemas. Mas, você sabe, na realidade, há apenas tantas palavras que as pessoas usam na língua inglesa comumente, então você pode escapar com 100.000 ou mais e ficar bem, tudo bem, e obviamente fazendo isso. Essa escala é a parte mais difícil. Você sabe, se você quer fazer isso em toda a Wikipédia, então você vai ter que executar isso em um cluster. Mas, por uma questão de argumento, vamos apenas executar isso em nosso próprio desktop por enquanto, usando uma pequena amostra de dados da Wikipédia. Então, como transformamos isso em um problema de busca? Então, uma vez que temos t f i D E f, temos esta medida de cada palavra relevância para cada documento. O que fazemos com ele? Bem, uma coisa que você poderia fazer é calcular a idéia TF para cada palavra que encontramos em todo o corpo de documentos que temos. E então vamos dizer que queremos procurar por um dado termo dado palavra. Digamos que queremos procurar o artigo da Wikipédia no meu conjunto de artigos da Wikipédia é mais relevante para Gettysburg. Eu poderia classificar todos os documentos por sua pontuação T F para Gettysburg e apenas pegar os melhores resultados. E esses são meus resultados de busca para Gettysburg. É isso. Apenas procure. Pegue sua palavra de busca. Computar. T f I D f. Tome os melhores resultados. Quais documentos têm a maior pontuação T f I D F. É isso. Obviamente, no mundo real, há muito mais para procurar do que isso. Google, obviamente como exércitos de pessoas trabalhando neste problema, e é muito mais complicado na prática. Mas isso realmente lhe dará um algoritmo de mecanismo de busca que realmente produz resultados razoáveis. Então vamos em frente, mergulhar e ver como tudo funciona. Então lá você tem os conceitos de T F I D E F. Outra daquelas coisas que soa muito extravagante, mas uma vez que você entende, é realmente bastante simples. Então vamos em frente e transformar isso em código-fonte real e executá-lo em nossa próxima palestra. 77. Como pesquisar a Wikipédia com Spark: Esta pode ser a coisa mais legal que fazemos em todo o curso. Vamos construir um algoritmo de pesquisa de trabalho real para um pedaço da Wikipédia usando Apache Spark e ML lib, e vamos fazer tudo isso em menos de 50 linhas de código. Bastante incrível. Então vamos em frente e abrir isso no Spider ou qualquer texto senador que você queira usar, realmente, e vamos para nossa pasta de materiais do curso e abrir o script T f d e f dot p y. E vamos falar sobre isso e aqui temos agora um passo para trás por um momento e deixá-lo afundar em que estavam realmente criando um algoritmo de pesquisa trabalhando, juntamente com alguns exemplos de usá-lo em menos de 50 linhas de código aqui. E é escalável. Eu poderia rodar isso em um cluster. É meio incrível. Tudo bem, então vamos passar por isso. Na verdade, é bastante simples, tudo bem. Vamos começar importando as bibliotecas de contexto da barra de conferência faísca que precisamos para qualquer script faísca que executamos no Python. E então vamos importar hashing TF e I d. F. F. Então é isso que calcula as frequências de termo e as frequências de documentos inversos. Dentro dos nossos documentos, vamos começar com o nosso material de faísca caldeirada que cria uma configuração local de faísca e um contexto de faísca criado a partir daquilo a partir do qual podemos criar o nosso RTD inicial uma rodada para impulsionar o contexto para criar um RTD do subconjunto traço pequeno ponto de dívida tsv Portanto, este é valores separados por tabulação e representa uma pequena amostra de artigos da Wikipédia. Por isso, devolve-me uma IDT em que cada documento está em cada linha da IDT. Então este arquivo TSV contém um documento inteiro da Wikipédia em cada linha, e eu sei que cada um desses documentos se dividiu em campos tabulares que têm vários bits de metadados sobre cada artigo. Então a próxima coisa que vou fazer é dividi-los. Então eu vou dividir cada documento Art H com base em sua guia delimitada er em uma lista python e criar um novo RTD campos que em vez de dados de entrada brutos, agora contém listas python de cada campo em que dados de entrada. E finalmente, veja o que está acontecendo aqui. Sanel, eu vou mapear esses dados em cada lista de campos extrair o campo número três, que eu sei que é o corpo do artigo em si. O texto do artigo real e eu vou dividir isso com base em espaços. Então o que isso faz é extrair o corpo do texto de cada artigo da Wikipédia e dividi-lo em uma lista de palavras. Ok, então meus novos documentos RDD tem uma entrada para cada documento e cada entrada nesse RTD contém uma lista de palavras que aparecem nesse documento agora. Então nós realmente sabemos o que chamar esses documentos mais tarde, quando estamos avaliando os resultados, eu também vou criar um novo RTD que armazena os nomes dos documentos. E tudo o que faz é pegar esses mesmos campos rdd e usa a função snap para extrair o nome do documento, que eu sei que é o campo número um. Então eu tenho que rtgs documentos que contém listas de palavras que aparecem em cada documento e nomes de documento que contém o nome de cada documento. E eu sei que estes estão na mesma ordem, então eu posso realmente combiná-los mais tarde para procurar o nome de um determinado documento . Agora a magia acontece, então a primeira coisa que vamos fazer é criar um objeto TF hash, e vamos passar em um parâmetro de 100.000. Isso significa que eu vou hash cada palavra em um dos 100.000 valores numéricos. Então, em vez de representar palavras internamente como strings, que é muito ineficiente, ele vai tentar Teoh tão uniformemente quanto possível, distribuir cada palavra para um valor de hash exclusivo, e eu estou dando até 100.000 valores de hash para escolher. Basicamente, isso é mapear palavras dois números no final do dia, certo? E eu vou chamar transformar em hashing TF com meu RTD real de documentos. Então o que isso vai fazer é pegar minha lista de palavras em cada documento e convertê-la em uma lista de valores de hash, uma lista de números que representam cada palavra em vez disso. Ok, e isso é realmente representado como um vetor esparso neste ponto para economizar ainda mais espaço. Então, não só convertemos todas as nossas palavras dois números, mas também removemos todos os dados que faltam. Então, no caso de uma palavra não aparecer em um documento onde você não está armazenando o fato que essa palavra não aparece explicitamente, ele economiza ainda mais espaço agora para realmente calcular a pontuação T f I D F para cada palavra em cada documento. O primeiro dinheiro este RDD TF porque sabemos que vamos usá-lo mais de uma vez. E usamos I D. F com uma frequência mínima de dois. O que significa que vamos ignorar qualquer palavra que não apareça pelo menos duas vezes call fit em TF e, em seguida, transformar isso em t f. E o que acabamos aqui é uma arty de da pontuação T f I D E f para cada palavra em cada documento. Ok, então vamos tentar e colocar isso em uso. Vamos tentar procurar o melhor artigo para a palavra Gettysburg. Se você não está familiarizado com a nossa história, foi onde Abraham Lincoln fez um discurso famoso para que possamos transformar a palavra Gettysburg em seu valor de hash. Certo, isso é o que esse pedaço de código faz. Vamos então extrair uma pontuação T f i. D f para esse valor de hash em um novo RTD para cada documento. Então o que isso faz é extrair a pontuação T f i. D f para Gettysburg do valor hash que mapeia para cada documento e armazena que neste rdd relevância Gettysburg. Em seguida, combinamos isso com o nome do documento para que possamos ver os resultados e imprimir a resposta. Então vamos fazer isso e ver o que acontece. Ok, então para executar isso, nós precisamos trazer para cima outro adereços anaconda para fazer e nós vamos CD para o nosso curso materiais são e apenas escrever tipo em traço faísca Enviar T f i d f dot p y e vamos deixar este chug longe. Então, sim, agora, ele vai realmente estar analisando um subconjunto de dados da Wikipédia, e ele vai tentar encontrar a melhor correspondência de documento para o termo de pesquisa Gettysburg. Já está chegando com uma resposta, e já está feito. E a resposta é que Abraham Lincoln realmente funciona. Pessoal, isso é incrível. Então, sim, quero dizer, eu estava em ação lá. Nós realmente criamos nosso próprio mini motor de busca aqui com, você sabe, menos e 50 linhas de código. A maioria desses comentários aéreos, lembre-se, quero dizer, o código real em si era como talvez 20 linhas e com apenas um pouco de código ml ao vivo é tão poderoso que foi capaz de construir um motor de busca inteiro que poderia que o artigo para Abraham Lincoln é o melhor par para alguém que procura informações sobre Gettysburg, Pelo menos no subconjunto da Wikipédia que demos. Acho que isso é incrível. Então, sim, quero dizer. E o que é ainda mais legal é que se eu tivesse todo o corpus da Wikipédia, eu poderia, com poucas modificações, executar o mesmo script exato em um cluster e obter resultados sobre todo o conjunto de dados da Wikipédia . Sabe, é escalável até esse ponto. muito legais. T F I D E f Inação em faísca. E nós realmente fizemos nosso próprio motor de busca muito facilmente. Isso é incrível. E aí está, um algoritmo de busca real para um pequeno pedaço da Wikipédia usando faísca e ml lib e T f I. D E f. E a beleza é que poderíamos realmente escalar isso para toda a Wikipédia se quiséssemos para. Se tivéssemos um cluster grande o suficiente para executá-lo Agora acabamos de abordar alguns dos recursos do Apache Spark. Tenho certeza que você tem muitas perguntas. Há muito, muito mais. Na verdade, eu tenho um curso inteiro sobre Apache Spark, então há muito que podemos conversar. Se você quiser saber mais sobre o Apache Spark, pule para as últimas palestras neste curso onde falamos sobre onde aprender mawr , onde ir em seguida e há alguns saltos fora do lugar. Está lá para você ir explorar e aprender mais sobre faísca porque é um grande tópico. Mas espero que tenhamos o seu interesse lá em cima e faísca, e você pode ver como ele poderia ser aplicado para resolver, mas pode ser bastante complicado problemas de aprendizado de máquina de uma maneira distribuída. Portanto, é uma ferramenta muito importante, e eu quero ter certeza de que você não passe por este curso de ciência de dados, com pelo menos sem saber os conceitos de como faísca pode ser aplicada a problemas de big data . Então, quando você precisa ir além do que um computador pode fazer, lembre-se, faísca está à sua disposição 78. Como usar a API de TE DataFrame 2 para o MLlib: Então, em julho de 2016 lançamento faísca provocou dois pontos. Oh, e vamos falar sobre o que há de novo e quais novas capacidades existem em ml ao vivo agora. Então o principal foi acionado 2.0, é que eles estão movendo as pessoas cada vez mais em direção a quadros de dados e conjuntos de dados, conjuntos dados e quadros de dados. ar meio que usado de forma intercambiável em algum momento. Tecnicamente, um quadro de dados é um conjunto de dados de objetos roe. Eles são como RGDS. Mas a única diferença é que, enquanto um RTD contém apenas dados não estruturados, cada RDD Roven pode conter praticamente qualquer coisa. Um conjunto de dados tem um esquema definido para ele. Assim, um conjunto de dados sabe com antecedência exatamente quais colunas de informação existem em cada rove desse pequeno RTD desse conjunto de dados e quais tipos esses são. Então, porque ele sabe sobre a estrutura real desses dados dito antes do tempo, ele pode otimizar as coisas de forma mais eficiente. Ele também nos permite pensar no conteúdo deste conjunto de dados como um pequeno mini-banco de dados. Bem, na verdade, um banco de dados muito grande. Se estiver em um cluster certo, e isso significa que podemos fazer coisas como problemas sequela consultas nele para que isso crie um nível superior AP I com o qual podemos consultar e analisar conjuntos de dados grandes e maciços em um cluster de faísca. Então é uma coisa muito legal. É mais rápido. Ele tem mais oportunidades de otimização, e tem um nível mais alto. AP I. Isso é muitas vezes mais fácil de trabalhar agora em frente e desencadeou limites de 2.0 ML empurrando quadros de dados como seu principal um p I. Então este é o caminho do futuro aqui. Então vamos dar uma olhada em como ele funciona. Então eu fui em frente e abri a faísca Regressão Linear P Y. Vamos passar por isso um pouco aqui. Então você vê, por um lado, estamos usando ML em vez de ml ao vivo, e isso é o novo quadro de dados baseado olhos AP lá dentro. Então, neste exemplo, onde vamos usar implementar regressão linear e regressão linear é apenas uma maneira de ajustar uma linha a um conjunto de dados. Então o que vamos fazer este exercício é pegar um monte de dados fabricados que temos em duas dimensões e tentar ajustar uma linha com um modelo linear e o que vamos fazer é realmente separar nossos dados em dois conjuntos, um para construir o e um para avaliar o modelo. E vamos comparar o quão bem este modelo linear faz, na verdade, prevendo valores reais. Então, para fazer isso, primeiro lugar, em sparked para se você vai estar fazendo coisas com a interface Spark Sequel e usando conjuntos de dados , você deve estar usando um objeto de sessão faísca em vez de um contexto de faísca. Então, para configurar um, você faz algo assim, você pode dizer faísca. Esse será o nome da nossa configuração do construtor de sessão de faísca. Agora, este bit só é necessário em janelas em Smoked 2.0, tipo de funciona em torno de um pequeno bug que eles têm que ser honestos. Então, se você estiver no Windows, certifique-se de que você tem uma pasta temporária C. Se você quiser executar isso, vá criá-lo agora, se precisar. Se você não estiver no Windows, você pode excluir todo esse pedaço aqui que eu realcei OK, porque ele não vai ser necessário e ele não vai funcionar dado aplicativo, nome e obter ou criar. Agora, isso é interessante porque uma vez que você cria uma sessão de faísca, se ela terminar inesperadamente, pode realmente recuperar disso na próxima vez que você executá-la. Então, se tivermos um diretor de ponto de verificação, você pode realmente reiniciar de onde parou usando, obter ou criar. Certo, agora vamos usar esse arquivo de texto de ponto de regressão que eu incluí com os materiais do curso e tudo o que é é um arquivo de texto que tem valores comuns e limitados de duas colunas, e eles são apenas duas colunas de dados mais ou menos aleatoriamente correlacionados linearmente, e ele pode representar sempre que você quiser. Vamos imaginar que representa alturas e pesos, por exemplo. Então, a primeira coluna eu represento alturas. A segunda coluna pode representar pesos. Então, no lingle do Machine Learning, falamos sobre rótulos e recursos onde os rótulos são transmitidos. Normalmente, a coisa que você está tentando prever e recursos são um conjunto de atributos conhecidos dos dados que costumavam fazer uma previsão de Então, neste exemplo, talvez alturas ou os rótulos e os recursos são os pesos maio. Estamos tentando prever alturas com base no seu peso. Pode ser qualquer coisa. Isso não importa. Tudo isso é normalizado para dados semelhantes entre um negativo e um, então não há significado real para a escala de dados em qualquer lugar. Pode fingir que significa o que quiser. Realmente? Então, para fazer isso, para usar isso com ml que precisamos transformar nossos dados nas esperanças formatadas. Então a primeira coisa que vamos fazer é dividir esses dados com esta função de mapa que apenas divide cada linha em dois valores distintos em uma lista. E então vamos mapear isso para o formato que eu esperaria. Então isso vai ser um rótulo de ponto flutuante e, em seguida, um vetor denso dos dados da feição. Agora, neste caso, nós só temos um pouco de data característica do peso. Então temos um vetor que só tem uma coisa nele. Mas mesmo que seja apenas uma coisa, o modelo de regressão linear M l Lib requer um vetor denso lá. Ok, isso é como um ponto marcado no AP I mais antigo, mas você tem que fazer da maneira mais difícil aqui. Agora, em seguida, precisamos realmente atribuir nomes a essas colunas. Então aqui está a sintaxe para fazer isso. Nós vamos dizer ml ao vivo que essas duas colunas no meu RTD resultante aqui realmente correspondem ao rótulo de elite e as características. E então eu posso converter esse RTD em um objeto de quadro de dados. Então, neste ponto, eu tenho um quadro de dados real ou, se você preferir, um conjunto de dados que contém duas colunas, rótulo e feições onde o rótulo é uma altura de ponto flutuante e a coluna de feições é um vetor denso de pesos de ponto flutuante. E esse é o formato exigido por ml, lib e ML. Pode ser muito exigente sobre essas coisas. Portanto, é importante que você preste atenção a esses formatos. Tudo bem, agora, como eu disse, nós vamos dividir nossos dados e 1/2 então nós vamos fazer uma divisão de 50 50 entre dados de treinamento e dados de teste. Então isso retorna aos quadros de dados, um que eu vou usar para realmente criar meu modelo em um dos que eu vou usar para avaliar meu modelo. Em seguida, criarei meu modelo de regressão linear real com alguns parâmetros padrão aqui que eu defini. Vamos chamar isso de regressão linear, e então eu vou ajustar esse modelo ao conjunto de dados que eu deixei de lado para treinar o quadro de dados de negociação. E isso me dá de volta um modelo que eu posso usar para fazer previsões. Então vamos em frente e fazer isso. Vou chamar modelo de ponto transformado testes de ponto com F testy e quando isso vai fazer é prever as alturas com base nos pesos em meus dados de teste. Ok, então o conjunto de dados de teste, eu realmente tenho os rótulos sem, as alturas corretas reais, e isso vai adicionar uma nova coluna ao quadro de dados chamado previsões que tem a preditiva com base nesse modelo linear, eu vou fazer algumas coisas com isso, então eu vou descontar os resultados, e agora eu poderia apenas extraí-los e compará-los juntos. Então vamos puxar para fora a coluna de previsão apenas usando ponto Select, Assim como você não faria sequela. E então eu vou realmente transformar esse quadro de dados e retirar o RTD dele e usá-lo para mapeá-lo para apenas um velho, já cheio de alturas de ponto flutuante e 40 pontos alturas, neste caso, certo? Então estas são as alturas previstas, e então nós vamos chegar às alturas reais da coluna do rótulo, e então nós podemos sentá-lo de volta juntos e apenas imprimi-los lado a lado e ver o quão bem ele faz agora, Esta é uma forma complicada de o fazer. Eu fiz isso para ser mais consistente com o exemplo anterior, mas uma abordagem mais simples seria apenas selecionar a previsão e rotular juntos em um único RTD que mapeia essas duas colunas juntas. E então eu não vou visitá-los. Mas de qualquer maneira funciona. Vamos ver se ele funciona, então para executar isso novamente vai abrir um prompt anaconda para fazer, e vamos ver o para a nossa pasta material do curso e vamos digitar. Inspirado como submete faísca regressão linear ponto p y e deixá-lo fazer a sua coisa. Então, novamente, estamos usando a nova interface ML. Isso é baseado em quadro de dados, e a propósito, para usar Scalia em vez de python, você provavelmente usaria conjuntos de dados em vez de quadros de dados, apenas terminologia diferente lá e lá nós temos os resultados. Então temos aqui Cada resultado aqui é o valor preditivo, seguido pelo valor real. Você pode ver que, em geral, eles estão muito perto. Quero dizer, não é perfeito, mas o modelo pelo menos fez algo razoável, então é isso. Isso é fixe. Então, sim, nós acabamos de fazer uma regressão linear usando faíscas New M L A p. Eu vou relativamente novo ou 2016. É Ah, você sabe, vários anos se passaram desde então, mas esta ainda é a maneira como o futuro que eles estão empurrando as pessoas para o IDT novamente ainda funciona. Mas, hum, o quadro de dados baseado em E. P. I é uma espécie de onde eles estão concentrando seus esforços hoje em dia, então vale a pena entendê-lo. Aí está você. ML inação em faísca. 79. Como implementar modelos para produção: A pergunta que costumo fazer é que é bom treinar esses modelos e implantá-los dentro de uma Júpiter e notebook. Mas como eu usaria esses modelos no mundo real como conectar a saída desses modelos desses modelos de aprendizado de máquina a um aplicativo real, como um aplicativo de celular ou um site ou algo assim? Bem, esse é o mundo inteiro de si mesmo. Você sabe, estamos entrando no mundo de realmente projetar sistemas maiores aqui, mas eu vou te dar alguma orientação de alto nível de qualquer maneira. Agora, obviamente você é aplicativos externos não vai estar executando notebooks Jupiter e obtendo seus resultados dessa maneira. Localmente, o que precisamos fazer é separar o processo de treinamento e ajustar nosso modelo do processo de realmente fazer previsões com base nesse modelo. Então, o parque de treinamento e eu vamos ser feito off-line, certo enfraquecer, fazer isso dentro do nosso caderno. Ou podemos exportar um script Python autônomo que é executado periodicamente, talvez para pegar novos dados de treinamento à medida que ele entra. Talvez até esteja sendo executado em algum tipo de ambiente de streaming, mas tudo isso pode acontecer no back-end, você sabe, Você ainda pode usar seus novos cadernos de livros para isso se você quiser refiná-lo. Mas então quando você realmente tem um modelo treinado, lembre-se, nós apenas temos ah, modelo como um classificador que está sentado lá em psíquico aprendeu esse ponto, e tudo o que temos que fazer é chamar prever sobre ele para realmente obter um resultado. Portanto, é possível exportar esse modelo para um arquivo e executar esse modelo em um serviço Web . Então a ideia seria empurrar o modelo para uma frota de serviços Web. Sabe, isso pode ser como algo na nuvem em algum lugar onde está funcionando. Um conjunto distribuído de serviços foram, Esperemos que você não tem que cuidar dos próprios servidores reais, e tudo o que o serviço faz é responder a solicitações de serviço Web sobre prisão ou alguma outra interface. Isso diz, Aqui estão os dados do recurso que eu quero uma previsão para Dê-me uma previsão e que o modelo pré-treinado que é implantado para todo o serviço Web pode, em seguida, fornecer rapidamente esse resultado de volta em grande escala e de esperançosamente baixo latência e altas taxas de transação de forma confiável . Então seu aplicativo chamaria o serviço Web que na verdade apenas gera previsões baseadas no modelo, mas o modelo em si é criado offline, e então os resultados desse modelo, o próprio modelo, é enviado para o serviço Web. Vamos falar sobre alguns exemplos mais específicos aqui para torná-lo riel. Digamos que você esteja usando o Google Cloud Services de uma maneira que você poderia fazer isso com muita facilidade. É apenas para usar o método SK aprendeu externals trabalho lib aqui. Com isso, você pode apenas dizer trabalho lib dot dump com qualquer que seja o seu modelo. Conhece qualquer classificador, que pode ser qualquer coisa, certo? Ah, K significa que você pode até, tipo, ter um classificador de aprendizagem profunda lá dentro. Se você nos quer bem e psíquico aprendido pode despejar isso para um arquivo depois de ter sido treinado . Basta dar um nome de arquivo. E para o Google Cloud, ele quer que ele seja chamado modelo dot trabalho labial. Você está então fazer upload do ponto modelo resultante Job Live, que contém o próprio modelo para o armazenamento do Google Cloud, e de lá ele poderia apenas dizer que isso vai ser executado dentro da estrutura de aprendizagem psíquica, e ele vai saber o que fazer com ele. Nesse ponto, você pode simplesmente amarrar um motor de nuvem ml nele. A nuvem do Google. Motor Mmm L. E isso vai expor a prisão um p I que você pode chamar para fazer previsões em tempo real com base no modelo que você carregou para o Google Cloud. Veja como isso funciona. Então, basicamente, você treinaria seu classificador off-line em um caderno ou qualquer outra coisa, você quiser fazê-lo. Exporte esse classificador para um arquivo, carregue esse arquivo no Google Cloud Storage e, em seguida, o mecanismo de ML do Google Cloud poderia realmente interagir com isso com seus aplicativos durante a prisão, um p I. E se você Não sei o que é prender um P I, é basicamente o mesmo protocolo que você usa para ver sites. Então, quando você vai para o seu navegador da Web e diz, eu quero olhar para essa garota que está enviando um pedido de descanso get para um servidor em algum lugar que diz, eu quero obter os resultados dessa garota e ele devolve exatamente da mesma maneira que seu poderia dizer, eu quero obter uma previsão para este conjunto de recursos e devolvê-lo para mim, por favor. Mesmo mecanismo exato. Você pode ficar muito mais complicado para Digamos que usando a Amazon Web services e você deseja criar um sistema completo completo que faz recomendações de produtos. Uma maneira de fazer isso na AWS seria se você tiver uma frota de servidores que estão gerando dados de pedidos . Você sabe, se você está realmente monitorando os servidores onde as pessoas estão fazendo pedidos, nós poderíamos ter um serviço chamado kinesis data firehose rodando em cima desses servidores, ou seja , alimentando esses dados de log informações na Amazon tem três armazenamento. E a partir daí, mapa elástico da Amazon produz um serviço pode estar consumindo esses dados da lei de s três. Talvez isso contenha todas as informações de compra ou todas as informações de visualização ou todas as informações de classificação para as coisas que queremos recomendar. E no mapa elástico da Amazon reduzir. Poderíamos estar executando o Apache Spark em um cluster inteiro que está consumindo esses dados do S três e criando previsões criando recomendações baseadas nesses dados. Agora, neste caso, eu não vou empurrar o modelo real em si para um serviço Web. Eu só vou empurrar os resultados disso para fora. Então, o que eu poderia fazer é pré-gerar recomendações para cada usuário antes do tempo. Então, depois de consumir todos os dados mais recentes do S três todos os dados de compra mais recentes ou estado de classificação ou o que você tem que trabalhar com. Posso desligar e usar o Apache Spark para gerar itens recomendados previstos que as pessoas podem gostar para cada usuário no meu sistema. Eu poderia então publicar isso em algo como o Amazon Dynamodb, que é apenas um banco de dados sem sequelas que me permitirá associar rapidamente uma lista de identificadores de itens a uma lista de identificadores de usuários, e isso será muito rápido maneira de olhar para cima. Quais itens devo recomendar para um determinado usuário? Então eu pego a saída do modelo, e eu publiquei a saída para algo mais escalável. Como o Dynamodb. Dynamodb é escalonável horizontalmente para que possa lidar com taxas de transação muito altas com latência muito baixa . Então, para expor isso para o mundo exterior, eu poderia usar algo como AWS lambda, que é sua funcionalidade de lis de servidor que apenas permite que você escreva funções muito simples que acessariam esse banco de dados dynamodb usuário perdoado e recuperar os resultados de volta para algum aplicativo. E isso não acontece de tal forma que você não precise se preocupar em realmente provisionar a capacidade do servidor para ser executado. Que a AWS cuida de tudo isso para você. Na frente disso, você pode ter algo chamado o gateway Amazon e p I, que na verdade forneceria a interface restante com a qual seu lapso móvel ou sites realmente conversariam para recuperar esses dados. Então, olhando para ele de outra direção, seu aplicativo cliente poderia dizer que eu quero obter recomendações para este usuário. Eu diria “Ok”. Amazon E P I Gateway, forneça recomendações para este usuário. I d através de alguma consulta descanso nos bastidores que iria transferir essa solicitação para aws Lambda, que novamente tem que ser escalável. Lambda diria, Ok, eu vou pegar isso e executar um pouco de código JavaScript ou algo assim também. Recupere as ideias reais do item e o dynamodb para esse usuário i D. E isso foi tudo pré-gerado pelo Apache Spark em execução no EMR criando recomendações fora da Amazon tem três. Então esta é uma maneira mais complicada de que é mais um exemplo de tipo de coisas que você pode ver no mundo real. Sabe, esses sistemas tendem a ficar bastante complicados porque parece que você começa a lidar com grande escala. Você precisa lidar com uma nuvem em algum momento, e você tem que lidar com tecnologias como o Apache Spark que podem ser dimensionadas para conjuntos de dados massivos . Então este é o tipo de exemplo mais avançado, se preferir, mas um muito real de como você pode realmente implementar algo assim no mundo realnovamente. exemplo mais avançado, se preferir, mas um muito real de como você pode realmente implementar algo assim no mundo real A chave é que a geração real do modelo é separada da venda automática dos dados , os resultados dele. Então, na linha de cima, esse é o processo de realmente construir as próprias recomendações. Mas então nós empurramos as recomendações reais para algo que é mais escalável para dynamodb, apresentado pelo Lambda, que é, em última análise, liderado pelo gateway Amazon E P I. E então temos um sistema de ponta a ponta que pode realmente lidar com a ventilação dos resultados do nosso modelo em grande escala. Há outras maneiras de fazer isso também. Você poderia apenas escrever seu próprio serviço Web se você quisesse usar frasco ou algo assim, ou qualquer estrutura de serviço Web que você gosta. Você teria que obviamente provisionar seus próprios servidores e mantê-los, o que não é muito divertido. É por isso que as pessoas usam serviços como AWS, Google Cloud e Azure atualmente. , Além disso, todos podem entrar com uma plataforma. Todos esses provedores de nuvem tendem a ter seus próprios sistemas e tecnologias para fazer aprendizado de máquina nos dias de hoje, então abaixo está como uma lista parcial dos serviços da AWS que estão disponíveis no espaço de aprendizado de máquina agora, para exemplo. Então, você sabe, se você quiser apenas fazer reconhecimento de fala ou reconhecimento de imagem, eles têm serviços que estão disponíveis fora da prateleira. Isso só fará isso por você. E você pode, obviamente, integrar esses serviços muito facilmente com outros serviços da AWS para criar sistemas maiores , como os que temos visto aqui, então algo a considerar também, embora seja sempre uma boa ideia criar protótipos de novas ideias desligado em um caderno ou algo assim. Mas, em última análise, a maneira como você os implementa para um sistema maior pode ser muito diferente. Então eu espero que isso lhe dê uma idéia de alto nível de como você pode realmente expor seus modelos a um sistema do mundo realnovamente. alto nível de como você pode realmente expor seus modelos a um sistema do mundo real A principal visão é separar a geração do modelo em si em seus resultados do problema de realmente servir esses resultados a uma enorme frota de consumidores desses dados, quer você vá com serviços da AWS ou do Google Cloud ou use seus próprios serviços ou use Microsoft Azure, quero dizer, esses são todos os tópicos de seus próprios cursos. Como se eu não pudesse cobrir isso e muita profundidade agora. Mas, pelo menos, isso lhe dá um ponto de partida de onde explorar se você estiver em uma posição de tentar implantar esses resultados em algum lugar real. 80. Conceitos de teste A/B: Se você trabalha como um cientista de dados em uma empresa da Web, você provavelmente será solicitado a passar algum tempo analisando os resultados de um teste B. Estes são basicamente experimentos controlados em um site para medir o impacto de uma determinada mudança. Então vamos falar sobre o que são testes B e como eles funcionam. Vamos falar sobre um teste B. Se você vai ser um cientista de dados em uma empresa Web de grande tecnologia, isso é algo em que você definitivamente vai estar envolvido porque as pessoas precisam executar experimentos para experimentar coisas diferentes em um site e medir os resultados dele. E isso não é simples como a maioria das pessoas pensa que é. Então vamos falar sobre o que são testes B e quais são os desafios que os rodeiam. Então, o que é um teste A B? Bem, é um experimento controlado que você normalmente dirige um site. Quer dizer, pode ser aplicado a outros contextos também, mas geralmente estamos falando de um site, e o que estamos tentando fazer é testar o desempenho de alguma mudança naquele site versus a maneira que era antes. Então você tem basicamente um conjunto de controle de pessoas que vêem o site antigo e um grupo de teste de pessoas que vêem a mudança no site. E a idéia é medir a diferença de comportamento entre esses dois grupos e usar dados realmente decidir se essa mudança foi benéfica ou não. Então, por exemplo, eu tenho um negócio que tem um site. Nós licenciamos software para pessoas, e agora eu tenho um botão laranja agradável que as pessoas clicam onde querem comprar uma licença. Talvez o Blue fosse melhor. Como é que eu sei? Quero dizer intuitivamente. Talvez isso possa chamar a atenção do seu povo mais ou intuitivamente. Talvez as pessoas estejam mais acostumadas a ver botões de compra laranja, e eu era rapidamente provável clicar nisso. Eu poderia gastar isso de qualquer maneira, certo? Então meus preconceitos internos ou preconceitos não importam. O que importa é como as pessoas realmente reagem a essa mudança no meu site real, e isso é o que um teste da Marinha faz. Ele vai realmente dividir as pessoas em algumas pessoas, ver o botão laranja. Algumas pessoas veem o botão azul, e eu posso medir o comportamento entre esses dois grupos e como eles podem diferir e tomar minha decisão sobre qual cor. Meus botões devem ser baseados nesses dados. Você pode testar todo tipo de coisas dentro de um teste B. Falamos sobre mudanças de design, para que você conheça a cor de um botão, a colocação de um botão, o layout de uma página. O que você tem? Pode ser um fluxo inteiro. Então, talvez você esteja realmente mudando a maneira como seu pipeline de compra funciona e como as pessoas fazem check-out em seu site, e você pode realmente medir o efeito dessas mudanças algorítmicas. Vamos voltar ao exemplo de fazer recomendações de filmes. Talvez eu queira testar um algoritmo contra outro. E em vez de confiar em métricas de erro e minha capacidade de fazer testes de trem, você sabe o que eu realmente me importo é dirigir compras ou aluguel ou o que quer que seja neste site . E talvez o teste pudesse me fazer diretamente me chamar diretamente medir o impacto desse algoritmo no resultado final que eu realmente me importo, e não apenas minha capacidade de prever filmes que outras pessoas já viram. Alterações de preços. Este fica um pouco controverso. Você sabe, em teoria, você pode realmente experimentar diferentes pontos de preço usando um teste A B e ver se ele realmente aumenta o volume para compensar a diferença de preço ou o que quer que seja. Mas use esse com cautela. Se os clientes pegar ganhar que outras pessoas estão recebendo melhores preços e eles são para nenhuma boa razão. Eles não vão ficar muito felizes com você. Portanto, tenha em mente fazer experimentos de preços pode ter uma reação negativa, e você não quer estar nessa situação. Qualquer outra coisa que possa sonhar. Realmente. pena testar qualquer alteração que impacte a forma como os usuários interagem com o seu site. Talvez seja, você sabe, você sabe, tornando o site mais rápido ou pode ser qualquer coisa. Então, a primeira coisa que você precisa descobrir quando você está projetando um experimento em um site é para que você está tentando otimizar? O que você realmente quer dirigir com essa mudança? E isso nem sempre é uma coisa muito óbvia, certo? Talvez seja a quantia que as pessoas gastam a quantia de receita. Ok, bem, nós falamos sobre os problemas com variantes em usar o valor gasto, mas se você tiver dados suficientes, você ainda pode alcançar a convergência nessa métrica. Você sabe, muitas vezes, mas talvez não seja para isso que você realmente quer otimizar? Talvez você esteja realmente vendendo alguns itens que uma perda intencionalmente apenas para capturar quota de mercado . Ou, você sabe, há mais complexidade que entra em sua estratégia de preços do que apenas a receita de linha superior . Talvez o que você realmente quer medir é o lucro. E isso pode ser uma coisa muito complicada de medir, porque muitas coisas cortam em quanto dinheiro um determinado produto pode ganhar. E essas coisas podem nem sempre ser óbvias. E novamente, se você perdeu líderes, este experimento irá descontar o efeito que esses ar supostamente têm. Então, resumindo, você tem que falar com os empresários da área que está sendo testada e descobrir o que eles estão tentando otimizar para o que eles estão sendo medidos? Qual é o sucesso deles medido em que ar Há, você sabe, indicadores de desempenho chave ou o que quer que a NBA quer chamá-lo e certificar-se de que estamos medindo o que realmente importa para eles. Ok, talvez você só se preocupe em impulsionar cliques em anúncios em seu site ou solicitar quantidades para reduzir variantes. Talvez as pessoas concordem com isso, e você sabe que você pode medir mais de uma coisa ao mesmo tempo, você não tem que escolher uma. Você pode realmente relatar o efeito de muitas coisas diferentes. Receita, cliques em lucros, visualizações de anúncios. E se todas essas coisas estão se movendo na direção certa juntas, isso é um sinal muito forte de que essa mudança teve um impacto positivo em mais de uma maneira, certo? Então, por que se limitar a uma métrica? Apenas certifique-se de saber qual deles é o mais importante e qual será o seu critério para sucesso deste experimento antes do tempo. Outra coisa a atentar para nós atribuindo conversões a uma mudança a jusante. Portanto, se a ação que você está tentando conduzir não acontecer imediatamente após o usuário experimentar o que você está testando, as coisas ficam um pouco desonestas. Então digamos que eu mude a cor do botão na página. Um usuário, em seguida, vai para a página B e faz outra coisa e, em última análise, comprar algo de pago. Veja bem, quem recebe crédito por essa compra? É página A ou página B ou algo assim? No meio? Posso descontar o crédito para essa conversão? Dependendo de quantos cliques essa pessoa fez para chegar à ação de conversão? Eu simplesmente descarto qualquer conversão, meia ação. Isso não acontece imediatamente depois de ver essa mudança. São coisas complicadas. E, você sabe, é muito fácil produzir resultados enganosos por falsificar como você conta essas diferentes distâncias entre a conversão e a mudança que você está medindo. Então, tenha isso em mente, também. Outra coisa que você precisa realmente internalizar é que a variância é sua inimiga quando você está executando um teste A B. Então, um erro muito comum que as pessoas cometem que não sabem o que estão lidando com ciência de dados é que colocarão um teste em uma página da Web. Você sabe, botão azul versus botão laranja, o que quer que seja, rode por uma semana e pegue o valor médio gasto de cada um desses grupos. E eles dizem, negligenciar as pessoas com o botão azul em média, gastaram um dólar a mais do que as pessoas com o botão laranja. Azul é incrível. Eu amo azul. Vou colocar azul em todo o site agora, mas na verdade, mas na verdade, tudo o que eles podem ter visto foi uma variação aleatória nas compras. Sabe, eles não tinham uma amostra grande o suficiente porque as pessoas não tendem a comprar muito. Você sabe que eles recebem um monte de uso, mas você provavelmente tem um monte de compras em seu site em comparação. E é provavelmente muita variação nesses valores de compra porque diferentes produtos custam quantidades diferentes, então você pode facilmente acabar tomando a decisão errada que acaba custando dinheiro à sua empresa a longo prazo em vez de ganhar o dinheiro da sua empresa. Se você não entende o efeito das variantes sobre esses resultados, e em breve falaremos sobre algumas maneiras principais de medir e contabilizar isso. E certifique-se de que você precisa ter certeza de que seus proprietários de negócios entendem que este é um efeito importante que você precisa quantificar e entender antes de tomar decisões de negócios após um teste A B ou qualquer experimento que você executa na Web agora, às vezes você precisa escolher uma métrica de conversão que tenha menos variância. Você sabe, pode ser que os números em seu site apenas significam que você teria que executar um experimento por anos, a fim de obter resultados significativos com base em algo como receita ou quantidade gasta. Então, às vezes, se você estiver olhando para mais de uma métrica, como ordem , quantidade , quantidade, ordem, quantidade que tem menos variação associada a ela. E assim você pode ver um sinal sobre a quantidade do pedido antes de ver um sinal sobre a receita, por exemplo, e no final do dia, ele acaba sendo uma chamada de julgamento. Você sabe, se você vê um aumento significativo em quantidades de ordem e talvez uma lista não tão significativa em receita, então você tem que dizer, Bem, eu acho que pode haver algo real que é benéfico acontecendo aqui. Mas no final do dia, a única coisa que estatísticas e tamanho de dados Comptel você é probabilidades que, de fato , Israel , você sabe, realmente cabe a você decidir se é ou não realmente no final do dia. Então, vamos falar sobre como fazer isso com mais detalhes. Então isso é uma introdução a um teste B. A chave que leva lá é apenas olhar para as diferenças, e os meios não são suficientes. Quando você está tentando avaliar os resultados de um experimento, você precisa levar as variantes em consideração também. Então vamos para alguns exemplos em nossa próxima palestra de como você realmente mede os efeitos da variância usando a estatística T e as métricas de valor P 81. Testes e valores: Então, como eu sei se uma mudança resultante de um teste A B Israel se é realmente um resultado do que eu mudei ou variação aleatória fácil? Bem, há algumas ferramentas estatísticas à nossa disposição chamadas estatística T e valor P. Então, vamos aprender mais sobre o que eles são e como eles podem ajudá-lo a determinar se um experimento é bom ou não. Então, como eu disse em nossa palestra anterior diferencia seu inimigo quando você está correndo em um teste B. Então, como explicamos isso? Bem, existem algumas ferramentas estatísticas à nossa disposição, chamado teste tes para a estatística T mais especificamente, e o valor P, que permite quantificar o efeito das variantes em nossos resultados e tomar uma decisão que leva em conta essas variantes. Então o ponto é descobrir se um resultado é real ou não. Isso foi apenas um resultado de variância aleatória que é inerente aos dados em si? Ou estamos vendo uma mudança real e estatisticamente significativa no comportamento entre nosso grupo de controle em nossos testes de grupo de teste T e valores P, ou uma maneira de calcular isso e lembrar novamente. Estatisticamente significante não tem um significado específico. No final do dia, tem que ser um julgamento. Você tem que escolher algum valor de probabilidade que você vai aceitar de um resultado ser riel ou não. Mas sempre haverá uma chance de que ainda seja resultado de variação aleatória, e você tem que ter certeza de que suas partes interessadas entendam isso. Então vamos começar com a estatística T. O Ellison estava. Um teste T é basicamente uma medida da diferença de comportamento entre esses dois conjuntos entre o seu grupo de controle e tratamento expressa em unidades de erro padrão. Portanto, é baseado no erro padrão, que contabiliza a variância inerente aos próprios dados. Então, normalizando tudo por esse erro padrão, obtemos alguma medida da mudança no comportamento entre esses dois grupos que leva essa variação em consideração. Então a maneira de interpretar uma estatística T é em um valor de chá alto significa que provavelmente há uma diferença real entre esses dois conjuntos de passos. Há um valor Lo T significa não tanto. Então você tem que decidir. Sabes qual é o limiar que estás disposto a aceitar? E o sinal da estatística T dirá se é uma cadeia positiva ou negativa. Então, se você está comparando seu controle, seu grupo de tratamento e você acaba com uma estatística T negativa, isso implica que esta é uma mudança ruim. Se esse valor absoluto dessa estatística T é grande, quão grande é grande? Bem, isso é discutível. Vamos analisar alguns exemplos em breve. Isso pressupõe que você tenha uma distribuição normal de comportamento. E quando estamos falando sobre coisas como a quantidade que as pessoas gastam em um site, isso geralmente é uma suposição decente. Não tende a haver uma distribuição normal de quanto as pessoas gastam, no entanto, seu braço ou versões refinadas da estatística T que você pode querer olhar para outras situações específicas. Por exemplo, há algo chamado teste exato de Fisher. Quando você está falando sobre, clique através de taxas E teste quando você está falando sobre transações por usuário, como quantas páginas da Web eles viram? E o teste quadrado Chai, que é frequentemente relevante para quando você está olhando para quantidades de pedidos? Então, às vezes você vai querer olhar para todas essas estatísticas foram dadas experiência e escolher aquele que realmente se encaixa no que você está tentando fazer o melhor. Agora é muito mais fácil falar sobre valores P do que estatísticas T, já que você não precisa pensar em quantos desvios padrão estamos falando. E o que significa o valor real? O valor P é um pouco mais fácil para as pessoas entenderem, que torna uma ferramenta melhor para você comunicar os resultados de um experimento às partes interessadas em seu negócio. Então o valor P é basicamente a probabilidade de que este experimento satisfaça a hipótese nula . Essa é a probabilidade de que não haja diferença real entre o comportamento de controle e tratamentos . Então, um valor P baixo significa que há uma baixa probabilidade de não ter efeito, uma espécie de duplo negativo acontecendo lá. Então, é um pouco contra-intuitivo, mas no final do dia, você só precisa entender que um valor P baixo significa que há uma alta probabilidade sua mudança ter um efeito real. Então, o que você quer ver ou estatística de dentes altos e um valor de p baixo, e isso implicará um resultado significativo. Agora, antes de começar sua experiência, você precisa decidir qual será o seu limite para o sucesso, você sabe, decidir isso com as pessoas encarregadas do negócio. Então, qual valor P você está disposto a aceitar como medida de sucesso? É 1%? É 5%? E novamente, esta é basicamente a probabilidade de que não haja nenhum efeito riel que seja apenas um resultado de variância aleatória. É só um julgamento no final do dia. Muitas vezes as pessoas usam 1%. Às vezes eles usam 5% de seus sentimentos um pouco mais arriscados. Mas sempre haverá essa chance de que seu resultado tenha sido apenas dados aleatórios espúrios que apareceram. Mas você pode escolher a probabilidade de que você está disposto a aceitar como sendo provável o suficiente que este seja um efeito real que vale a pena ser implementado em produção. Então, quando seu experimento terminar e falaremos sobre quando você declarar que um experimento acabou, você quer medir seu valor de P. Se for menor do que o limite que você decidir, então você pode rejeitar a hipótese nula e você pode dizer, bem, há uma alta probabilidade de que essa mudança produza um resultado positivo ou negativo riel. É um resultado positivo do que você pode rolar essa mudança para todo o site, e não é mais um experimento. Faz parte do seu site que espero que você faça mais e mais dinheiro à medida que o tempo passa. E se for um resultado negativo, você quer se livrar dele antes que custe mais dinheiro. Lembre-se disso é um custo real para executar em um teste B quando seu experimento tem resultados negativos , então você não quer executá-lo por muito tempo porque há uma chance de você estar perdendo dinheiro . E é por isso que você deseja monitorar os resultados de um experimento diariamente. Então, se há indícios iniciais de que uma mudança está causando um impacto horrível no site , talvez haja um bug nele ou algo que seja horrível. Você pode puxar o plugue nele prematuramente, se necessário, e limitar o dano. Então vamos para um exemplo real e ver como você pode medir estatísticas T e valores P usando python a seguir. Então esse é o teste T, a estatística T e o valor P ferramentas úteis para determinar se um resultado é realmente ou um resultado de variação aleatória. Então, em seguida, vamos mergulhar em alguns exemplos reais e sujar nossas mãos com algum código python e calcular essas coisas. 82. : vamos fabricar alguns dados experimentais e usamos a estatística T e o valor P para determinar se um dado resultado experimental é ou não um efeito real. Tudo bem, vamos sujar nossas mãos com alguns testes T que vão realmente fabricar alguns dados experimentais falsos e executar estatísticas T e vales P neles e ver como funciona e como calculá-lo em Python. Então vamos começar por fabricar alguns dados aqui. Vamos imaginar que estamos executando um teste A B em um site e nós atribuímos aleatoriamente nossos usuários em dois grupos, Grupo A e Grupo B e Grupo A será Nossos sujeitos de teste são grupo de tratamento e Grupo B será nosso controle. Basicamente, a forma como o site costumava ser assim neste exemplo são grupo tratamento vai ter um comportamento de compra distribuído aleatoriamente onde eles gastam em média US $25 por transação, suportar desvio de cinco e 10.000amostras. Onde está a maneira como o site costumava ser teve uma média de US $26 por transação, com o mesmo desvio padrão e tamanho amostral. Então nós estamos basicamente olhando para um experimento que teve um resultado negativo aqui e tudo que você tem que fazer para descobrir a estatística T e o valor P é usado esta mão. Dandy Stats Stock T Test End método de Sai Pie É apenas tão simples. Então o que você faz é passar em seu grupo de tratamento em seu grupo controle e resultados sua estatística T, que neste caso é negativa. 13. O negativo indica que é uma mudança negativa. Isso foi uma coisa ruim, e o valor P é muito, muito pequeno. Então isso implica que há uma probabilidade extremamente baixa de que esta mudança seja apenas um resultado de acaso aleatório. Então lembre-se, a fim de declarar significância, precisamos ver ah, alto valor de chá estatística T e um baixo valor de P. E isso é exatamente o que estamos vendo aqui. Estamos vendo negativo 13 que é um valor absoluto muito oi, a estatística T negativa, indicando que é uma coisa ruim e um valor P extremamente pequeno nos dizendo que não há praticamente nenhuma chance de que isso seja apenas um resultado de aleatório variação. Então, se você visse esses resultados no mundo real, você puxaria o plugue sobre este experimento o mais rápido possível. Certo, então é só um cheque de areia. Vamos em frente e mudar as coisas para que na verdade não haja diferença de mudança de riel entre esses dois grupos. Então eu vou mudar o Grupo B. O grupo de controle neste caso é o mesmo que um tratamento onde a média é 25 o desvio padrão que é inalterado no tamanho amostral da cadeia solar. Então, se você for em frente e correr, você tem que ver que nosso teste T acaba sendo abaixo de um agora . Então você se lembra que isso é em termos de desvio padrão, então isso implica, bem, provavelmente não há uma mudança real lá. Deve ter um valor P muito maior, bem mais de 30%. Agora, esses números de ar ainda relativamente altos. Então você sabe, você pode ver que variação aleatória pode ser meio que uma coisa insidiosa. É por isso que você precisa decidir antes do tempo. O que é um limite aceitável para o valor P aqui? Sabe, você poderia olhar para isso depois do fato e dizer, 30% de chances você poderia olhar para isso depois do fato e dizer, 30% de chancesde que não seja tão ruim. Podemos viver com isso. Mas não, quero dizer, na realidade, na prática, você quer ver vales P que estão abaixo de 5% idealmente abaixo de 1% e um valor de 30% significa que não é realmente um resultado tão forte. Então não justifique isso depois do fato. Entre no seu experimento para saber qual é o seu limite. Vamos fazer algumas mudanças aqui, e, você sabe, novamente, estamos criando esses conjuntos sob as mesmas condições. Vamos ver se realmente obtemos uma diferença de comportamento aumentando o tamanho amostral, então vamos partir de 210.000amostras. Você pode ver aqui que na verdade o valor P ficou um pouco mais baixo e o teste T um pouco maior, mas ainda não tem que declarar uma diferença real. Então você sabe, você esperaria isso Teoh. Na verdade, está indo na direção. Você não esperaria que fosse bem interessante, mas ainda há valores altos de novo. É apenas a variação aleatória efetiva, e poderia ter mais efeito em você perceber, especialmente em um site. Quando você está falando sobre valores de pedidos. Vamos Ah, vamos realmente para um 1.000.000. O que é isso? Bem, agora estamos de volta abaixo de um para a estatística T e nossos valores em torno de 35%. Então, quero dizer, estamos vendo esse tipo de, como flutuar um pouco em qualquer direção à medida que aumentamos o tamanho amostral. Isso significa que indo de 10.000amostras, 200.000 para 1.000.000 não vai mudar seu resultado no final do dia. Você sabe, isso é e executar experimentos como este é uma boa maneira de obter uma boa sensação de quanto tempo você pode precisar para executar um experimento, para quantas amostras realmente leva para obter um resultado significativo? E se você souber algo sobre a distribuição de seus dados antecipadamente, você pode realmente executar esses tipos de modelos. Agora, isto é uma verificação de sanidade. Se fôssemos realmente comparar o conjunto com ele mesmo, isso é chamado em um teste, e vamos falar sobre isso mais tarde. Devemos ver uma estatística T de zero e um valor P de um ponto. Oh, porque não há, de fato, nenhuma diferença entre esses conjuntos. Agora, se você executar isso usando dados reais do site onde você sabe que está olhando para as mesmas pessoas exatas e você viu um valor diferente que indica que há um problema no próprio sistema que executa seus testes. Certo. Tudo bem. Então, você sabe, no final do dia, como eu disse, é tudo uma decisão judicial. Então vá em frente e brinque com isso. Você sabe, ver o que o efeito de diferentes desvios padrão tem nos conjuntos de dados iniciais ou diferenças diferentes em médias e tipo de obter uma idéia sobre diferentes tamanhos de amostra. Então eu só quero que você mergulhe, brinque com esses conjuntos de dados diferentes e realmente executá-los e ver qual é o efeito na estatística T no valor de P. E espero que isso lhe dê uma sensação amore de como interpretar esses resultados. Mas novamente, a coisa importante para entender que você está procurando uma grande estatística T e um pequeno valor p valores P provavelmente vai ser o que você quer comunicar com o negócio. E lembre-se, menor é melhor para o valor p. Você quer ver isso em um único dígito, você sabe, idealmente abaixo de 1% antes de declarar vitória. Certo, vamos falar sobre testes B e mais na próxima palestra. Então aí você tem CYP. Eu torna muito fácil calcular estatísticas T e valores P para um determinado conjunto de dados, que você possa facilmente comparar o comportamento entre seus grupos de controle e tratamento e medir qual é a probabilidade desse efeito ser riel ou apenas um resultado de variação aleatória. Portanto, certifique-se de que você está se concentrando nessas métricas e que você está medindo a métrica de conversão que você se importa quando você está fazendo essas comparações. 83. Como determinar Quanto TEMPO tempo para fazer um experimento: Então, por quanto tempo você faz um experimento? Quanto tempo leva para realmente obter resultados? Em que ponto você desiste? Vamos falar sobre isso a seguir. Vai ser uma palestra muito rápida. Eu só quero passar alguns minutos falando sobre como decidir quando um experimento termina. Então, se alguém em sua empresa desenvolveu um novo experimento, uma nova mudança que deseja testar, ele tem interesse em ver isso com sucesso. Sabe, eles dedicam muito trabalho a tempo, e querem que seja bem sucedido e talvez tenham passado semanas. E você ainda não chegou a um resultado significativo sobre este experimento, positivo ou negativo, você sabe, eles vão querer continuar executando isso praticamente indefinidamente na esperança de que ele vai eventualmente mostrar um resultado positivo. Cabe ao seu dedo do pé. Desenhe a linha de quanto tempo você está disposto a executar este experimento. Então, como eu sei quando eu termino de fazer um teste A B? Quero dizer, nem sempre é simples prever quanto tempo levará até que você possa alcançar um resultado significativo, mas obviamente, mas obviamente, se você alcançou resultados significativos, você sabe o valor de P foi abaixo de 1% ou 5% de qualquer limite que você escolheu o seu feito . E você sabe, nesse ponto você pode puxar o plugue no experimento em ou rolar a mudança mais amplamente ou removê-lo porque ele estava realmente tendo um efeito negativo. Podes sempre dizer às pessoas para voltarem e tentarem outra vez. Usei o que aprenderam com o experimento para tentar de novo com algumas mudanças. E você sabe que está tudo bem. Suavize o golpe um pouco, mas a outra coisa que pode acontecer é que não é conversão. E se você não estiver vendo nenhuma tendência ao longo do tempo no valor de P, provavelmente é bom sinal que você não verá isso convergir tão cedo. Isso não terá impacto suficiente no comportamento para ser mensurável, não importa quanto tempo o execute. Então o que você quer fazer é traçar todos os dias em um experimento perdoado gráfico, o valor P, a estatística T, o que quer que você esteja usando para medir o sucesso deste experimento, e se você está vendo você sabe algo Parece promissor. Você verá que os valores P começam a descer ao longo do tempo. Assim, quanto mais dados ele recebe, mais significativos seus resultados devem estar recebendo. Agora, se você ver em vez disso uma linha plana ou uma linha que está por todo o lado, isso meio que te diz que o Vale P não vai a lugar nenhum. E não importa quanto tempo você executa este experimento. Simplesmente não vai acontecer. Então você precisa concordar de antemão que, no caso em que você não está vendo nenhuma tendência em valores P , por que mais tempo você está disposto a executar este experimento? São duas semanas? É um mês? Tenha em mente que ter mais de um experimento em execução ao mesmo tempo pode combinar seus resultados. Então, o tempo gasto em experimentos é uma mercadoria valiosa. Você não pode fazer mais tempo no mundo, então você só pode realmente executar seus muitos experimentos como você tem tempo para executá-los com o dado um ano. Então, se você gastar muito tempo executando um experimento que realmente não tem chance de convergir em um resultado, essa é uma oportunidade que você perdeu para executar outro experimento potencialmente mais valioso durante o tempo em que você estava desperdiçando Este outro. Portanto, é importante traçar a linha nos comprimentos de experimentos porque o tempo é uma mercadoria muito preciosa . Quando você está executando um teste B em um site, pelo menos contanto que você tenha mais idéias e você tenha tempo, que espero que seja o caso, e é isso. Você sabe, é um pouco parábola sobre ter certeza de que você vai entrar com os limites superiores acordados e quanto tempo você vai gastar testando e dado experimento. E se você não está vendo tendências no valor P que parecem encorajadoras, é hora de puxar o plugue nesse ponto. Lembrem-se, o tempo é uma mercadoria preciosa. Quando você está experimentando em um site, você só pode executar tantos experimentos ao mesmo tempo, geralmente um e o tempo que você perde tentando esperar por um resultado que nunca virá em um experimento. Desta vez, você poderia ter passado tentando um experimento que realmente fez uma diferença positiva. Então escolha seus limites de tempo sabiamente. 84. Teste de A/B: um ponto importante que eu quero fazer é que os resultados de um teste A B, mesmo quando você medi-los de uma maneira baseada em princípios. Usar valores P não é evangelho. Há muitos efeitos que podem realmente distorcer os resultados do seu experimento e fazer com que você tome a decisão errada. Então vamos passar por alguns desses e deixar você saber como cuidar deles. Então vamos falar sobre alguns gouaches com um teste B. Você sabe, soa muito oficial dizer que há um valor P de 1%, o que significa que há apenas 1% de chance de um determinado experimento ser devido a resultados espúrios ou variação aleatória. Mas ainda não é o ser tudo e acabar com tudo de medir o sucesso de um experimento. Há muitas coisas que podem distorcer ou misturar seus resultados que você precisa estar ciente. Então, mesmo que você veja um valor P que parece muito encorajador, sua Web, sua experiência ainda pode estar mentindo para você, e você precisa entender as coisas que podem fazer isso acontecer para que você não tome as decisões erradas. Lembre-se, correlação não implica causalidade, mesmo com um experimento bem projetado, Tudo o que você pode dizer é que há alguma probabilidade de que esse efeito tenha sido causado por essa mudança que você fez. No final do dia, sempre haverá uma chance de que não houve efeito real ou você pode até estar medindo o efeito errado. Ainda pode haver uma chance aleatória de haver algo mais acontecendo. É seu dever garantir que os empresários entendam que esses resultados experimentais precisam ser interpretados. Eles precisam ser uma parte da decisão deles, certo? Não pode ser tudo e acabar com tudo isso. Eles basearam a decisão porque há espaço para erros nos resultados e há coisas que podem distorcer esses resultados no final do dia. Se há algum objetivo comercial maior para essa mudança além, você sabe, apenas impulsionar a receita de curto prazo que precisa ser levada em consideração também. Um problema é efeitos de novidade, então tipo do calcanhar de Aquiles de um teste A B é o curto período de tempo sobre o qual eles tendem a ser executados bem, e isso causa alguns problemas. Em primeiro lugar, se houver efeitos a longo prazo nesta mudança, você não vai medi-los. Mas também há um certo efeito. É algo diferente no site. Então talvez seus clientes estejam acostumados a ver botões laranja o tempo todo, e esse botão azul aparece e chama a atenção deles só porque é diferente. Mas, à medida que chegam novos clientes que nunca viram seu site antes, eles não percebem que está sendo diferente em horas extras. Até mesmo seus antigos clientes se acostumam com o novo botão azul, e poderia muito bem ser que se você fizesse o mesmo teste um ano depois, não haveria diferença. Ou talvez houvesse o contrário. Você sabe, eu poderia facilmente ver uma situação em que você testa o botão laranja contra o botão azul, e nas primeiras 2 semanas o botão azul ganha. As pessoas compram mais porque se sentiam mais atraídas porque é diferente. Mas um ano se passa. Eu provavelmente poderia executar outro laboratório Web que coloca esse botão azul contra um botão laranja, eo botão laranja iria ganhar novamente simplesmente porque o botão laranja é diferente e é novo e ele chama a atenção das pessoas apenas por essa razão junto sozinho. Então, por essa razão, se você tem, ah, mudança que é um tanto controversa. É uma boa idéia executar novamente esse experimento mais tarde e ver se você pode realmente replicar seus resultados. Essa é a única maneira que conheço do dedo do pé para explicar os efeitos da novidade. Você realmente mede de novo quando não é mais novo, quando não é mais apenas uma mudança que a atenção do meu povo apanhador simplesmente porque é diferente e isso é que eu realmente não posso subestimar a importância de entender isso. Isso pode realmente distorcer muitos resultados. É preconceituoso atribuir mudanças positivas a coisas que realmente não merecem. Sabe, ser diferente por si só não é uma virtude, pelo menos não neste contexto. Outro problema. Efeitos sazonais Então, novamente, se você está executando um experimento no Natal, as pessoas não tendem a se comportar da mesma forma durante o Natal como eles fazem no resto do ano. Você sabe, eles definitivamente gastam seu dinheiro diferente durante essa temporada, eles estão passando mais tempo com suas famílias em casa. Eles podem estar um pouco fora do trabalho, então as pessoas têm um estado de espírito diferente. Pode até estar envolvido com o tempo. Sabe, durante o verão, as pessoas se comportam de forma diferente porque está quente. Você sabe, eles são gentis. Eles estão se sentindo do Lee, ou de férias com mais frequência. Talvez se você fizer sua experiência durante o tempo de uma tempestade terrível em uma área altamente povoada que poderia distorcer seus resultados também. Então, novamente, apenas estar ciente de potenciais efeitos sazonais feriados ou um grande para estar ciente. E sempre leve sua experiência com um grão de sal se eles são executados durante um período de tempo que é conhecido por ter sazonalidade, e você pode determinar isso quantitativamente observando realmente a métrica que você está tentando medir como sucesso. Métrica, seja lá o que você está chamando de métrica de conversão e olhar para o seu comportamento no mesmo período de tempo do ano passado, há flutuações sazonais flutuações que você vê todos os anos? E se assim for, você quer tentar evitar executar seu experimento durante um desses picos ou vales. Outro problema potencial que pode esquiar resultados é o viés de seleção, então é muito importante que os clientes tenham sido atribuídos aleatoriamente ao seu controle, seus grupos de tratamento, você é um ou seu grupo B, certo, Mas há maneiras sutis em que essa atribuição aleatória pode não ser aleatória afinal. Por exemplo, digamos que seu hash suas ideias de clientes para colocá-los em um balde ou outro . Talvez haja algum viés de vibe sutil entre como essa função de hash afeta pessoas com clientes mais baixas vs ideias de clientes mais altas. E isso pode ter o efeito de colocar todo o seu longo tempo ou clientes leais no grupo de controle e seus clientes mais recentes que não o conhecem tão bem em seu grupo de tratamento . E o que você acaba medindo é apenas uma diferença de comportamento entre clientes antigos e novos clientes como resultado. Portanto, é muito importante auditar seus sistemas para garantir que não haja viés de seleção na atribuição real das pessoas para o controle do grupo de tratamento. Você também precisa ter certeza de que é Simon é pegajoso, então se você está medindo o efeito de uma mudança ao longo de uma sessão inteira, você sabe que você quer medir. Eles viram uma mudança na página A, mas sobre não pagos ver, eles realmente fizeram uma conversão. Você tem que ter certeza de que eles não estão alternando grupos entre esses cliques, então você precisa ter certeza de que dentro de uma determinada sessão as pessoas permanecem no mesmo grupo, e como definir uma sessão pode se tornar meio nebulosa também. Agora, estes são todos os problemas que usando uma estrutura estabelecida fora da prateleira como experimentos do Google são otimizados Lee ou um desses caras pode ajudar com. Você sabe que você não está reinventando a roda em todos esses problemas, mas se sua empresa tem, ah, solução caseira porque eles não estão confortáveis em compartilhar esses dados com empresas externas, você sabe que vale a pena auditá-lo. Se há ou não seleção, viés ou não. Uma maneira de fazer isso é executar o que é chamado em um teste. Então, se você realmente executar um experimento onde não há diferença entre o tratamento e controle, você não deve ver uma diferença no resultado final, certo? Você sabe, não deve haver qualquer tipo de mudança de comportamento quando você está comparando essas duas coisas, então um teste pode ser uma boa maneira de testar. Você é uma estrutura B em si para garantir que não haja preconceito inerente ou outros problemas. Por exemplo, vazamento de sessão e o quê? Não que você precise falar. Outro grande problema é a poluição de dados. Então conversamos longamente sobre a importância de limpar seus dados de entrada, e isso é especialmente importante no contexto de um teste da Marinha. O que aconteceria se você tivesse algum robô, algum rastreador malicioso que está rastejando pelo seu site o tempo todo? Você sabe, fazendo uma quantidade anormal de transações, e esse robô acaba sendo designado para o tratamento do controle. Aquela pessoa, aquele robô, nem mesmo uma pessoa poderia distorcer os resultados do seu experimento. Portanto, é muito importante estudar a entrada em sua arma para seu experimento e procurar outliers e analisar o que esses outliers são. Devem ser excluídos? Você está realmente deixando alguns robôs vazarem em suas medidas? E estão a distorcer os resultados da tua experiência? Este é um problema muito, muito comum e algo que você precisa estar ciente. Há robôs maliciosos lá fora que são pessoas tentando invadir seu site. Há, sabe, raspadores benignos lá fora. Eles só estão tentando rastrear seu site para motores de busca ou o que não. Você sabe, há todo tipo de comportamento estranho acontecendo em um site, e você precisa filtrar isso e realmente pegar as pessoas que são realmente seus clientes e não esses scripts automatizados. E isso pode ser um problema muito desafiador, na verdade. Mais uma razão para usar estruturas fora das prateleiras, como Google Analytics ou outras coisas, se você puder. Certo, e conversamos brevemente sobre erros de atribuição. Você sabe, se você está realmente usando o comportamento downstream de uma mudança que entra em uma área cinza , você precisa entender como você está realmente contando essas conversões como uma função da distância do coisa que você mudou e, você sabe, concorda com as partes interessadas do seu negócio na frente sobre como você vai medir esses efeitos que você também precisa estar ciente. Se você está executando vários experimentos que uma vez, eles entrarão em conflito um com o outro? Existe um fluxo de página onde alguém pode realmente encontrar dois experimentos diferentes na mesma sessão? Se sim, isso vai ser um problema, e você tem que basicamente aplicar seu julgamento sobre se essas mudanças realmente poderiam interferir uns com os outros de alguma forma significativa e realmente afetar o comportamento dos clientes de alguma forma significativa. Tudo bem, novo, muito. Você precisa tomar esses resultados com um grão de sal. Há um monte de coisas que poderiam esquiar resultados, e você precisa estar ciente de, hum, então apenas estar ciente deles e certifique-se de que seus donos de negócios também estão cientes das limitações de um teste B e você vai ficar bem. Então lembre-se da natureza de curto prazo de um teste A B submete a um monte de limitações. Você pode estar apenas vendo efeitos de novidade ou efeitos sazonais e o que não. Então, se você não está em uma posição onde você pode realmente dedicar uma quantidade muito longa de tempo a um experimento, você precisa pegar esses resultados com um grão de sal e idealmente testá-los novamente mais tarde durante um período de tempo diferente.