Python para negociação algorítmica - página 21

 

Backtest sua estratégia média de custo em dólar facilmente em Python



Backtest sua estratégia média de custo em dólar facilmente em Python

Nos próximos 20 minutos, estaremos implementando uma estratégia de média de custo em dólares em Python. Essa estratégia permitirá que você avalie o desempenho da média do custo em dólar para um ativo ou índice específico durante um determinado período de tempo. Estaremos usando uma ferramenta chamada backtesting.py para implementar esta estratégia. Backtesting.py é uma estrutura amigável em Python que é menos intimidante do que outras bibliotecas como Vectorbt ou Backtrader. Se você é novo no Python, esta será uma ótima opção para você.

A estratégia de média de custo em dólar que implementaremos é relativamente simples, mas também mostrarei como estendê-la. Nossa estratégia envolve a compra de um valor fixo em dólares de um determinado ativo toda segunda ou terça-feira e a repetição desse processo até esgotarmos os dados. Para começar, abra um terminal e configure um novo ambiente virtual para garantir um ambiente limpo para nossa implementação. Depois de configurar o ambiente virtual, instale o pacote de backtesting usando pip:

teste de instalação do pip

Depois de instalar o pacote, podemos prosseguir com nosso arquivo Python. Precisamos importar alguns módulos e dados necessários. Do backtesting, importe os módulos backtest e strategy. Além disso, importe alguns dados fictícios de backtesting.test, especificamente os dados do Google. Também precisaremos do módulo pandas para manipulação de dados.

Agora, vamos definir nossa classe de estratégia. Crie uma classe chamada DCA (Dollar Cost Average) que herda da classe de estratégia. Dentro dessa classe, definiremos uma variável de classe chamada amount_to_invest, que representa o valor fixo em dólar que queremos investir. Inicialmente, defina-o como 10.

Em seguida, precisamos definir duas funções dentro desta classe: __init__ e next. A função __init__ é chamada durante a inicialização e é usada para pré-calcular quaisquer valores que possamos precisar posteriormente. No nosso caso, criaremos um indicador que nos dá o dia da semana. Para fazer isso, usaremos o método self.indicator fornecido por backtesting.py. Podemos definir nosso indicador como self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek). Este indicador retornará uma matriz dos valores do dia da semana (0-6, onde segunda-feira é 0 e domingo é 6) para nossos dados.

Agora, vamos para a próxima função, onde implementamos nossa lógica de negociação. Esta função é chamada para cada barra de dados e nos permite tomar decisões com base nos dados atuais. No nosso caso, vamos verificar se o dia da semana é igual a 1 (terça-feira) usando if self.day_of_week == 1:. Se for terça-feira, acionaremos um sinal de compra. Para executar a ordem de compra, usaremos a função self.buy fornecida por backtesting.py. Podemos calcular o tamanho da ordem de compra dividindo o amount_to_invest pelo preço de fechamento atual do ativo. Para garantir a compra de um número inteiro de ações, podemos usar math.floor para arredondar o resultado para baixo.

Para lidar com ações fracionárias, podemos dividir as ações multiplicando o ativo por um número pequeno, como 10 ** -6. Isso dividirá as ações em microshares, que mais tarde podem ser convertidas de volta para a quantidade real de ações compradas dividindo pelo mesmo pequeno número.

Finalmente, precisamos executar o backtest e extrair as estatísticas. Para fazer isso, podemos usar bt.run() e atribuir o resultado a uma variável chamada stats. Também podemos plotar os resultados usando bt.plot().

Como ainda não implementamos a lógica de venda, o gráfico aparece como uma linha contínua sem nenhum ponto de venda. Vamos consertar isso em breve. Mas antes, vamos extrair algumas estatísticas dos resultados do backtest.

Para fazer isso, usaremos a variável stats que definimos anteriormente. Podemos imprimir várias estatísticas, como retorno total, retorno anualizado, rebaixamento máximo e muito mais.

Sinta-se à vontade para adicionar mais estatísticas se estiver interessado em explorar outras métricas de desempenho.

Agora vamos passar para a implementação da lógica de venda. Como estamos usando uma estratégia de custo médio em dólar, venderemos o mesmo valor fixo em dólar toda semana. No nosso caso, vamos vender às sextas-feiras.

Aqui, verificamos se o dia da semana é 4 (sexta-feira) usando o indicador day_of_week que criamos anteriormente. Se for sexta-feira, vendemos a mesma quantia em dólar que compramos anteriormente, dividindo a quantidade_a_investir pelo preço de fechamento atual. Isso garante que vendamos o número apropriado de ações para corresponder ao valor do nosso investimento.

Agora, quando executamos o backtest, devemos ver os pontos de venda no gráfico, indicando as sextas-feiras em que vendemos nossa posição.

Sinta-se à vontade para experimentar diferentes variações dessa estratégia, como ajustar os dias de compra/venda ou implementar condições adicionais com base nos movimentos de preços. Essa estrutura permite estender e personalizar facilmente sua estratégia de acordo com seus requisitos.

Lembre-se de ajustar a variável amount_to_invest e explorar diferentes dados de ativos para ver o desempenho da estratégia.

Espero que isso ajude você a implementar e explorar a estratégia de média de custo em dólar usando a biblioteca backtesting.py em Python. Entre em contato se tiver mais perguntas!

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

Indicadores personalizados em Backtesting.py - Python Deep Dive



Indicadores personalizados em Backtesting.py - Python Deep Dive

Neste vídeo, vamos explorar o processo de criação de indicadores personalizados na biblioteca backtesting.py. Esse recurso nos permitirá testar facilmente qualquer estratégia de negociação, criando indicadores e traduzindo as funções do Python em um formato compatível com o ecossistema backtesting.py.

Antes de nos aprofundarmos nos detalhes da criação do indicador, é recomendável conferir um curso disponível gratuitamente no YouTube que cobre a maioria dos aspectos do backtesting.py. Este curso fornecerá uma compreensão de alto nível da biblioteca, o que será benéfico ao explorar a criação de indicadores neste vídeo.

Neste vídeo, vamos nos concentrar em três exemplos diferentes para cobrir várias ideias de indicadores. O primeiro exemplo envolve o uso de sinais gerados em um programa Python externo e sua integração em backtesting.py. Essa abordagem é útil quando você já possui sinais de compra e venda de uma fonte externa e deseja incorporá-los ao seu processo de backtesting.

O segundo exemplo demonstrará o uso da biblioteca pandas-ta para retornar vários valores para cada indicador. Especificamente, trabalharemos com o indicador Bollinger Bands e mostraremos como retornar um quadro de dados contendo as bandas inferior e superior, em vez de apenas um array numpy simples. Este exemplo destacará a versatilidade de criar indicadores com vários valores.

Por fim, codificaremos manualmente uma estratégia de impulso para demonstrar como os indicadores personalizados podem ser criados usando Python puro. Este exemplo mostrará a flexibilidade de criar indicadores usando a programação Python, permitindo possibilidades ilimitadas no design do indicador.

Para acompanhar os exemplos, certifique-se de ter as bibliotecas necessárias instaladas, incluindo backtesting, pandas e pandas-ta. Depois de instalar essas bibliotecas, crie um arquivo Python para os exemplos de código.

A parte inicial do código configura o clichê necessário ao usar backtesting.py. Ele importa as classes necessárias, "backtest" e "strategy", e importa dados de amostra para ações do Google de backtesting.py. Os dados importados são um quadro de dados pandas contendo dados de preços diários, incluindo abertura, alta, baixa, fechamento e volume, com um índice de data e hora.

Para o primeiro exemplo, assumimos que você já gerou alguns sinais em um programa externo e deseja transferi-los para backtesting.py. Para demonstrar isso, criamos sinais aleatórios usando numpy e os adicionamos ao quadro de dados do Google. Esses sinais podem representar qualquer indicador que você programou em Python, onde -1 denota um sinal de venda, 0 indica nenhuma ação e 1 representa um sinal de compra.

Em seguida, definimos uma classe de estratégia chamada "SignalStrategy" que herda da classe "Strategy" importada anteriormente. Esta classe será responsável por implementar a lógica de compra e venda com base nos sinais. A classe inclui a função de inicialização " init " e a função "next".

Na função " init ", não temos muito o que fazer neste exemplo em particular, mas é uma boa prática incluí-la. A função "next" é onde a lógica de compra e venda será implementada com base nos sinais.

Para executar o backtest, criamos uma instância da classe backtest, passando o dataframe do Google e a classe "SignalStrategy". Também definimos o valor do cache como 10.000. Em seguida, executamos o backtest e armazenamos os resultados na variável "stats". Finalmente, imprimimos as estatísticas para ver o desempenho da estratégia.

A execução do código neste ponto não produzirá nenhuma negociação porque ainda não implementamos a lógica de compra e venda. No entanto, podemos acessar os valores do sinal usando "self.data.signal" dentro da função "next", que nos dará o último valor do sinal.

Para implementar a lógica de compra e venda, verificamos o valor do sinal atual e a posição atual. Se o sinal for 1 (sinal de compra) e não houver posição existente, executamos uma ordem de compra usando "self.buy". Se o sinal for -1 (sinal de venda) e houver uma posição longa existente, executamos uma ordem de venda usando "self.sell".

  1. Estratégia de Sinal Externo:

    • Gere sinais aleatórios ou obtenha sinais de um programa externo.
    • Defina uma classe SignalStrategy herdada de Strategy.
    • Implemente o próximo método para executar ordens de compra ou venda com base nos sinais.
    • Use os métodos self.buy() e self.sell() para executar as ordens.
    • Instancie um objeto Backtest com os dados, estratégia, capital inicial e comissão.
    • Execute o backtest usando bt.run() e analise os resultados.

  2. Usando pandas-ta para indicadores personalizados:

    • Importe a biblioteca pandas_ta (instale-a com pip install pandas_ta).
    • Use a função de indicador desejada de pandas_ta para calcular o indicador.
    • Anexe o indicador calculado ao quadro de dados.
    • Defina uma classe de estratégia herdada de Strategy.
    • Implemente o próximo método para executar ordens de compra ou venda com base nos valores do indicador.
    • Use as condições desejadas para determinar quando comprar ou vender.
    • Instancie um objeto Backtest com os dados, estratégia, capital inicial e comissão.
    • Execute o backtest usando bt.run() e analise os resultados.

Lembre-se de substituir espaços reservados como GOOG por seus dados reais e personalizar as estratégias de acordo com seus requisitos específicos.

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

Stop Loss em Backtesting.py



Stop Loss em Backtesting.py

Neste vídeo, vamos explorar o conceito de stop loss na biblioteca "backtesting.py". O vídeo abordará três exemplos de complexidade e profundidade crescentes, fornecendo uma compreensão abrangente de stop loss em "backtesting.py". O apresentador assume algum conhecimento prévio de "backtesting.py" e recomenda assistir a um curso gratuito no YouTube para iniciantes antes de mergulhar neste tópico avançado.

Para começar, abra um terminal e verifique se "backtesting.py" está instalado executando o comando "pip install backtesting". Isso instalará todos os pacotes necessários. Em seguida, crie um novo arquivo Python, vamos chamá-lo de "example.py" e importe os módulos necessários: "backtest" e "strategy" de "backtesting" e "googledale" de "backtesting.test". "googledale" é um conjunto de dados de teste que vem com "backtesting.py".

Em seguida, defina a classe de estratégia criando uma classe chamada "Strats" que herda da classe "strategy". Implemente as duas funções necessárias: " init " e "next". Neste ponto, estamos prontos para executar nosso backtest. Inicialize um novo objeto de backtest, "bt", usando a função "backtest". Passe os dados "googledale" e a classe de estratégia que acabamos de definir. Defina o valor inicial em dinheiro para $ 10.000. Por fim, execute o backtest usando o método "bt.run" e plote os resultados usando "bt.plot".

Inicialmente, a classe de estratégia não executa nenhuma ação de negociação. Para demonstrar um exemplo simples de stop loss, adicionaremos algumas lógicas básicas de compra e venda. Se tivermos uma posição existente, não tomaremos nenhuma ação. No entanto, se não tivermos uma posição, colocaremos uma ordem de compra usando o método "self.to_buy", especificando o tamanho da posição (por exemplo, 1 ação). Além disso, adicionaremos um stop loss e take profit. O stop loss será definido em 10 unidades abaixo do preço de fechamento atual, enquanto o take profit será definido em 20 unidades acima do preço de fechamento atual.

Executar o backtest irá gerar um grande número de negociações. Assim que uma negociação for fechada, uma nova negociação será aberta na próxima barra, a menos que o stop loss ou take profit seja acionado. É importante entender como "backtesting.py" lida com stop loss e take profit. Nos casos em que o stop loss e o take profit são acionados na mesma barra, a biblioteca assume que o stop loss é acionado primeiro. Esse comportamento pode levar a resultados inesperados, principalmente ao lidar com dados diários que podem ter lacunas significativas.

Para gerenciar stop loss com mais eficiência, podemos estender a classe de estratégia e usar a "trailing strategy" fornecida por "backtesting.py". Importe os módulos necessários, incluindo "crossover" e "trailing strategy" de "backtesting.lib". Na nova classe de estratégia, herde de "trailing strategy" em vez da classe base "strategy". Substitua a função " init " para chamar a função " init " da classe pai usando "super". Em seguida, use a função "set_trailing_stop_loss" da classe pai para definir um valor de trailing stop loss.

Na próxima seção do vídeo, o apresentador explica com mais detalhes como funciona a "estratégia à direita" e como personalizá-la para requisitos específicos. No entanto, nesta seção, o foco está na utilização da "estratégia à direita" em nosso código. Ao chamar a função " init " da classe pai e usar a função "set_trailing_stop_loss", podemos aproveitar a funcionalidade de trailing stop loss em nosso backtest.

No geral, o vídeo fornece uma explicação passo a passo da implementação de stop loss em "backtesting.py". Abrange exemplos simples, bem como conceitos mais avançados, como o valor de 10, o que significa que nosso stop loss seguirá o preço em 10 unidades.

Agora que configuramos nossa função de inicialização, vamos para a próxima função. É aqui que a maior parte da nossa lógica de negociação será implementada. Dentro da próxima função, primeiro chamaremos a próxima função da classe pai usando super().next(). Isso garante que a funcionalidade de trailing stop loss seja executada junto com a outra lógica de negociação.

Em seguida, adicionaremos algum código para ajustar nosso trailing stop loss. Usaremos uma instrução condicional para verificar se temos uma posição aberta (self.position não é None). Se tivermos uma posição, atualizaremos o trailing stop loss usando o método update_trailing_sl fornecido pela classe trailing_strategy. Este método usa o preço atual como argumento e atualiza o stop loss de acordo.

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

Validação de backtest em Python (enganado pela aleatoriedade)



Validação de backtest em Python (enganado pela aleatoriedade)

Todos nós já estivemos naquela situação em que criamos uma estratégia de negociação, a testamos e, quando finalmente a implementamos, ela falha no desempenho esperado. Uma das principais razões para essa decepção é o ajuste excessivo da estratégia a um conjunto específico de dados históricos usados no backtest. Neste vídeo, demonstrarei uma estratégia para combater o overfitting e garantir que você não confie em estratégias que carecem de uma base sólida ou sejam enganadas pela aleatoriedade.

Vamos mergulhar em um exemplo específico. Realizei um backtest em uma estratégia simples baseada em RSI usando Bitcoin como ativo. A estratégia envolve vender quando o RSI está alto e comprar quando o RSI está baixo. Os resultados do backtest mostraram um retorno modesto de cerca de três por cento, apesar do Bitcoin ter sofrido uma queda de 15 por cento no período testado. À primeira vista, pode parecer uma estratégia promissora para mercados em baixa.

No entanto, é crucial examinar o desempenho da estratégia em vários períodos de tempo para determinar se ela identifica consistentemente oportunidades lucrativas ou se simplesmente teve sorte com os valores dos parâmetros escolhidos durante o backtest. Para conseguir isso, realizei vários backtests de 30 dias, cobrindo diferentes períodos ao longo do ano.

Ao traçar a distribuição dos retornos desses backtests, podemos obter insights sobre a eficácia da estratégia. O gráfico mostra cada janela de 30 dias como um ponto, representando os retornos obtidos nesse período. O box plot que acompanha exibe o retorno mediano, quartis, valores máximos e mínimos. Analisando o gráfico, fica evidente que o retorno médio em um período de 30 dias é de -8,5%. Além disso, a distribuição dos retornos parece ser aleatória, semelhante aos resultados esperados de um gerador de números aleatórios entre -35 e 15. Essas descobertas indicam fortemente que a estratégia não é única ou eficaz além dos dados históricos específicos usados no backtest.

Para validar a estratégia e mitigar a influência do overfitting, precisamos realizar backtests em uma gama mais ampla de dados. Para isso, baixei vários arquivos de dados cobrindo todo o ano, do início de 2022 ao final de 2022. Combinei esses arquivos em um CSV mestre contendo dados de velas de um minuto para todo o período.

No código de validação, fiz alguns pequenos ajustes para acomodar o conjunto de dados estendido. A estratégia principal permanece a mesma, com foco na lógica de negociação baseada em RSI. No entanto, introduzi um loop para realizar backtests em janelas de 30 dias em todos os dados. Cada backtest calcula retornos, que são adicionados a uma lista para análise posterior.

Ao gerar um gráfico de caixa usando os retornos coletados, podemos visualizar a distribuição do desempenho da estratégia em várias janelas de 30 dias. Este gráfico revela a variabilidade dos retornos e fornece uma imagem mais clara de como a estratégia funciona em diferentes intervalos de tempo. Neste exemplo específico, o gráfico indica retornos predominantemente negativos para quase todos os meses, sugerindo que a estratégia carece de lucratividade consistente.

Essas técnicas para validar e verificar as estratégias de negociação podem ser aplicadas a qualquer estrutura de backtesting de sua escolha. O código fornecido utiliza a biblioteca backtesting.py, mas você pode adaptá-lo a outras bibliotecas como vectorbt ou backtrader. A ideia-chave é garantir que sua estratégia demonstre robustez em diversos períodos de tempo e não seja simplesmente um produto de superajuste a um conjunto específico de dados históricos.

Ao seguir essas etapas de validação, você pode reduzir o risco de depender de estratégias que não são baseadas na realidade ou de ser vítima de resultados aleatórios. É essencial ir além do desempenho do backtest e considerar a eficácia da estratégia em diferentes condições de mercado para tomar decisões informadas ao implementar estratégias de negociação.

Depois de analisar os resultados do backtest e a distribuição dos retornos em diferentes timeframes, descobrimos que o desempenho da estratégia era essencialmente aleatório. Não forneceu lucratividade consistente fora do período de tempo específico usado para backtesting. Isso indica que a estratégia sofria de overfitting e carecia de robustez.

Para evitar cair na armadilha do overfitting e aumentar as chances de desenvolver estratégias de negociação confiáveis, aqui estão algumas recomendações:

  1. Use dados suficientes e diversos: certifique-se de que seu backtest incorpore uma quantidade significativa de dados históricos para cobrir várias condições de mercado. Isso ajuda a capturar uma gama mais ampla de cenários e reduz a probabilidade de superajuste a condições específicas do mercado.

  2. Valide em vários prazos: em vez de confiar apenas em um único período de tempo para backtesting, teste sua estratégia em diferentes prazos. Isso fornece insights sobre seu desempenho em várias condições de mercado e ajuda a identificar se a estratégia tem rentabilidade consistente ou se os resultados observados foram devidos à aleatoriedade.

  3. Implemente testes fora da amostra: reserve uma parte de seus dados históricos para testes fora da amostra. Depois de conduzir seu backtest primário no conjunto de dados inicial, valide a estratégia nos dados reservados que o modelo não viu antes. Isso ajuda a avaliar a capacidade da estratégia de se adaptar a condições de mercado inéditas e fornece uma avaliação mais realista de seu desempenho.

  4. Cuidado com o ajuste de curva: Evite otimização excessiva ou ajuste de parâmetros para ajustar a estratégia muito de perto aos dados históricos. Estratégias que são muito adaptadas a padrões de dados específicos têm maior probabilidade de falhar nas negociações do mundo real. Busque robustez em vez de buscar desempenho excepcional apenas com dados históricos.

  5. Considere a análise walk-forward: em vez de confiar apenas em backtests estáticos, considere o uso da análise walk-forward. Isso envolve reotimizar periodicamente e testar novamente sua estratégia à medida que novos dados se tornam disponíveis. Ele permite que você adapte e ajuste sua estratégia continuamente, melhorando seu desempenho em condições de mercado em constante mudança.

  6. Use testes de significância estatística: aplique testes estatísticos para avaliar a significância do desempenho de sua estratégia. Isso ajuda a determinar se os resultados observados são estatisticamente significativos ou apenas devido ao acaso. Testes estatísticos comuns usados em backtesting incluem testes t, testes bootstrap e simulações de Monte Carlo.

Ao seguir essas diretrizes, você pode reduzir o risco de desenvolver estratégias excessivamente ajustadas aos dados históricos e aumentar a probabilidade de criar abordagens de negociação robustas e confiáveis.

Lembre-se, o objetivo é desenvolver estratégias de negociação que demonstrem lucratividade consistente em diferentes condições de mercado, em vez de estratégias que meramente tenham bom desempenho em dados históricos.

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

Uma introdução rápida ao Python para engenheiros de aprendizado de máquina



Uma introdução rápida ao Python para engenheiros de aprendizado de máquina

O instrutor do curso começa apresentando o conceito de modelagem preditiva e sua importância na indústria. A modelagem preditiva se concentra no desenvolvimento de modelos que podem fazer previsões precisas, mesmo que não forneçam uma explicação de por que essas previsões são feitas. O instrutor enfatiza que o curso se concentrará especificamente em dados tabulares, como planilhas ou bancos de dados. O objetivo é orientar os alunos de desenvolvedores interessados em aprendizado de máquina em Python para se tornarem proficientes no trabalho com novos conjuntos de dados, desenvolvendo modelos preditivos de ponta a ponta e aproveitando o Python e a biblioteca SCIPy para tarefas de aprendizado de máquina.

Para começar, o instrutor oferece um curso intensivo de sintaxe do Python. Eles cobrem conceitos fundamentais como variáveis e atribuições, esclarecendo a distinção entre o sinal de "igual" usado para atribuição e o sinal de "igual duplo" usado para comparações de igualdade. O instrutor demonstra como usar o Jupyter Notebook para codificação Python e fornece dicas de navegação, como criar um novo notebook, usar aliases para bibliotecas, executar células e copiar ou mover células. Eles também explicam o recurso de salvamento automático e salvamento manual de notebooks. Por fim, o vídeo aborda brevemente a interrupção da execução do kernel.

Seguindo em frente, o instrutor explica como usar a barra de ferramentas no Jupyter Notebook para navegação do mecanismo Python e como anotar blocos de anotações usando o Markdown. O vídeo aborda instruções essenciais de controle de fluxo, incluindo condições if-then-else, loops for e loops while. Essas instruções permitem a tomada de decisões e a repetição no código Python. O instrutor então apresenta três estruturas de dados cruciais para aprendizado de máquina: tuplas, listas e dicionários. Essas estruturas de dados fornecem maneiras eficientes de armazenar e manipular dados. Além disso, o vídeo inclui um curso intensivo sobre NumPy, uma biblioteca que permite operações numéricas em Python. Abrange a criação de arrays, acesso a dados e execução de operações aritméticas com arrays.

O vídeo passa a discutir duas bibliotecas essenciais, Matplotlib e Pandas, que são comumente usadas em aprendizado de máquina para análise e visualização de dados. O Matplotlib permite que os usuários criem vários gráficos e gráficos, facilitando a visualização dos dados. Pandas, por outro lado, fornece estruturas de dados e funções para manipulação e análise de dados, particularmente por meio de séries e estruturas de quadros de dados. O vídeo destaca a importância da função read_csv do Pandas para carregar arquivos CSV, o formato mais comum em aplicativos de aprendizado de máquina. Ele também enfatiza a utilidade das funções do Pandas para resumir e plotar dados para obter insights e preparar dados para tarefas de aprendizado de máquina. Estatísticas descritivas em Python são mencionadas como uma ferramenta crucial para entender as características e a natureza dos dados.

O vídeo mergulha em técnicas específicas de visualização de dados que podem ajudar na análise de dados antes de aplicar técnicas de aprendizado de máquina. Histogramas, gráficos de densidade e gráficos de caixa são introduzidos como formas de observar a distribuição de atributos e identificar potenciais outliers. Matrizes de correlação e matrizes de gráfico de dispersão são apresentadas como métodos para identificar relacionamentos entre pares de atributos. O vídeo enfatiza a importância de redimensionar, padronizar, normalizar e binarizar dados como etapas de pré-processamento necessárias para preparar dados para algoritmos de aprendizado de máquina. O método de ajuste e transformação é explicado como uma abordagem comum para o pré-processamento de dados.

O próximo tópico discutido são técnicas de pré-processamento de dados em aprendizado de máquina. O vídeo aborda normalização e padronização como duas técnicas importantes. A normalização envolve o redimensionamento dos atributos para que tenham a mesma escala, enquanto a padronização envolve a transformação dos atributos para que tenham uma média de zero e um desvio padrão de um. A binarização, que limita os dados para criar atributos binários ou valores nítidos, também é explicada. A importância da seleção de recursos é enfatizada, pois recursos irrelevantes ou parcialmente irrelevantes podem afetar negativamente o desempenho do modelo. O vídeo apresenta a seleção univariada como uma abordagem estatística para a seleção de recursos e destaca o uso de eliminação recursiva de recursos e métodos de importância de recursos que utilizam conjuntos de árvores de decisão, como floresta aleatória ou árvores extras. A análise de componentes principais (PCA) também é discutida como uma técnica de redução de dados que pode comprimir o conjunto de dados em um número menor de dimensões usando álgebra linear.

O vídeo enfatiza a importância dos métodos de reamostragem para avaliar o desempenho dos algoritmos de aprendizado de máquina em dados não vistos. Ele adverte contra avaliar algoritmos no mesmo conjunto de dados usado para treinamento, pois pode levar a overfitting e má generalização para novos dados. Técnicas como conjuntos de divisão de teste de treinamento, validação cruzada k-fold, validação cruzada de deixar um de fora e divisões repetidas de testes aleatórios são explicadas como formas de obter estimativas confiáveis do desempenho do algoritmo. O vídeo termina com uma discussão sobre várias métricas de desempenho para algoritmos de aprendizado de máquina, como precisão de classificação, perda logarítmica, área sob a curva, matriz de confusão e relatório de classificação.

O vídeo investiga as métricas de desempenho usadas para avaliar as previsões feitas pelos modelos de aprendizado de máquina. Ele cobre precisão de classificação, perda de log (para avaliar probabilidades), área sob a curva de característica de operação do receptor (ROC) (para problemas de classificação binária), matriz de confusão (para avaliar a precisão do modelo com várias classes) e o relatório de classificação (que fornece precisão , recall, pontuação F1 e suporte para cada classe). Além disso, o vídeo explica três métricas comuns de regressão: erro médio absoluto, erro médio quadrado e R-quadrado. Exemplos práticos são demonstrados para ilustrar como calcular essas métricas usando Python.

O palestrante apresenta o conceito de verificação pontual para determinar quais algoritmos de aprendizado de máquina funcionam bem para um problema específico. A verificação pontual envolve a avaliação de vários algoritmos e a comparação de seus desempenhos. O vídeo demonstra a verificação pontual de seis modelos diferentes de aprendizado de máquina, incluindo algoritmos lineares e não lineares, usando Python com a biblioteca scikit-learn. O palestrante enfatiza que os resultados podem variar devido à natureza estocástica dos modelos. A seção termina com uma introdução aos modelos de aprendizado de máquina de regressão, preparando os visualizadores para a próxima seção, verificando esses modelos no local.

Em seguida, o palestrante apresenta modelos de aprendizado de máquina lineares e não lineares usando o conjunto de dados de preços imobiliários de Boston como exemplo. Um equipamento de teste com validação cruzada de 10 vezes é empregado para demonstrar como verificar cada modelo, e o erro quadrático médio é usado como um indicador de desempenho (invertido devido a uma peculiaridade na função de pontuação de arquivo cruzado). O modelo de regressão linear, assumindo uma distribuição gaussiana para variáveis de entrada e sua relevância para a variável de saída, é discutido. A regressão Ridge, uma modificação da regressão linear que minimiza a complexidade do modelo, também é explicada. O palestrante destaca a importância de entender o pipeline ou processo, em vez de ficar preso na implementação de código específico neste estágio.

O vídeo explora o processo de compreensão e visualização de variáveis de entrada para um problema de aprendizado de máquina. Ele sugere o uso de gráficos univariados, como gráficos de caixa e bigode e histogramas para entender a distribuição das variáveis de entrada. Para análise multivariada, gráficos de dispersão podem ajudar a identificar relacionamentos estruturais entre variáveis de entrada e revelar altas correlações entre pares de atributos específicos. O vídeo também discute o processo de avaliação, usando uma estrutura de teste com validação cruzada de 10 vezes para avaliar o desempenho do modelo. A importância de criar um conjunto de dados de validação para avaliar independentemente a precisão do melhor modelo é enfatizada. Seis modelos diferentes de aprendizado de máquina são avaliados e o mais preciso é selecionado para fazer previsões. O relatório de classificação, a matriz de confusão e a estimativa de precisão são usados para avaliar as previsões. Por fim, o vídeo aborda a regressão de regularização, destacando a construção dos modelos Lasso e Elastic Net para reduzir a complexidade dos modelos de regressão.

O vídeo apresenta um problema de classificação binária em aprendizado de máquina, com o objetivo de prever metal de rocha usando o conjunto de dados Sonar Mines versus Rocks. O conjunto de dados contém 208 instâncias com 61 atributos, incluindo o atributo de classe. Estatísticas descritivas são analisadas, indicando que, embora os dados estejam no mesmo intervalo, diferentes médias sugerem que a padronização dos dados pode ser benéfica. As visualizações de dados unimodais e multimodais, como histogramas, gráficos de densidade e visualizações de correlação, são exploradas para obter informações sobre os dados. Um conjunto de dados de validação é criado e uma linha de base para o desempenho do modelo é estabelecida testando vários modelos, incluindo regressão linear, regressão logística, análise discriminante linear, árvores de regressão de classificação, máquinas de vetor de suporte (SVM), Bayes ingênuos e k vizinhos mais próximos ( KNN). A precisão de cada algoritmo é calculada usando validação cruzada de 10 vezes e comparada.

No segmento a seguir, o vídeo discute como avaliar diferentes algoritmos de aprendizado de máquina usando ajuste e dados padronizados. A padronização envolve a transformação dos dados, de modo que cada atributo tenha média 0 e desvio padrão 1, o que pode melhorar o desempenho de determinados modelos. Para evitar vazamento de dados durante o processo de transformação, recomenda-se um pipeline que padronize os dados e construa o modelo para cada dobra no chicote de teste de validação cruzada. O vídeo demonstra técnicas de ajuste para k vizinhos mais próximos (KNN) e máquinas de vetor de suporte (SVM) usando uma pesquisa de grade com validação cruzada de 10 vezes na cópia padronizada do conjunto de dados de treinamento. As configurações ótimas para KNN e SVM são identificadas e a precisão dos modelos é avaliada. Por fim, o vídeo discute brevemente KNN, regressão de árvore de decisão e SVM como modelos de aprendizado de máquina não linear.

  • 00:00:00 O instrutor do curso apresenta o conceito de modelagem preditiva e sua relevância para a indústria. Ao contrário da modelagem estatística, que tenta entender os dados, a modelagem preditiva se concentra no desenvolvimento de modelos que fazem previsões mais precisas, explicando por que as previsões são feitas. O curso se concentra em dados tabulares, como planilhas ou bancos de dados. O instrutor leva os alunos de desenvolvedores interessados em aprendizado de máquina em python a ter os recursos e capacidades para trabalhar com novos conjuntos de dados de ponta a ponta usando python e desenvolver modelos preditivos precisos. Os alunos aprendem como concluir todas as subtarefas de um problema de modelagem preditiva com python, integrar técnicas novas e diferentes em python e SCIPy, aprender python e obter ajuda com aprendizado de máquina. A palestra também abrange um curso intensivo em python, destacando os principais detalhes sobre a sintaxe da linguagem, incluindo atribuição, controle de fluxo, estruturas de dados e funções.

  • 00:05:00 O vídeo aborda a sintaxe básica do Python, incluindo variáveis e atribuições, e explica a diferença entre "igual" para atribuição e "igual duplo" para igualdade. O palestrante demonstra como usar o Jupyter Notebook para codificação Python e explica algumas dicas básicas de navegação, como criar um novo notebook, usar alias para bibliotecas, executar células e mover ou copiar células. O palestrante também explica o recurso de salvamento automático e como salvar o notebook manualmente. O vídeo termina com uma breve explicação de como interromper a execução do kernel.

  • 00:10:00 O instrutor explica como usar a barra de ferramentas para navegar pelo mecanismo Python e como anotar blocos de anotações com markdown. Em seguida, o vídeo aborda instruções de controle de fluxo, como condições if-then-else, loops for e loops while. Em seguida, o instrutor explica as três principais estruturas de dados necessárias para o aprendizado de máquina: tuplas, listas e dicionários. Por fim, o vídeo fornece um curso intensivo sobre NumPy, que inclui a criação de arrays, acesso a dados e uso de arrays em aritmética.

  • 00:15:00 O curso intensivo sobre Matplotlib e Pandas para aprendizado de máquina é discutido. Matplotlib é uma biblioteca que pode ser utilizada para criar plotagens e gráficos. Pandas fornecem estruturas de dados e funcionalidade para manipular e analisar dados com a ajuda de estruturas de dados de séries e quadros de dados. Eles são importantes para carregar arquivos csv, que é o formato mais comum usado para aplicativos de aprendizado de máquina. Além disso, funções flexíveis como o Pandas read_csv podem ajudar no carregamento de dados e no retorno de um quadro de dados do Pandas para resumir e traçar dados para obter insights e ideias iniciais para pré-processar e manipular dados em tarefas de aprendizado de máquina. Por fim, obter insights de dados por meio de estatísticas descritivas em python não pode ser substituído e pode ajudar a entender melhor as características e a natureza dos dados.

  • 00:20:00 O Pandas DataFrame facilita a criação de histogramas com a função hist(). Outra maneira de visualizar os dados é usando gráficos de densidade, que podem ser criados com a função plot(). Os gráficos de densidade mostram a função de densidade de probabilidade dos dados e podem fornecer informações sobre a forma da distribuição. Gráficos de caixa e bigode também são úteis para visualizar a distribuição de dados e identificar outliers. No geral, a visualização de dados é uma etapa fundamental para entender as características de um conjunto de dados e pode ajudar na seleção de algoritmos de aprendizado de máquina apropriados.

  • 00:25:00 O vídeo explica vários gráficos e diagramas que podem ser úteis para análise de dados antes de aplicar técnicas de aprendizado de máquina. Histogramas, gráficos de densidade e gráficos de caixa são usados para observar a distribuição de atributos, enquanto matrizes de correlação e matrizes de gráfico de dispersão são usadas para identificar a relação entre pares de atributos. O redimensionamento, padronização, normalização e binarização de dados também são discutidos como etapas de pré-processamento necessárias para preparar dados para algoritmos de aprendizado de máquina, e o vídeo explica o método de ajuste e transformação como uma abordagem comum para o pré-processamento de dados.

  • 00:30:00 O vídeo discute técnicas de pré-processamento de dados em aprendizado de máquina. Primeiro, as técnicas de normalização e padronização são explicadas. A normalização envolve o redimensionamento dos atributos para que tenham a mesma escala, e a padronização envolve a alteração dos atributos para que tenham uma média de zero e um desvio padrão de um. Binarização, ou limiarização de dados, é outra técnica discutida, que pode ser útil para adicionar novos atributos binários ou transformar probabilidades em valores nítidos. Em seguida, é explicada a importância da seleção de recursos, pois recursos irrelevantes ou parcialmente irrelevantes podem afetar negativamente o desempenho do modelo. A seleção univariada é uma abordagem estatística para seleção de recursos, usando as pontuações de testes estatísticos. A eliminação recursiva de recursos e os métodos de importância de recursos que usam conjuntos de árvores de decisão, como floresta aleatória ou árvores extras, também podem ser úteis para a seleção de recursos. Finalmente, a análise de componentes principais (PCA) é uma técnica de redução de dados que usa álgebra linear para transformar o conjunto de dados em uma forma comprimida com um número menor de dimensões.

  • 00:35:00 É explicada a importância dos métodos de reamostragem para avaliar o desempenho dos algoritmos de aprendizado de máquina em dados não vistos. É destacado que avaliar o algoritmo no mesmo conjunto de dados usado para treinamento pode levar ao overfitting, resultando em pontuação perfeita no conjunto de dados de treinamento, mas previsões ruins em novos dados. Técnicas como conjuntos de divisão de teste de treinamento, validação cruzada k-fold, validação cruzada de deixar um de fora e divisões repetidas de teste aleatório são apresentadas como maneiras de criar estimativas úteis de desempenho de algoritmo. A seção termina com uma discussão sobre várias métricas de desempenho do algoritmo de aprendizado de máquina, como precisão de classificação, perda logarítmica, área sob a curva, matriz de confusão e relatório de classificação.

  • 00:40:00 O vídeo aborda várias métricas de desempenho para avaliar as previsões feitas por um modelo de aprendizado de máquina. Estes incluem precisão de classificação, perda de log para avaliar probabilidades, área sob a curva ROC para problemas de classificação binária, a matriz de confusão para avaliar a precisão do modelo com duas ou mais classes e o relatório de classificação para avaliar a precisão, recall, pontuação F1 e suporte para cada classe. Além disso, o vídeo aborda três métricas comuns de regressão: erro absoluto médio, erro quadrático médio e R-quadrado, e demonstra exemplos de como calcular essas métricas usando Python.

  • 00:45:00 O palestrante explica o conceito de usar a verificação pontual para descobrir quais algoritmos de aprendizado de máquina funcionam bem para um determinado problema. Ele demonstra a verificação pontual de seis modelos diferentes de aprendizado de máquina, incluindo algoritmos lineares e não lineares, usando python com a biblioteca scikit-learn. Ele também enfatiza que os resultados podem variar devido à natureza estocástica do modelo. Por fim, o palestrante apresenta modelos de aprendizado de máquina de regressão e prepara os espectadores para a próxima seção sobre como verificar esses modelos.

  • 00:50:00 O palestrante apresenta modelos de aprendizado de máquina lineares e não lineares usando o conjunto de dados de preços imobiliários de Boston. Um equipamento de teste com validação cruzada de 10 vezes é usado para demonstrar como bloquear a verificação de cada modelo, e os números médios de erro ao quadrado são usados para indicar o desempenho, que são invertidos devido a uma peculiaridade na função de pontuação de arquivo cruzado. O modelo de regressão linear assume uma distribuição gaussiana para as variáveis de entrada e que elas são relevantes para a variável de saída e não altamente correlacionadas umas com as outras. A regressão Ridge, uma modificação da regressão linear, minimiza a complexidade do modelo medido pelo valor da soma quadrada dos valores dos coeficientes ou norma L2. O palestrante enfatiza a compreensão do pipeline ou do processo e não se preocupa em entender o código neste ponto.

  • 00:55:00 O vídeo discute o processo de compreensão e visualização das variáveis de entrada para um problema de aprendizado de máquina. O vídeo sugere o uso de gráficos univariados, como gráficos de caixa e bigodes e histogramas, para entender a distribuição das variáveis de entrada. Para plotagens multivariadas, as plotagens de dispersão podem ajudar a detectar relações estruturais entre as variáveis de entrada e identificar alta correlação entre certos pares de atributos. Em seguida, o vídeo discute o processo de avaliação de modelos por meio de uma estrutura de teste usando validação cruzada de 10 vezes, em que o conjunto de dados é dividido em 10 partes e treinado e testado em diferentes divisões. O vídeo destaca a importância de criar um conjunto de dados de validação para obter uma segunda ideia independente de quão preciso o melhor modelo pode ser. O vídeo avalia seis modelos diferentes de aprendizado de máquina e seleciona o mais preciso para fazer previsões, avaliando as previsões por meio do relatório de classificação, matriz de confusão e estimativa de precisão. A seção termina com uma discussão sobre regressão de regularização e construção de modelos Lasso e Elastic Net para minimizar a complexidade do modelo de regressão.

  • 01:00:00 Somos apresentados a um problema de classificação binária em aprendizado de máquina em que o objetivo é prever metal de rocha usando o conjunto de dados de minas versus rochas de sonar. O conjunto de dados contém 208 instâncias com 61 atributos, incluindo o atributo de classe. Depois de analisar os dados e observar as estatísticas descritivas, vemos que os dados estão no mesmo intervalo, mas meios diferentes indicam que a padronização dos dados pode ser benéfica. Também examinamos visualizações de dados unimodais e multimodais, incluindo histogramas, gráficos de densidade e visualizações de correlação entre atributos. Em seguida, preparamos um conjunto de dados de validação e criamos uma linha de base para desempenho de diferentes modelos, incluindo regressão linear, regressão logística, análise discriminante linear, árvores de regressão de classificação, SVMs, Naive Bayes e k vizinhos mais próximos. Comparamos a precisão de cada algoritmo calculado por meio de validação cruzada de 10 vezes.

  • 01:05:00 O vídeo discute como avaliar diferentes algoritmos de aprendizado de máquina usando dados padronizados e ajuste. A padronização transforma os dados para que cada atributo tenha uma média de 0 e um desvio padrão de 1, o que pode melhorar a habilidade de alguns modelos. Para evitar vazamento de dados durante o processo de transformação, recomenda-se um pipeline que padronize os dados e construa o modelo para cada dobra no chicote de teste de validação cruzada. O vídeo demonstra como ajustar k vizinhos mais próximos (KNN) e máquinas de vetor de suporte (SVM) usando uma pesquisa de grade com validação cruzada de 10 vezes na cópia padronizada do conjunto de dados de treinamento. As configurações ótimas para KNN e SVM são identificadas e a precisão dos modelos é avaliada. Por fim, o vídeo discute brevemente KNN, regressão de árvore de decisão e SVM como modelos de aprendizado de máquina não linear.
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

Estatística aplicada para engenheiros de aprendizado de máquina


Estatística aplicada para engenheiros de aprendizado de máquina

O instrutor do vídeo apresenta o campo da estatística e destaca sua importância no trabalho com problemas de modelagem preditiva no aprendizado de máquina. Eles explicam que a estatística oferece uma variedade de técnicas, desde simples estatísticas resumidas até testes de hipóteses e estatísticas de estimativa. O curso é projetado para fornecer uma base passo a passo em métodos estatísticos, com exemplos práticos em Python. Abrange seis aspectos principais de estatística para aprendizado de máquina e se concentra em aplicativos do mundo real, tornando-o adequado para engenheiros de aprendizado de máquina.

O instrutor enfatiza a estreita relação entre aprendizado de máquina e estatística e sugere que os programadores possam se beneficiar ao aprimorar suas habilidades estatísticas por meio deste curso. Eles classificam o campo da estatística em duas categorias: estatística descritiva e estatística inferencial. A estatística descritiva envolve resumir e descrever dados usando medidas como médias e representações gráficas. As estatísticas inferenciais, por outro lado, são usadas para fazer inferências sobre uma população maior com base em dados de amostra.

A importância do tratamento adequado dos dados também é destacada, incluindo o tratamento de perda, corrupção e erros de dados. O vídeo aprofunda as várias etapas envolvidas na preparação de dados para modelos de aprendizado de máquina. Isso inclui limpeza de dados, seleção de dados, amostragem de dados e transformação de dados usando métodos estatísticos, como padronização e normalização. A avaliação de dados também é enfatizada, e o vídeo discute o design experimental, dados de reamostragem e seleção de modelo para estimar a habilidade de um modelo. Para prever novos dados, o vídeo recomenda o uso de estatísticas de estimativa.

O vídeo explica as diferentes escalas de medição usadas em estatística, ou seja, escalas nominal, ordinal, de intervalo e de razão. Ele discute as técnicas estatísticas aplicáveis a cada escala e como elas podem ser implementadas no aprendizado de máquina. A importância de entender e relatar a incerteza na modelagem é enfatizada, especialmente ao trabalhar com conjuntos de amostras. O vídeo foca na distribuição normal, que é comumente observada em vários conjuntos de dados. Ele demonstra como gerar dados de amostra e avaliar visualmente seu ajuste a uma distribuição gaussiana usando um histograma. Embora a maioria dos conjuntos de dados não tenha uma distribuição gaussiana perfeita, eles geralmente exibem propriedades semelhantes às gaussianas.

A importância de selecionar uma forma granular de dividir os dados para expor a distribuição gaussiana subjacente é destacada. Medidas de tendência central, como média e mediana, são exploradas, juntamente com a variância e desvio padrão como medidas de distribuição da distribuição. A aleatoriedade é discutida como uma ferramenta essencial no aprendizado de máquina, ajudando os algoritmos a se tornarem mais robustos e precisos. Várias fontes de aleatoriedade, incluindo erros de dados e ruído, são explicadas.

O vídeo explica que os algoritmos de aprendizado de máquina geralmente aproveitam a aleatoriedade para obter melhor desempenho e gerar modelos mais otimizados. A aleatoriedade permite que os algoritmos explorem diferentes possibilidades e encontrem melhores mapeamentos de dados. Fontes controláveis e incontroláveis de aleatoriedade são discutidas e o uso da função de semente para tornar a aleatoriedade consistente dentro de um modelo é explicado. O vídeo fornece um exemplo usando o módulo aleatório do Python para gerar números aleatórios e destaca a diferença entre o gerador de números pseudoaleatórios da biblioteca numpy e o gerador de números pseudoaleatórios da biblioteca padrão. Dois casos para quando propagar o gerador de números aleatórios também são discutidos, ou seja, durante a preparação de dados e divisões de dados.

A divisão consistente dos dados e o uso de geradores de números pseudo-aleatórios ao avaliar um algoritmo são enfatizados. O vídeo recomenda avaliar o modelo de uma forma que incorpore a incerteza medida e o desempenho do algoritmo. Avaliar um algoritmo em várias divisões dos dados fornece informações sobre como seu desempenho varia com diferentes dados de treinamento e teste. Avaliar um algoritmo várias vezes nas mesmas divisões de dados ajuda a entender como seu desempenho varia por conta própria. O vídeo também apresenta a lei dos grandes números e o teorema do limite central, destacando que ter mais dados melhora o desempenho do modelo e que, à medida que o tamanho da amostra aumenta, a distribuição da média se aproxima de uma distribuição gaussiana.

O vídeo demonstra o teorema do limite central usando jogadas de dados e código, mostrando como as médias amostrais se aproximam de uma distribuição Gaussiana à medida que o tamanho da amostra aumenta.

O vídeo enfatiza a importância de avaliar modelos de aprendizado de máquina e entender a incerteza envolvida em suas previsões. Ele apresenta métricas de avaliação, como exatidão, precisão, recuperação e pontuação F1, que são comumente usadas para avaliar o desempenho de modelos de classificação. O vídeo explica que a precisão mede a correção geral das previsões, a precisão mede a proporção de previsões positivas verdadeiras de todas as previsões positivas, a revocação mede a proporção de previsões positivas verdadeiras de todas as instâncias positivas reais e a pontuação F1 combina precisão e revocação em uma única métrica. Ele também discute o conceito de uma matriz de confusão, que fornece uma visão mais detalhada do desempenho de um modelo de classificação, mostrando o número de previsões de verdadeiro positivo, verdadeiro negativo, falso positivo e falso negativo.

O palestrante demonstra como calcular essas métricas de avaliação usando a biblioteca scikit-learn do Python. Ele mostra como importar os módulos necessários, dividir os dados em conjuntos de treinamento e teste, treinar um modelo de classificação, fazer previsões no conjunto de teste e avaliar o desempenho do modelo usando exatidão, precisão, recuperação e pontuação F1. O vídeo destaca a importância de avaliar modelos em dados não vistos para garantir suas capacidades de generalização.

Além disso, o vídeo apresenta o conceito de curvas de características de operação do receptor (ROC) e área sob a curva (AUC) como métricas de avaliação para modelos de classificação binária. As curvas ROC plotam a taxa de verdadeiros positivos em relação à taxa de falsos positivos em vários limites de classificação, fornecendo uma representação visual do desempenho do modelo em diferentes valores de limite. A AUC representa a área sob a curva ROC e fornece uma única métrica para comparar o desempenho de diferentes modelos. O vídeo explica como plotar uma curva ROC e calcular a AUC usando a biblioteca scikit-learn do Python.

O conceito de superajuste é discutido como um problema comum no aprendizado de máquina, em que um modelo funciona bem nos dados de treinamento, mas não consegue generalizar para dados novos e não vistos. O vídeo explica que o overfitting ocorre quando um modelo se torna muito complexo e aprende padrões específicos para os dados de treinamento que não se aplicam à população em geral. O vídeo demonstra como o overfitting pode ser visualizado comparando o desempenho de treinamento e teste de um modelo. Isso explica que um modelo de overfit terá baixo erro de treinamento, mas alto erro de teste, indicando generalização ruim. O vídeo sugere técnicas de regularização, como regressão de ridge e regressão de laço, como formas de mitigar o overfitting adicionando um termo de penalidade à função objetivo do modelo.

O conceito de validação cruzada é introduzido como uma técnica para avaliar o desempenho e a generalização de modelos de aprendizado de máquina. O vídeo explica que a validação cruzada envolve dividir os dados em vários subconjuntos, treinar o modelo em uma parte dos dados e avaliar seu desempenho na parte restante. Esse processo é repetido várias vezes, com diferentes subconjuntos usados para treinamento e teste, e os resultados são calculados para fornecer uma estimativa do desempenho do modelo. O vídeo demonstra como executar a validação cruzada usando a biblioteca scikit-learn do Python, especificamente o método de validação cruzada K-fold.

A seguir, o vídeo discute o conceito de seleção de recursos e a importância no aprendizado de máquina. Ele explica que a seleção de recursos envolve a identificação dos recursos ou variáveis mais relevantes que contribuem para o desempenho do modelo. O vídeo destaca a importância de selecionar recursos informativos para melhorar a precisão do modelo, reduzir o overfitting e aprimorar a interpretabilidade. Ele apresenta diferentes técnicas de seleção de recursos, como seleção univariada, eliminação recursiva de recursos e pontuações de importância de recursos. O vídeo demonstra como implementar a seleção de recursos usando a biblioteca scikit-learn do Python.

O conceito de redução de dimensionalidade também é discutido como uma técnica para abordar a maldição da dimensionalidade no aprendizado de máquina. O vídeo explica que a redução de dimensionalidade envolve a redução do número de recursos ou variáveis em um conjunto de dados, preservando a maior parte das informações relevantes. Ele apresenta a análise de componentes principais (PCA) como uma técnica de redução de dimensionalidade comumente usada. O PCA visa transformar os dados em um espaço de menor dimensão, identificando as direções de variação máxima nos dados. O vídeo explica que o PCA cria novos recursos, chamados de componentes principais, que são combinações lineares dos recursos originais. Esses componentes principais capturam as informações mais importantes nos dados e podem ser usados como entrada para modelos de aprendizado de máquina.

O vídeo demonstra como executar o PCA usando a biblioteca scikit-learn do Python. Ele mostra como importar os módulos necessários, padronizar os dados, inicializar um objeto PCA, ajustar o modelo PCA aos dados e transformar os dados no espaço de dimensão inferior. O vídeo também explica como determinar o número ideal de componentes principais a serem retidos com base na razão de variância explicada.

O conceito de ensemble learning é introduzido como uma técnica para melhorar o desempenho de modelos de aprendizado de máquina combinando vários modelos individuais. O vídeo explica que o aprendizado conjunto aproveita a sabedoria das multidões, onde cada modelo individual contribui com suas próprias previsões, e a previsão final é determinada com base em um mecanismo de votação ou média. O vídeo discute dois métodos populares de aprendizagem em conjunto: bagging e boosting. Bagging envolve o treinamento de vários modelos em diferentes subconjuntos de dados e a agregação de suas previsões, enquanto o reforço se concentra nos modelos de treinamento sequencial, com cada modelo dando mais importância às instâncias que foram classificadas incorretamente pelos modelos anteriores.

O vídeo demonstra como implementar o aprendizado de conjunto usando a biblioteca scikit-learn do Python. Ele mostra como importar os módulos necessários para bagging e boosting, inicializar os modelos de conjunto, ajustá-los aos dados e fazer previsões usando os modelos de conjunto. O vídeo enfatiza que o aprendizado conjunto geralmente pode melhorar o desempenho geral e a robustez dos modelos de aprendizado de máquina.

Por fim, o vídeo aborda brevemente tópicos avançados em aprendizado de máquina, como aprendizado profundo e processamento de linguagem natural (NLP). Ele menciona que o aprendizado profundo envolve o treinamento de redes neurais profundas com várias camadas para aprender padrões complexos em dados. A NLP se concentra no desenvolvimento de modelos e técnicas para compreender e processar a linguagem humana, permitindo aplicações como classificação de texto, análise de sentimento e tradução automática. O vídeo conclui destacando que o aprendizado de máquina é um campo vasto e em rápida evolução, com inúmeras aplicações e oportunidades para exploração e aprendizado adicionais.

O vídeo fornece uma visão geral abrangente de conceitos e técnicas essenciais em aprendizado de máquina, incluindo avaliação de modelo, overfitting, regularização, validação cruzada, seleção de recursos, redução de dimensionalidade, aprendizado conjunto e uma introdução ao aprendizado profundo e PNL. Ele demonstra implementações práticas usando Python e a biblioteca scikit-learn, tornando-o um recurso valioso para iniciantes e para aqueles que procuram aprimorar sua compreensão do aprendizado de máquina.

  • 00:00:00 O instrutor apresenta o campo da estatística e sua importância no trabalho com problemas de modelagem preditiva com aprendizado de máquina. Ele explica a variedade de técnicas estatísticas disponíveis, desde estatísticas de resumo simples até testes de hipóteses e estatísticas de estimativa. O curso foi desenvolvido para fornecer uma base passo a passo para métodos estatísticos com exemplos executáveis em Python, abrangendo seis aspectos principais de estatística para aprendizado de máquina. O instrutor também enfatiza que o curso é focado em aplicativos e fornece exemplos de uso do mundo real, tornando-o adequado para engenheiros de aprendizado de máquina.

  • 00:05:00 Ressalta-se que o aprendizado de máquina está intimamente relacionado à estatística, e o curso se apresenta como uma boa opção para programadores que desejam aprimorar suas habilidades estatísticas. O campo da estatística é classificado em 2 categorias, sendo a primeira estatística descritiva e a segunda categoria estatística inferencial. A estatística descritiva é usada para descrever dados usando medidas como médias e representações gráficas, enquanto a estatística inferencial é usada para fazer inferências de dados para uma população maior. Por fim, é enfatizada a importância do tratamento de dados, incluindo perda de dados, corrupção e erros.

  • 00:10:00 O vídeo discute as várias etapas envolvidas na preparação de dados para modelos de aprendizado de máquina. Isso inclui limpeza de dados, seleção de dados, amostragem de dados e transformação de dados usando métodos estatísticos, como padronização e normalização. A avaliação de dados também é importante, e o design experimental, incluindo dados de reamostragem e seleção de modelo, deve ser realizado para estimar a habilidade de um modelo. Para prever novos dados, o vídeo recomenda a abordagem estatística de estimativa. Além disso, o vídeo explica diferentes escalas de medição usadas em estatística e as características da distribuição normal.

  • 00:15:00 O palestrante explica as diferentes escalas de medição: nominal, ordinal, intervalo e razão. Eles discutem as estatísticas aplicáveis a cada escala e como elas podem ser implementadas no aprendizado de máquina. Dado que quase sempre trabalhamos com conjuntos de amostra, o autor enfatiza que precisamos entender e relatar a incerteza envolvida na modelagem. A discussão então se move para uma amostra de distribuição normal que é muito comum em vários conjuntos de dados. Por fim, eles demonstram como podemos gerar dados de amostra e aplicá-los a um histograma para ver se ele se ajusta à distribuição gaussiana. O autor explica que, embora a maioria dos conjuntos de dados não tenha uma distribuição gaussiana perfeita, eles terão propriedades semelhantes a gaussianas.

  • 00:20:00 É destacada a importância de selecionar uma maneira mais granular de dividir os dados para melhor expor a distribuição gaussiana subjacente, e são exploradas medidas de tendência central, como média e mediana, com a variância e o desvio padrão também discutidos como um medida da propagação da distribuição. A aleatoriedade é uma ferramenta essencial no aprendizado de máquina e é usada para ajudar os algoritmos a serem mais robustos e precisos. Várias fontes de aleatoriedade, como erros nos dados e ruídos que podem obscurecer as relações, são explicadas.

  • 00:25:00 É explicado que os algoritmos de aprendizado de máquina geralmente usam a aleatoriedade para obter um mapeamento de dados com melhor desempenho. A aleatoriedade permite que os algoritmos gerem um modelo mais ideal. Esta seção discute fontes de aleatoriedade, tanto controláveis quanto incontroláveis, e como o uso da função de semente pode tornar a aleatoriedade em um modelo consistente. Um exemplo é dado usando o módulo aleatório do Python para gerar números aleatórios e a biblioteca numpy para trabalhar eficientemente com vetores e matrizes de números. O gerador de números pseudoaleatórios numpy é diferente do gerador de números pseudoaleatórios da biblioteca padrão python e deve ser usado separadamente. Por fim, são discutidos dois casos de quando propagar o gerador de números aleatórios, incluindo preparação de dados e divisões de dados.

  • 00:30:00 Discute-se a importância de dividir consistentemente os dados e o uso de geradores de números pseudo-aleatórios ao avaliar um algoritmo. Recomenda-se avaliar o modelo de forma que o desempenho relatado inclua a incerteza medida e o desempenho do algoritmo. Avaliar um algoritmo em várias divisões dos dados fornecerá informações sobre como o desempenho do algoritmo varia com as alterações nos dados de treinamento e teste, enquanto avaliar um algoritmo várias vezes nas mesmas divisões de dados ajudará a fornecer informações sobre como o desempenho do algoritmo varia sozinho . A lei dos grandes números e o teorema do limite central também são discutidos, destacando que quanto mais dados tivermos, melhor será para o desempenho do nosso modelo e que, à medida que o tamanho da amostra aumenta, a distribuição da média se aproxima de uma distribuição Gaussiana .

  • 00:35:00 O teorema do limite central é demonstrado usando jogadas de dados e código. A demonstração mostra que, à medida que o tamanho da amostra aumenta, as médias amostrais se aproximam de uma distribuição gaussiana. A interpretação dos dados é crucial nas estatísticas para descobrir o significado. Testes de hipóteses estatísticas ou testes de significância são usados no aprendizado de máquina para fazer afirmações sobre distribuições de dados ou para comparar duas amostras. A hipótese 0 ou hipótese nula é a suposição padrão de que nada mudou e um teste de hipótese estatística pode retornar um valor-p ou um valor crítico. O valor p é uma quantidade usada para interpretar o resultado de um teste de hipótese e rejeitar ou não rejeitar a hipótese nula, enquanto o valor crítico é usado para comparar a estatística de teste com sua distribuição de amostragem para determinar se há evidências suficientes para rejeitar a hipótese nula.

  • 00:40:00 Esclarece-se o conceito de rejeição da hipótese nula, com a hipótese nula afirmando que não há diferença estatisticamente significativa. Se o resultado de um teste estatístico rejeitar a hipótese nula, significa que algo é estatisticamente significativo. A distribuição Gaussiana, que descreve o agrupamento ou densidade de observações e é muitas vezes chamada de distribuição normal, também é discutida. A distribuição é uma função matemática que descreve a relação das observações com um espaço amostral. Funções de densidade, incluindo funções de densidade de probabilidade e funções de densidade cumulativa, são usadas para descrever a probabilidade de observações em uma distribuição. Finalmente, é enfatizada a importância de verificar se uma amostra de dados é aleatória e são dadas as características de amostras normalmente distribuídas.

  • 00:45:00 O palestrante discutiu a distribuição normal (Gaussiana), suas propriedades, incluindo a função de distribuição de probabilidade (pdf) e a função de distribuição cumulativa (cdf), e a regra 68, 95 e 99,7 associada aos desvios padrão. O palestrante também apresentou a distribuição t, que é semelhante à distribuição normal, mas é usada para amostras pequenas. Posteriormente, o artigo introduziu a distribuição qui-quadrada, seu uso para a qualidade do ajuste e sua relação com a distribuição t. Por fim, o palestrante demonstrou o uso do módulo stats chi 2 no Scipy para calcular estatísticas para uma distribuição qui-quadrada.

  • 00:50:00 O conceito de valores críticos em testes de hipóteses estatísticas é explicado. Um valor crítico é um limite usado para determinar se uma hipótese nula é aceita ou rejeitada. Ele assume uma distribuição normal ou gaussiana e possui uma região de aceitação e uma região de rejeição. A linha que separa essas regiões é o valor crítico. Os testes unilaterais determinam se a média é maior ou menor que outra média, mas não ambas, enquanto os testes bicaudais determinam se as duas médias são diferentes uma da outra. O valor crítico permite a quantificação da incerteza de estatísticas ou intervalos estimados, como intervalos de confiança e tolerância.

  • 00:55:00 Discute-se o uso de testes bicaudais, que levam em consideração os efeitos positivos e negativos de um produto. O exemplo dado é o de um medicamento genérico contra um produto de marca, onde um teste bicaudal pode determinar se o produto genérico é equivalente ou pior do que o produto de marca. O uso de funções de ponto percentual, ou funções quantílicas, também é explicado e demonstrado com exemplos usando três distribuições comumente usadas: a distribuição gaussiana padrão, a distribuição t de Student padrão e a distribuição qui-quadrada padrão. Por fim, discute-se o conceito de correlação e sua importância na determinação da relação entre duas variáveis, bem como a questão potencial da multicolinearidade e como ela pode afetar o desempenho do algoritmo.

  • 01:00:00 O vídeo demonstra uma demonstração rápida para mostrar uma forte correlação positiva entre duas variáveis usando um conjunto de dados artificial com cada variável extraída de uma distribuição gaussiana e correlacionada linearmente. A demonstração calcula e imprime a matriz de covariância, mostrando uma covariância positiva entre as duas variáveis sugerindo que elas mudam na mesma direção. No entanto, um problema com a covariância como uma ferramenta estatística sozinha é que é difícil de interpretar, levando ao coeficiente de correlação de Pearson. O vídeo explica como o coeficiente de correlação r de Pearson pode resumir a força da relação linear entre duas amostras de dados calculando a covariância das duas variáveis dividida pelo produto do desvio padrão de cada amostra e que o coeficiente de correlação pode ser usado para avaliar a relação entre mais de duas variáveis.

  • 01:05:00 O vídeo discute o uso de testes de significância estatística paramétrica, que assumem que os dados foram extraídos de uma distribuição Gaussiana com a mesma média e desvio padrão. Um conjunto de dados de teste é definido e usado para demonstrar o teste t de Student para amostras independentes e pareadas, bem como o teste de análise de variância. O vídeo mostra como esses testes podem ser implementados em Python usando as funções Scipy apropriadas. Os exemplos ilustram como esses testes podem ser usados para determinar se diferentes amostras de dados têm a mesma distribuição.

  • 01:10:00 O conceito de tamanho do efeito em estatística é discutido como uma forma de quantificar a magnitude das diferenças entre grupos ou associações entre variáveis, o que pode complementar os resultados obtidos em testes de hipóteses estatísticas. Os métodos de tamanho de efeito são divididos em associação e diferença, podendo ser padronizados, com unidade original ou sem unidade, dependendo do objetivo da interpretação e da medida estatística utilizada. O coeficiente de correlação de Pearson é uma medida padronizada comumente usada para determinar associações lineares, que não tem unidades e pode ser calculada usando a função pearsonr() do Python. O poder estatístico, que é influenciado pelo tamanho do efeito, tamanho da amostra, significância e nível de poder, também é explicado como um fator crucial no projeto experimental e pode ser estimado por meio da análise de poder para determinar o tamanho mínimo de amostra necessário para um experimento.

  • 01:15:00 O vídeo discute a importância da amostragem e reamostragem de dados na modelagem preditiva, explicando que a amostragem envolve a seleção de um subconjunto de uma população, enquanto a reamostragem envolve a estimativa de parâmetros populacionais várias vezes a partir de uma amostra de dados para melhorar a precisão e quantificar a incerteza. O vídeo descreve métodos comuns de amostragem, categorizados como amostragem probabilística ou não probabilística, e destaca três tipos de amostragem que os engenheiros de aprendizado de máquina provavelmente encontrarão: amostragem aleatória simples, amostragem sistêmica e amostragem estratificada. Além disso, o vídeo alerta para os possíveis erros que podem ser introduzidos no processo de amostragem e enfatiza a necessidade de inferência estatística e cuidado ao tirar conclusões sobre uma população. O vídeo continua explicando os métodos de amostragem comumente usados em aprendizado de máquina, ou seja, validação cruzada k-fold e bootstrap, sendo este último computacionalmente caro, embora forneça estimativas robustas da população.

  • 01:20:00 O método bootstrap é discutido como uma ferramenta para estimar quantidades sobre uma população calculando a média de estimativas de várias pequenas amostras de dados. As amostras são construídas extraindo observações de grandes conjuntos de dados, uma de cada vez, e retornando-as à amostra original após serem selecionadas. Essa abordagem é chamada de amostragem com reposição. A função resample, fornecida na biblioteca SciPy, pode ser usada para criar uma única amostra bootstrap e, embora não inclua nenhum mecanismo para coletar facilmente observações fora do saco que possam ser usadas para avaliar modelos de ajuste, fora do saco as observações de bag ainda podem ser coletadas usando a compreensão de lista do Python. Além disso, o processo de validação cruzada k-fold é explicado, pois é um procedimento de reamostragem usado para avaliar modelos de aprendizado de máquina em dados limitados. A classe de aprendizado do ciclo K-fold pode ser usada para este procedimento, e quatro variações comumente usadas de validação cruzada k-fold são mencionadas.

  • 01:25:00 O palestrante discute duas abordagens para reamostragem em aprendizado de máquina: validação cruzada k-fold e divisão de teste de trem. Embora a validação cruzada k-fold seja o padrão-ouro, a divisão de teste de trem pode ser mais fácil de entender e implementar. O palestrante demonstra como usar a abordagem de divisão de teste de trem em Python e também menciona o uso de estatísticas de estimativa, que visam quantificar o tamanho e a incerteza de uma descoberta e estão se tornando mais populares na literatura de pesquisa. As três classes principais de estatísticas de estimativa incluem tamanho do efeito, estimativa de intervalo e meta-análise. A mudança para estatísticas de estimativa está ocorrendo porque elas são mais fáceis de analisar e interpretar no contexto das questões de pesquisa.

  • 01:30:00 São discutidos os diferentes métodos para medir o tamanho do efeito e a estimativa de intervalo. O tamanho do efeito pode ser medido por associação, que é o grau em que as amostras mudam juntas, ou diferença, que é o grau em que as amostras diferem. Enquanto isso, a estimativa de intervalo permite quantificar a incerteza nas observações e pode ser feita por meio de intervalos de tolerância, intervalos de confiança ou intervalos de previsão. Os intervalos de tolerância especificam os limites superior e inferior dentro dos quais cai uma certa porcentagem da saída do processo, enquanto os intervalos de confiança fornecem limites para as estimativas de um parâmetro populacional. Finalmente, é feita uma demonstração de como calcular intervalos de tolerância para uma amostra de observações extraídas de uma distribuição gaussiana.

  • 01:35:00 Discute-se o conceito de intervalo de confiança, que é a estatística de intervalo usada para quantificar a incerteza em uma estimativa. O intervalo de confiança fornece limites em um parâmetro populacional, como média, desvio padrão ou similar. O valor de um intervalo de confiança é a capacidade de quantificar a incerteza de uma estimativa. Um intervalo de confiança menor é igual a uma estimativa mais precisa, enquanto um intervalo de confiança maior é uma estimativa menos precisa. Além disso, é discutido o conceito de precisão ou erro de classificação, que é uma proporção ou razão usada para descrever a proporção de previsões corretas ou incorretas feitas pelo modelo. O erro de classificação ou precisão pode ser usado para calcular facilmente o intervalo de confiança assumindo uma distribuição gaussiana da proporção.

  • 01:40:00 O conceito de intervalo de confiança é explicado, desde o cálculo de um intervalo de confiança para o erro de classificação de um modelo até o uso da reamostragem bootstrap como um método não paramétrico para estimar intervalos de confiança. O método de reamostragem bootstrap envolve a coleta de amostras com substituição de um conjunto de dados finito fixo para estimar os parâmetros da população. Adicionalmente, o conceito de intervalos de predição é introduzido como uma estimativa do intervalo no qual as observações futuras cairão com um determinado nível de confiança, o que é útil para fazer predições ou previsões com modelos de regressão.

  • 01:45:00 O conceito de intervalos de previsão é explicado como uma estimativa do intervalo em que uma observação futura cairá com um certo nível de confiança, dados os dados observados anteriormente. Ele se diferencia de um intervalo de confiança, que quantifica a incerteza relacionada a uma variável de amostra da população. Intervalos de previsão são normalmente usados em modelos de previsão ou previsão. O artigo apresenta um exemplo simples de regressão linear em um conjunto de dados de duas variáveis, no qual a relação entre as variáveis é visível a partir de um gráfico de dispersão. O modelo de regressão linear é então usado para fazer uma única previsão, com um intervalo de previsão de 95% de certeza e comparado com o valor esperado conhecido. A diferença entre intervalos de previsão e intervalos de confiança é enfatizada, bem como o fato de que os intervalos de previsão são geralmente mais amplos do que os intervalos de confiança devido à contabilização da incerteza associada ao erro.
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

Álgebra linear aplicada para engenheiros de aprendizado de máquina



Álgebra linear aplicada para engenheiros de aprendizado de máquina

O vídeo enfatiza a importância de aprender álgebra linear para engenheiros de aprendizado de máquina, pois serve como um bloco de construção fundamental para a compreensão de cálculo e estatística, que são essenciais no aprendizado de máquina. Ter uma compreensão mais profunda da álgebra linear fornece aos profissionais uma melhor intuição de como os métodos de aprendizado de máquina funcionam, permitindo que personalizem algoritmos e desenvolvam novos.

O curso adota uma abordagem de cima para baixo para ensinar os fundamentos da álgebra linear, usando exemplos concretos e estruturas de dados para demonstrar operações em matrizes e vetores. A álgebra linear é descrita como a matemática de matrizes e vetores, fornecendo uma linguagem para manipulação de dados e permitindo a criação de novas colunas ou matrizes de números por meio de operações nessas estruturas de dados. Inicialmente desenvolvida no final de 1800 para resolver sistemas de equações lineares, a álgebra linear tornou-se um pré-requisito fundamental para entender o aprendizado de máquina.

O palestrante apresenta o conceito de álgebra linear numérica, que envolve a aplicação da álgebra linear em computadores. Isso inclui implementar operações de álgebra linear e abordar os desafios que surgem ao trabalhar com precisão limitada de ponto flutuante em computadores digitais. A álgebra linear numérica desempenha um papel crucial no aprendizado de máquina, particularmente em algoritmos de aprendizado profundo que dependem fortemente de unidades de processamento gráfico (GPUs) para realizar cálculos de álgebra linear com eficiência. Várias bibliotecas de álgebra linear numérica de código aberto, com bibliotecas baseadas em Fortran como base, são comumente usadas para calcular operações de álgebra linear, geralmente em conjunto com linguagens de programação como Python.

A importância da álgebra linear nas estatísticas é destacada, particularmente na análise estatística multivariada, análise de componentes principais e resolução de problemas de regressão linear. O vídeo também menciona a ampla gama de aplicações da álgebra linear em campos como processamento de sinais, computação gráfica e até física, com exemplos como a teoria da relatividade de Albert Einstein utilizando tensores e cálculo de tensores, um tipo de álgebra linear.

O vídeo explora ainda mais a aplicação prática da álgebra linear em tarefas de aprendizado de máquina. Ele apresenta o conceito de usar operações de álgebra linear, como corte, dimensionamento e cisalhamento, para manipular imagens, demonstrando como a notação e as operações de álgebra linear podem ser empregadas nesse contexto. Além disso, o vídeo explica a popular técnica de codificação chamada codificação one-hot para variáveis categóricas. A principal estrutura de dados usada no aprendizado de máquina, matrizes N-dimensionais ou matrizes ND, é apresentada, com a biblioteca NumPy em Python discutida como uma ferramenta poderosa para criar e manipular essas matrizes. O vídeo aborda funções importantes, como v-stack e empilhamento horizontal, que permitem a criação de novos arrays a partir de arrays existentes.

A manipulação e o acesso a dados em arrays NumPy, comumente usados para representar dados de aprendizado de máquina, são explicados. O vídeo demonstra como converter listas unidimensionais em arrays usando a função array e criar arrays de dados bidimensionais usando listas de listas. Ele também abrange operações de indexação e divisão em matrizes NumPy, incluindo o uso do operador de dois-pontos para divisão e indexação negativa. A importância do fatiamento na especificação de variáveis de entrada e saída no aprendizado de máquina é destacada.

Técnicas para trabalhar com conjuntos de dados multidimensionais em aprendizado de máquina são discutidas no vídeo. Ele começa com fatias unidimensionais e progride para fatias bidimensionais, juntamente com a separação de dados em valores de entrada e saída para treinamento e teste. A reformulação da matriz é abordada, explicando como remodelar matrizes unidimensionais em matrizes bidimensionais com uma coluna e transformar dados bidimensionais em matrizes tridimensionais para algoritmos que requerem várias amostras de uma ou mais etapas de tempo e recursos. É introduzido o conceito de array broadcasting, que permite que arrays com tamanhos diferentes sejam usados em operações aritméticas, permitindo que conjuntos de dados com tamanhos variados sejam processados de forma eficaz.

O vídeo também aborda as limitações da aritmética de array no NumPy, especificamente que as operações aritméticas só podem ser executadas em arrays com as mesmas dimensões e dimensões com o mesmo tamanho. No entanto, essa limitação é superada pelo recurso de transmissão integrado do NumPy, que replica a matriz menor ao longo da última dimensão incompatível, permitindo a aritmética entre matrizes com diferentes formas e tamanhos. O vídeo fornece três exemplos de transmissão, incluindo matrizes escalares e unidimensionais, escalar em uma matriz bidimensional e matriz unidimensional em uma matriz bidimensional. Note-se que a transmissão segue uma regra rígida, afirmando que a aritmética só pode ser realizada quando a forma de cada dimensão nas matrizes é igual ou uma delas tem um tamanho de dimensão de um.

Seguindo em frente, o palestrante introduz o conceito de vetores, que são tuplas de um ou mais valores chamados escalares. Os vetores geralmente são representados usando caracteres minúsculos como "v" e podem ser vistos como pontos ou coordenadas em um espaço n-dimensional, onde "n" representa o número de dimensões. A criação de vetores como matrizes NumPy em Python é explicada. O vídeo também abrange operações aritméticas vetoriais, como adição e subtração de vetores, que são executadas elemento a elemento para vetores de igual comprimento, resultando em um novo vetor de mesmo comprimento. Além disso, o palestrante explica como os vetores podem ser multiplicados por escalares para dimensionar sua magnitude e demonstra como realizar essas operações usando matrizes NumPy em Python. O produto escalar de dois vetores também é discutido, o que produz um escalar e pode ser usado para calcular a soma ponderada de um vetor.

O foco então muda para as normas vetoriais e sua importância no aprendizado de máquina. As normas vetoriais referem-se ao tamanho ou comprimento de um vetor e são calculadas usando uma medida que resume a distância do vetor desde a origem do espaço vetorial. É enfatizado que as normas vetoriais são sempre positivas, exceto para um vetor de todos os valores zero. O vídeo apresenta quatro cálculos de normas vetoriais comuns usados no aprendizado de máquina. Começa com a norma do vetor L1, seguida pela norma L2 (norma euclidiana) e a norma max. A seção também define matrizes e explica como manipulá-las em Python. Aritmética de matrizes, incluindo multiplicação matriz-matriz (produto escalar), multiplicação matriz-vetor e multiplicação escalar, é discutida. Uma matriz é descrita como uma matriz bidimensional de escalares com uma ou mais colunas e uma ou mais linhas, normalmente representada por letras maiúsculas como "A".

Em seguida, é introduzido o conceito de operações matriciais para aprendizado de máquina. Isso inclui multiplicação de matrizes, divisão de matrizes e multiplicação escalar de matrizes. A multiplicação de matrizes, também conhecida como produto escalar de matrizes, exige que o número de colunas da primeira matriz seja igual ao número de linhas da segunda matriz. O vídeo menciona que a função de ponto no NumPy pode ser usada para implementar esta operação. O conceito de matriz transposta também é explicado, onde uma nova matriz é criada invertendo o número de linhas e colunas da matriz original. Por fim, discute-se o processo de inversão de matrizes, que envolve encontrar outra matriz que, ao ser multiplicada pela matriz original, resulte em uma matriz identidade.

Continuando com a discussão sobre inversão de matrizes, o vídeo explora ainda mais esse conceito. A inversão de uma matriz é indicada por um sobrescrito 1 negativo ao lado da matriz. O vídeo explica que a inversão de matrizes envolve encontrar métodos numéricos eficientes. É introduzida a operação de rastreamento de uma matriz quadrada, que calcula a soma dos elementos diagonais e pode ser calculada usando a função de rastreamento no NumPy. O determinante de uma matriz quadrada é definido como uma representação escalar do volume da matriz e também pode ser calculado usando a função det em NumPy. A classificação de uma matriz é brevemente mencionada, que estima o número de linhas ou colunas linearmente independentes na matriz e é comumente calculada usando a decomposição de valor singular. Por fim, o conceito de matrizes esparsas é explicado, destacando que elas contêm predominantemente valores zero e podem ser computacionalmente caras para representar e trabalhar.

O vídeo então se aprofunda em matrizes esparsas, que são matrizes compostas principalmente de valores zero e diferem de matrizes densas que geralmente possuem valores diferentes de zero. A dispersão é quantificada pelo cálculo da pontuação de dispersão, que é o número de valores zero dividido pelo número total de elementos na matriz. O vídeo enfatiza dois problemas principais associados à dispersão: complexidade de espaço e complexidade de tempo. Nota-se que representar e trabalhar com matrizes esparsas pode ser computacionalmente caro.

Para enfrentar esses desafios, o vídeo menciona que o Scipy fornece ferramentas para criar e manipular matrizes esparsas. Além disso, destaca que muitas funções de álgebra linear em NumPy e Scipy podem operar em matrizes esparsas, permitindo cálculos e operações eficientes em dados esparsos.

Matrizes esparsas são comumente usadas em aprendizado de máquina aplicado para observações de dados e preparação de dados. Sua dispersão permite armazenamento e processamento mais eficientes de grandes conjuntos de dados com um número significativo de valores zero. Aproveitando a estrutura esparsa, os algoritmos de aprendizado de máquina podem se beneficiar do uso reduzido de memória e cálculos mais rápidos.

Seguindo em frente, o vídeo discute diferentes tipos de matrizes comumente usadas em álgebra linear, particularmente aquelas relevantes para aprendizado de máquina. São introduzidas matrizes quadradas, onde o número de linhas é igual ao número de colunas. Matrizes retangulares, que possuem diferentes números de linhas e colunas, também são mencionadas. O vídeo explica a diagonal principal de uma matriz quadrada, que consiste em elementos com os mesmos índices de linha e coluna. A ordem de uma matriz quadrada, definida como o número de linhas ou colunas, também é abordada.

Além disso, o vídeo apresenta matrizes simétricas, que são matrizes quadradas iguais à sua transposta. Matrizes triangulares, incluindo matrizes triangulares superiores e inferiores, são explicadas. Matrizes diagonais, onde todos os elementos não diagonais são zero, também são discutidas. Matrizes de identidade, que são matrizes quadradas com uns na diagonal principal e zeros em outros lugares, são explicadas no contexto de seu papel como identidades multiplicativas. Matrizes ortogonais, formadas quando dois vetores têm produto escalar igual a zero, também são introduzidas.

O vídeo prossegue discutindo matrizes e tensores ortogonais. Uma matriz ortogonal é um tipo específico de matriz quadrada onde as colunas e linhas são vetores unitários ortogonais. Essas matrizes são computacionalmente eficientes e estáveis para calcular seu inverso, tornando-as úteis em várias aplicações, incluindo modelos de aprendizado profundo. O vídeo menciona ainda que, no TensorFlow, os tensores são uma estrutura de dados fundamental e uma generalização de vetores e matrizes. Os tensores são representados como matrizes multidimensionais e podem ser manipulados em Python usando matrizes n-dimensionais, semelhantes às matrizes. O vídeo destaca que as operações de tensores elementares, como adição e subtração, podem ser executadas em tensores, matrizes e vetores, fornecendo uma intuição para dimensões superiores.

Em seguida, o vídeo apresenta a decomposição de matrizes, que é um método para dividir uma matriz em suas partes constituintes. A decomposição de matrizes simplifica operações complexas de matrizes e permite cálculos eficientes. Duas técnicas de decomposição de matriz amplamente utilizadas são abordadas: decomposição LU (inferior-superior) para matrizes quadradas e decomposição QR (fatorização QR) para matrizes retangulares.

A decomposição LU pode simplificar equações lineares no contexto de problemas de regressão linear e facilitar cálculos como determinante e inverso de uma matriz. A decomposição QR tem aplicações na resolução de sistemas de equações lineares. Ambos os métodos de decomposição podem ser implementados usando funções integradas no pacote NumPy em Python, fornecendo soluções eficientes e confiáveis para vários problemas de álgebra linear.

Além disso, o vídeo discute a decomposição de Cholesky, que é usada especificamente para matrizes simétricas e definidas positivas. A decomposição de Cholesky é representada por uma matriz triangular inferior e é considerada quase duas vezes mais eficiente que a decomposição LU para decompor matrizes simétricas.

O vídeo menciona brevemente que os métodos de decomposição de matrizes, incluindo a decomposição de Eigen, são empregados para simplificar operações complexas. A decomposição Eigen decompõe uma matriz em seus autovetores e autovalores. Autovetores são coeficientes que representam direções, enquanto autovalores são escalares. Tanto os autovetores quanto os autovalores têm aplicações práticas, como redução de dimensionalidade e realização de operações matriciais complexas.

Por fim, o vídeo aborda o conceito de decomposição de valor singular (SVD) e suas aplicações no aprendizado de máquina. O SVD é usado em várias operações de matriz e métodos de redução de dados no aprendizado de máquina. Ele desempenha um papel crucial em cálculos como regressão linear de mínimos quadrados, compactação de imagem e dados de redução de ruído.

O vídeo explica que SVD permite que uma matriz seja decomposta em três matrizes separadas: U, Σ e V. A matriz U contém os vetores singulares esquerdos, Σ é uma matriz diagonal contendo os valores singulares e V contém os vetores singulares direitos. Ao reconstruir a matriz original a partir desses componentes, pode-se obter uma aproximação dos dados originais, reduzindo sua dimensionalidade.

Uma das principais aplicações do SVD é a redução de dimensionalidade. Ao selecionar um subconjunto dos valores singulares mais significativos e seus vetores singulares correspondentes, é possível representar os dados em um espaço de dimensão inferior sem perder informações cruciais. Essa técnica é particularmente útil nos casos em que os dados possuem alta dimensionalidade, pois permite armazenamento e computação mais eficientes.

O vídeo destaca que o SVD foi aplicado com sucesso no processamento de linguagem natural usando uma técnica chamada análise semântica latente (LSA) ou indexação semântica latente (LSI). Ao representar documentos de texto como matrizes e executar SVD, o LSA pode capturar a estrutura semântica subjacente dos documentos, permitindo tarefas como similaridade de documentos e modelagem de tópicos.

Além disso, o vídeo apresenta a classe SVD truncada, que implementa diretamente a capacidade de reduzir a dimensionalidade de uma matriz. Com o SVD truncado, torna-se possível transformar a matriz original em uma representação de menor dimensão, preservando as informações mais importantes. Essa técnica é particularmente benéfica ao lidar com grandes conjuntos de dados, pois permite processamento e análise mais eficientes.

Em resumo, o vídeo abordou vários tópicos relacionados à álgebra linear para aprendizado de máquina. Enfatizou a importância de aprender álgebra linear como um bloco de construção fundamental para a compreensão do cálculo e da estatística no contexto do aprendizado de máquina. O vídeo discutiu as aplicações da álgebra linear no aprendizado de máquina, como personalização e desenvolvimento de algoritmos, álgebra linear numérica, análise estatística e vários outros campos, como processamento de sinais e computação gráfica.

Além disso, o vídeo explorou os principais conceitos da álgebra linear, incluindo vetores, matrizes, operações com matrizes, normas vetoriais, técnicas de decomposição de matrizes e matrizes esparsas. Ele explicou como esses conceitos são usados no aprendizado de máquina e forneceu informações sobre suas aplicações práticas.

Ao entender a álgebra linear, os profissionais de aprendizado de máquina podem obter uma intuição mais profunda dos fundamentos matemáticos subjacentes dos algoritmos de aprendizado de máquina e aplicá-los efetivamente a problemas do mundo real. A álgebra linear serve como uma ferramenta poderosa para manipulação de dados, redução de dimensionalidade e otimização, permitindo soluções de aprendizado de máquina eficientes e eficazes.

  • 00:00:00 A importância de aprender álgebra linear para engenheiros de aprendizado de máquina é destacada, pois é considerada um bloco de construção para a compreensão de cálculo e estatística necessários no aprendizado de máquina. Uma compreensão mais profunda da álgebra linear fornece aos praticantes de aprendizado de máquina uma melhor intuição de como os métodos funcionam, permitindo que personalizem algoritmos e criem novos. Os fundamentos da álgebra linear são ensinados em uma abordagem de cima para baixo neste curso, usando exemplos concretos e estruturas de dados para demonstrar operações em matrizes e vetores. A álgebra linear é a matemática de matrizes e vetores, fornecendo uma linguagem para dados e permitindo a criação de novas colunas ou matrizes de números usando operações nessas estruturas de dados. A álgebra linear foi desenvolvida no final de 1800 para resolver sistemas desconhecidos de equações lineares e agora é um pré-requisito fundamental para entender o aprendizado de máquina.

  • 00:05:00 O palestrante discute álgebra linear numérica, que é a aplicação da álgebra linear em computadores. Isso inclui a implementação de operações de álgebra linear, bem como o tratamento de possíveis problemas que surgem ao trabalhar com precisão limitada de ponto flutuante em computadores digitais. A álgebra linear numérica é uma ferramenta essencial no aprendizado de máquina, pois muitos algoritmos de aprendizado profundo dependem da capacidade das unidades de processamento gráfico de calcular operações de álgebra linear rapidamente. Várias bibliotecas populares de álgebra linear numérica de código aberto são usadas para calcular operações de álgebra linear, com bibliotecas de álgebra linear baseadas em Fortran fornecendo a base para a maioria das implementações modernas usando linguagens de programação como Python. A álgebra linear também é essencial em estatística, especialmente em análise estatística multivariada, análise de componentes principais e resolução de problemas de regressão linear. Além disso, o palestrante discute as várias aplicações da álgebra linear em campos como processamento de sinais, computação gráfica e até física, com a teoria da relatividade de Albert Einstein usando tensores e cálculo de tensores, um tipo de álgebra linear.

  • 00:10:00 É introduzido o conceito de usar operações de álgebra linear em imagens como corte, dimensionamento e cisalhamento usando notação e operações de álgebra linear. Além disso, é explicada a técnica de codificação popular para variáveis categóricas chamada de codificação única. Além disso, é discutida a principal estrutura de dados usada em aprendizado de máquina, arrays N-dimensionais ou arrays ND, e como criá-los e manipulá-los usando a biblioteca NumPy em Python. Por fim, são explicadas duas das funções mais populares para criar novos arrays a partir de arrays existentes, v-stack e empilhamento horizontal.

  • 00:15:00 O palestrante discute como manipular e acessar dados em arrays numpy, que normalmente são usados para representar dados de aprendizado de máquina. A lista unidimensional pode ser convertida em uma matriz usando a função de matriz, e uma matriz de dados bidimensional pode ser criada usando uma lista de listas. Acessar dados por meio de indexação é semelhante a outras linguagens de programação, mas os arrays numpy também podem ser divididos usando o operador dois-pontos. A indexação negativa também é possível e o fatiamento pode ser usado para especificar variáveis de entrada e saída no aprendizado de máquina.

  • 00:20:00 O vídeo aborda técnicas para trabalhar com conjuntos de dados multidimensionais comuns em aprendizado de máquina. Ele começa com fatias unidimensionais e passa para fatias bidimensionais e separa os dados em valores de entrada e saída para treinamento e teste. O vídeo cobre a reformulação de matrizes, incluindo a remodelação de matrizes unidimensionais em matrizes bidimensionais com uma coluna e a remodelação de dados bidimensionais em uma matriz tridimensional para algoritmos que esperam várias amostras de uma ou mais etapas de tempo e um ou mais recursos . Por fim, o vídeo aborda a transmissão de array, que permite adicionar, subtrair ou usar arrays com tamanhos diferentes ou em aritmética, o que é útil para conjuntos de dados com tamanhos variados.

  • 00:25:00 São discutidas as limitações da aritmética de matriz em numpy, que incluem apenas realizar aritmética em matrizes com as mesmas dimensões e dimensões com o mesmo tamanho. No entanto, essa limitação é superada pelo recurso de transmissão integrado do numpy, que replica a matriz menor ao longo da última dimensão incompatível. Este método permite aritmética entre matrizes com diferentes formas e tamanhos. Três exemplos de transmissão são dados, incluindo matrizes escalares e unidimensionais, escalar em uma matriz bidimensional e matriz unidimensional em uma matriz bidimensional. As limitações da transmissão também são observadas, incluindo a regra estrita que deve ser satisfeita para que a transmissão seja realizada, afirmando que a aritmética só pode ser realizada a partir da forma de cada dimensão nas matrizes são iguais ou uma tem o tamanho da dimensão de um.

  • 00:30:00 O palestrante introduz o conceito de vetores, que são tuplas de um ou mais valores chamados escalares e são frequentemente representados por um caractere minúsculo como "v". Os vetores podem ser considerados como pontos ou coordenadas em um espaço n-dimensional onde n é o número de dimensões e podem ser criados como um array numpy em Python. O palestrante também discute operações aritméticas vetoriais, como adição e subtração de vetores, que são feitas elemento a elemento para vetores de igual comprimento, resultando em um novo vetor de mesmo comprimento. Além disso, o palestrante explica que vetores podem ser multiplicados por um escalar para dimensionar sua magnitude e como realizar essas operações usando arrays numpy em Python. Por fim, o palestrante fala sobre o produto escalar de dois vetores, que dá um escalar, e como ele pode ser usado para calcular a soma ponderada de um vetor.

  • 00:35:00 O foco está nas normas de vetores e sua importância no aprendizado de máquina. As normas vetoriais referem-se ao tamanho ou comprimento de um vetor, calculado usando alguma medida que resume a distância do vetor desde a origem do espaço vetorial. A norma é sempre um número positivo, exceto para um vetor de todos os valores zero. Quatro cálculos comuns de normas de vetores usados no aprendizado de máquina são introduzidos, começando com a norma do vetor L1, que é seguida pelas normas L2 e max. A seção também define matrizes e como manipulá-las em Python, discutindo aritmética de matrizes, multiplicação matriz-matriz (produto escalar), multiplicação matriz-vetor e multiplicação escalar. Uma matriz é uma matriz bidimensional de escalares com uma ou mais colunas e uma ou mais linhas, e geralmente é representada por uma letra maiúscula, como A.

  • 00:40:00 O conceito de operações de matriz para aprendizado de máquina é introduzido, incluindo multiplicação de matriz, divisão de matriz e multiplicação escalar de matriz. A multiplicação de matrizes, também conhecida como produto escalar de matrizes, exige que o número de colunas da primeira matriz seja igual ao número de linhas da segunda matriz. A função de ponto em numpy pode ser usada para implementar esta operação. O conceito de transposição de matriz também é introduzido, onde uma nova matriz é criada invertendo o número de linhas e colunas da matriz original. Por fim, é discutido o processo de inversão de matrizes, que encontra outra matriz que se multiplicará com a matriz resultando em uma matriz identidade.

  • 00:45:00 O conceito de inversão de matriz é abordado, onde a inversão de uma matriz é indicada por um 1 negativo sobrescrito ao lado da matriz. A operação de inversão de matriz envolve encontrar um conjunto de métodos numéricos eficientes. A operação de rastreamento de uma matriz quadrada também é discutida, que pode ser calculada usando a função de rastreamento em numpy. O determinante de uma matriz quadrada é definido como uma representação escalar do volume de uma matriz e também pode ser calculado usando a função det em numpy. Além disso, é introduzido o posto de uma matriz, que estima o número de linhas ou colunas linearmente independentes na matriz e geralmente é calculado usando a decomposição de valor singular. Por fim, é explicado o conceito de matrizes esparsas, que são matrizes contendo principalmente valores zero e são computacionalmente caras para representar e trabalhar.

  • 00:50:00 Aprendemos sobre matrizes esparsas, que são matrizes compostas principalmente por valores zero e são diferentes de matrizes densas que possuem valores principalmente diferentes de zero. A dispersão pode ser quantificada calculando a pontuação, que é o número de valores zero dividido pelo número total de elementos na matriz. Também aprendemos sobre os dois grandes problemas da esparsidade: complexidade de espaço e complexidade de tempo. O Scipy fornece ferramentas para criar matrizes esparsas e muitas funções numpy e scipy de álgebra linear podem operar nelas. Matrizes esparsas são comumente usadas em aprendizado de máquina aplicado para observações de dados e preparação de dados.

  • 00:55:00 São discutidos os diferentes tipos de matrizes comumente usados em álgebra linear, particularmente relevantes para aprendizado de máquina. São introduzidas matrizes quadradas, onde o número de linhas é igual ao número de colunas, junto com matrizes retangulares. A diagonal principal e a ordem de uma matriz quadrada também são abordadas. Além disso, são explicadas matrizes simétricas, matrizes triangulares (incluindo superior e inferior), matrizes diagonais, matrizes de identidade e matrizes ortogonais. Note-se que uma matriz ortogonal é formada quando dois vetores têm produto escalar igual a zero.

  • 01:00:00 Aprendemos sobre matrizes ortogonais e tensores. Uma matriz ortogonal é um tipo de matriz quadrada cujas colunas e linhas são vetores unitários ortogonais. Essas matrizes são computacionalmente baratas e estáveis para calcular seu inverso e podem ser usadas em modelos de aprendizado profundo. No Tensorflow, os tensores são uma estrutura de dados fundamental e uma generalização de vetores e matrizes, representados como matrizes multidimensionais. Os tensores podem ser manipulados em Python usando matrizes n-dimensionais, semelhantes a matrizes, com operações de tensor elemento a elemento, como adição e subtração. Além disso, as operações de produto tensorial podem ser realizadas em tensores, matrizes e vetores, permitindo uma intuição de dimensões superiores.

  • 01:05:00 O vídeo apresenta a decomposição de matrizes, um método para reduzir uma matriz em suas partes constituintes e simplificar operações de matrizes mais complexas que podem ser executadas na matriz de decomposição. Duas técnicas amplamente usadas de decomposição de matrizes que serão abordadas nas próximas lições são a decomposição de matrizes LU para matrizes quadradas e a decomposição de matrizes QR para matrizes retangulares. A decomposição LU pode ser usada para simplificar equações lineares no problema de regressão linear e calcular o determinante e o inverso de uma matriz, enquanto a decomposição QR tem aplicações na resolução de sistemas de equações lineares. Ambas as decomposições podem ser implementadas usando funções integradas no pacote NumPy em Python.

  • 01:10:00 O vídeo discute a decomposição de Cholesky, que é usada para matrizes simétricas e definidas positivas. Este método é quase duas vezes mais eficiente que a decomposição LU e é preferido para a decomposição de matrizes simétricas. A decomposição de Cholesky é representada por uma matriz triangular inferior, que pode ser acessada facilmente através da função Cholosky no NumPy. O vídeo também menciona que os métodos de decomposição de matrizes, incluindo Eigendecomposition, são usados para simplificar operações complexas, e a Eigen decomposition decompõe uma matriz em autovetores e autovalores. Por fim, o vídeo observa que os autovetores são vetores unitários, enquanto os autovalores são escalares, e ambos são úteis para reduzir a dimensionalidade e realizar operações matriciais complexas.

  • 01:15:00 O conceito de autodecomposição e seu cálculo usando um algoritmo iterativo eficiente é discutido. A autodecomposição é um método de decompor uma matriz quadrada em seus autovalores e autovetores, que são coeficientes e direções, respectivamente. A autodecomposição pode ser calculada em NumPy usando a função eig, e testes podem ser realizados para confirmar que um vetor é de fato um autovetor de uma matriz. A matriz original também pode ser reconstruída a partir dos autovalores e autovetores. A seção também apresenta brevemente a decomposição de valor singular (SVD) como um método de decomposição de matriz para reduzir a matriz em suas partes constituintes para tornar alguns cálculos de matriz subsequentes mais simples e suas aplicações em vários campos, como compactação, redução de ruído e redução de dados.

  • 01:20:00 O conceito de decomposição de valor singular (SVD) e suas aplicações em aprendizado de máquina são discutidos. O SVD é usado no cálculo de outras operações de matrizes e métodos de redução de dados em aprendizado de máquina, como regressão linear de mínimos quadrados, compactação de imagem e dados de redução de ruído. A matriz original pode ser reconstruída a partir dos elementos u, sigma e v retornados do SVD. Uma aplicação popular de SVD é para redução de dimensionalidade, onde os dados podem ser reduzidos a um subconjunto menor de recursos que são os mais relevantes para o problema de previsão. Isso foi aplicado com sucesso no processamento de linguagem natural usando uma técnica chamada análise semântica latente ou indexação semântica latente. A classe SVD truncada que implementa diretamente esse recurso é discutida e sua aplicação é demonstrada usando uma matriz definida seguida por uma versão transformada.
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

Uma introdução completa ao XGBoost para engenheiros de aprendizado de máquina


Uma introdução completa ao XGBoost para engenheiros de aprendizado de máquina

No vídeo, o instrutor fornece uma introdução abrangente ao XGBoost para engenheiros de aprendizado de máquina. Eles explicam que o XGBoost é uma biblioteca de aprendizado de máquina de código aberto conhecida por sua capacidade de criar rapidamente modelos de classificação e regressão altamente precisos. Ele ganhou popularidade como a melhor escolha para a construção de modelos do mundo real, principalmente ao lidar com conjuntos de dados altamente estruturados. O XGBoost foi criado por Taiki Chen e é baseado na técnica de árvores de decisão de aumento de gradiente, que permite a construção de modelos rápida e eficiente.

O instrutor destaca que o XGBoost oferece suporte a várias interfaces, incluindo implementações Python e scikit-learn. Eles fazem uma demonstração do XGBoost, mostrando vários módulos para carregar dados e construir modelos.

O vídeo se concentra na preparação do conjunto de dados para treinar um modelo XGBoost. O instrutor enfatiza a importância de separar os dados em conjuntos de treinamento e teste. Eles identificam a variável de destino como um problema de classificação binária e explicam o processo de configuração dos hiperparâmetros necessários para o modelo XGBoost. Depois que o modelo é treinado nos dados de treinamento, eles avaliam sua precisão nos dados de teste usando a pontuação de precisão como métrica.

Para fornecer uma melhor compreensão do XGBoost, o instrutor investiga o conceito de aumento de gradiente e seu papel na categoria mais ampla de modelos tradicionais de aprendizado de máquina. Eles explicam que o aumento de gradiente é uma técnica que combina um modelo fraco com outros modelos do mesmo tipo para criar um modelo mais preciso. Neste processo, cada árvore sucessiva é construída para os resíduos de previsão da árvore anterior. O instrutor enfatiza que as árvores de decisão são usadas no aumento de gradiente, pois fornecem uma representação gráfica de possíveis soluções de decisão com base em determinadas condições. Eles também mencionam que projetar uma árvore de decisão requer um processo de pensamento bem documentado para identificar soluções potenciais de forma eficaz.

O vídeo explora ainda mais a criação de árvores de decisão binárias usando divisão binária recursiva. Esse processo envolve a avaliação de todas as variáveis de entrada e pontos de divisão de maneira gananciosa para minimizar uma função de custo que mede a proximidade dos valores previstos com os valores reais. O instrutor explica que a divisão com o menor custo é escolhida e os grupos resultantes podem ser subdivididos recursivamente. Ressaltam que o algoritmo utilizado é ganancioso, pois foca em tomar a melhor decisão a cada passo. No entanto, é preferível ter árvores de decisão com menos divisões para garantir melhor compreensão e reduzir o risco de sobreajuste dos dados. O instrutor destaca que o XGBoost fornece mecanismos para evitar overfitting, como limitar a profundidade máxima de cada árvore e podar ramos irrelevantes. Além disso, eles abordam a codificação de rótulos e demonstram o carregamento do conjunto de dados da íris usando o scikit-learn.

Seguindo em frente, o vídeo cobre o processo de codificação do rótulo de destino como uma variável numérica usando o método do codificador de rótulo. Depois de dividir os dados em conjuntos de dados de treinamento e teste, o instrutor define e treina o classificador XGBoost nos dados de treinamento. Eles então usam o modelo treinado para fazer previsões no conjunto de dados de teste, alcançando uma precisão de 90%. O conceito de aprendizado conjunto é apresentado como um método para combinar vários modelos para melhorar a precisão da previsão, aumentando a eficiência do algoritmo de aprendizado. O instrutor enfatiza a importância de selecionar o modelo certo para problemas de classificação ou regressão para alcançar os melhores resultados.

O vídeo mergulha no conceito de viés e variação em modelos de aprendizado de máquina e enfatiza a necessidade de um equilíbrio entre os dois. O aprendizado conjunto é apresentado como uma técnica para abordar esse equilíbrio, combinando grupos de alunos fracos para criar modelos mais complexos. Duas técnicas de ensemble, bagging e boosting, são introduzidas. Bagging visa reduzir a variância criando subconjuntos de dados para treinar árvores de decisão e criar um conjunto de modelos com alta variância e baixo viés. O boosting, por outro lado, envolve o aprendizado sequencial de modelos com árvores de decisão, permitindo a correção de erros cometidos por modelos anteriores. O instrutor destaca que o aumento de gradiente é um tipo específico de aumento que otimiza uma função de perda diferenciável usando aprendizes fracos na forma de árvores de regressão.

O vídeo explica o conceito de aumento de gradiente em detalhes, descrevendo seu processo de três etapas. A primeira etapa envolve a adição iterativa de aprendizes fracos (por exemplo, árvores de decisão) para minimizar perdas. A segunda etapa é a adição sequencial de árvores e a etapa final se concentra na redução do erro do modelo por meio de novas iterações. Para demonstrar o processo, o vídeo mostra o uso da validação cruzada k-fold para segmentar os dados. Por meio do XGBoost, são obtidas pontuações para cada dobra. O instrutor escolhe as árvores de decisão como os alunos fracos, garantindo uma profundidade rasa para evitar o overfitting. Por fim, uma função de perda é definida como uma medida de quão bem o modelo de aprendizado de máquina se ajusta aos dados.

As principais etapas do aumento de gradiente são explicadas, o que inclui otimizar a função de perda, utilizar alunos fracos (geralmente árvores de decisão) e combinar vários alunos fracos de maneira aditiva por meio do aprendizado conjunto. O vídeo também aborda aspectos práticos do uso do XGBoost, como manipulação de valores ausentes, salvamento de modelos em disco e emprego de parada antecipada. Demonstrações usando código Python são fornecidas para ilustrar vários casos de uso do XGBoost. Além disso, o vídeo enfatiza a importância da limpeza de dados, incluindo técnicas para lidar com valores ausentes, como imputação de valor médio.

O palestrante discute a importância de limpar os dados adequadamente, em vez de depender apenas de algoritmos para fazer o trabalho. Eles demonstram como descartar valores vazios pode melhorar a precisão do modelo e alertar contra algoritmos que lidam com valores vazios. O conceito de pickling, que envolve salvar modelos treinados em disco para uso posterior, é introduzido usando a biblioteca pickle em Python. O palestrante demonstra como salvar e carregar modelos. Eles também mostram como traçar a importância de cada atributo em um conjunto de dados usando a função de importância do gráfico no XGBoost e a biblioteca matplotlib.

O palestrante discute a importância de analisar e testar diferentes cenários ao criar modelos de aprendizado de máquina, enfatizando que as pontuações de importância de recursos do XGBoost nem sempre refletem o impacto real de um recurso na precisão do modelo. Eles usam o exemplo do conjunto de dados do Titanic para demonstrar como adicionar o atributo "sexo" melhora a precisão do modelo, apesar de ser classificado como baixo nas pontuações de importância do recurso. O palestrante enfatiza a importância de testar vários cenários e não confiar apenas nas pontuações de importância dos recursos. Eles também mencionam que o XGBoost pode avaliar e relatar o desempenho de um conjunto de teste durante o treinamento.

O vídeo explica como monitorar o desempenho de um modelo XGBoost durante o treinamento, especificando uma métrica de avaliação e transmitindo uma matriz de pares x e y. O desempenho do modelo em cada conjunto de avaliação é armazenado e disponibilizado após o treinamento. O vídeo aborda as curvas de aprendizado, que fornecem informações sobre o comportamento do modelo e ajudam a evitar o overfitting ao interromper o aprendizado antecipadamente. A parada antecipada é introduzida como uma técnica para interromper o treinamento após um número fixo de épocas se nenhuma melhora for observada na pontuação de validação.

O vídeo aborda o uso de rodadas de parada antecipada no XGBoost e demonstra a construção de um modelo de regressão para avaliar os preços das casas em Boston. Os benefícios do paralelismo no aumento de gradiente são discutidos, com foco na construção de árvores individuais e na preparação eficiente de dados de entrada. O vídeo fornece uma demonstração do suporte multithreading, que utiliza todos os núcleos do sistema para executar cálculos simultaneamente, resultando em uma execução mais rápida do programa. Embora o XGBoost seja voltado principalmente para problemas de classificação, o vídeo também destaca sua capacidade de se destacar na construção de modelos de regressão.

O locutor cria uma lista para conter o número de iterações de um exemplo e usa um loop for para testar a velocidade de execução do modelo com base no número de threads. Eles imprimem a velocidade da construção para cada iteração e plotam os resultados, mostrando como a velocidade do modelo diminui à medida que o número de threads aumenta. O palestrante discute o ajuste de hiperparâmetros, que envolve o ajuste de parâmetros em um modelo para melhorar seu desempenho. Eles exploram os parâmetros padrão para XGBoost e scikit-learn e mencionam que o ajuste de hiperparâmetros é essencial para otimizar o desempenho de um modelo XGBoost. O vídeo explica que os hiperparâmetros são configurações que não são aprendidas com os dados, mas são definidas manualmente pelo usuário. O ajuste de hiperparâmetros envolve a busca sistemática pela melhor combinação de valores de parâmetros que resultem no mais alto desempenho do modelo.

Para realizar o ajuste de hiperparâmetros, o vídeo apresenta duas abordagens comuns: pesquisa em grade e pesquisa aleatória. A pesquisa em grade envolve a definição de uma grade de valores de hiperparâmetros e a avaliação exaustiva de cada combinação. A pesquisa aleatória, por outro lado, amostra aleatoriamente combinações de hiperparâmetros de um espaço de pesquisa predefinido. O vídeo recomenda o uso de pesquisa aleatória quando o espaço de pesquisa é grande ou o número de hiperparâmetros é alto.

O vídeo demonstra o ajuste de hiperparâmetros usando a classe RandomizedSearchCV do scikit-learn. Eles definem uma grade de parâmetros contendo diferentes valores para hiperparâmetros, como taxa de aprendizado, profundidade máxima e taxa de subamostra. A classe RandomizedSearchCV realiza busca aleatória com validação cruzada, avaliando o desempenho de cada combinação de parâmetros. Após o ajuste, os melhores hiperparâmetros são selecionados e o modelo é treinado com esses valores ótimos.

O palestrante explica que o ajuste de hiperparâmetros ajuda a encontrar a melhor compensação entre underfitting e overfitting. É importante encontrar um equilíbrio e evitar o overfitting selecionando cuidadosamente os hiperparâmetros com base no conjunto de dados específico e no problema em questão.

Além do ajuste de hiperparâmetros, o vídeo discute a importância dos recursos nos modelos XGBoost. A importância do recurso fornece informações sobre quais recursos têm o impacto mais significativo nas previsões do modelo. O palestrante explica que a importância da feature é determinada pelo ganho médio, que mede a melhora na função perda trazida por uma feature quando ela é utilizada em uma árvore de decisão. Maior ganho médio indica maior importância.

O vídeo demonstra como extrair e visualizar a importância do recurso usando a biblioteca XGBoost. Eles traçam um gráfico de barras mostrando os principais recursos e suas pontuações de importância correspondentes. O palestrante observa que a importância do recurso pode ajudar na seleção de recursos, redução de dimensionalidade e obtenção de insights sobre o problema subjacente.

No final do vídeo, o palestrante menciona brevemente outros tópicos avançados relacionados ao XGBoost. Eles abordam o tratamento de conjuntos de dados desequilibrados ajustando o hiperparâmetro scale_pos_weight, lidando com valores ausentes usando o recurso integrado do XGBoost e manipulando variáveis categóricas por meio de codificação one-hot ou usando o suporte integrado para recursos categóricos no XGBoost.

O vídeo fornece uma visão geral abrangente do XGBoost, abrangendo seus principais conceitos, implementação, ajuste de hiperparâmetros e análise de importância de recursos. As demonstrações e exemplos de código ajudam a ilustrar os aspectos práticos de trabalhar com XGBoost em Python. Ele serve como um recurso valioso para engenheiros de aprendizado de máquina que procuram utilizar o XGBoost para suas tarefas de classificação e regressão.

  • 00:00:00 O instrutor fornece uma introdução ao XGBoost para engenheiros de aprendizado de máquina. O XGBoost é uma biblioteca de aprendizado de máquina de código aberto usada para criar rapidamente modelos de classificação e regressão altamente precisos, tornando-a a melhor escolha para criar modelos do mundo real em conjuntos de dados altamente estruturados. O autor do XGBoost é Taiki Chen, e é uma implementação de árvores de decisão de aumento de gradiente para velocidade e desempenho. O instrutor também destaca que o XGBoost oferece suporte a várias interfaces, como implementações Python e scikit-learn, e fornece uma demonstração do XGBoost usando vários módulos para carregar dados e construir modelos.

  • 00:05:00 O instrutor explica como preparar o conjunto de dados para treinar um modelo XGBoost, com foco na separação dos dados em conjuntos de treinamento e teste. A variável de destino é identificada como um problema de classificação binária e os hiperparâmetros necessários são definidos para o modelo XGBoost. O modelo é treinado nos dados de treinamento e a precisão do modelo é avaliada nos dados de teste usando a pontuação de precisão como métrica. O instrutor também fornece uma visão geral do aumento de gradiente, o conceito por trás do XGBoost e como ele se encaixa na categoria mais ampla de modelos tradicionais de aprendizado de máquina.

  • 00:10:00 Aprendemos sobre divisão binária recursiva e aprendizado de conjunto, que combina vários modelos fracos para melhorar a precisão das previsões. O aumento de gradiente é uma técnica para construir modelos preditivos combinando um modelo fraco com outros modelos do mesmo tipo para produzir um modelo mais preciso. Cada árvore sucessiva é construída para os resíduos de previsão da árvore anterior. As árvores de decisão são usadas no aumento de gradiente e envolvem uma representação gráfica de todas as soluções possíveis para uma decisão com base em certas condições. O design de uma árvore de decisão requer um processo de pensamento bem documentado que ajuda a formalizar o processo de brainstorming para que possamos identificar mais soluções potenciais.

  • 00:15:00 O vídeo explica como as árvores de decisão binárias são criadas. O processo é chamado de divisão binária recursiva e envolve a avaliação de todas as variáveis de entrada e pontos de divisão de maneira gulosa para minimizar uma função de custo que mede o quão próximos os valores previstos estão de seus valores reais correspondentes. A divisão com o menor custo é escolhida e os grupos resultantes podem ser subdivididos recursivamente. O algoritmo é ganancioso e se concentra em tomar a melhor decisão a cada passo. Árvores de decisão com menos divisões são preferidas, pois são mais fáceis de entender e menos propensas a superajustar os dados. Para evitar o overfitting, o algoritmo XGBoost permite um mecanismo para interromper o crescimento das árvores, como limitar a profundidade máxima de cada árvore e podar ramificações irrelevantes. O vídeo também aborda a codificação de rótulos e o carregamento do conjunto de dados da íris usando o scikit-learn.

  • 00:20:00 O vídeo aborda o processo de codificação de um rótulo de destino como uma variável numérica, usando o método do codificador de rótulo. Uma vez que os dados foram divididos em conjuntos de dados de treinamento e teste, o classificador XGBoost é definido e treinado nos dados de treinamento. O modelo é então usado para fazer previsões no conjunto de dados de teste com 90% de precisão alcançada. O aprendizado conjunto é então introduzido como um método para combinar vários modelos para melhorar a precisão das previsões, permitindo um algoritmo de aprendizado mais eficiente. O vídeo enfatiza a importância de escolher o modelo certo para problemas de classificação ou regressão ao tentar obter os melhores resultados.

  • 00:25:00 O conceito de viés e variância em modelos de aprendizado de máquina é discutido e a necessidade de um equilíbrio entre os dois é enfatizada. O aprendizado conjunto é apresentado como uma técnica usada para abordar esse equilíbrio, combinando grupos de alunos fracos para criar modelos mais complexos. Bagging e boosting são duas técnicas de conjunto, com bagging usado para reduzir a variância criando vários subconjuntos de dados para treinar árvores de decisão e criar um conjunto de modelos com alta variância e baixo viés. O boosting envolve o aprendizado de modelos sequencialmente com árvores de decisão, permitindo a correção de erros de modelos anteriores, e é alcançado com o trabalho em equipe entre os aprendizes fracos para classificar a entrada corretamente. O aumento de gradiente é um tipo específico de aumento que envolve a otimização de uma função de perda diferenciável e o uso de aprendizes fracos na forma de árvores de regressão.

  • 00:30:00 O conceito de aumento de gradiente foi apresentado e seu processo de três etapas foi explicado. A primeira etapa envolve a adição de aprendizes fracos, como árvores de decisão, em um processo iterativo para minimizar perdas. A segunda etapa é a adição sequencial de árvores, enquanto a etapa final visa reduzir o erro do modelo por meio de mais iterações. A demonstração envolveu o uso de validação cruzada k-fold para segmentar dados e, por meio do XGBoost, foram obtidas pontuações para cada dobra. A árvore de decisão foi usada como o aprendiz fraco de escolha, com uma profundidade rasa para evitar overfitting. Por fim, uma função de perda foi definida como uma medida de quão bem o modelo de aprendizado de máquina se ajusta aos dados de um determinado fenômeno.

  • 00:35:00 As principais etapas do aumento de gradiente são explicadas, que incluem otimizar a função de perda, usar um aluno fraco (geralmente uma árvore de decisão) e combinar muitos alunos fracos de maneira aditiva por meio do aprendizado conjunto. A seção também abrange vários aspectos práticos do uso do XGBoost, como manipulação de valores omissos, salvamento de modelos em disco e uso de parada antecipada. Uma abordagem baseada em código é adotada nesta seção, com inúmeras demonstrações fornecidas para mostrar vários usos do XGBoost. Além disso, a seção explora a importância da limpeza de dados, incluindo como substituir valores ausentes por imputação de valor médio.

  • 00:40:00 O palestrante discute a importância de limpar seus próprios dados e não depender de algoritmos para fazer o trabalho por você. Eles demonstram como descartar valores vazios pode melhorar a precisão do modelo e alertar contra permitir que algoritmos manipulem valores vazios. O palestrante também apresenta o conceito de pickling, que é uma forma de salvar modelos treinados em disco para uso posterior, e demonstra como usar a biblioteca pickle para salvar e carregar modelos em Python. Por fim, eles mostram como traçar a importância de cada atributo em um conjunto de dados usando a função de importância do gráfico em XGBoost e matplotlib.

  • 00:45:00 O palestrante discute as pontuações de importância do recurso determinadas pelo XGBoost e a importância de analisar e testar diferentes cenários ao criar modelos de aprendizado de máquina. Eles usam o exemplo do conjunto de dados do Titanic e mostram como adicionar o atributo "sexo" melhora a precisão do modelo, apesar de ter uma classificação baixa em pontuações de importância de recursos. O palestrante enfatiza a importância de testar vários cenários e não depender apenas de pontuações de importância de recursos. Eles também mencionam a capacidade do XGBoost de avaliar e relatar o desempenho de um conjunto de teste durante o treinamento.

  • 00:50:00 O vídeo discute como monitorar o desempenho do modelo XGBoost durante o treinamento, especificando uma métrica de avaliação e transmitindo uma matriz de pares x e y. O desempenho do modelo em cada conjunto de avaliação é armazenado e disponibilizado após o treinamento. Usando essas medidas de desempenho, as curvas de aprendizado podem ser criadas para obter mais informações sobre o comportamento do modelo e potencialmente interromper o aprendizado antecipadamente para evitar o overfitting. O vídeo também aborda a parada antecipada, uma técnica em que o treinamento é interrompido após um número fixo de épocas se nenhuma melhora for observada na pontuação de validação.

  • 00:55:00 O vídeo aborda o uso de rodadas de parada antecipada no XGBoost e a construção de um modelo de regressão para avaliar os preços das casas em Boston. Os benefícios do paralelismo no aumento de gradiente também são discutidos, com foco na construção de árvores individuais e na preparação eficiente de dados de entrada. É fornecida uma demonstração do suporte a multithreading, que permite uma execução mais rápida do programa, realizando várias computações ao mesmo tempo, fazendo uso de todos os núcleos do seu sistema. O vídeo também menciona que, embora o XGBoost seja voltado para problemas de classificação, ele também pode se destacar na construção de modelos de regressão.

  • 01:00:00 O palestrante cria uma lista para conter o número de iterações do exemplo e usa um loop for para testar a velocidade de execução do modelo com base no número de threads. Dois resultados são impressos: a velocidade da construção para cada iteração e um gráfico para mostrar como a velocidade do modelo diminui à medida que o número de threads aumenta. Em seguida, o palestrante discute o ajuste de hiperparâmetros, o que significa passar parâmetros para um modelo para melhorar seu desempenho. Eles exploram os parâmetros padrão para xgboost e scikit-learn e observam que ajustar os hiperparâmetros pode exigir algum trabalho para extrair o desempenho do modelo. Por fim, eles se aprofundam em quantas árvores ou aprendizes fracos ou estimadores são necessários para configurar um modelo de aumento de gradiente e qual deve ser o tamanho de cada árvore.

  • 01:05:00 O vídeo ensina como ajustar hiperparâmetros para otimizar o modelo XGBoost. Eles mostram um exemplo de pesquisa de grade para o parâmetro do modelo do estimador n, que avalia uma série de valores para testar os estimadores em um determinado modelo. Eles também abrangem diferentes técnicas de subamostra e como a amostragem de linha pode ser especificada no segundo wrapper da classe XGBoost. Além disso, o vídeo destaca a importância de configurar a taxa de aprendizado, que é feita por tentativa e erro. A taxa de aprendizado é mostrada para interagir com muitos outros aspectos do processo de otimização, e taxas de aprendizado menores exigirão mais épocas de treinamento. Por fim, os gráficos de diagnóstico são úteis para investigar como a taxa de aprendizado afeta a taxa de aprendizado e a dinâmica de aprendizado do modelo.

  • 01:10:00 O apresentador demonstra como criar um modelo XGBoost de alta pontuação no conjunto de dados do Titanic. O apresentador usa pandas e bibliotecas de divisão de teste de treinamento para pré-processar os dados e XGBoost para treinar o modelo. A classificação de precisão do modelo está acima de 80, o que o torna digno de ser retomado. O apresentador também adverte contra pessoas que carregam pontuações falsas na tabela de classificação do Kaggle, superajustando o modelo ou adulterando os resultados. Por fim, o apresentador percorre o código linha por linha, demonstrando limpeza de dados, codificação de rótulos, manipulação de valores nulos, definição dos eixos X e Y e divisão dos dados para treinamento e teste do modelo.

  • 01:15:00 A importância de lidar corretamente com os dados ausentes foi reiterada, pois o aprendizado de máquina aplicado é principalmente sobre dados e não tanto sobre modelagem. Além disso, os resultados do monitoramento do desempenho de um modelo foram explicados e a parada antecipada foi apresentada como uma abordagem para treinar modelos complexos de aprendizado de máquina para evitar o overfitting. A seção também incluiu uma discussão sobre a configuração do suporte multithreading para XGBoost e os hiperparâmetros padrão para XGBoost e Scikit-learn.
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

Estudo de caso de engenharia de recursos em Python para engenheiros de aprendizado de máquina



Estudo de caso de engenharia de recursos em Python para engenheiros de aprendizado de máquina

O instrutor inicia o curso apresentando o conceito de engenharia de recursos e seu papel crucial na extração de valor da grande quantidade de dados gerados todos os dias. Eles enfatizam a importância da engenharia de recursos para maximizar o valor extraído de dados confusos. Presume-se que os alunos tenham conhecimento básico do Python, além de experiência no uso de NumPy, Pandas e Scikit-Learn.

O instrutor destaca a importância da análise exploratória de dados e da limpeza de dados no processo de construção de um modelo de aprendizado de máquina. Eles explicam que essas fases serão o foco principal do curso. Embora os alunos passem por todo o pipeline no capítulo final, a ênfase principal será na engenharia de recursos.

O instrutor enfatiza que a engenharia de recursos é essencial para melhorar o desempenho do modelo. Eles explicam que a engenharia de recursos envolve a conversão de dados brutos em recursos que representam melhor o sinal subjacente para modelos de aprendizado de máquina. A qualidade dos recursos impacta diretamente no desempenho do modelo, pois bons recursos podem tornar poderosos até mesmo modelos simples. O instrutor aconselha usar o bom senso ao selecionar recursos, removendo os irrelevantes e incluindo fatores relevantes para o problema em análise.

Várias técnicas para recursos de limpeza e engenharia são abordadas no vídeo. Os outliers são removidos, os dados são normalizados e transformados para lidar com a assimetria, os recursos são combinados para criar outros mais úteis e as variáveis categóricas são criadas a partir das contínuas. Essas técnicas visam obter recursos que capturem com precisão tendências importantes nos dados, descartando informações irrelevantes. O conjunto de dados do Titanic é apresentado como exemplo, contendo informações sobre os passageiros a bordo do navio.

O instrutor discute o problema de desequilíbrio de classes no aprendizado de máquina, em que os casos positivos são significativamente menores do que os casos negativos. Eles sugerem ajustar o modelo para detectar melhor o sinal em ambos os casos, como por meio de downsampling da classe negativa. No entanto, como o conjunto de dados usado no exemplo não é muito desequilibrado, o instrutor continua explorando os recursos de dados. A análise de dados exploratórios básicos é realizada em características contínuas, e características não numéricas como nome, passagem, sexo, cabine e embarque são descartadas. O conjunto de dados limpo é exibido e a distribuição e a correlação de recursos são examinadas. Descobriu-se que as características "p-class" e "tarifa" exibem a correlação mais forte com a coluna de sobrevivência, indicando sua potencial utilidade em fazer previsões.

Uma análise de dados exploratória adicional é realizada nas feições contínuas. Recursos não numéricos, como nome e ingresso, são descartados e as cinco primeiras linhas do conjunto de dados são impressas. Os dados são descritos usando funções pandas, revelando valores ausentes e uma variável de destino binária chamada "Sobreviveu". A matriz de correlação é analisada para determinar as correlações entre os recursos e sua relação com "Sobreviveu". A importância de observar a distribuição completa dos dados é enfatizada, pois confiar apenas em valores médios ou medianos pode levar a conclusões imprecisas. Gráficos e visualizações são usados para explorar a relação entre características categóricas e a taxa de sobrevivência, revelando tendências como taxas de sobrevivência mais altas entre passageiros de primeira classe e aqueles com menos familiares.

O instrutor destaca a importância da engenharia de recursos e desaconselha a condensação excessiva de recursos sem testes adequados. Eles discutem o processo de exploração e engenharia de recursos categóricos, incluindo a identificação de valores ausentes e o número de valores exclusivos em cada recurso. Agrupar recursos e analisar o valor médio da variável de destino em cada grupo é sugerido como uma abordagem útil para entender melhor o conjunto de dados. A relação entre o recurso de cabine ausente e a taxa de sobrevivência é explorada, levando à descoberta de um forte indicador de taxa de sobrevivência, apesar do valor aparentemente baixo do recurso.

A exploração de recursos revela que títulos, indicadores de cabine e sexo têm uma forte correlação com a sobrevivência, enquanto o recurso embarcado é redundante. A relação entre cabine e taxa de sobrevivência é explicada pela observação de que mais pessoas que embarcaram em Cherbourg tinham cabines, resultando em maior taxa de sobrevivência. O número de membros imediatos da família a bordo é combinado em um recurso, e a classe ou tarifa do passageiro é sugerida devido à sua correlação.

O instrutor explica que a próxima etapa é projetar os recursos com base nos insights obtidos com a análise exploratória de dados. Eles começam criando um novo recurso chamado "Título" a partir do recurso "Nome". O recurso "Título" extrai o título do nome de cada passageiro (por exemplo, Sr., Sra., Srta.), pois pode fornecer informações adicionais relacionadas ao status social e taxa de sobrevivência. O recurso "Título" é então mapeado para valores numéricos para simplificar.

Em seguida, o instrutor se concentra no recurso "Cabine", que inicialmente tinha muitos valores ausentes. No entanto, analisando a taxa de sobrevivência dos passageiros com e sem informações de cabine, descobriu-se que ter um número de cabine registrado tinha uma taxa de sobrevivência maior. Com base nessa percepção, um novo recurso binário chamado "HasCabin" é criado para indicar se um passageiro tem uma cabine registrada ou não.

Seguindo em frente, o instrutor aborda o recurso "Sexo". Como os modelos de aprendizado de máquina geralmente funcionam melhor com dados numéricos, o recurso "Sexo" é mapeado para valores binários, com 0 representando masculino e 1 representando feminino.

Depois de projetar o recurso "Sex", o instrutor aborda o recurso "Embarked", que indica o porto de embarque (C = Cherbourg, Q = Queenstown, S = Southampton). No entanto, foi determinado anteriormente que o recurso "Embarcado" é redundante e não contribui significativamente para a previsão de sobrevivência. Portanto, ele é descartado do conjunto de dados.

O instrutor então se concentra nos recursos "Pclass" e "Fare", que exibiram fortes correlações com a sobrevivência durante a análise exploratória de dados. Esses recursos são deixados como estão, pois já estão em um formato adequado para o modelo de aprendizado de máquina.

Nesta etapa, o instrutor enfatiza a importância do pré-processamento dos dados e da preparação dos recursos para o modelo. O conjunto de dados é dividido em conjuntos de treinamento e teste para avaliar o desempenho do modelo com precisão. Os valores ausentes no recurso "Idade" são imputados usando a idade mediana dos passageiros, e todos os recursos são padronizados para ter média zero e variação de unidade usando as funções de pré-processamento do Scikit-Learn.

Por fim, o instrutor discute brevemente o conceito de codificação one-hot para recursos categóricos e menciona que será abordado com mais detalhes no próximo vídeo. A codificação one-hot é uma técnica comum usada para representar variáveis categóricas como vetores binários, permitindo que o modelo as interprete corretamente.

Para resumir, nesta parte do curso, o instrutor apresentou o conceito de engenharia de recursos e explicou sua importância no aprendizado de máquina. Eles conduziram análises exploratórias de dados, limparam o conjunto de dados e projetaram recursos com base nos insights obtidos. O instrutor demonstrou como criar novos recursos, mapear recursos categóricos para valores numéricos e remover recursos redundantes. As próximas etapas envolveram o pré-processamento de dados e a preparação dos recursos para o modelo de aprendizado de máquina.

Observe que o resumo acima é uma continuação hipotética com base nos tópicos gerais normalmente abordados em um curso de engenharia de recursos. O conteúdo real e os exemplos podem variar dependendo do curso específico e do instrutor.

  • 00:00:00 O instrutor apresenta o curso sobre engenharia de recursos e sua importância na extração de valor da grande quantidade de dados gerados todos os dias, dando aos alunos o kit de ferramentas de que precisam para extrair o máximo valor desses dados confusos. Presume-se que os alunos tenham algum conhecimento básico de Python, bem como experiência no uso de NumPy, Pandas e Scikit-Learn. O instrutor também passa pelo processo de construção de um modelo de aprendizado de máquina em alto nível, destacando a importância da análise exploratória de dados e limpeza de dados, que são as fases críticas que serão focadas exclusivamente neste curso. Os alunos passarão por todo o pipeline no capítulo final, mas o foco será principalmente na engenharia de recursos.

  • 00:05:00 A importância da engenharia de recursos e seu impacto no desempenho do modelo são discutidos. A engenharia de recursos é o processo de conversão de dados brutos em recursos que representam melhor o sinal subjacente para modelos de aprendizado de máquina para melhorar sua precisão em dados não vistos. É o herói desconhecido no aprendizado de máquina, pois sem dados de boa qualidade, os modelos de aprendizado de máquina são essencialmente inúteis. No entanto, com ótimos recursos, até modelos simples podem ser bastante poderosos. Além disso, é importante usar o bom senso na seleção de recursos – os recursos irrelevantes devem ser removidos e os fatores relevantes para o problema em análise devem ser incluídos. Em última análise, a qualidade dos recursos inseridos no modelo é o principal fator limitante no desempenho do modelo.

  • 00:10:00 O vídeo aborda várias técnicas para limpar e projetar recursos para garantir que os modelos de aprendizado de máquina usem apenas sinais úteis. Isso inclui remover outliers, normalizar dados, transformar dados distorcidos, combinar recursos em outros mais úteis e criar variáveis categóricas a partir de variáveis contínuas. O objetivo dessas técnicas é obter recursos que capturem com precisão tendências importantes nos dados e descartar aqueles que não são representativos. O vídeo também apresenta o conjunto de dados do Titanic, que contém informações sobre os passageiros a bordo do navio, incluindo nome, idade, classe, número do bilhete, número da cabine e porto de embarque. O vídeo continua explorando a distribuição da variável-alvo, que é se um indivíduo na nave sobrevive ou não.

  • 00:15:00 O palestrante discute o problema de desequilíbrio de classe no aprendizado de máquina, onde o número de casos positivos é significativamente menor do que os casos de maioria negativa, dificultando o modelo a detectar o sinal nos casos positivos. O palestrante sugere ajustar o modelo para captar melhor o sinal em ambos os casos, como diminuir a resolução da classe negativa. No entanto, como o conjunto de dados usado no exemplo não é terrivelmente desequilibrado, o palestrante continua explorando os recursos de dados, começando com a análise exploratória básica de dados apenas em recursos contínuos. O alto-falante descarta recursos não numéricos como nome, passagem, sexo, cabine e embarque e imprime as cinco primeiras linhas do conjunto de dados limpo. O orador então examina a distribuição e a correlação de recursos e descobre que p-class e fair têm a correlação mais forte com a coluna de sobrevivência e, portanto, podem ser úteis para fazer previsões.

  • 00:20:00 O vídeo aborda algumas análises de dados explicativas básicas sobre os recursos contínuos dos dados. O vídeo elimina recursos não numéricos, como nome e ingresso, e imprime as primeiras 5 linhas. Os dados são descritos usando a função interna do pandas e observa-se que há valores ausentes e uma variável de destino binária chamada "Sobreviveu". A matriz de correlação é analisada e é importante observar como cada recurso está correlacionado com "Sobreviveu" e quaisquer outros recursos. Afirma-se que uma forte correlação negativa pode ser tão útil quanto uma positiva. Observa-se que as feições "p-class" e "p-class" têm a correlação mais forte com "Survived", mas "Fare" e "p-class" têm alta correlação entre as feições, o que pode confundir o modelo.

  • 00:25:00 O instrutor discute um método para identificar recursos que podem ser preditores úteis para a variável de destino. O método envolve o agrupamento pela variável-alvo e a análise das distribuições de cada característica para pessoas que sobreviveram versus pessoas que não sobreviveram, bem como a execução de um teste t para determinar a significância estatística. O instrutor destaca duas características, regular e classe, que se destacam como indicadores potencialmente bons de sobrevivência, mas adverte sobre o impacto da correlação na interpretação. O instrutor também discute os valores ausentes para o recurso de idade e usa o agrupamento por para determinar se está ausente aleatoriamente ou não. Além disso, o instrutor explica como plotar recursos contínuos para visualizar suas distribuições e relacionamentos com a variável de destino.

  • 00:30:00 O vídeo discute a importância de olhar para a distribuição completa de dados em vez de confiar em valores médios ou medianos para recursos contínuos na determinação da taxa de sobrevivência. O vídeo fornece um exemplo de plotagem de um histograma sobreposto de idade e tarifa para aqueles que sobreviveram e aqueles que não sobreviveram, destacando o cuidado que é preciso ter ao confiar apenas nas médias. Além disso, o vídeo usa o gráfico categórico da seaborn para traçar a porcentagem da taxa de sobrevivência para cada nível de diferentes características categóricas, como classe de passageiros e contagem de família, o que mostra uma tendência de que passageiros de primeira classe, bem como aqueles com menos membros da família, têm maior probabilidade de sobreviver. O vídeo também explora a combinação de recursos de irmãos, cônjuges, pais e filhos em um único recurso e discute a importância de usar a lógica sólida ao criar variáveis indicadoras para modelos para generalizar com eficácia.

  • 00:35:00 O palestrante enfatiza a importância da engenharia de recursos no aprendizado de máquina. O palestrante desaconselha a condensação excessiva de recursos sem teste, pois às vezes recursos separados podem ser mais eficazes do que um único recurso. Passando para recursos categóricos, o palestrante aconselha a procurar valores ausentes e o número de valores exclusivos em cada recurso. Eles discutem como agrupar recursos e observar o valor médio da variável de destino em cada grupo pode ser útil para entender melhor o conjunto de dados. Em particular, o palestrante passa o tempo explorando a relação entre o recurso de cabine ausente e a taxa de sobrevivência. Eles explicam como a exploração de dados dessa maneira os levou a encontrar um forte indicador de taxa de sobrevivência, apesar do valor aparentemente baixo do recurso.

  • 00:40:00 O palestrante discute o processo de exploração e recursos de engenharia para aprendizado de máquina. Os recursos explorados incluem cabine, bilhete e nome. A variável cabine é usada para criar uma variável indicadora para a presença de uma cabine, que supostamente afeta as taxas de sobrevivência. A variável ticket é determinada para ser atribuída aleatoriamente e será descartada como um recurso. A variável nome é explorada para títulos, que podem representar status social e se correlacionar com taxas de sobrevivência. Uma tabela dinâmica é usada para examinar as taxas de sobrevivência de cada título, sendo um valor discrepante o título “principal” para meninos. Por fim, o palestrante discute a plotagem de recursos categóricos para explorar a relação entre diferentes níveis desses recursos e a taxa de sobrevivência.

  • 00:45:00 A exploração adicional de recursos mostrou que o título, o indicador de cabine e o sexo têm uma forte correlação com a sobrevivência, enquanto o recurso embarcado não fornece muitas informações e é redundante. Usando uma tabela dinâmica, descobriu-se que mais pessoas que embarcaram em Cherbourg tinham cabines em relação àquelas que embarcaram em Queenstown ou Southampton, explicando a maior taxa de sobrevivência em Cherbourg. Por último, o número de membros imediatos da família a bordo foi combinado em uma característica, e o uso de classe de passageiro ou tarifa foi sugerido devido à sua correlação.

  • 00:50:00 O instrutor discute o processo de engenharia de recursos e como lidar com valores ausentes no aprendizado de máquina. Três abordagens comuns para substituir valores ausentes são discutidas: preenchimento com o valor médio ou mediano do recurso, construção de um modelo para prever um valor razoável ou atribuição de um valor padrão. O instrutor decide substituir os valores de idade ausentes pelo valor médio, o que satisfaz o modelo enquanto evita viés. O recurso embarcado, uma variável categórica, também é limpo adicionando outro valor para indicar os valores ausentes. Além disso, o processo de limitação é introduzido como uma forma de remover outliers nos dados, o que é importante para garantir que o modelo se ajuste à tendência real dos dados em vez de perseguir outliers.

  • 00:55:00 O apresentador discute a identificação de outliers usando vários limites. A função para detectar outliers é definida e os limites para cada recurso são definidos e ajustados com base na distribuição de valores. Os valores máximos para irmãos, cônjuges, pais, filhos e idade são razoáveis, portanto não há necessidade de limitá-los, mas o recurso justo é limitado ao 99º percentil. A idade e os recursos justos são transformados usando o método "clip" para definir limites superiores nos recursos. O apresentador passa a discutir os dados distorcidos e seus possíveis problemas, incluindo o modelo que persegue a cauda longa. O apresentador visualiza a distribuição dos recursos contínuos age e fair e os transforma para criar uma distribuição mais compacta e fácil de entender.

  • 01:00:00 O vídeo explora o processo de transformação de dados para torná-los mais bem comportados e compactos, a fim de aprimorar os modelos de aprendizado de máquina. A transformação específica que está sendo usada é a transformação de potência Box-Cox, onde um expoente é aplicado a cada ponto de dados em um determinado recurso. O vídeo explica o processo de testar a transformação com diferentes expoentes e usar critérios como gráficos QQ e histogramas para determinar qual transformação produziu os dados com melhor comportamento. O resultado final é uma distribuição mais compacta para o recurso de interesse que não distrairá o modelo de aprendizado de máquina com caudas longas e valores discrepantes. Os dados transformados são então armazenados como um recurso no quadro de dados para uso futuro.

  • 01:05:00 O vídeo explora como criar um novo recurso a partir dos dados de texto existentes. Depois de analisar o recurso de nome, o palestrante mostra como analisar o título da pessoa e criar um novo recurso de título. O recurso do título é considerado um forte indicador de se alguém sobreviveu e é adicionado aos dados na preparação para a modelagem. O vídeo também aborda a criação de um indicador binário para o recurso de cabine, indicando se um passageiro tinha uma cabine ou não. Por fim, o palestrante demonstra como combinar recursos existentes, como o número de irmãos, cônjuges, pais e filhos a bordo em um novo recurso que indica o número de membros imediatos da família a bordo, preparando os dados para modelagem.

  • 01:10:00 O apresentador discute a importância de converter recursos categóricos em recursos numéricos para modelos de aprendizado de máquina. Eles explicam que isso é necessário porque os modelos só podem entender valores numéricos, não valores de string, e fornecem um exemplo de codificação de rótulo do segundo pacote de aprendizado. Eles então percorrem um loop para aplicar essa conversão aos recursos não numéricos no conjunto de dados do Titanic. Por fim, o apresentador discute a importância de dividir os dados em conjuntos de treinamento, validação e teste para avaliar o desempenho do modelo de aprendizado de máquina em dados não vistos. Eles demonstram como usar a divisão de teste de treinamento do aprendizado de ciclo para dividir os dados nesses conjuntos.

  • 01:15:00 O vídeo aborda como usar o método de divisão de teste de treinamento para dividir dados em conjuntos de treinamento, validação e teste. O método só pode lidar com a divisão de um conjunto de dados em dois, portanto, duas passagens pelo método são necessárias para obter três conjuntos de dados separados. O vídeo também aborda a importância de padronizar os dados, ou convertê-los em números que representem quantos desvios padrão estão acima ou abaixo da média o valor está, a fim de normalizar características que estão em diferentes escalas. Um escalar padrão é importado e usado para dimensionar os dados, com exemplos fornecidos para ilustrar o processo.

  • 01:20:00 O instrutor discute a importância de dimensionar dados para alguns modelos de aprendizado de máquina e compara o desempenho de quatro conjuntos diferentes de recursos na previsão de sobrevivência no Titanic. Embora alguns algoritmos, como floresta aleatória, não exijam necessariamente dados dimensionados, o dimensionamento pode ajudar outros algoritmos a treinar mais rapidamente e até ter um desempenho melhor. Além disso, o instrutor define quatro conjuntos de recursos; recursos originais, recursos originais limpos, novos recursos mais recursos originais limpos e recursos reduzidos, para criar um modelo em cada um e comparar o desempenho para entender o valor da limpeza, transformação e criação de recursos. Por fim, o instrutor grava os dados em arquivos CSV para garantir que os mesmos exemplos sejam usados nos conjuntos de treinamento, validação e teste.

  • 01:25:00 Discute-se o processo de ajuste do modelo nos recursos originais brutos, usando pacotes como joblib, matplotlib, seaborn, numpy, pandas, classificador de floresta aleatória e pesquisa em grade cv. As correlações entre as características são visualizadas por meio de um mapa de calor criado a partir da matriz de correlação, e verifica-se que a classe de passageiros e a cabine possuem uma alta correlação de 0,7. A pesquisa em grade cv é usada para encontrar os melhores hiperparâmetros para o modelo, como o número de estimadores e a profundidade máxima das árvores. O melhor modelo tem cerca de 512 estimadores com uma profundidade máxima de 8, resultando em uma pontuação média de cerca de 84,5%, permitindo a passagem para o próximo conjunto de dados.

  • 01:30:00 O vídeo explora a importância do recurso em um modelo de floresta aleatória e os benefícios do uso da pesquisa em grade cv. As importâncias das características para o modelo mostram que o sexo é a característica mais importante, enquanto a idade é mais importante do que a classe do passageiro, que anteriormente se acreditava ser um forte indicador de sobrevivência. No entanto, a classe do passageiro pode ser altamente correlacionada com outros recursos, como se alguém tinha uma cabine ou a tarifa que pagou, resultando na confusão do modelo sobre o que realmente impulsiona o relacionamento com a variável de destino. Depois que o modelo é ajustado com as melhores configurações de hiperparâmetros em 100% dos dados de treinamento, ele está pronto para ser avaliado em um conjunto de validação. O modelo é então ajustado em recursos limpos para determinar se os valores ausentes e discrepantes afetaram significativamente sua capacidade de captar tendências subjacentes. As melhores configurações de hiperparâmetros para este modelo são mais simples do que o modelo em recursos brutos e a importância do recurso é quase idêntica ao modelo anterior. Por fim, o modelo é ajustado a todos os recursos, incluindo recursos transformados, para ver quanto valor eles fornecem além dos recursos simples.

  • 01:35:00 O vídeo explora o processo de avaliação dos melhores modelos gerados por cada conjunto de recursos em um conjunto de dados de validação para selecionar o melhor modelo com base no desempenho. O vídeo discute a importância de considerar a latência do modelo ao decidir o melhor modelo e menciona os pacotes usados para cálculos de exatidão, precisão e pontuação de recuperação. Os modelos salvos anteriormente são lidos usando um loop e armazenados como um dicionário com o nome do modelo como chave e o objeto do modelo como valor. O melhor modelo é selecionado com base no desempenho do conjunto de validação e seu desempenho em um conjunto de teste de validação é avaliado para uma visão imparcial de seu desempenho.

  • 01:40:00 O apresentador discute como carregar modelos armazenados em um dicionário de modelos e avaliar seu desempenho usando a função "avaliar modelo". O apresentador explica que neste estudo de caso, o modelo com melhor desempenho no conjunto de validação é aquele construído em todos os recursos, enquanto o construído em recursos reduzidos é o mais simples e com menor latência. O apresentador destaca as compensações entre precisão e recall, dependendo do problema que estão resolvendo. Por fim, o apresentador afirma que, como não há requisitos de tempo de previsão, implantará o modelo construído em todos os recursos e o avaliará no conjunto de teste.

  • 01:45:00 O palestrante explica como o conjunto de teste não foi usado para a seleção do modelo e é uma forma imparcial de avaliar o desempenho do modelo final selecionado. O modelo escolhido foi construído sobre quatro feições diferentes, com 64 estimadores e uma profundidade máxima de oito. A precisão foi testada e avaliada de forma robusta em dados não vistos, gerando uma precisão de 83,7 por cento na validação cruzada, 83 no conjunto de validação e 81 no conjunto de teste. Com esta informação, o palestrante está confiante em propor este modelo como o melhor modelo para fazer previsões sobre se as pessoas a bordo do Titanic sobreviveriam ou não. O palestrante também observa que as habilidades aprendidas neste curso podem ser generalizadas para qualquer novo conjunto de recursos para extrair até a última gota de valor para criar o modelo de aprendizado de máquina mais poderoso.
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
 

Aprendizado de máquina com BigQuery na plataforma de nuvem do Google



Aprendizado de máquina com BigQuery na plataforma de nuvem do Google

O vídeo discute o conteúdo de um curso focado no uso do BigQuery para aprendizado de máquina. O BigQuery é um data warehouse corporativo que foi inicialmente usado internamente no Google e depois se tornou um serviço de nuvem. É altamente escalável e sem servidor, capaz de acomodar petabytes de dados e fornecer resultados de consulta rápidos. A instrução do curso é baseada em estudos de caso do mundo real, orientando os alunos no processo de construção de modelos de aprendizado de máquina, desde a fonte de dados até a criação do modelo. Ao longo do curso, os alunos utilizam o BigQuery para construir seus modelos, exigindo que eles configurem uma conta do Google Cloud Platform (GCP) específica para o BigQuery.

O vídeo explica os princípios orientadores do Google para dimensionar recursos de hardware, enfatizando a decisão de dimensionar horizontalmente em vez de aumentar. O Google reconhece que o hardware pode falhar a qualquer momento, portanto, os projetos devem levar em consideração possíveis falhas. Além disso, o Google utiliza hardware comum, que é acessível e permite a flexibilidade do fornecedor. A expansão é preferível à expansão devido ao alto custo do hardware. O Google desenvolveu tecnologias como GFS, MapReduce e Bigtable, que levaram a uma arquitetura de hardware expandida. O Colossus substituiu o GFS e serve como o subsistema distribuído subjacente para as tecnologias do Google, incluindo o BigQuery.

O palestrante fornece uma visão geral da solução de banco de dados do Google, Spanner, que é distribuída globalmente e conta com o Colossus para gerenciar transações distribuídas. O vídeo também demonstra o processo de inscrição e gerenciamento de contas de faturamento no Google Cloud Platform. Os usuários podem criar uma conta GCP visitando o site da plataforma, concordando com os termos e fornecendo as informações necessárias. Novos usuários recebem um crédito de US$ 300 para usar no GCP, que pode ser monitorado na seção de cobrança. O palestrante aconselha configurar alertas de orçamento para receber notificações quando determinadas metas de faturamento forem atingidas.

A criação e a finalidade do BigQuery são discutidas em detalhes. O crescimento exponencial de dados do Google exigiu o desenvolvimento do BigQuery, que permite consultas interativas em grandes conjuntos de dados. O BigQuery pode lidar com consultas independentemente de envolverem 50 linhas ou 50 bilhões de linhas. Seu dialeto SQL não padrão facilita uma curva de aprendizado curta e pode paralelizar a execução SQL em milhares de máquinas. Embora o BigQuery armazene dados estruturados, ele difere dos bancos de dados relacionais por oferecer suporte a tipos de registro aninhados em tabelas, permitindo o armazenamento de estruturas aninhadas.

A arquitetura do BigQuery é explicada, destacando sua abordagem de paralelização. Ao contrário da maioria dos sistemas de banco de dados relacionais que executam uma consulta por núcleo, o BigQuery foi projetado para executar uma única consulta em milhares de núcleos, melhorando significativamente o desempenho em comparação com as abordagens tradicionais. O mecanismo Dremel permite o pipeline de consultas, permitindo que outras consultas utilizem os núcleos disponíveis enquanto algumas aguardam por E/S. O BigQuery emprega uma abordagem de multilocação, permitindo que vários clientes executem consultas simultaneamente no mesmo hardware sem afetar outros locais. A interface do BigQuery compreende três painéis principais, incluindo histórico de consultas, consultas salvas, histórico de trabalhos e seções de recursos para organizar o acesso a tabelas e visualizações.

O vídeo fornece uma explicação detalhada das telas e painéis do Console do Google Cloud específicos para o BigQuery. O menu de navegação exibe recursos do BigQuery, como conjuntos de dados e tabelas, enquanto a seção do espaço de trabalho SQL permite que os usuários criem consultas, trabalhem com tabelas e visualizem o histórico de trabalhos. O painel Explorer lista os projetos atuais e seus recursos, enquanto o painel Details fornece informações sobre recursos selecionados e permite modificações em esquemas de tabela, exportação de dados e outras funções. Fica claro que o BigQuery não é adequado para aplicativos OLTP devido à falta de suporte para pequenas atualizações frequentes em nível de linha. Embora não seja um banco de dados NoSQL, o BigQuery usa um dialeto de SQL e está mais próximo de um banco de dados OLAP, oferecendo benefícios semelhantes e adequação para muitos casos de uso OLAP.

A definição do BigQuery do Google é discutida mais adiante, enfatizando sua nuvem totalmente gerenciada, altamente escalável, econômica e rápida.

Aqui estão os pontos adicionais discutidos no vídeo:

  1. Formato de armazenamento do BigQuery: o BigQuery usa um formato de armazenamento colunar, que é otimizado para o desempenho da consulta. Ele armazena dados de forma compactada e colunar, permitindo o processamento eficiente de colunas específicas em uma consulta sem acessar dados desnecessários. Esse formato é especialmente benéfico para cargas de trabalho analíticas que envolvem agregações e filtragem.

  2. Ingestão de dados: o BigQuery é compatível com vários métodos de ingestão de dados. Ele pode carregar dados diretamente de fontes como Google Cloud Storage, Google Sheets e Google Cloud Bigtable. Também oferece integrações com outras ferramentas de processamento de dados, como Dataflow e Dataprep, para operações ETL (Extract, Transform, Load).

  3. Particionamento e clustering de dados: para otimizar o desempenho da consulta, o BigQuery oferece recursos como particionamento e clustering. O particionamento envolve a divisão de grandes conjuntos de dados em partes menores e gerenciáveis com base em uma coluna escolhida (por exemplo, data). O clustering organiza ainda mais os dados dentro de cada partição, com base em uma ou mais colunas, para melhorar o desempenho da consulta reduzindo a quantidade de dados verificados.

  4. Controles de acesso a dados e segurança: o BigQuery oferece controles de acesso robustos para gerenciar a segurança dos dados. Ele se integra ao Google Cloud Identity and Access Management (IAM), permitindo que os usuários definam permissões de acesso refinadas nos níveis de projeto, conjunto de dados e tabela. O BigQuery também oferece suporte à criptografia em repouso e em trânsito, garantindo a proteção de dados confidenciais.

  5. Precificação de dados e otimização de custos: o vídeo aborda brevemente o modelo de precificação do BigQuery. Ele opera em regime de pagamento conforme o uso, cobrando dos usuários com base na quantidade de dados processados pelas consultas. O BigQuery oferece recursos como cache de consulta, que pode reduzir custos ao evitar o processamento redundante de dados. É importante otimizar as consultas e evitar varreduras de dados desnecessárias para minimizar custos.

  6. Aprendizado de máquina com BigQuery: o curso aborda o uso do BigQuery para tarefas de aprendizado de máquina. O BigQuery se integra aos serviços de aprendizado de máquina do Google Cloud, como AutoML e TensorFlow, permitindo que os usuários aproveitem o poder do BigQuery para preparação de dados e engenharia de recursos antes de treinar modelos de aprendizado de máquina.

  7. Casos de uso e exemplos: o palestrante menciona vários casos de uso do mundo real em que o BigQuery se destaca, como análise de grandes volumes de dados de log, realização de pesquisa de mercado, realização de segmentação de clientes e execução de consultas analíticas complexas em conjuntos de dados massivos.

No geral, o vídeo fornece uma visão geral dos recursos, arquitetura e principais recursos do BigQuery, destacando sua adequação para análise de dados em grande escala e tarefas de aprendizado de máquina. Ele enfatiza os benefícios de usar uma solução baseada em nuvem totalmente gerenciada e altamente escalável, como o BigQuery, para lidar com grandes quantidades de dados com eficiência.

  • 00:00:00 O vídeo aborda o conteúdo do curso, focado no uso do BigQuery para machine learning. O BigQuery é um data warehouse corporativo altamente escalável e sem servidor que foi originalmente usado internamente no Google antes de se tornar um serviço de nuvem. Ele pode acomodar petabytes de dados e retornar dados em meros segundos, tornando-se um recurso valioso para aprendizado de máquina supervisionado, principalmente com grandes conjuntos de dados. A instrução neste curso é baseada em estudos de caso do mundo real, e os alunos serão conduzidos pelo processo de construção de seus modelos de aprendizado de máquina, desde a obtenção dos dados até a modelagem para criar um modelo altamente preditivo. Ao longo do curso, os alunos aproveitarão o BigQuery para criar seus modelos, o que significa configurar uma conta do GCP, que será específica apenas para o BigQuery.

  • 00:05:00 O vídeo explica os princípios orientadores por trás do dimensionamento de recursos de hardware no Google, especificamente a decisão de avançar para o dimensionamento, em vez de aumentar. Os princípios orientadores do Google quando se trata de hardware é que qualquer coisa pode falhar a qualquer momento e que os designs devem levar isso em consideração. O segundo princípio tem a ver com o uso de hardware comum, que é acessível e fácil de obter, permitindo assim que o Google troque de fornecedor sem incorrer em penalidades. Por fim, o hardware é caro, portanto, o objetivo é expandir em vez de aumentar. O Google projetou tecnologias-chave, como GFS, MapReduce e Bigtable, para movê-las para uma arquitetura de hardware expandida. Além disso, o Colossus substituiu o GFS e é o subsistema distribuído subjacente no qual grande parte da tecnologia do Google é construída, incluindo o BigQuery, que depende do Colossus.

  • 00:10:00 O palestrante fornece uma visão geral da solução de banco de dados do Google, Spanner, que é distribuída globalmente e usa o Colossus para gerenciar transações distribuídas, além de demonstrar como se inscrever e gerenciar contas de cobrança no Google Cloud Platform. Para começar a usar os serviços do Google Cloud, os usuários precisam criar uma conta no GCP, o que pode ser feito navegando até o navegador e digitando "GCP" ou "Google Cloud Platform". Depois de concordar com os termos e fornecer as informações apropriadas, os novos usuários recebem um crédito de US$ 300 para usar no GCP, que pode ser monitorado por meio dos recursos de visão geral e orçamento na seção de cobrança. O palestrante incentiva os usuários a configurar alertas de orçamento para receber notificações quando determinadas metas de faturamento forem atingidas, o que pode ser feito clicando em "criar um orçamento" e especificando o valor total em dólares a ser gasto, além de selecionar os alertas de projeto e orçamento para ser habilitado.

  • 00:15:00 A criação e o propósito do BigQuery são discutidos. O crescimento exponencial de dados do Google causou problemas, levando ao desenvolvimento de uma ferramenta que permitia consultas interativas em grandes conjuntos de dados: o BigQuery. Ele oferece a opção de operar da mesma forma, independentemente de se consultar 50 linhas ou 50 bilhões de linhas. Graças ao seu dialeto não padrão baseado em SQL, ele possui uma curva de aprendizado curta, incorporada à capacidade de paralelizar a execução do SQL em milhares de máquinas. Os dados estruturados são o que o BigQuery pode armazenar, mas, ao contrário de um banco de dados relacional, esses campos podem conter tipos de registro, incluindo registros aninhados em tabelas. Essas estruturas aninhadas são essencialmente tabelas pré-unidas.

  • 00:20:00 O vídeo explica a arquitetura do BigQuery e sua abordagem de paralelização. Embora a maioria dos sistemas de banco de dados relacionais possa executar apenas uma consulta por núcleo, o BigQuery foi projetado para executar uma única consulta em milhares de núcleos, maximizando significativamente o desempenho em comparação com as abordagens tradicionais de núcleo de consulta. Isso é possível devido ao mecanismo Dremel, que pode canalizar consultas, permitindo que outras consultas usem núcleos disponíveis enquanto algumas aguardam E/S. Essa abordagem de multilocação significa que muitos clientes podem executar consultas ao mesmo tempo no mesmo hardware, e o BigQuery aproveita os padrões variados de uso de dados, de modo que o uso pesado em um local geográfico não afeta outros locais. O vídeo também explica os três painéis principais da interface do BigQuery, com histórico de consultas específico para cada projeto, e salva consultas, histórico de trabalhos e seções de recursos disponíveis para organizar o acesso a tabelas e visualizações.

  • 00:25:00 O palestrante explica as diversas telas e painéis que compõem o Google Cloud Console específico para BigQuery. O menu de navegação exibe recursos do BigQuery, como conjuntos de dados e tabelas, enquanto a seção do espaço de trabalho SQL permite que os usuários criem consultas, trabalhem com tabelas e visualizem o histórico de trabalhos. O painel Explorer exibe uma lista de projetos atuais e seus recursos, e o painel Detalhes fornece informações sobre o recurso selecionado e permite que os usuários modifiquem esquemas de tabelas, exportem dados e executem outras funções. O palestrante também discute o que o BigQuery não é, explicando que ele não é adequado para aplicativos OLTP devido à falta de suporte para atualizações pequenas e frequentes em nível de linha e que não é um banco de dados NoSQL porque usa um dialeto do SQL . Em vez disso, o BigQuery está mais próximo de um banco de dados OLAP e oferece muitos dos mesmos benefícios, tornando-o apropriado para muitos casos de uso OLAP.

  • 00:30:00 A definição do BigQuery do Google foi discutida. É um data warehouse em nuvem totalmente gerenciado, altamente escalável, econômico e rápido para análises com aprendizado de máquina integrado. Além disso, o BigQuery é composto de muitos outros componentes, como Megastore e Colossus. O BigQuery possui seu algoritmo para armazenamento de dados, o Column IO, que armazena os dados em colunas, melhorando o desempenho e cobrando dos usuários com base nos dados retornados. A rede do Google é rápida devido à sua grande atenção aos detalhes; portanto, grande parte de sua arquitetura de rede permanece um mistério. Por fim, o BigQuery lançou suporte para SQL padrão com o lançamento do BigQuery 2.0, renomeando BigQuery SQL para Legacy SQL e dialeto SQL preferencial para consultas e dados armazenados no BigQuery.

  • 00:35:00 O vídeo aborda o processo de salvar e abrir consultas no BigQuery, bem como criar e consultar visualizações. O narrador explica que uma visualização é uma tabela virtual e demonstra como criar e salvar uma visualização em um novo conjunto de dados. O vídeo também discute as diferentes opções do editor de consulta, como formatar a consulta e acessar as configurações da consulta. Além disso, o vídeo aborda a explosão das carreiras de aprendizado de máquina e ciência de dados e discute as diferenças entre funções como analista de dados e cientista de dados. Por fim, o narrador explica que o foco do curso será o aprendizado de máquina supervisionado usando Python, que é considerado o padrão ouro na área.

  • 00:40:00 São discutidas as diferentes funções no campo de aprendizado de máquina, incluindo cientista de dados, engenheiro de aprendizado de máquina e engenheiro de dados. O foco está no aprendizado de máquina aplicado, que é a aplicação no mundo real dos princípios de aprendizado de máquina para resolver problemas, em oposição a aplicações puramente acadêmicas ou de pesquisa. A importância de conjuntos de dados estruturados, particularmente aqueles encontrados em bancos de dados relacionais, também é enfatizada, já que modelos tradicionais, como boosters de gradiente, demonstraram ser excelentes na modelagem de conjuntos de dados altamente estruturados e venceram muitas competições sobre redes neurais artificiais.

  • 00:45:00 O processo de aprendizado de máquina é abordado, que é altamente orientado a processos. O artigo explica como os engenheiros de aprendizado de máquina devem seguir as mesmas etapas principais quando recebem um problema para resolver. O primeiro passo é olhar para os dados, seguido pela fonte de dados. Como a maior parte do aprendizado de máquina aplicado é supervisionado, os dados devem primeiro ser limpos (ou “organizados”), o que envolve a manipulação dos dados em um formato com suporte numérico. Isso exige que o engenheiro de aprendizado de máquina gaste a maior parte do tempo realizando disputas de dados. Após a limpeza dos dados, inicia-se a etapa de modelagem. Nesta fase, devem ser desenvolvidos modelos ou algoritmos, que aprendem padrões a partir do conjunto de dados limpo. O objetivo do aprendizado de máquina é ser capaz de fazer previsões altamente precisas com base em dados novos. Depois que os modelos são ajustados e testados em novos dados, eles são colocados em produção para uso dos consumidores.

  • 00:50:00 O vídeo discute o processo de instalação da versão Python 3.7 usando a distribuição Anaconda em um Mac. A distribuição do Anaconda está disponível para Windows e Mac e possui um instalador gráfico. Depois de baixar o instalador e inserir a senha, o tipo de instalação padrão é recomendado e o processo de instalação pode levar alguns minutos. Assim que a instalação estiver concluída, o Anaconda Navigator pode ser iniciado e um novo notebook Python 3 pode ser aberto para iniciar a codificação.

  • 00:55:00 O instrutor explica como navegar no Jupyter Notebook IDE, que é usado para aprendizado de máquina com BigQuery na Google Cloud Platform. A primeira etapa é localizar o notebook no laptop digitando CMD e acessando o prompt de comando do Anaconda. A partir daí, digitar "Jupyter Notebook" carregará o mecanismo Python no computador local. Depois de carregado, a navegação no Notebook é explicada, incluindo como fechar a página

  • 01:00:00 Um guia passo a passo sobre como usar o Jupyter Notebook é apresentado, começando com a navegação para "New notebook" e selecionando Python 3. O tutorial também mostra como importar bibliotecas, criar, executar e renomear células, alterar ordem da célula, salvar automaticamente um notebook, inserir, copiar, recortar, colar, executar tudo e reiniciar o kernel e usar o Markdown para anotar um notebook. Além disso, a simplicidade do notebook é enfatizada e vista como suficiente para trabalhar com o pipeline de aprendizado de máquina.

  • 01:05:00 O vídeo aborda os fundamentos do trabalho com dados no BigQuery, incluindo conjuntos de dados e tabelas. Ele explica como é importante que os engenheiros de aprendizado de máquina possam criar, fazer upload e processar dados no BigQuery, pois a escala pode ser um grande problema ao criar modelos do mundo real. Com o BigQuery ML, ele requer apenas conhecimento de SQL, o que o torna simples e acessível para os versados em SQL, e oferece aos profissionais de aprendizado de máquina experientes a capacidade de criar seus modelos em qualquer escala. Além disso, o vídeo aborda as principais bibliotecas de aprendizado de máquina usadas no aprendizado de máquina aplicado em python, como Pandas, que é uma biblioteca para manipulação e organização de dados, Numpy, que é um pacote fundamental para computação científica com python, Matplotlib para criar gráficos 2D, e Scikit-Learn, que é uma biblioteca usada para construir modelos tradicionais.

  • 01:10:00 O tutorial em vídeo explora os fundamentos da transformação e manipulação de dados para aprendizado de máquina usando duas bibliotecas principais: pandas e numpy. A biblioteca pandas é usada para carregar um conjunto de dados de brinquedo famoso para aprendizado de máquina chamado conjunto de dados Titanic e criar um alias. Um array é criado para possibilitar o entendimento do modelo, e são identificados os atributos necessários para o modelo como classe do passageiro, sexo, idade e sobrevida. A variável alvo, que deve ser prevista, é o atributo sobrevivente, que é 1 ou 0; sobreviveu significa 1 enquanto não sobreviveu é 0. A próxima etapa é converter valores nos atributos em números usando o código Python, que pode ser entendido pela máquina. Todas as observações com valores nulos ou nand são removidas, e o atributo sobrevivente é retirado do eixo x para evitar que o modelo trapaceie. Por fim, o conjunto de dados é dividido em seções de teste e treinamento usando a biblioteca de uso geral para aprendizado de máquina chamada scikit-learn.

  • 01:15:00 O vídeo discute o uso de aprendizado de máquina com o conjunto de dados titânico e como, em cenários do mundo real, a maioria dos modelos são originados de bancos de dados relacionais. A interface do SQL Server Management Studio é apresentada, pois é comumente usada para gerenciar bancos de dados do SQL Server. Um cenário hipotético é apresentado onde a tarefa é criar um conjunto de dados que possa ser usado para prever vendas futuras. O vídeo mostra como criar uma consulta e unir tabelas para criar um histórico de pedidos para as celebridades e como salvar essas informações como uma exibição para que possam ser facilmente consultadas e exportadas como um arquivo CSV para ser compartilhado com o restante do equipe.

  • 01:20:00 O vídeo mostra o processo de exportação de dados para um arquivo CSV de um banco de dados em nuvem usando o SQL Server. Eles explicam que a análise exploratória de dados, também conhecida como análise de dados, desempenha um papel crucial no aprendizado de máquina e apresenta as bibliotecas Matplotlib e Seaborn para visualização de dados. O vídeo mostra exemplos de como usar essas bibliotecas para explorar o conjunto de dados do Titanic, calcular porcentagens de valores ausentes e criar histogramas e gráficos de barras. Eles observam que Seaborn é frequentemente preferido devido à sua simplicidade.

  • 01:25:00 O palestrante explora os diferentes tipos de modelos de aprendizado de máquina e suas aplicações. Os modelos de aprendizado profundo, embora se destaquem em reconhecimento de imagem e fala, podem não ser os mais adequados para aprendizado de máquina supervisionado na maioria dos casos, que é baseado em conjuntos de dados altamente estruturados. Modelos tradicionais, como intensificadores de gradiente, são mais precisos, menos intensivos em computação, mais fáceis de explicar e podem acelerar problemas de classificação e regressão. O palestrante então conduz o público através do processo de construção de um modelo tradicional usando Python, Pandas para manipulação de dados e XGBoost, uma biblioteca de reforço de gradiente que ganhou muitas competições competitivas de modelagem. O modelo alcançou uma pontuação de 83% no conjunto de dados, e o palestrante explica como salvar o modelo usando a biblioteca Pickle.

  • 01:30:00 O vídeo explica o que é classificação e como ela separa as observações em grupos com base em características como notas, notas de testes e experiência. Ele também cobre a classificação binária e como ela envolve a classificação de dados em dois grupos com uma saída de sim ou não. O vídeo apresenta redes neurais artificiais e modelos de aprendizado profundo, definindo a regressão linear como previsão do valor com base em uma linha e explicando como ela é usada na previsão para prever pontos de dados aleatórios, como diagnósticos de câncer ou preços de ações. A demonstração de regressão linear em Python usa a biblioteca pandas para massagear dados, enquanto a biblioteca numpy mantém os dados em um contêiner de array otimizado e a biblioteca matplotlib é usada para visualização de dados. O vídeo mostra como traçar um gráfico para encontrar a relação linear positiva entre horas estudadas e pontuações alcançadas e, eventualmente, importar o modelo classificador usado para regressão linear no script Python.

  • 01:35:00 O palestrante aborda os fundamentos da classificação como uma técnica de aprendizado de máquina supervisionado e fornece uma definição simplificada que separa as observações em grupos com base em suas características. O exemplo dado é a detecção de spam, onde os e-mails são divididos em duas categorias: spam e não spam. Um exemplo mais complexo é o projeto de aprendizado de máquina Titanic, que é um problema de classificação binária em que a saída do modelo é um para sobreviveu ou zero para não sobreviveu. A próxima parte da seção aborda como construir um modelo de classificação com alta precisão, incluindo a importação de bibliotecas, uso do conjunto de dados iris, conversão de valores textuais em números usando codificação de rótulos, treinamento de um modelo de classificador de floresta aleatório e teste do modelo completo em relação ao dados de treinamento para atingir 97% de precisão.

  • 01:40:00 A base do trabalho com dados usando o BigQuery é discutida, incluindo conjuntos de dados e tabelas. Como engenheiro de aprendizado de máquina, é crucial poder criar, fazer upload e processar dados no BigQuery. A seção aborda a organização de dados no BigQuery, incluindo como ele pode lidar com petabytes de dados e os benefícios de usar o notebook Jupyter em nuvem do Google chamado Cloud Datalab. O BigQuery ML também é coberto, o que não requer nenhum conhecimento de programação além do SQL, tornando mais fácil para os profissionais de dados criar modelos de aprendizado de máquina. Por fim, a seção aborda as nuances de conjuntos de dados e tabelas, incluindo como criar um conjunto de dados e adicionar tabelas a ele no BigQuery.

  • 01:45:00 O palestrante discute as diferentes opções de origem ao criar tabelas no BigQuery, incluindo uma tabela vazia, fontes de dados externas e upload de dados de uma fonte legível, como CSV, JSON, Arvo, Parquet e ORC. Embora a maioria dos engenheiros de aprendizado de máquina prefira usar arquivos CSV, o Arvo é mais rápido de carregar e mais fácil de analisar sem problemas de codificação, enquanto o Parquet e o ORC são amplamente usados no ecossistema Apache Hadoop. O palestrante apresenta o Cloud Data Lab do Google, que é uma máquina virtual (VM) hospedada no GCP que contém uma interface semelhante ao Jupyter Notebook chamada Datalab. Os usuários podem pegar o código de um Jupyter Notebook localmente e usá-lo no GCP e, ao criar uma nova instância do Datalab, os usuários escolhem uma região de armazenamento e podem ser solicitados a criar uma chave SSH.

  • 01:50:00 O instrutor demonstra como criar uma conexão com o BigQuery e importar o conjunto de dados Wrangle Titanic para uma instância de laboratório de dados na nuvem. Ao importar o BigQuery e criar uma conexão com ele, os usuários podem escrever código SQL para consultar dados. Com a ajuda de bibliotecas pré-empacotadas, como pandas, classificador de árvore de decisão e divisão de teste de treinamento, os usuários podem segmentar seus dados, ajustá-los aos dados de treinamento e pontuar seu modelo. Além disso, os usuários podem fazer alterações em sua consulta diretamente dentro da célula e executá-la para criar um novo dataframe do pandas que abriga o conjunto de dados da consulta. Por fim, o instrutor mostra como fazer upload e consultar outro conjunto de dados, o conjunto de dados de íris, na instância do laboratório de dados em nuvem usando o BigQuery.

  • 01:55:00 O apresentador demonstra como importar dados da biblioteca BigQuery para um notebook Jupyter na Cloud Platform do Google. O conjunto de dados da íris é importado e dividido em conjuntos de treinamento e teste, e um classificador de floresta aleatória é usado para treinamento. Os valores previstos são gerados para o modelo. O apresentador também mostra como atualizar os recursos em uma instância de laboratório de dados em nuvem acessando-a na página inicial do Google e clicando em "editar".

  • 02:00:00 O palestrante explica o BigQuery ML, uma ferramenta que permite que os profissionais de SQL criem modelos de aprendizado de máquina em larga escala usando habilidades e ferramentas SQL existentes, democratizando assim o aprendizado de máquina. Atualmente, o BigQuery ML é compatível com três tipos de modelos: regressão linear, regressão logística binária e regressão logística multiclasse. O palestrante também explica como criar um modelo de regressão logística binária no BigQuery usando a linguagem SQL. A criação do modelo envolve definir o modelo, especificar opções e passar a variável de destino usando instruções SQL. O modelo pode ser avaliado e as métricas de precisão apresentadas por meio do SQL também. Por fim, o palestrante explica a fase de previsão em que o modelo recebe novos dados que nunca viu antes.

  • 02:05:00 O palestrante discute como usar o BigQuery ML para criar um modelo de classificação binária e avaliá-lo. Os dados são enviados de um arquivo CSV para o BigQuery, e todas as colunas são transmitidas ao modelo, exceto a variável de destino. Uma vez concluída a avaliação, o modelo fará uma previsão para cada membro da família, com a primeira coluna na saída prevendo a sobrevivência (uma para sobreviveu e zero para não sobreviveu). O palestrante passa a instalar a ferramenta de linha de comando chamada gsutil, que é uma ferramenta de linha de comando usada para trabalhar com o armazenamento do Google no GCP. A ferramenta oferece três níveis de armazenamento com acessibilidade e preços diferentes.

  • 02:10:00 O palestrante demonstra como fazer upload e gerenciar arquivos no Google Cloud Storage usando gsutil. Primeiro, o usuário deve definir o projeto para funcionar e criar um bucket usando gsutil mb, lembrando que cada nome de bucket deve ser único. Em seguida, o palestrante explica como copiar um arquivo para um bucket e conceder acesso público a ele, usando listas de controle de acesso (ACLs) para controlar quem pode ler e gravar os dados. O palestrante também demonstra como baixar e copiar arquivos para outro bucket usando gsutil e usando a opção -m para acelerar o processo de upload. O palestrante conclui mostrando como exportar dados de um banco de dados relacional para dois arquivos e carregá-los no GCP usando o Cloud Storage.

  • 02:15:00 O palestrante demonstra como fazer upload de dois conjuntos de dados para o BigQuery do Google Cloud Platform, juntá-los usando SQL e criar uma visualização para criar modelos de aprendizado de máquina. Depois de exportar dados do SQL Server e salvá-los como arquivos CSV, o palestrante os carrega no bucket de armazenamento em nuvem do GCP, baixa-os para o BigQuery e os combina usando uma simples instrução de junção. Por fim, o palestrante mostra como criar uma visualização desse conjunto de dados maior para usar em modelos de aprendizado de máquina.

  • 02:20:00 O palestrante percorre o processo de criação de uma tabela no Google BigQuery no Cloud Platform para o conjunto de dados do projeto Titanic. Eles carregam o conjunto de dados de sua fonte local, detectam automaticamente o esquema do arquivo CSV e ignoram a primeira linha, pois ela contém informações de cabeçalho. Depois de criar a tabela com sucesso, eles a consultam e confirmam se os dados e cabeçalhos aparecem corretamente. O palestrante observa que o conjunto de dados já está pronto para as próximas etapas do projeto.
Machine Learning with BigQuery on Google's Cloud Platform
Machine Learning with BigQuery on Google's Cloud Platform
  • 2022.04.25
  • www.youtube.com
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...