Categorias
Big Data Ciência de Dados Cientista-chefe

Plataforma Big Data Social é Apresentada no I Encontro de Tecnologia para o Desenvolvimento Social

A Secretaria do Planejamento e Gestão do Ceará (Seplag-CE), por meio da sua secretaria executiva do Planejamento e Orçamento, realizou, no dia 30 de maio, o I Encontro de Ciência e Tecnologia para o Desenvolvimento Social. O evento realizado em  parceria com a Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico (Funcap), vinculada à Secretaria da Ciência, Tecnologia e Educação Superior do Estado do Ceará (Secitece), aconteceu no auditório da Seplag.

Apresentação da Plataforma Big Data Social

Na ocasião, José Macêdo, cientista-chefe da Transformação Digital e coordenador do Insight Lab, apresentou a plataforma Big Data Social do Governo do Ceará e sua equipe de trabalho. Estavam presentes também os cientistas-chefes: Flávio Ataliba (Economia), Márcia Machado (Proteção Social) e Jorge Lira (Educação).

 

Imagem: Apresentação Big Data Social

Imagem: Apresentação Big Data Social

No evento foram apresentados os temas aplicados por meio da gestão pública que causaram impactos e estão contribuindo para o progresso social aliado ao advento da tecnologia e a popularização da ciência, e a formação de cidadãos sociais e culturais no contexto tecnológico.

Segundo Flávio Ataliba, secretário executivo do Planejamento e Orçamento da Seplag, o evento surgiu  para apresentar os resultados das pesquisas realizadas nas áreas citadas, além de servir como um momento rico para o compartilhamento de conhecimentos e de novas ideias.

Assista aqui a apresentação do professor Macêdo sobre a plataforma Big Data Social.

Apoiadores

O encontro também teve o apoio da Escola de Gestão Pública do Estado do Ceará (EGPCE) a Universidade Federal do Ceará (UFC), a Fundação Cearense de Apoio ao Desenvolvimento Científico e Tecnológico (Funcap), o Laboratório de Inovação de Dados (ÍRIS), os Programas Cientistas Chefes, o Instituto de Pesquisa e Estratégia Econômica do Ceará (Ipece), a Secretaria da Proteção Social, Justiça Cidadania, Mulheres e Direitos Humanos, a Secretaria da Educação e a Vice-Governadoria do Ceará.

Fonte: Seplag CE

Categorias
Bolsas Ciência de Dados Vagas Abertas

Vagas Para Bolsistas Cientistas de Dados

Está aberta a seleção para Bolsista Desenvolvedor ou Pesquisador – Cientista de Dados para os laboratórios  Insight Lab ÍRIS

O Insight Lab é um laboratório de pesquisa aplicada em Ciência de Dados e Inteligência Artificial da Universidade Federal do Ceará, envolvendo mais de 100 pessoas, entre pesquisadores, alunos de graduação, mestrado, doutorado e especialistas associados. O ÍRIS é um Laboratório de Inovação e Dados na Casa Civil do Governo do Estado do Ceará, que visa acelerar soluções inovadoras para Transformação Digital do estado.

Você será responsável por

  • Atuar no desenvolvimento de pesquisas relacionadas à descoberta de conhecimento usando ciência de dados e algoritmos de aprendizagem de máquina.
  • Integrar dados de bases heterogêneas identificando possíveis inconsistências.
  • Escrever artigos científicos e experimentar diferentes algoritmos de ciência de dados.

Procuramos por pessoas

  • Altamente criativas e curiosas sobre os assuntos, produtos, serviços e pesquisas científicas do Insight Lab;
  • Que tenham habilidades interpessoais e de comunicação;
  • Que saibam trabalhar bem em equipe e com uma gama de pessoas criativas;
  • Que saibam gerenciar demandas de trabalho de forma eficaz e organizada;
  • Com paixão por criar, aprender e testar novas tecnologias;

Você deve possuir conhecimentos nas seguintes áreas

  • Ciência de Dados;
  • Aprendizado de Máquina;
  • Banco de Dados.

Carga-horária das atividades

  • Parcial: 20 horas semanais;
  • Integral: 40 horas semanais.

Etapas da seleção

  • Primeira fase: análise do histórico e currículo.
  • Segunda fase: entrevista via videoconferência para os classificados na primeira fase.

Após a análise do histórico e currículo, os candidatos selecionados para a segunda fase deverão participar da entrevista em dia e horário a definir. Os candidatos aprovados para a segunda fase receberão um e-mail informando o dia e horário da entrevista.

Modalidade de Contratação

Contrato de bolsista para graduandos, graduados, mestrandos ou doutorandos da Universidade Federal do Ceará.

Etapas da seleção

  • Preenchimento do formulário até: 26/04; 
  • Data de divulgação dos resultados da análise de currículo e histórico: 27/04;
  • Data das Entrevistas: 28/04;
  • Data do Resultado final: 29/04.

Clique aqui para acessar o formulário de inscrição.

Inscreva-se e ajude a divulgar esta seleção!

Categorias
Algoritmo Ciência de Dados Dados Machine Learning

Principais algoritmos de Machine Learning para você conhecer em 2022

Algoritmos de aprendizado de máquina utilizam parâmetros baseados em dados de treinamento – um subconjunto de dados que representa o conjunto maior. À medida que os dados de treinamento se expandem para representar o mundo de modo mais realista, o algoritmo calcula resultados mais precisos.

Diferentes algoritmos analisam dados de maneiras diferentes. Geralmente, eles são agrupados pelas técnicas de aprendizado de máquina para as quais são usados: aprendizado supervisionado, aprendizado não supervisionado e aprendizado de reforço. Os algoritmos usados com mais frequência usam a regressão e a classificação para prever categorias de destino, encontrar pontos de dados incomuns, prever valores e descobrir semelhanças.

Tendo isso em mente, vamos conhecer os 5 algoritmos de aprendizado de máquina mais importantes:

  1. Algoritmos de Ensemble Learning;
  2. Algoritmos explicativos;
  3. Algoritmos de agrupamento;
  4. Algoritmos de Redução de Dimensionalidade;
  5. Algoritmos de semelhança.

1. Algoritmos de Ensemble Learning (Random Forests, XGBoost, LightGBM, CatBoost)

O que são algoritmos de Ensemble Learning?

Para entender o que eles são, primeiro você precisa saber o que é o Método Ensemble. Esse método consiste no uso simultâneo de  vários modelos ​​para obter melhor desempenho do que um único modelo em si.

Conceitualmente, considere a seguinte analogia:

Imagem Terence Shin

Imagine a seguinte situação: em uma sala de aula é dado o mesmo problema de matemática para um único aluno e para um grupo de alunos. Nessa situação, o grupo de alunos pode resolver o problema de forma colaborativa, verificando as respostas uns dos outros e decidindo por unanimidade sobre uma única resposta. Por outro lado, um aluno, sozinho, não tem esse privilégio – ninguém mais está lá para colaborar ou questionar sua resposta.

E assim, a sala de aula com vários alunos é semelhante a um algoritmo de Ensemble com vários algoritmos menores trabalhando juntos para formular uma resposta final.

 

Saiba mais sobre o Ensemble Learning neste artigo.

Quando são úteis?

Os algoritmos de Ensemble Learning são mais úteis para problemas de regressão e classificação ou problemas de aprendizado supervisionado. Devido à sua natureza inerente, eles superam todos os algoritmos tradicionais de Machine Learning, como Naïve Bayes, máquinas vetoriais de suporte e árvores de decisão.

Algoritmos

2. Algoritmos Explicativos (Regressão Linear, Regressão Logística, SHAP, LIME)

O que são algoritmos explicativos?

Algoritmos explicativos permitem identificar e compreender variáveis ​​que possuem relação estatisticamente significativa com o resultado. Portanto, em vez de criar um modelo para prever valores da variável de resposta, podemos criar modelos explicativos para entender as relações entre as variáveis ​​no modelo.

Do ponto de vista da regressão, há muita ênfase nas variáveis estatisticamente significativas. Por quê? Quase sempre, você estará trabalhando com uma amostra de dados, que é um subconjunto de toda a população. Para tirar conclusões sobre uma população, dada uma amostra, é importante garantir que haja significância suficiente para fazer uma suposição confiável.

Imagem Terence Shin

Recentemente, também houve o surgimento de duas técnicas populares, SHAP e LIME, que são usadas para interpretar modelos de Machine Learning.

Quando são úteis?

Modelos explicativos são úteis quando você quer entender “por que” uma decisão foi tomada ou quando você quer entender “como” duas ou mais variáveis ​​estão relacionadas entre si.

Na prática, a capacidade de explicar o que seu modelo de Machine Learning faz é tão importante quanto o desempenho do próprio modelo. Se você não puder explicar como um modelo funciona, ninguém confiará nele e ninguém o usará.

Tipos de Algoritmos

Modelos explicativos tradicionais baseados em testes de hipóteses:

  • Regressão linear
  • Regressão Logística

Algoritmos para explicar modelos de Machine Learning:

3. Algoritmos de Agrupamento (k-Means, Agrupamento Hierárquico)

Imagem Terence Shin

O que são algoritmos de agrupamento?

Esses algoritmos são usados ​​para realizar análises de agrupamento, que é uma tarefa de aprendizado não supervisionada que envolve o agrupamento de dados. Ao contrário do aprendizado supervisionado, no qual a variável de destino é conhecida, não há variável de destino nas análises de agrupamento.

Quando são úteis?

O clustering é particularmente útil quando você deseja descobrir padrões e tendências naturais em seus dados. É muito comum que as análises de cluster sejam realizadas na fase de EDA, para descobrir mais informações sobre os dados.

Da mesma forma, o agrupamento permite identificar diferentes segmentos dentro de um dataset com base em diferentes variáveis. Um dos tipos mais comuns de segmentação por cluster é a segmentação de usuários/clientes.

 

Tipos de Algoritmos

Os dois algoritmos de agrupamento mais comuns são agrupamento k-means e agrupamento hierárquico, embora existam muitos mais:

4. Algoritmos de Redução de Dimensionalidade (PCA, LDA)

O que são algoritmos de redução de dimensionalidade?

Os algoritmos de redução de dimensionalidade referem-se a técnicas que reduzem o número de variáveis ​​de entrada (ou variáveis ​​de recursos) em um dataset. A redução de dimensionalidade é essencialmente usada para lidar com a maldição da dimensionalidade, um fenômeno que afirma, “à medida que a dimensionalidade (o número de variáveis ​​de entrada) aumenta, o volume do espaço cresce exponencialmente resultando em dados esparsos.

Quando são úteis?

As técnicas de redução de dimensionalidade são úteis em muitos casos:

  1. Eles são extremamente úteis quando você tem centenas ou até milhares de recursos em um dataset e precisa selecionar alguns.
  2. Eles são úteis quando seus modelos de ML estão super ajustando os dados, o que implica que você precisa reduzir o número de recursos de entrada.

Tipos de Algoritmos

Abaixo estão os dois algoritmos de redução de dimensionalidade mais comuns:

5. Algoritmos de similaridade (KNN, Distância Euclidiana, Cosseno, Levenshtein, Jaro-Winkler, SVD, etc…)

O que são algoritmos de similaridade?

Algoritmos de similaridade são aqueles que computam a similaridade de pares de registros/nós/pontos de dados/texto. Existem algoritmos de similaridade que comparam a distância entre dois pontos de dados, como a distância euclidiana, e também existem algoritmos de similaridade que calculam a similaridade de texto, como o Algoritmo Levenshtein.

Quando são úteis?

Esses algoritmos podem ser usados ​​em uma variedade de aplicações, mas são particularmente úteis para recomendação.

  • Quais artigos o Medium deve recomendar a você com base no que você leu anteriormente?
  • Qual música o Spotify deve recomendar com base nas músicas que você já gostou?
  • Quais produtos a Amazon deve recomendar com base no seu histórico de pedidos?

Estes são apenas alguns dos muitos exemplos em que algoritmos de similaridade e recomendação são usados ​​em nossas vidas cotidianas.

Tipos de Algoritmos

Abaixo está uma lista não exaustiva de alguns algoritmos de similaridade. Se você quiser ler sobre mais algoritmos de distância, confira este artigo. E se você também se interessar por algoritmos de similaridade de strings, leia este artigo.

Se você gostou desse conteúdo, acompanhe as próximas postagens do Insight Lab aqui e também nas redes sociais!

Fontes: Terence Shin e Azure.

 

 

Categorias
Biblioteca Ciência de Dados Machine Learning Python

Tutorial PyTorch: um guia rápido para você entender agora os fundamentos do PyTorch

O Python está bem estabelecido como a linguagem ideal para ciência de dados e aprendizado de máquina, e isso se deve em parte à biblioteca de ML de código aberto PyTorch.

A combinação do PyTorch com ferramentas poderosas de construção de rede neural profunda e fáceis de uso, torna-o uma escolha popular entre cientistas de dados. À medida que sua popularidade cresce, mais e mais empresas estão mudando do TensorFlow para o PyTorch, tornando-se agora o melhor momento para começar a usar o PyTorch.

Hoje, vamos te ajudar a entender o que torna o PyTorch tão popular, alguns fundamentos do uso dessa biblioteca e ajudá-lo a fazer seus primeiros modelos computacionais.

 

O que é o PyTorch?

O PyTorch é uma biblioteca Python de aprendizado de máquina de código aberto usada para implementações de aprendizado profundo, como visão computacional (usando TorchVision) e processamento de linguagem natural. Essa biblioteca foi desenvolvida pelo laboratório de pesquisa de IA do Facebook (FAIR) em 2016 e, desde então, é adotada nos campos da ciência de dados e ML.

O PyTorch torna o aprendizado de máquina intuitivo para aqueles que já estão familiarizados com Python e tem ótimos recursos como suporte OOP e gráficos de computação dinâmica.

Junto com a construção de redes neurais profundas, o PyTorch também é ótimo para cálculos matemáticos complexos por causa de sua aceleração de GPU. Esse recurso permite que o PyTorch use a GPU do seu computador para acelerar enormemente os cálculos.

Essa combinação de recursos exclusivos e a simplicidade incomparável do PyTorch o torna uma das bibliotecas de aprendizado profundo mais populares, competindo apenas com o TensorFlow pelo primeiro lugar.

 

Por que usar o PyTorch?

Antes do PyTorch, os desenvolvedores usavam cálculos avançados para encontrar as relações entre erros retro-propagados e peso do nó. Redes neurais mais profundas exigiam operações cada vez mais complicadas, o que restringia o aprendizado de máquina em escala e acessibilidade.

Agora, podemos usar bibliotecas de ML para completar automaticamente todo esse cálculo! As bibliotecas de ML podem computar redes de qualquer tamanho ou formato em questão de segundos, permitindo que mais desenvolvedores criem redes maiores e melhores.

O PyTorch leva essa acessibilidade um passo adiante, comportando-se como o Python padrão. Em vez de aprender uma nova sintaxe, você pode usar o conhecimento existente de Python para começar rapidamente. Além disso, você pode usar bibliotecas Python adicionais com PyTorch, como depuradores populares como o PyCharm.

 

PyTorch vs. TensorFlow

A principal diferença entre PyTorch e TensorFlow é a escolha entre simplicidade e desempenho: o PyTorch é mais fácil de aprender (especialmente para programadores Python), enquanto o TensorFlow tem uma curva de aprendizado, mas tem um desempenho melhor e é mais usado.

  • Popularidade: Atualmente, o TensorFlow é a ferramenta ideal para profissionais e pesquisadores do setor porque foi lançado 1 ano antes do PyTorch. No entanto, a taxa de usuários do PyTorch está crescendo mais rápido do que a do TensorFlow, sugerindo que o PyTorch pode em breve ser o mais popular.

  • Paralelismo de dados: O PyTorch inclui paralelismo de dados declarativo, em outras palavras, ele distribui automaticamente a carga de trabalho do processamento de dados em diferentes GPUs para acelerar o desempenho. O TensorFlow tem paralelismo, mas exige que você atribua o trabalho manualmente, o que costuma ser demorado e menos eficiente.

  • Gráficos dinâmicos vs. estáticos: PyTorch tem gráficos dinâmicos por padrão que respondem a novos dados imediatamente. O TensorFlow tem suporte limitado para gráficos dinâmicos usando o TensorFlow Fold, mas usa principalmente gráficos estáticos.

  • Integrações: PyTorch é bom para usar em projetos na AWS por causa de sua estreita conexão por meio do TorchServe. O TensorFlow está bem integrado com o Google Cloud e é adequado para aplicativos móveis devido ao uso da API Swift.

  • Visualização: O TensorFlow tem ferramentas de visualização mais robustas e oferece um controle mais preciso sobre as configurações do gráfico. A ferramenta de visualização Visdom da PyTorch ou outras bibliotecas de plotagem padrão, como matplotlib, não são tão completas quanto o TensorFlow, mas são mais fáceis de aprender.

 

Fundamentos do PyTorch

Tensores

Os tensores PyTorch são variáveis indexadas (arrays) multidimensionais usadas como base para todas as operações avançadas. Ao contrário dos tipos numéricos padrão, os tensores podem ser atribuídos para usar sua CPU ou GPU para acelerar as operações.

Eles são semelhantes a uma matriz NumPy n-dimensional e podem até ser convertidos em uma matriz NumPy em apenas uma única linha.

Tensores vêm em 5 tipos:

  • FloatTensor: 32-bit float
  • DoubleTensor: 64-bit float
  • HalfTensor: 16-bit float
  • IntTensor: 32-bit int
  • LongTensor: 64-bit int

Como acontece com todos os tipos numéricos, você deseja usar o menor tipo que atenda às suas necessidades para economizar memória. O PyTorch usa  FloatTensor como o tipo padrão para todos os tensores, mas você pode mudar isso usando:

torch.set_default_tensor_type(t)                           

Para inicializar dois FloatTensors:

import torch
# initializing tensors
a = torch.tensor(2)
b = torch.tensor(1)

Os tensores podem ser usados como outros tipos numéricos em operações matemáticas simples.    

# addition
    print(a+b)
    # subtraction
    print(b-a)
    # multiplication
    print(a*b)
    # division
    print(a/b)

Você também pode mover tensores para serem manipulados pela GPU usando cuda.

if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y

Como tensores são matrizes em PyTorch, você pode definir tensores para representar uma tabela de números:

ones_tensor = torch.ones((2, 2)) # tensor containing all ones
rand_tensor = torch.rand((2, 2)) # tensor containing random values

 

Aqui, estamos especificando que nosso tensor deve ser um quadrado 2×2. O quadrado é preenchido com todos os 1 ao usar a função ones() ou números aleatórios ao usar a função rand().

Redes neurais

PyTorch é comumente usado para construir redes neurais devido aos seus modelos de classificação excepcionais, como classificação de imagem ou redes neurais convolucionais (CNN).

As redes neurais são camadas de nós de dados conectados e ponderados. Cada camada permite que o modelo identifique a qual classificação os dados de entrada correspondem.

As redes neurais são tão boas quanto seu treinamento e, portanto, precisam de grandes conjuntos de dados e estruturas GAN, que geram dados de treinamento mais desafiadores com base naqueles já dominados pelo modelo.

O PyTorch define redes neurais usando o pacote torch.nn, que contém um conjunto de módulos para representar cada camada de uma rede.

Cada módulo recebe tensores de entrada e calcula os tensores de saída, que trabalham juntos para criar a rede. O pacote torch.nn também define funções de perda que usamos para treinar redes neurais.

As etapas para construir uma rede neural são:

  • Construção: Crie camadas de rede neural, configure parâmetros, estabeleça pesos e tendências.
  • Propagação direta: Calcule a saída prevista usando seus parâmetros. Meça o erro comparando a saída prevista e a real.
  • Retropropagação: Depois de encontrar o erro, tire a derivada da função de erro em termos dos parâmetros de nossa rede neural. A propagação para trás nos permite atualizar nossos parâmetros de peso.
  • Otimização iterativa: Minimize erros usando otimizadores que atualizam parâmetros por meio de iteração usando gradiente descendente.

Aqui está um exemplo de uma rede neural em PyTorch:

import torch
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 1 input image channel, 6 output channels, 3x3 square convolution
# kernel
self.conv1 = nn.Conv2d(1, 6, 3)
self.conv2 = nn.Conv2d(6, 16, 3)
# an affine operation: y = Wx + b
self.fc1 = nn.Linear(16 * 6 * 6, 120) # 6*6 from image dimension
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
# Max pooling over a (2, 2) window
x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
# If the size is a square you can only specify a single number
x = F.max_pool2d(F.relu(self.conv2(x)), 2)
x = x.view(-1, self.num_flat_features(x))

x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
def num_flat_features(self, x):
size = x.size()[1:] # all dimensions except the batch dimension
num_features = 1
for s in size:
num_features *= s
return num_features

net = Net()
print(net)

O nn.module designa que esta será uma rede neural e então a definimos com duas camadas conv2d, que realizam uma convolução 2D, e 3 camadas lineares, que realizam transformações lineares.

A seguir, definimos um método direto para descrever como fazer a propagação direta. Não precisamos definir um método de propagação para trás porque PyTorch inclui uma função backwards() por padrão.

Não se preocupe se isso parece confuso agora, depois vamos cobrir implementações mais simples do PyTorch neste tutorial.

Autograd

Autograd é um pacote PyTorch usado para calcular derivadas essenciais para operações de rede neural. Essas derivadas são chamadas de gradientes. Durante uma passagem para frente, o autograd registra todas as operações em um tensor habilitado para gradiente e cria um gráfico acíclico para encontrar a relação entre o tensor e todas as operações. Essa coleção de operações é chamada de diferenciação automática.

As folhas deste gráfico são tensores de entrada e as raízes são tensores de saída. O Autograd calcula o gradiente traçando o gráfico da raiz à folha e multiplicando cada gradiente usando a regra da cadeia.

Depois de calcular o gradiente, o valor da derivada é preenchido automaticamente como um atributo grad do tensor.

import torch
# pytorch tensor
x = torch.tensor(3.5, requires_grad=True)
# y is defined as a function of x

y = (x-1) * (x-2) * (x-3)
# work out gradients
y.backward()

Por padrão, requires_grad é definido como false e o PyTorch não rastreia gradientes. Especificar requires_grad como True durante a inicialização fará o PyTorch rastrear gradientes para este tensor em particular sempre que realizarmos alguma operação nele.

Este código olha para y e vê que ele veio de (x-1) * (x-2) * (x-3) e calcula automaticamente o gradiente dy / dx, 3x^2 – 12x + 11.

A instrução também calcula o valor numérico desse gradiente e o coloca dentro do tensor x ao lado do valor real de x, 3.5.

Juntos, o gradiente é 3 * (3.5 * 3.5) – 12 * (3.5) + 11 = 5.75.

                                                 Figura 01

 

 

 

 

 

 

 

 

 

Os gradientes se acumulam por padrão, o que pode influenciar o resultado se não for redefinido. Use model.zero_grad() para zerar novamente seu gráfico após cada gradiente.

 

Otimizadores

Os otimizadores permitem que você atualize os pesos e tendências dentro de um modelo para reduzir o erro. Isso permite que você edite como seu modelo funciona sem ter que refazer tudo.

Todos os otimizadores PyTorch estão contidos no pacote torch.optim, com cada esquema de otimização projetado para ser útil em situações específicas. O módulo torch.optim permite que você construa um esquema de otimização abstrato apenas passando uma lista de parâmetros. O PyTorch tem muitos otimizadores para escolher, o que significa que quase sempre há um que melhor se adapta às suas necessidades.

Por exemplo, podemos implementar o algoritmo de otimização comum, SGD (Stochastic Gradient Descent), para suavizar nossos dados.

import torch.optim as optim
params = torch.tensor([1.0, 0.0], requires_grad=True)
learning_rate = 1e-3
## SGD
optimizer = optim.SGD([params], lr=learning_rate)

Depois de atualizar o modelo, use optimizer.step() para dizer ao PyTorch para recalcular o modelo.

Sem usar otimizadores, precisaríamos atualizar manualmente os parâmetros do modelo, um por um, usando um loop:

for params in model.parameters():
params -= params.grad * learning_rate

No geral, os otimizadores economizam muito tempo, permitindo que você otimize a ponderação dos dados e altere o modelo sem refazê-lo.

 

Gráficos de computação com PyTorch

Para entender melhor o PyTorch e as redes neurais, é importante praticar com gráficos de computação. Esses gráficos são essencialmente uma versão simplificada de redes neurais com uma sequência de operações usadas para ver como a saída de um sistema é afetada pela entrada.

Em outras palavras, a entrada x é usada para encontrar y, que então é usada para encontrar a saída z.

                                                            Figura 02

 

 

 

 

 

 

 

Imagine que  y e z são calculados assim:

y = x^2

z = 2y + 3

No entanto, estamos interessados em como a saída z muda com a entrada x, então precisaremos fazer alguns cálculos:

dz/dx = (dz/dy) * (dy/dx)

dz/dx = 2.2x

dz/dx = 4x

Usando isso, podemos ver que a entrada x = 3,5 fará com que z = 14.

Saber definir cada tensor em termos dos outros (y e z em termos de x, z em termos de y, etc.) permite que o PyTorch construa uma imagem de como esses tensores estão conectados.

                                                          Figura 03

 

 

 

 

 

 

 

 

 

Esta imagem é chamada de gráfico computacional e pode nos ajudar a entender como o PyTorch funciona nos bastidores.

Usando esse gráfico, podemos ver como cada tensor será afetado por uma mudança em qualquer outro tensor. Esses relacionamentos são gradientes e são usados para atualizar uma rede neural durante o treinamento.

Esses gráficos são muito mais fáceis de fazer usando o PyTorch do que manualmente. Então, agora que entendemos o que está acontecendo nos bastidores, vamos tentar fazer esse gráfico.

import torch
# set up simple graph relating x, y and z
x = torch.tensor(3.5, requires_grad=True)
y = x*x
z = 2*y + 3
print("x: ", x)
print("y = x*x: ", y)
print("z= 2*y + 3: ", z)
# work out gradients
z.backward()
print("Working out gradients dz/dx")

# what is gradient at x = 3.5
print("Gradient at x = 3.5: ", x.grad)

Isso mostra que z = 14, exatamente como encontramos manualmente acima!

 

Mãos à obra com PyTorch: gráfico computacional de vários caminhos

Agora que você viu um gráfico computacional com um único conjunto relacional, vamos tentar um exemplo mais complexo.

Primeiro, defina dois tensores, a e b, para funcionar como nossas entradas. Certifique-se de definir requires_grad=True para que possamos fazer gradientes na linha.

import torch
# set up simple graph relating x, y and z
a = torch.tensor(3.0, requires_grad=True)
b = torch.tensor(2.0, requires_grad=True)

Em seguida, configure as relações entre nossa entrada e cada camada de nossa rede neural, x, y e z. Observe que z é definido em termos de x e y, enquanto x e y são definidos usando nossos valores de entrada a e b.

import torch
# set up simple graph relating x, y and z
a = torch.tensor(3.0, requires_grad=True)
b = torch.tensor(2.0, requires_grad=True)

x = 2*a + 3*b
y = 5*a*a + 3*b*b*b
z = 2*x + 3*y

Isso cria uma cadeia de relacionamentos que o PyTorch pode seguir para entender todos os relacionamentos entre os dados.

Agora podemos calcular o gradiente dz/da​​ seguindo o caminho de volta de z para  a.

Existem dois caminhos, um passando por x e outro por y. Você deve seguir os dois e adicionar as expressões de ambos os caminhos. Isso faz sentido porque ambos os caminhos de a a z contribuem para o valor de z.

Teríamos encontrado o mesmo resultado se tivéssemos calculado dz/da usando a regra da cadeia do cálculo.

                                               Figura 04

 

 

 

 

 

 

 

 

 

 

O primeiro caminho por x nos dá 2 * 2 e o segundo caminho por y nos dá 3 * 10a. Assim, a taxa na qual z varia com a é 4 + 30a.

Se a é 22, então dz/da​​ é 4+30∗2=64.

Podemos confirmar isso no PyTorch adicionando uma propagação para trás de z e pedindo o gradiente (ou derivado) de a.

import torch
# set up simple graph relating x, y and z
a = torch.tensor(2.0, requires_grad=True)
b = torch.tensor(1.0, requires_grad=True)
x = 2*a + 3*b
y = 5*a*a + 3*b*b*b
z = 2*x + 3*y
print("a: ", a)
print("b: ", b)
print("x: ", x)
print("y: ", y)
print("z: ", z)
# work out gradients
z.backward()
print("Working out gradient dz/da")
# what is gradient at a = 2.0
print("Gradient at a=2.0:", a.grad)

Próximos passos para o seu aprendizado

Parabéns, você concluiu seu início rápido de PyTorch e Redes Neurais! A conclusão de um gráfico computacional é uma parte essencial da compreensão de redes de aprendizado profundo.

À medida que você aprender habilidades e aplicativos avançados de aprendizado profundo, você desejará explorar:

  • Redes neurais complexas com otimização
  • Design de visualização
  • Treinamento com GANs

Vamos continuar aprendendo juntos!

Fonte: PyTorch tutorial: a quick guide for new learners

 

 

Categorias
Ciência de Dados GitHub Repositório

10 repositórios no GitHub que todo Cientistas de Dados precisa conhecer

O Insight preparou uma lista com 10 repositórios para ajudar você no desenvolvimento de suas tarefas em Ciência de Dados. O Github é uma plataforma gratuita que hospeda código fonte por meio do controle de versão (o Git) e disponibiliza diversos repositórios abertos feitos por interessados na área. 

A área de estudos em Ciência de Dados é muito ampla e no GitHub existem diversos repositórios com projetos muito úteis a quem se interessa por Ciência de Dados. E para tornar sua pesquisa mais fácil, nós separamos alguns para você. Confira:

 

1 –Graph4NLP 

Esta é uma biblioteca fácil de usar para P&D na interseção de Aprendizado Profundo em Gráficos e Processamento de Linguagem Natural. Ele fornece implementações completas de modelos de última geração para cientistas de dados e também interfaces flexíveis para construir modelos personalizados para pesquisadores e desenvolvedores com suporte de pipeline completo. 

Construído sobre bibliotecas com tempo de execução altamente otimizadas, incluindo DGL, esta biblioteca tem alta eficiência de execução e alta extensibilidade. Sua arquitetura é mostrada na figura a seguir, onde caixas com linhas tracejadas representam os recursos em desenvolvimento que consistem em quatro camadas diferentes: 

1) Camada de dados;

2) Camada de módulo; 

3) Camada de modelo;

4) Camada de aplicativo.

2 – Rasa 

Este é um framework de Machine Learning de código aberto para automatizar conversas baseadas em texto e voz. Com o Rasa, você pode criar assistentes contextuais para diversas plataformas:

  • Facebook Messenger;
  • Folga;
  • Hangouts do Google;
  • Equipes Webex;
  • Microsoft Bot Framework;
  • Rocket.Chat;
  • Mattermost;
  • Telegrama;
  • Twilio.

E também em assistentes de voz como: Alexa Skills e ações do Google Home.

Rasa ajuda a criar assistentes contextuais capazes de ter conversas em camadas com muitas idas e vindas. Para que um humano tenha uma troca significativa com um assistente virtual, este precisa ser capaz de usar o contexto para desenvolver coisas que foram discutidas anteriormente. O Rasa permite que você crie assistentes que podem fazer isso de uma forma escalonável.

 

3 Merlion 

Merlion é uma biblioteca Python para inteligência em séries temporais. Ela fornece uma estrutura de Machine Learning de ponta a ponta que inclui carregamento e transformação de dados, construção de modelos de treinamento, saídas de modelo de pós-processamento e avaliação de desempenho do modelo. Além disso, oferece suporte a várias tarefas de aprendizagem em séries temporais, incluindo previsão, detecção de anomalias e detecção de ponto de mudança para séries temporais univariadas e multivariadas. 

Esta biblioteca tem como objetivo fornecer aos engenheiros e pesquisadores uma solução completa para desenvolver rapidamente modelos para suas necessidades específicas em séries temporais e compará-los em vários datasets.

As principais características do Merlion são: carregamento e benchmarking de dados padronizados e facilidades extensíveis para uma ampla gama de datasets de previsão e detecção de anomalias.

 

4 – NitroFE

NitroFE é um mecanismo de engenharia de features do Python que fornece uma variedade de módulos projetados para salvar internamente valores com dependência do passado para fornecer cálculos contínuos.

Os atributos de indicadores, janelas e médias móveis dependem dos valores anteriores para cálculo. Por exemplo, uma janela móvel de tamanho 4 depende dos 4 valores anteriores. Embora a criação de tais atributos durante o treinamento seja bastante simples, levá-los para a produção se torna um desafio, pois exigiria que alguém salvasse externamente os valores anteriores e implementasse a lógica. A criação de indicadores torna-se ainda mais complexa, pois dependem de vários outros componentes de janela de tamanhos diferentes.

O NitroFE lida internamente com o salvamento de valores com dependência do passado e torna a criação de recursos descomplicada. Basta usar first_fit = True para seu ajuste inicial.

O NitroFe oferece uma rica variedade de atributos que são inspirados e traduzidos a partir de indicadores de mercado como oscilador de preço absoluto, oscilador de preço percentual, divergência de convergência da média móvel, entre outros.

Em estatística, uma média móvel é um cálculo para analisar pontos de dados criando uma série de médias de diferentes subconjuntos do dataset. O NitroFE oferece uma variedade de tipos de médias móveis para você utilizar.

 

5 – Aim

O Aim registra suas execuções de treinamento, possui uma bela interface para compará-los e uma API para consultá-los programaticamente. Essa é uma ferramenta de rastreamento de experimentos de IA auto-hospedada e de código aberto. Útil para inspecionar profundamente centenas de execuções de treinamento sensíveis a hiperparâmetros de uma só vez.

O SDK do Aim registra quantas métricas e parâmetros forem necessários para as execuções de treinamento e avaliação. Os usuários do Aim monitoram milhares de execuções de treinamento e, às vezes, mais de 100 métricas por execução com muitas etapas.

Integrado com as ferramentas:

 

6 – JupyterLab Desktop

O JupyterLab é a interface da próxima geração de usuários do Project Jupyter, oferecendo todos os blocos de construção familiares do Jupyter Notebook clássico (notebook, terminal, editor de texto, navegador de arquivos, saídas ricas, etc.) em uma interface de usuário flexível e poderosa. O JupyterLab eventualmente substituirá o Jupyter Notebook clássico.

Você pode organizar vários documentos e atividades lado a lado na área de trabalho usando guias e divisores. Documentos e atividades se integram, permitindo novos fluxos de trabalho para computação interativa, por exemplo:

  • Os consoles de código fornecem rascunhos temporários para a execução de código de forma interativa, com suporte total para uma saída valiosa. Um console de código pode ser vinculado a um kernel do notebook como um log de computação do notebook, por exemplo.
  • Documentos baseados em kernel permitem que o código em qualquer arquivo de texto (Markdown, Python, R, LaTeX, etc.) seja executado interativamente em qualquer kernel Jupyter.
  • As saídas das células do notebook podem ser espelhadas em sua própria guia, lado a lado com o notebook, permitindo painéis simples com controles interativos apoiados por um kernel.
  • Múltiplas visualizações de documentos com diferentes editores ou visualizadores permitem a edição ao vivo de documentos refletidos em outros visualizadores. Por exemplo, é fácil ter uma visualização ao vivo de Markdown, valores separados por delimitador ou documentos Vega / Vega-Lite.

A interface também oferece um modelo unificado para visualizar e manipular formatos de dados. O JupyterLab compreende muitos formatos de arquivo (imagens, CSV, JSON, Markdown, PDF, Vega, Vega-Lite, etc.) e também pode exibir uma saída rica do kernel nesses formatos. Consulte Arquivos e formatos de saída para obter mais informações.

 

7 – RIVER

River é uma biblioteca Python para Machine Learning (ML) on-line. É o resultado da fusão entre o creme e o scikit-multiflow. O objetivo do River é ser a biblioteca ideal para fazer ML em dados de streaming.

O Machine Learning geralmente é feito em uma configuração de batch, em que um modelo é ajustado a um dataset de uma só vez. Isso resulta em um modelo estático que precisa ser retreinado para aprender com os novos dados. Em muitos casos, isso não é eficiente e geralmente resulta em um problema técnico considerável. Na verdade, se você estiver usando um modelo em batch, precisará pensar em manter um conjunto de treinamento, monitorar o desempenho em tempo real, retreinar o modelo, etc.

Com o River, a abordagem é aprender continuamente com um fluxo de dados. Isso significa que o modelo processa uma observação por vez e pode, portanto, ser atualizado em tempo real. Permitindo assim, aprender com grandes datasets que não cabem na memória principal.

 

8 LIGHTNING FLASH 

Flash é uma coleção de tarefas para prototipagem rápida, definição de linha de base e ajuste fino de modelos de Deep Learning escaláveis, baseados no PyTorch Lightning.

Quer você seja novo no Deep Learning ou um pesquisador experiente, o Flash oferece uma experiência perfeita, desde experimentos básicos até pesquisas de ponta. Ele permite que você construa modelos sem ser sobrecarregado por todos os detalhes e, em seguida, substitua e experimente o Lightning para obter total flexibilidade.

Com o Flash, você pode criar sua própria imagem ou classificador de texto em algumas linhas de código, sem necessidade de matemática. Atualmente ele suporta: classificação Imagem, incorporação Imagem, classificação tabular, classificação de texto, sumarização, tradução entre outras.

As tarefas do Flash contêm todas as informações relevantes para resolver sua tarefa como: o número de rótulos de classe que você deseja prever, o número de colunas em seu dataset, bem como detalhes sobre a arquitetura do modelo usada, como função de perda, otimizadores, etc.

 

9 – PARLAI

ParlAI (pronuncia-se “par-lay”) é uma estrutura Python para compartilhar, treinar e testar modelos de diálogo, desde bate-papos de domínio aberto a diálogos orientados a tarefas e respostas visuais de perguntas.

Seu objetivo é fornecer aos pesquisadores: mais de 100 datasets populares disponíveis em um só lugar, com a mesma API, entre eles PersonaChat, DailyDialog, Assistente de Wikipedia, Empathetic Dialogues, SQuAD, MS MARCO, QuAC, HotpotQA, QACNN & QADailyMail, CBT, BookTest, bAbI Dialogue tasks, Ubuntu Dialoge, OpenSubtitles, Image Chat, VQA, VisDial e CLEVR.

ParlAI possui:

  • um amplo conjunto de modelos de referência de linhas de base de recuperação a transformadores.
  • uma gama de modelos pré-treinados prontos para usar;
  • integração perfeita do Amazon Mechanical Turk para coleta de dados e avaliação humana;
  • integração com o Facebook Messenger para conectar agentes com humanos em uma interface de bate-papo;
  • uma grande variedade de ajudantes para criar seus próprios agentes e treinar em várias tarefas com multitarefa;
  • multimodalidade, algumas tarefas usam texto e imagens.

 

10 – ZINGG

Os dados do mundo real contêm vários registros pertencentes ao mesmo cliente. Esses registros podem estar em um único sistema ou em vários e possuírem variações nos campos, o que torna difícil combiná-los, especialmente com volumes de dados crescentes. Isso prejudica a análise do cliente – estabelecer valor vitalício, programas de fidelidade ou canais de marketing é impossível quando os dados básicos não estão vinculados.

Nenhum algoritmo de IA para segmentação pode produzir resultados corretos quando há várias cópias do mesmo cliente escondidas nos dados. Nenhum data warehouse pode cumprir sua promessa se as tabelas de dimensão tiverem duplicatas.

Com uma pilha de dados e DataOps modernos, estabelecemos padrões para E e L em ELT para a construção de data warehouses, datalakes e deltalakes. No entanto, o T – preparar os dados para análises ainda precisa de muito esforço. Ferramentas modernas como DBT estão lidando com isso de forma ativa e bem-sucedida. O que também é necessário é uma maneira rápida e escalável de construir a única fonte de verdade das principais entidades de negócios pós-extração e pré ou pós-carregamento.

Com o Zingg, o engenheiro analítico e o cientista de dados podem integrar rapidamente silos de dados e construir visualizações unificadas em escala!

Obrigado por conferir nossa lista, esperamos que isso tenha contribuído para o conhecimento e crescimento com um cientista de dados!

Categorias
Ciência de Dados Dica de Leitura Python

10 artigos indispensáveis sobre Ciência de Dados para ler no Medium

A plataforma Medium é um dos melhores espaços na internet para estudantes de ciência de dados. Lá, existe uma diversidade enorme de profissionais compartilhando seus conhecimentos em artigos sobre programação, estatística, machine learning e outras áreas relacionadas ao data science.

São muitos os conteúdos para profissionais de dados no Medium, por isso, hoje destacamos 10 artigos dessa plataforma que trazem assuntos essenciais para qualquer cientista de dados. Esses conteúdos, como é próprio dos trabalhos com qualidade, contribuirão na sua carreira.

Mas antes de apresentarmos a lista, lembre que é possível ler todos os artigos no Medium de graça. Caso você não consiga acessar algum texto na plataforma porque atingiu o limite de conteúdos gratuitos, basta copiar o link do artigo e enviar como mensagem para você mesmo no Twitter. Pronto, agora é só clicar no link e ler.

Isso dito, vamos para os artigos!

 

01- Entendendo Rede Neural Convolucional (CNN) – Deep Learning          

As redes neurais convolucionais são amplamente usadas para, por exemplo, classificação de imagens, detecção de objetos e reconhecimento facial. Tendo essas como algumas de suas principais possibilidades de aplicação, fica entendido o porquê dos grandes esforços investidos no desenvolvimento da CNN.

E um artigo que te ajudará a entender como as máquinas decifram imagens é o “Compreensão da Rede Neural Convolucional (CNN) – Deep Learning”. Nele, o cientista de dados Prabhu Raghav explica alguns conceitos básicos de CNN e as etapas envolvidas neste processo.

Raghav organiza seu texto nestes seis tópicos, cada um deles dedicado a explicar uma das etapas envolvidas no processamento das redes neurais convolucionais: camada de convolução, strides, preenchimento, não linearidade (ReLU), camada de pooling e camada totalmente conectada. 

 

02- Entendendo self em Python – Código rápido

Depois de começar a usar o Python, não há como escapar da palavra “self “. Ela é vista nas definições de métodos e na inicialização de variáveis. Mas entender a ideia por trás disso parece um pouco problemático. E é nisto que este artigo te ajudará, a ter uma ideia intuitiva do que é o self e como você deve usá-lo.

Para isso, o autor, Ashan Priyadarshana, primeiro explora a criação de métodos de instância e classe em Python e, a partir deste quadro, aprofunda a explicação sobre o uso de self em Python.

Ao final do texto você terá conseguido entender por que deve sempre usar self como o primeiro parâmetro de métodos de instância em Python e o que realmente acontece nos bastidores quando chamamos um método de instância.

 

03- Aprendendo Python do zero

Um dos grandes motivos para aprender Python é certamente sua versatilidade; podemos usá-lo em diferentes áreas, como ciência de dados, desenvolvimento web e machine learning.

Diante disso, não é surpreendente a popularidade dessa linguagem de programação, que é adotada pelas também popularíssimas Google, Netflix, Quora, Pinterest e Spotify.

Se assim como essas gigantes, você também quer codificar em Python, o artigo “Aprendendo Python do zero” te ajudará. Nesse texto, por meio de exemplos de aplicação prática, você entenderá a teoria que estrutura o ambiente Python e também como se dão algumas de suas funções essenciais.

Veja o conteúdo básico sobre Python que você entenderá melhor com este artigo:

  • Como as variáveis em Python funcionam
  • Como funciona o controle de fluxo — condicionais
  • Como Python lida com loop, iteração, mais especificamente while e for
  • Como listas funcionam
  • Dicionários, uma estrutura de dados de chave-valor
  • Como iteramos sobre essas estruturas de dados
  • Objetos e Classes
  • Atributos como dados de um objeto
  • Métodos como comportamento de um objeto
  • Usando getters e setters em Python & decorator property
  • Encapsulamento: ocultando informações
  • Herança: herdando comportamentos e características.

 

04- Além do Pandas: Spark, Dask, Vaex e outras tecnologias de big data lutando frente a frente

Ao enfrentar um novo problema de ciência de dados, uma das primeiras perguntas a fazer é qual tecnologia usar. E foi pensando nisso que Jonathan Alexander, que acompanha intensamente o universo das ferramentas de big data, realizou testes para comparar a performance de tecnologias de conversão de dados e, assim, escolher a mais adequada para exploração, limpeza e conversão de dados tabulares. O objetivo é comparar as tecnologias em suas APIs, desempenho e facilidade de uso.

Alexander compartilhou os resultados e etapas desses testes em seu artigo no  Medium, “Beyond Pandas: Spark, Dask, Vaex and other big data technologies battling head to head”.

O conjunto de dados escolhidos para os testes foi o “Billion Row Taxi”, de 100 GB. As ferramentas selecionadas para comparação foram Dask DataFrame, PySpark, Koalas, Vaex, Turicreate e Datatable.

Acompanhe o artigo completo para entender como essas ferramentas se comportam em diferentes categorias, como complexidade de codificação e recursos. Conhecer as particularidades dessas tecnologias te ajudará a escolher a solução adequada para seus diferentes projetos de big data. 

 

05- Use o Docker e o Airflow para implantar seu fluxo de trabalho de Data Science

Este artigo busca ajudar cientistas de dados a aprimorar sua compreensão de como seu código seria executado em um ambiente de produção.

Assim, esta matéria é uma introdução, baseada no passo a passo para o uso do Airflow e do Docker, de como se pode articular a escrita de um código para o nível de produção. O autor explica os diferentes estágios em um fluxo de trabalho de data science e como projetar DAG e pipeline para um determinado problema. Além disso, também fornece uma visão geral de como usar a UI do Airflow.

 

06- Como analisar 100 GB de dados no seu laptop com Python

É cada vez mais comum os cientistas de dados enfrentarem conjuntos de dados de 50 GB ou mesmo 500 GB. Algo importante sobre trabalhar com esse tipo de conjunto de dados é que eles são pequenos o suficiente para caber no disco rígido de seu laptop comum, mas muito grandes para caber na RAM. Portanto, eles já são complicados de abrir e inspecionar, quanto mais de explorar ou analisar.

Neste artigo, Jovan Veljanoski apresenta uma nova abordagem para dados dessas dimensões: o Vaex. Essa é uma biblioteca de DataFrame de código aberto que permite a visualização, exploração e análise em conjuntos de dados tabulares que são tão grandes quanto seu disco rígido. Para fazer isso, o Vaex emprega conceitos como mapeamento de memória, algoritmos out-of-core eficientes e lazy evaluations.

Esta matéria de introdução ao Vaex te ajudará a aliviar alguns dos seus problemas com dados dessa proporção, pelo menos quando se trata de conjuntos de dados tabulares.

 

07- 5 operações em conjuntos Python que você precisa saber

Estruturas de dados são os blocos de construção para scripts Python. Eles mantêm ou contêm os dados de uma maneira específica para fazer com que os scripts funcionem com mais eficiência. Portanto, é crucial aprender a interagir com as estruturas de dados.

Os conjuntos (sets) são uma das principais estruturas de dados em Python. E neste artigo são apresentadas as características dos sets e examinadas cinco operações comumente usadas nos conjuntos.

 

08- Aprenda Ciência de Dados em 10 anos – 3 lições de Peter Norvig (diretor de aprendizado de máquina da Google)

A demanda industrial, acadêmica e governamental por profissionais de ciência de dados qualificados é enorme, e continua crescendo rapidamente. A contínua “corrida de dados” está, portanto, atraindo profissionais com diversas formações, como física, matemática, estatística, economia e engenharia.

O mercado tem urgência por mais cientistas de dados, mas a formação desses profissionais exige muito tempo e esforço.

Inspirado pelo texto de Peter Norving sobre quanto tempo leva para se tornar um especialista em programação, Benjamin Obi Tayo compartilha em “Teach Yourself Data Science in 10 Yearspassos essenciais para dominar os fundamentos da ciência de dados.

Ao longo dessa conversa, Benjamin Obi Tayo te ajudará a encontrar as respostas para duas perguntas que todos os iniciantes em data science devem se fazer:

  1. Quanto tempo leva para aprender os fundamentos da ciência de dados?
  2. Quais recursos usar para aprender ciência de dados?

De forma geral, este artigo vem para nos lembrar que para tornar-se um cientista de dados é preciso tempo, esforço, energia, paciência e comprometimento. Ou seja, cuidado com aquela conversa de “aprenda ciência de dados em quatro semanas”.

 

09- 6 práticas recomendadas para tornar suas funções Python mais legíveis

Você já olhou para uma função que escreveu um mês antes e achou difícil entendê-la em até 3 minutos? Se sim, é hora de refatorar seu código. Se você levar mais de 3 minutos para entender seu próprio código, imagine quanto tempo isto tomará de seus colegas.

Se você deseja que seu código seja reutilizável, ele deve ser legível.

E em seu artigo sobre como escrever código limpo em Python, a cientista de dados Khuyen Tran detalha seis práticas para tornar as funções mais legíveis e mais fáceis de detectar erros. Ela diz que as funções devem ser curtas, fazer uma única coisa, conter código com o mesmo nível de abstração, ter menos de quatro argumentos, não ter duplicação e usar nomes descritivos.

Acompanhe o texto completo para entender como utilizar essas práticas e escrever códigos python muito mais legíveis. 

 

10- Tipos de conjuntos de dados em ciência de dados, mineração de dados e aprendizado de máquina

Para tomar qualquer decisão sobre como lidar com um conjunto de dados, é preciso entender com qual tipo de dados você está trabalhando. E nisso Tarun Gupta te ajudará com seu artigo “Types of Data Sets in Data Science, Data Mining & Machine Learning”.

Antes de tratar especificamente de cada tipo de dataset, Gupta explica dimensionalidade, esparsidade e resolução, que são características gerais dos datasets. A partir disso, ele destrincha os três tipos de conjuntos de dados: dados de registro (record data), dados baseados em gráficos (graph-based data) e dados ordenados (ordered data).  

 

Esses foram os 10 artigos selecionados para nossa lista de hoje, mas não faltam excelentes conteúdos de data science no Medium, como é o caso das publicações que fazemos lá. Então, Acompanhe o Insight Lab no Medium.

E quais outros artigos te ajudaram a ser um cientista de dados melhor? Compartilha aqui nos comentários com a gente e nossos leitores. 

 

Categorias
Bolsas Ciência de Dados Front End Pesquisa Resultado

Resultado: Bolsistas Desenvolvedores Back End e Pesquisadores em Ciência de Dados

O Insight e o laboratório ÍRIS anunciam aqui os nomes de seus novos bolsistas desenvolvedores e pesquisadores:

Pesquisador em Ciência de Dados – Graduado
  • Daniel Jean Rodrigues Vasconcelos;
  • João Victor Barros da Silva.
Pesquisador em Ciência de Dados – Graduando
  • Ítalo Lima Dantas;
  • Guilherme Sales Fernandes.
Desenvolvedor Back End – Graduando
  • Matheus Henrique Rodrigues Barbosa;
  • Francisco Lucas Soares Batista.

Parabéns aos selecionados e obrigado a todos que participaram desta seleção, continuem acompanhando os próximos editais.

Categorias
AWS Ciência de Dados Dica de Leitura

Livro Prático para Construção de Projetos na Amazon Web Services: Data Science on AWS

Com este livro prático os profissionais de IA e Machine Learning (ML) aprenderão como construir e implantar com sucesso, projetos de Ciência de Dados na Amazon Web Services (AWS). Os serviços Amazon AI e ML unificam Ciência de Dados, Engenharia de Dados e desenvolvimento de softwares para ajudar a aprimorar suas habilidades. 

Este livro mostra como criar e executar pipelines na nuvem e, em seguida, integrar os resultados aos aplicativos em minutos, em vez de dias. Ao longo do livro, os autores Chris Fregly e Antje Barth demonstram como reduzir custos e melhorar o desempenho. Veja as possibilidades que esta leitura lhe trará:

  • Aplicação dos serviços Amazon AI e de ML a casos de uso do mundo real para Processamento de Linguagem Natural, visão computacional, detecção de fraude, dispositivos de conversação e muito mais;
  • Uso de ML automatizado (AutoML) para implementar um subconjunto específico de casos de uso com o Amazon SageMaker Autopilot;
  • Mergulhe profundamente no ciclo de vida de desenvolvimento de modelo completo para um caso de uso de processamento de Linguagem Natural (PLN) baseado em BERT, incluindo ingestão, análise de dados e muito mais;
  • Operações repetitivas de ML (MLOps) pipeline;
  • Explore ML em tempo real, detecção de anomalias e streaming, análises em fluxos de dados em tempo real com Amazon Kinesis e Amazon Managed Streaming para Apache Kafka (Amazon MSK);
  • Aprenda as melhores práticas de segurança para projetos e fluxos de trabalho de Ciência de Dados incluindo: AWS Identity and Access Management (IAM), autenticação, autorização, ingestão de dados e análise, treinamento de modelo e implantação.

 

Para quem é este livro 

Este livro é para qualquer pessoa que utiliza dados para tomar decisões de negócios. A orientação aqui ajudará analistas de dados, cientistas de dados, engenheiros de dados, engenheiros de ML, cientistas de pesquisa, desenvolvedores de aplicativos e engenheiros de DevOps a ampliar sua compreensão sobre Ciência de Dados e o nível de suas habilidades na nuvem.Para obter o máximo deste livro, é sugerido que os leitores tenham o seguinte conhecimento:

  • Conhecimento básico de computação em nuvem;
  • Habilidades básicas de programação com Python, R, Java / Scala ou SQL;
  • Familiaridade básica com ferramentas de Ciência de Dados, como Jupyter Notebook, Pandas, NumPy ou Scikit-learn.

 

Conheça os autores

Chris Fregly é um desenvolvedor, defensor de IA e Machine Learning na AWS com sede em San Francisco, Califórnia. Ele também é o fundador da série Meetup Advanced Spark, TensorFlow e KubeFlow, com sede em San Francisco. Anteriormente, Chris foi fundador da PipelineAI, onde trabalhou com muitas empresas e startups de IA para implantar continuamente Pipelines de ML / AI usando Apache Spark ML, Kubernetes, TensorFlow, Kubeflow, Amazon EKS e Amazon SageMaker. 

 

 

Antje Barth é uma desenvolvedora, defensora de IA e Machine Learning na AWS com sede em Düsseldorf, Alemanha. Ela também é co-fundadora do capítulo de Düsseldorf do Meetup Women in Big Data. Além de ML / AI, Antje é apaixonada por ajudar os desenvolvedores a aproveitar Big Data, contêineres e plataformas Kubernetes no contexto de IA e aprendizado de máquina. Antes de ingressar na AWS, Antje trabalhou na função de engenharia de soluções na MapR e Cisco

Fonte: Data Science on AWS

 

Este livro pareceu ser interessante para você? Deixe sua opinião nos comentários.

Categorias
Ciência de Dados Machine Learning

Usando Ciência de Dados para detectar anomalias em logs de sistema

Com o aumento significativo de dispositivos computacionais nos últimos anos, a quantidade de dados transmitidos e armazenados cresceu de forma alarmante. Diante disso, os logs de sistema são um artefato essencial para a aplicação das técnicas de detecção de anomalias, pois eles registram os estados e eventos significativos do sistema, ajudando a depurar os comportamentos que não são esperados.

Na indústria é comum registrar informações detalhadas do tempo de execução do software em logs, permitindo que os desenvolvedores e engenheiros de suporte analisem o comportamento do sistema. As ricas informações registradas pelos logs permitem que os desenvolvedores conduzam uma variedade de tarefas de gerenciamento de sistema, como diagnóstico de erros e travamentos, garantia de segurança da aplicação e detecção de anomalias.

A detecção de anomalias desempenha um papel muito importante em várias comunidades, como a de Ciência de Dados, Aprendizado de Máquina, Visão Computacional e Estatística, e é provavelmente o campo mais comum para conduzir uma análise formal e confiável em logs de sistema. Isso, porque é possível detectar coisas que deram errado na execução do processo.

Esse campo, que busca comportamentos anormais do sistema observando os dados de log, permite que os desenvolvedores localizem e resolvam problemas em tempo hábil. 

 

Conceitos básicos 

Quando uma instância de dados apresenta um comportamento diferente do que é esperado pelo sistema, ela passa a ser denominada anomalia. O objetivo da detecção de anomalias é determinar todas essas instâncias orientando-se por dados. As anomalias também são chamadas de anormalidades, novidades, desvios ou discrepâncias na literatura de mineração de dados e estatística. 

Os desvios podem ser causados por erros nos dados, mas às vezes são indicativos de um novo processo subjacente, anteriormente desconhecido. Agora, vamos conhecer os três tipos de classificação nas quais as anomalias são divididas: anomalias pontuais, anomalias contextuais e anomalias coletivas. 

  • A maioria dos trabalhos na literatura concentra-se em anomalias pontuais, que geralmente representam uma irregularidade ou desvio aleatório que pode não ter uma interpretação particular.
  • Uma anomalia contextual, também conhecida como anomalia condicional, é uma instância de dados que pode ser considerada anômala em algum contexto específico, por exemplo, o timestamp, um padrão de gasto de dinheiro, a ocorrência de eventos em logs do sistema ou qualquer recurso usado para descrever o comportamento normal.
  • Anomalias coletivas são um tipo de anomalia que, individualmente, aparece como instâncias normais, e quando observada em grupo, exibe características incomuns. 

 

Aplicações: anomalias robustas

A detecção de anomalias pode ser aplicada em muitos contextos, inclusive para identificar discrepâncias robustas. Nesse caso, temos o LogRobust, uma abordagem de detecção de anomalias baseada em log. 

O LogRobust busca uma detecção precisa e robusta, considerando que os dados de log do mundo real estão em constante mudança. Devido à instabilidade dos dados de log, a eficácia das abordagens de detecção de anomalias existentes é significativamente afetada.

A arquitetura do LogRobust adota a rede neural baseada em atenção Bi-LSTM para lidar com as sequências de log instáveis. Já que os eventos de log diferentes têm impactos distintos no resultado da classificação, o mecanismo de atenção foi apresentado ao modelo Bi-LSTM para atribuir pesos diferentes aos eventos de log. Além disso, o impacto do ruído dos dados também pode ser reduzido, pois eventos com ruído tendem a ter menos importância e são mais propensos a receber pouca atenção. 

 

Aplicações: análise de sentimentos

A detecção de anomalias também pode ser utilizada no contexto de análise de sentimentos.

Em seu trabalho, Hudan Studiawan (2020) propõe uma nova técnica de análise de sentimentos baseada em aprendizado profundo para verificar se há atividades anômalas em logs de sistema operacional (SO). Esse problema é considerado análise de sentimento de duas classes: sentimentos positivos e negativos.

Studiawan usou uma técnica de Deep Learning que fornece alta precisão e flexibilidade em relação a dados não vistos anteriormente. Especificamente, é usado um modelo Gated Recurrent Unit para detectar o sentimento nas mensagens de log do sistema operacional.

Em logs do sistema operacional da vida real, o número de mensagens negativas é muito menor do que as positivas, gerando o desbalanceamento de classe. E para alcançar um equilíbrio entre as duas classes de sentimento é usado o método de Tomek link. O equilíbrio produzirá um modelo de aprendizado profundo melhor; portanto, capaz de detectar com mais precisão atividades anômalas.

Para concluir

Por fim, os métodos não-supervisionados são amplamente utilizados quando não se tem dados rotulados. Vários frameworks de Deep Learning que abordam desafios na detecção de anomalias não-supervisionadas são propostos e mostrados para produzir um desempenho de estado da arte.

Kengo Tajiri (2020) propõe um método de monitoramento de sistemas TIC (Tecnologia da Informação e Comunicação) para detecção contínua de anomalias, considerando que as dimensões dos vetores mudam frequentemente. Os métodos de detecção de anomalias baseados em Autoencoders, que treinam um modelo para descrever a “normalidade”, são promissores para monitorar o estado dos sistemas.

Há uma grande necessidade de desenvolver técnicas de detecção de anomalias de uso geral e personalizadas para problemas. Essas metodologias devem ser adaptadas para acompanhar as últimas mudanças na tecnologia que podem resultar em novas vulnerabilidades em vários sistemas. As técnicas de detecção de anomalias precisam ser eficientes o suficiente para capturar a pequena quantidade de outliers em grandes fluxos de dados e também inteligentes o suficiente para detectar anomalias em períodos de tempo curtos ou longos.

Se você quiser continuar aprendendo sobre o tema, confira aqui embaixo as indicações bibliográficas que selecionamos.

Até o próximo tema!

 

 

Referências Bibliográficas

  • AGGARWAL, Charu C. Neural networks and deep learning. Springer, v. 10, p. 978-3, 2018.
  • CHALAPATHY, Raghavendra; CHAWLA, Sanjay. Deep learning for anomaly detection: A survey. arXiv preprint arXiv:1901.03407, 2019.
  • CHANDOLA, Varun; BANERJEE, Arindam; KUMAR, Vipin. Anomaly detection: A survey. ACM computing surveys (CSUR), v. 41, n. 3, p. 1-58, 2009.
  • MA, Rongjun. Anomaly detection for Linux system log. 2020. Dissertação de Mestrado. University of Twente.
  • PANG, Guansong. Deep Learning for Anomaly Detection: A Review. ACM Computing Surveys (CSUR), v. 54, n. 2, p. 1-38, 2021.
  • SONG, Xiuyao. Conditional anomaly detection. IEEE Transactions on knowledge and Data Engineering, v. 19, n. 5, p. 631-645, 2007.
  • STUDIAWAN, Hudan; SOHEL, Ferdous; PAYNE, Christian. Anomaly detection in operating system logs with deep Learning-based sentiment analysis. IEEE Transactions on Dependable and Secure Computing, 2020.
  • TAJIRI, Kengo et al. Dividing Deep Learning Model for Continuous Anomaly Detection of Inconsistent ICT Systems. In: NOMS 2020-2020 IEEE/IFIP Network Operations and Management Symposium. IEEE, 2020. p. 1-5.
  • ZHANG, Xu et al. Robust log-based anomaly detection on unstable log data. In: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2019. p. 807-817.
  • ZHU, Jieming et al. Tools and benchmarks for automated log parsing. In: 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP). IEEE, 2019. p. 121-130.

 

 

Categorias
Ciência de Dados Dica de Leitura Machine Learning Tecnologia

Um livro para entender o desenvolvimento de Machine Learning Pipelines

Todo mundo está falando sobre aprendizado de máquina, de uma disciplina acadêmica, ele tornou-se uma das tecnologias mais interessantes em qualquer parte. Incluindo desde a compreensão dos feeds de vídeo em carros autônomos até a personalização de medicamentos, essa tecnologia está se tornando importante em todos os setores. Por isso, te convidamos a conhecer profundamente o livro “Building Machine Learning Pipelines: Automating Model Life Cycles with TensorFlow”.


Escrito pela dupla de autores
Hannes Hapke e Catherine Nelson, esse livro busca mostrar como construir um sistema de machine learning padrão que é automatizado e resulta em modelos reproduzíveis.

 

O que são Machine Learning Pipelines?

Os pipelines de aprendizado de máquina implementam e formalizam processos para acelerar, reutilizar, gerenciar e implantar modelos de aprendizado de máquina. O objetivo deste livro é contribuir para a padronização de projetos de aprendizado de máquina, conduzindo os leitores por todo um pipeline de aprendizado de máquina, de ponta a ponta.


Um pipeline automatizado e reproduzível reduz o esforço necessário para implantar um modelo, assim, o pipeline deve incluir etapas que:

  • Criem versões de seus dados de maneira eficaz e dê início a uma nova execução de treinamento de modelo
  • Validem os dados recebidos e verifique a variação de dados
  • Pré-processem os dados de maneira eficiente para o treinamento e validação do seu modelo
  • Treinem seus modelos de aprendizado de máquina de maneira eficaz
  • Acompanhem o treinamento do seu modelo
  • Analisem e valide seus modelos treinados e ajustados
  • Implantem o modelo validado
  • Dimensionem o modelo implantado
  • Capturem novos dados de treinamento e modelem as métricas de desempenho com ciclos de feedback

 

O livro

Neste guia prático, Hannes Hapke e Catherine Nelson orientam você nas etapas de automação de um pipeline de aprendizado de máquina usando o ecossistema TensorFlow. Você aprenderá as técnicas e ferramentas que reduzirão o tempo de implantação, assim, você poderá se concentrar no desenvolvimento de novos modelos em vez de manter sistemas legados.


Building Machine Learning Pipelines” é voltado para cientistas de dados e engenheiros de machine learning, mas também conversa com gerentes de projetos de data science e engenheiros DevOps. Para a leitura da obra, você deve estar confortável com os conceitos básicos de aprendizado de máquina e familiarizado com pelo menos uma estrutura de aprendizado de máquina (por exemplo, PyTorch, TensorFlow, Keras). Os exemplos de aprendizado de máquina neste livro são baseados no TensorFlow e Keras, mas os conceitos principais podem ser aplicados a qualquer estrutura.


Este livro te ajudará a:

  • Entender as etapas para criar um pipeline de aprendizado de máquina
  • Criar seu pipeline usando componentes do TensorFlow Extended
  • Orquestrar seu pipeline de aprendizado de máquina com Apache Beam, Apache Airflow e Kubeflow Pipelines
  • Trabalhar com dados usando o TensorFlow Data Validation e TensorFlow Transform
  • Analisar um modelo em detalhes usando o TensorFlow Model Analysis
  • Examinar a equidade e o viés no desempenho do seu modelo
  • Implantar modelos com TensorFlow Serving ou TensorFlow Lite para dispositivos móveis
  • Aprender técnicas de aprendizado de máquina que preservam a privacidade

 

Os autores      

Hannes Hapke

Hannes Hapke é um cientista de dados sênior do Concur Labs no SAP Concur e mestre em Engenharia Elétrica pela Oregon State University.  Antes de ingressar no SAP Concur, Hannes resolveu problemas de infraestrutura de aprendizado de máquina em vários setores, incluindo saúde, varejo, recrutamento e energias renováveis. Além disso, Hannes é co-autor de uma publicação sobre processamento de linguagem natural e aprendizado profundo e apresentou-se em várias conferências sobre aprendizado profundo e Python. 

 

Catherine Nelson

Catherine Nelson também é cientista de dados sênior do Concur Labs no SAP Concur e tem PhD em geofísica pela Durham University e mestrado em Ciências da Terra pela Oxford University. Suas principais áreas de foco vão desde ML explainability e análise de modelos até o ML com preservação da privacidade. Enquanto trabalhou como geofísica, ela estudou vulcões antigos e explorou petróleo na Groenlândia.

 

Gostou da nossa dica? Então, agora é hora de alinhar o livro, sua vontade de aprender, seu tempo e praticar bastante para expandir suas habilidades em machine learning.