Categorias
Inteligência Artificial Machine Learning Processamento de Linguagem Natural

PLN – Processamento de Linguagem Natural para Iniciantes

PLN ou Processamento de Linguagem Natural é a forma como as máquinas entendem e lidam com as linguagens humanas. Esta técnica lida com dados não estruturados de texto e embora seja difícil de dominá-la é fácil de entender seus conceitos.

Cientes disso, devemos entender que a disponibilidade e geração de dados são complexidades envolvidas, em geral, com qualquer tipo de caso de uso de Machine Learning (ML). Mas o PLN é o campo onde esse problema é relativamente menos pronunciado, pois há muitos dados de texto ao nosso redor. Os e-mails que escrevemos, os comentários que postamos, os blogs que escrevemos são alguns exemplos.

Tipos:

1) Reconhecimento de entidade nomeada 

O processo de extração de entidades de nomeadas no texto, nome de pessoas, países, organizações, extrai informações úteis que podem ser usadas para vários fins como: classificação, recomendação, análise de sentimento, entre outros. 

Um chatbot é o exemplo de uso mais comum. A consulta do usuário é entendida por meio das entidades no texto e respondida de acordo com elas.

2) Resumo do texto 

É onde os conceitos-chave do texto são extraídos e o resumo parafraseado é construído em torno dele. Isso pode ser útil em resultados de pesquisas extensos.

3) Tradução 

Conversão de texto de uma linguagem para outra. O tradutor do Google é o exemplo mais comum que temos.

4) Fala em texto

Converte voz em dados de texto, sendo o exemplo mais comum os assistentes em nossos smartphones.

5) NLU 

Natural Language Understanding é uma forma de entender as palavras e frases no que diz respeito ao contexto. Eles são úteis na análise de sentimento dos comentários de usuários e consumidores. Modelos NLU são comumente usados na criação de chatbot.

6) NLG 

Natural Language Generation vai além do processamento da máquina ou da compreensão do texto. Essa é a capacidade das máquinas de escrever conteúdo por si mesmas. Uma rede profunda, usando Transformers GTP-3, escreveu este artigo.

Iniciando

Os insights sobre como o Machine Learning lida com dados não estruturados de texto são apresentados por meio de um exemplo básico de classificação de texto.

Entrada:

Uma coluna de ‘texto’ com comentários de revisão por usuário. Uma coluna de ‘rótulo’ com um sinalizador para indicar se é um comentário positivo ou negativo.

Saída:

A tarefa é classificar os comentários com base no sentimento como positivos ou negativos.

Etapas de pré-processamento

Um pré-processamento será feito para transformar os dados em algoritmos de ML. Como o texto não pode ser tratado diretamente por máquinas, ele é convertido em números. Dessa forma, os dados não estruturados são convertidos em dados estruturados.

NLTK é uma biblioteca Python que pode ajudar você nos casos de uso de PLN e atende muito bem às necessidades de pré-processamento.

1) Remoção de palavras irrelevantes

Palavras irrelevantes ocorrem com frequência e não acrescentam muito significado ao texto. Os mecanismos de pesquisa também são programados para ignorar essas palavras. Podemos citar como exemplo as palavras: de, o, isso, tem, seu, o quê, etc.

A remoção dessas palavras ajuda o código a se concentrar nas principais palavras-chave do texto que adicionam mais contexto.

 

Código de explicação:

import nltk
nltk.download(‘stopwords’)
from nltk.corpus import stopwords
stop = stopwords.words(‘english’)
print(stop)

 

Saída:

[‘i’, ‘me’, ‘my’, ‘myself’, ‘we’, ‘our’, ‘ours’, ‘ourselves’, ‘you’, “you’re”, “you’ve”, “you’ll”, “you’d”, ‘your’, ‘yours’,…]

 

Código de implementação:

Aplicando a remoção de palavras irrelevantes a um data frame do Pandas com uma coluna de ‘texto’.

input_df[‘text’] = input_df[‘text’].apply(lambda x: “ “.join(x for x in x.split() if x not in stop))

 

2) Remoção de emojis e caracteres especiais

Os comentários do usuário são carregados de emojis e caracteres especiais. Eles são representados como caracteres Unicode no texto, denotados como U +, variando de U + 0000 a U + 10FFFF.

Código de referência:

 

import re
def remove_emoji(text):
        emoji_pattern = re.compile("["
        u"U0001F600-U0001F64F"  # emoticons
        u"U0001F300-U0001F5FF"  # symbols & pictographs
        u"U0001F680-U0001F6FF"  # transport & map symbols
        u"U0001F1E0-U0001F1FF"  # flags (iOS)
        u"U0001F1F2-U0001F1F4"  # Macau flag
        u"U0001F1E6-U0001F1FF"  # flags
        u"U0001F600-U0001F64F"
        u"U00002702-U000027B0"
        u"U000024C2-U0001F251"
        u"U0001f926-U0001f937"
        u"U0001F1F2"
        u"U0001F1F4"
        u"U0001F620"
        u"u200d"
        u"u2640-u2642"
        "]+", flags=re.UNICODE)

return emoji_pattern.sub(r”, text)
sample_text= ‘That was very funny ?. Have a lovely day ? ‘
remove_emoji(sample_text)

Saída:
‘That was very funny . Have a lovely day ‘

Código de implementação:

input_df[‘text’] = input_df[‘text’].apply(lambda x: remove_emoji(x))

3)  Flexão

Flexão é a modificação de uma palavra para expressar diferentes categorias gramaticais como tempo verbal, voz, aspecto, pessoa, número, gênero e humor. Por exemplo, as derivações de ‘venha’ são ‘veio’, ‘vem’. Para obter o melhor resultado, as flexões de uma palavra devem ser tratadas da mesma maneira. Para lidar com isso usamos a lematização.

A lematização resolve as palavras em sua forma de dicionário (conhecida como lema), para a qual requer dicionários detalhados nos quais o algoritmo pode pesquisar e vincular palavras aos lemas correspondentes.

Por exemplo, as palavras “correr”, “corre” e “correu” são todas formas da palavra “correr”, portanto “correr” é o lema de todas as palavras anteriores.

    a) Stemming

Stemming é uma abordagem baseada em regras que converte as palavras em sua palavra raiz (radical) para remover a flexão sem se preocupar com o contexto da palavra na frase. Isso é usado quando o significado da palavra não é importante. A palavra raiz pode ser uma palavra sem sentido em si mesma.

 

Código de explicação:

from nltk.stem import PorterStemmer</span> <span style="font-weight: 400;" data-mce-style="font-weight: 400;">porter = PorterStemmer()

 

Amostra 1:

print(porter.stem('trembling'),
porter.stem('tremble'),
porter.stem('trembly'))

 

Saída:

trembl trembl trembl

 

Amostra 2:

print(porter.stem('study'),
porter.stem('studying'),
porter.stem('studies'))

 

Saída:

studi studi studi

 

Código de implementação

def stemming_text(text):
    stem_words = [porter.stem(w) for w in w_tokenizer.tokenize(text)]
    return ‘ ‘.join(stem_words)
input_df[‘text’] = input_df[‘text’].apply(lambda x: stemming_text(x))

 

    b) Lematização

A lematização, ao contrário de Stemming, reduz as palavras flexionadas adequadamente, garantindo que a palavra raiz (lema) pertence ao idioma. Embora a lematização seja mais lenta em comparação com a Stemming, ela considera o contexto da palavra levando em consideração a palavra anterior, o que resulta em melhor precisão.

 

Código de explicação:

w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
lemmatizer = nltk.stem.WordNetLemmatizer()
def lemmatize_text(text):
    lemma_words = [lemmatizer.lemmatize(w) for w in w_tokenizer.tokenize(text)]
    return ‘ ‘.join(lemma_words)
print(lemmatize_text('study'),
     lemmatize_text('studying') ,
     lemmatize_text('studies'))

 

Saída:

study studying study

print(lemmatize_text('trembling'),
     lemmatize_text('tremble') ,
     lemmatize_text('trembly'))

 

Saída:

trembling tremble trembly

 

Código de implementação:

input_df[‘text’] = input_df[‘text’].apply(lemmatize_text)

 

4) Vetorizador

Esta é a etapa em que as palavras são convertidas em números, que podem ser processados ​​pelos algoritmos. Esses números resultantes estão na forma de vetores, daí o nome.

    1) Modelo Bag of words

Este é o mais básico dos vetorizadores. O vetor formado contém palavras no texto e sua frequência. É como se as palavras fossem colocadas em um saco. A ordem das palavras não é mantida.

 

Código de explicação:

from sklearn.feature_extraction.text import CountVectorizer
bagOwords = CountVectorizer()
print(bagOwords.fit_transform(text).toarray())
print('Features:', bagOwords.get_feature_names())

 

Entrada:

text = [“I like the product very much. The quality is very good.”,

“The product is very very good”,

“Broken product delivered”,

“The product is good, but overpriced product”,

“The product is not good”]

 

Saída:

array([[0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 2, 2],

[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1],

[1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],

[0, 1, 0, 1, 1, 0, 0, 0, 1, 2, 0, 1, 0],

[0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0]])

Features: [‘broken’, ‘but’, ‘delivered’, ‘good’, ‘is’, ‘like’, ‘much’, ‘not’, ‘overpriced’, ‘product’, ‘quality’, ‘the’, ‘very’]

 

Os vetores dos textos 2 e 5 (ao contrário do que se espera), por serem de sentidos opostos, não diferem tanto. A matriz retornada é esparsa.

    2) n-gramas

Ao contrário da abordagem do saco de palavras, a abordagem de n-gram depende da ordem das palavras para derivar seu contexto. O n-gram é uma sequência contígua de “n” itens em um texto, portanto, o conjunto de recursos criado com o recurso n-grams terá um número n de palavras consecutivas como recursos. O valor para “n” pode ser fornecido como um intervalo.

 

Código de explicação:

count_vec = CountVectorizer(analyzer='word', ngram_range=(1, 2))
print('Features:', count_vec.get_feature_names())
print(count_vec.fit_transform(text).toarray())

 

Saída:

[[0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 2 1 1 2 1 1]

[0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0]

[1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0]

[0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 2 0 1 0 0 0 1 1 0 0 0 0]

[0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0]]

Features: [‘broken’, ‘broken product’, ‘but’, ‘but overpriced’, ‘delivered’, ‘good‘, ‘good but’, ‘is’, ‘is good’, ‘is not’, ‘is very’, ‘like’, ‘like the’, ‘much’, ‘much the’, ‘not’, ‘not good’, ‘overpriced’, ‘overpriced product’, ‘product’, ‘product delivered’, ‘product is’, ‘product very’, ‘quality’, ‘quality is’, ‘the’, ‘the product’, ‘the quality’, ‘very’, ‘very good’, ‘very much’]

 

    3) TF-IDF

Só porque uma palavra aparece com alta frequência não significa que a palavra acrescenta um efeito significativo sobre o sentimento que procuramos. A palavra pode ser comum a todos os textos de amostra. Por exemplo, a palavra ‘product’ em nossa amostra é redundante e não fornece muitas informações relacionadas ao sentimento. Isso apenas aumenta a duração do recurso.

Frequência do termo (TF) – é a frequência das palavras em um texto de amostra.

Frequência inversa do documento (IDF) – destaca a frequência das palavras em outros textos de amostra. Os recursos são raros ou comuns nos textos de exemplo é a principal preocupação aqui.

Quando usamos ambos os TF-IDF juntos (TF * IDF), as palavras de alta frequência em um texto de exemplo que tem baixa ocorrência em outros textos de exemplo recebem maior importância.

 

Código de explicação

from sklearn.feature_extraction.text import TfidfVectorizer
tf_idf_vec = TfidfVectorizer(use_idf=True,
                        smooth_idf=False,
                        ngram_range=(1,1))
print(tf_idf_vec.fit_transform(text).toarray())
print('Features:', tf_idf_vec.get_feature_names())

 

Saída

No terceiro texto de exemplo, as palavras de valores ‘broken e delivered‘ são raras em todos os textos e recebem pontuação mais alta do que ‘product, que é uma palavra recorrente.

 

Código de implementação      

tfidf_vec = TfidfVectorizer(use_idf=True)
                    tfidf_vec.fit(input_df[‘text’])
                    tfidf_result = tfidf_vec.transform(input_df[‘text’])

 

5) Desequilíbrio de classe

Geralmente, esse tipo de cenário terá um desequilíbrio de classe. Os dados de texto incluíam mais casos de sentimento positivo do que negativo. A maneira mais simples de lidar com o desequilíbrio de classe é aumentando os dados com cópias exatas da classe minoritária (neste caso, os cenários de sentimento negativo). Essa técnica é chamada de sobreamostragem.

Algoritmo de Machine Learning

Após a conclusão das etapas de processamento, os dados estão prontos para serem passados ​​para um algoritmo de ML para ajuste e previsão. Este é um processo iterativo no qual um algoritmo adequado é escolhido e o ajuste do hiperparâmetro é feito.

Um ponto a ser observado aqui é que, aparentemente, como qualquer outro problema de ML, as etapas de pré-processamento devem ser tratadas após a divisão de treinamento e teste.

 

Código de implementação

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score
rnd_mdl = RandomForestClassifier()
rnd_mdl.fit(tfidf_result, input_df[‘label’])
#Using the fitted model to predict from the test data
#test_df is the test data and tfidf_result_test is the preprocessed test text data
output_test_pred = rnd_mdl.predict(tfidf_result_test)
#finding f1 score for the generated model 
test_f1_score = f1_score(test_df[‘label’], output_test_pred)

 

Biblioteca pré-construída

Há uma biblioteca pré-construída em NLTK que pontua os dados de texto com base no sentimento. Ele não precisa dessas etapas de pré-processamento. É denominado nltk.sentiment.SentimentAnalyzer.

Finalizando

Existem muitos modelos avançados de Deep Learning pré-treinados disponíveis para PLN. O pré-processamento envolvido, ao usar essas redes profundas, varia consideravelmente da abordagem de ML fornecida aqui.

Esta é uma introdução simples ao interessante mundo da PLN! É um vasto espaço em constante evolução!

Traduzido de analyticsvidhya.com

Categorias
Bolsas Iniciação Científica Vagas

Vagas para Bolsista de Graduação: Iniciação Científica

Oportunidade para estudantes dos cursos de Tecnologia da Informação. O Projeto de Transformação Digital do Governo do Ceará, por meio do Insight Lab, está com inscrições abertas para bolsistas de graduação. O estudante pode estar cursando qualquer semestre e estar matriculado em qualquer instituição de nível superior, desde que seja residente no Ceará. O empenho em se aprofundar em Computação em Nuvem e Serverless Computing será o requisito mais relevante aqui.

Bolsista Iniciação Científica

Público

Aluno de graduação em Cursos de Tecnologia da Informação (TI).

Responsável por

Atuar na pesquisa de soluções inovadoras para desenvolvimento e implantação de Microserviços em Arquiteturas Serverless.

Habilidades

Conhecimento básico em Computação em Nuvem.

Modalidade de Contratação

Alunos de graduação: bolsa FUNCAP com uma carga horária de 20h semanais (R$ 800,00).

Etapas da seleção
Inscrições até: 17/08
Entrevistas de análise de currículo e resultado (previsão) 18/08
Envio da solução do desafio 26/08
Entrevista técnica 27/08
Resultado da entrevista técnica (previsão) 28/08
Desafio

O desafio será divulgado no dia 18/08. Sua resolução envolverá as tecnologias AWS Lambda e o framework AWS Serverless Application Model. Os estudantes que fizerem a inscrição e forem selecionados para a segunda fase receberão uma conta temporária na AWS para resolução do desafio.

Formulário de inscrição

Acesse o formulário de inscrição para registrar seus dados, enviar seu currículo e histórico escolar.

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
Celetista Governo Líder Técnico Vagas

Vaga para Líder Técnico – Analista II  

Venha trabalhar como Líder Técnico da Secretaria da Proteção Social, Justiça, Cidadania, Mulheres e Direitos Humanos no Projeto Observatório (Oi Sol). Projeto desenvolvido em parceria com o Laboratório Insight da Universidade Federal do Ceará e o Laboratório ÍRIS de Dados e Inovação do estado do Ceará.

O Projeto Observatório (Oi Sol) visa construir uma plataforma para recebimento de denúncias de violência contra mulheres, crianças e adolescentes e encaminhar às instituições competentes do estado do Ceará para que tomem medidas para a proteção das vítimas. A plataforma permitirá a visualização de analíticos a partir dos dados das denúncias e encaminhamentos realizados pelas Instituições. 

Você será responsável por 

  • estudar tecnologias que se adequem às necessidades do produto;
  • contribuir para a tomada de decisões tecnológicas; 
  • atuar na arquitetura e desenvolvimento da plataforma do Observatório (Oi Sol); 
  • liderar squads de desenvolvimento.

Procuramos por pessoas 

  • com paixão por criar, aprender e testar novas tecnologias; 
  • altamente criativas e curiosas sobre os assuntos, produtos e serviços; 
  • 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.

Competências e Habilidades em 

  • UML;
  • Padrões de Projeto;
  • Microsserviços;
  • Javascript;
  • React JS;
  • TypeScript;
  • HTML;
  • CSS;
  • Java;
  • Spring Boot;
  • Git, Gitlab;
  • PostgreSQL;
  • Docker.

É desejável conhecer 

  • Spark;
  • Airflow; 
  • Kafka.

Modalidade de Contratação 

Celetista (40h semanais): R$ 7.332,89 + Vale Alimentação + Plano de Saúde.

Etapas da seleção 

Envio de currículo: até 27/07
Resultados da análise de currículo: 28/07
Entrevistas a partir de: 28/07

Submissão de candidatura

 Envie seu currículo para sergio.brilhante@sps.ce.gov.br, ticianalc@insightlab.ufc.br e humberto.bezerra@sps.ce.gov.br com o assunto [VAGA LÍDER TÉCNICO].

Acompanhe nossas postagens também nas redes sociais. Alguma dúvida? Comente aqui embaixo, estamos à disposição para ajudá-lo(a)!

Categorias
Bolsas Front End Vagas Abertas

Vagas Para Bolsistas: Desenvolvedor Front End Júnior

Se você é Desenvolvedor Júnior na área de Front End então fique atento a esta oportunidade! O Insight, por meio do Projeto de Transformação Digital do Governo do Ceará, está com bolsas disponíveis para alunos de graduação. Venha colaborar com a gente, conheça os requisitos da função.

Responsável por:

Atuar no desenvolvimento de soluções e aplicações web.

Habilidades:

  • Javascript;
  • Typescript;
  • HTML;
  • CSS;
  • React Js;
  • Redux;
  • Git;
  • Gitlab.

Desejável: 

  • Next Js;
  • Node Js;
  • MongoDB;
  • PostgreSQL;
  • Spring Boot;
  • Docker.

Diferencial: 

  • Ant Design;
  • Noções de UX/UI.

 

Modalidade de Contratação

Alunos de graduação: bolsa FUNCAP com uma carga horária de 20h semanais (R$ 800,00).

 

Etapas da seleção:

Inscrições Até 28/07
Entrevistas técnicas 29/07
Resultado da entrevista técnica 30/07 (previsão)

 

Acesse o formulário para preencher seus dados e realizar sua inscrição.

 

? Desafio de Programação

O presente desafio consiste na criação de um Dashboard para Indicadores de Processo, na qual o usuário pode utilizar filtros para busca de informações.

 

Especificações do sistema

Cada candidato deverá implementar o front-end da aplicação informada utilizando o framework React.js. A interface a ser construída deverá possibilitar todas as interações possíveis por meio de dados previamente cadastrados, simulando a aplicação. São elas:

  • busca por processo através de uso de filtros;
  • ordenação de processos;
  • plotar gráficos de acordo com os dados.

A estrutura da aplicação a ser desenvolvida já foi desenhada por nossa equipe. Não se limite ao design e usabilidade apresentado, caso seja do seu interesse interpretá-los à sua maneira, isso será bem apreciado durante a avaliação.

Serão avaliadas questões relacionadas à qualidade da interface, como:

  • responsividade;
  • robustez;
  • harmonização dos elementos;
  • usabilidade;
  • criatividade;
  • boas práticas ao gerenciar URLs, histórico, estados da aplicação entre outros artefatos do contexto de navegadores.

Além do código implementado, como:

  • organização;
  • legibilidade;
  • modularização/componentização;
  • boas práticas e padrões;
  • uso das APIs recentes do React.js;
  • gerenciamento de versões com Git.

 

Diferencial e Dicas
  1. A linguagem poderá ser Javascript ou Typescript. O uso de outros frameworks e bibliotecas Javascript ou CSS, assim como de pré-processadores CSS para outros fins também é opcional.
  2. Não perca tempo criando componentes do zero, a biblioteca de componentes Ant Design fornece um conjunto de componentes que você pode utilizar para construir a aplicação. Exemplos: formulários, botões, listas, tabelas, etc.
  3. O uso dos componentes do CE GOV UI poderá ajudar na estruturação do sistema e facilitará no uso de componentes.

 

Entregas via formulário:
  • URL do repositório Git, como GitHub e GitLab, contendo o código-fonte da aplicação.
  • URL da aplicação Web em execução em serviço online com Heroku, GitPod, Vercel etc. (Opcional, mas recomendável).
  • Link para um vídeo de demonstração da sua solução (hospedado em plataformas como YouTube, Vimeo, etc). Duração máxima do vídeo: 10 minutos.

Acompanhe as postagens do Insight para saber mais atualizações!

Categorias
Algoritmo Deep Learning Reconhecimento de imagem Redes Neurais

Aprenda a Criar e Treinar Uma Rede Neural Convolucional (CNN)

As redes neurais convolucionais (CNN) se utilizam de uma arquitetura especial que é particularmente bem adequada para classificar imagens. O uso dessa arquitetura torna as redes convolucionais rápidas de treinar, o que é vantajoso para trabalhar com redes profundas. Hoje, a CNN ,ou alguma variante próxima, é usada na maioria dos modelos para reconhecimento de imagem.

Neste artigo, vamos entender como criar e treinar uma (CNN) simples para classificar dígitos manuscritos de um conjunto de dados popular.

Figura 1: dataset MNIST ( imagem:en.wikipedia.org/wiki/MNIST_database) 

Pré-requisito

Embora cada etapa seja detalhada neste tutorial, certamente quem já possui algum conhecimento teórico sobre o funcionamento da CNN será beneficiado. Além disso, é bom ter algum conhecimento prévio do TensorFlow2 , mas não é necessário.

Rede Neural Convolucional

Ao longo dos anos, o CNN se popularizou como técnica para a classificação de imagens para visões computacionais e tem sido usada nos domínios da saúde. Isso indica que o CNN é um modelo de deep learning confiável para uma previsão automatizada de ponta a ponta. Ele essencialmente extrai recursos ‘úteis’ de uma entrada fornecida automaticamente, facilitando nosso trabalho.

Figura 2: Processo end to end de CNN

Um modelo que utiliza CNN consiste, em suas versões mais simples, em três camadas principais: Camada Convolucional, Camada de Pooling e Camada Totalmente Conectada.

  1. Camada Convolucional: Esta camada extrai recursos de alto nível dos dados de entrada e os repassa para a próxima camada na forma de mapas de recursos.
  2. Camada de Pooling: É usada para reduzir as dimensões dos dados aplicando camadas de agrupamento (Pooling). Essa camada recebe cada saída do mapa de recursos da camada convolucional e prepara um mapa de características condensadas.
  3. Camada Totalmente Conectada: Finalmente, a tarefa de classificação é feita pela camada totalmente conectada. As pontuações de probabilidade são calculadas para cada rótulo de classe por uma função de ativação popularmente chamada de função softmax.

Dataset

O dataset que está sendo usado aqui é o de classificação de dígitos MNIST. O Keras é uma API de deep learning escrita em Python e ele traz consigo o MNIST. Este conjunto de dados consiste em 60.000 imagens de treinamento e 10.000 imagens de teste, o que o torna ideal para quem precisa experimentar o reconhecimento de padrões, pois ele é executado em apenas um minuto.

Quando a API do Keras é chamada, quatro valores são retornados. São eles: 

x_train,

y_train, 

x_test, 

y_test . 

Não se preocupe, você será orientado(a) sobre isso.

Carregando o dataset

A linguagem usada aqui é Python. Vamos usar o Google Colab para escrever e executar o código. Você também pode escolher um Jupyter notebook. o Google Colab foi escolhido aqui por fornecer acesso fácil a notebooks a qualquer hora e em qualquer lugar. Também é possível conectar um notebook Colab a um repositório GitHub. Você pode aprender mais sobre o Google Colab aqui.

Além disso, o código usado neste tutorial está disponível neste repositório Github. Portanto, se você se sentir confuso em alguma fase, verifique esse repositório. Para manter este tutorial relevante para todos, explicaremos o código mais crítico.

  1. Crie e nomeie um notebook.
  2. Depois de carregar as bibliotecas necessárias, carregue o dataset MNIST conforme mostrado abaixo:
(X_train,y_train),(X_test,y_test)=keras.datasets.mnist.load_data()

Como discutimos anteriormente, este conjunto de dados retorna quatro valores e na mesma ordem mencionada acima: x_train, y_train, x_test e y_test , que são representações para datasets divididos em treinamento e teste.

Muito bem! Você acabou de carregar seu dataset e está pronto para passar para a próxima etapa, que é processar os dados.

Processando o dataset

Os dados devem ser processados e limpos para melhorar sua qualidade. Para que a CNN aprenda é preciso que o dataset não contenha nenhum valor nulo, que tenha todos os dados numéricos e que seja normalizado. Então, aqui vamos realizar algumas etapas para garantir que tudo esteja perfeitamente adequado para um modelo CNN aprender. Daqui em diante, até criarmos o modelo, trabalharemos apenas no dataset de treinamento. 

Se você escrever X_train[0], obterá a 0ª imagem com valores entre 0-255, representando a intensidade da cor (preto ao branco). A imagem é uma matriz bidimensional. É claro, não saberemos o que o dígito manuscrito X_train[0] representa, para saber isso escreva y_train[0] e você obterá 5 como saída. Isso significa que a 0ª imagem deste dataset de treinamento representa o número 5. 

Vamos normalizar este dataset de treinamento e de teste, colocando os valores entre 0 e 1 conforme mostrado abaixo:

X_train=X_train/255
X_test=X_test/255

 

Em seguida, precisamos redimensionar a matriz para se adequar a API do Keras. Ela espera que cada entrada tenha 3 dimensões: uma pra linha, uma para a coluna e uma para a cor. Normalmente, essa 3ª dimensão é usada quando trabalhamos com imagens coloridas e temos múltiplos canais de cor (ex: RGB). Porém, como trabalhamos com imagens monocromáticas, essa terceira dimensão terá apenas um elemento.

X_train=X_train.reshape(-1,28,28,1) #conjunto de treinamento
X_test=X_test.reshape(-1,28,28,1) #conjunto de teste

Agora que está tudo em ordem, é hora de criarmos uma rede neural convolucional.

Criação e treinamento de uma CNN

Vamos criar um modelo CNN usando a biblioteca TensorFlow. O modelo é criado da seguinte maneira:

convolutional_neural_network=models.Sequential([  
layers.Conv2D(filters=25,kernel_size=(3,3),activation='relu',input_shape=(28,28,1)),
layers.MaxPooling2D((2,2)),
layers.Conv2D(filters=64,kernel_size=(3,3),activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(filters=64,kernel_size=(3,3),activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(64,activation='relu'),
layers.Dense(10,activation='softmax')]
)

 

Reserve algum tempo para permitir que todo o código seja absorvido. É importante que você entenda cada parte dele. No modelo CNN criado acima, há uma camada CNN de entrada, seguida por duas camadas CNN ocultas, uma camada densa oculta e, finalmente, uma camada densa de saída. Em termos mais simples, as funções de ativação são responsáveis ​​por tomar decisões de passar o que foi identificado adiante ou não. Em uma rede neural profunda como a CNN, existem muitos neurônios e, com base nas funções de ativação, os neurônios disparam e a rede avança. Se você não entende muito sobre as funções de ativação use ‘relu’, pois ele é mais popular devido sua versatilidade.

Uma vez que o modelo foi criado, é hora de compilá-lo e treiná- lo . Durante o processo de treino, o modelo percorrerá o dataset e aprenderá os padrões. Ele treinará quantas vezes for definido (as chamadas épocas). Em nosso exemplo, definimos 10 épocas. Durante o processo, o modelo da CNN vai aprender e também cometer erros. Para cada erro (previsões erradas) que o modelo comete, há uma penalidade (ou um custo) e isso é representado no valor da perda (loss) para cada época (veja o GIF abaixo). Resumindo, o modelo deve gerar o mínimo de perda e a maior precisão possível no final da última época.

 

Modelo de treinamento |  classificação de dígitos manuscritos CNN

GIF 1: Treinamento CNN e as precisões aprimoradas durante cada época

Fazendo previsões

Para avaliar o modelo CNN assim criado, você pode executar:

convolutional_neural_network.evaluate(X_test,y_test)

É hora de usar nosso conjunto de testes para ver o desempenho do modelo CNN.

y_predicted_by_model=convolutional_neural_network.predict(X_test)

O código acima usará o modelo convolutional_neural_network para fazer previsões para o conjunto de teste e armazená-lo no dataframe y_predicted_by_model. Para cada um dos 10 dígitos possíveis, uma pontuação de probabilidade será calculada. A classe com a pontuação de probabilidade mais alta é a previsão feita pelo modelo. Por exemplo, se você quiser ver qual é o dígito na primeira linha do conjunto de teste:

y_predicted_by_model[0]

A saída será mais ou menos assim:

array([3.4887790e-09,3.4696127e-06,7.7428967e-07,2.9782784e-08,6.3373392e-08,6.1983449e-08,7.4500317e-10,9.9999511e-01,4.2418694e-08,3.8616824e-07],dtype=float32)

Como é realmente difícil identificar o rótulo da classe de saída com a pontuação de probabilidade mais alta, vamos escrever outro código:

np.argmax(y_predicted[0])

E com isso, você obterá um dos dez dígitos como saída (0 a 9). Para saber a representação direta do dígito, aplique o resultado do argmax nas classes do modelo.

Em suma

Após aprender como um dataset é dividido em treinamento e teste, utilizando o MNIST para fazer previsões de dígitos manuscritos de 0 a 9, criamos um modelo CNN treinado no dataset de treinamento. Por fim, com o modelo treinado, as previsões são realizadas.

Incentivamos você a experimentar por conta própria a ajustar os hiperparâmetros do modelo na expectativa de saber se eles são capazes de alcançar precisões mais altas ou não. Se você quer aprender sempre mais, acompanhe esta aula de Redes Neurais Convolucionais. Ficamos felizes em colaborar com a sua aprendizagem!

Referências

  1. Equipe, K. (nd). Documentação Keras: conjunto de dados de classificação de dígitos MNIST. Keras. https://keras.io/api/datasets/mnist/.
  2. manav_m. (2021, 1º de maio). CNN para Aprendizado Profundo: Redes Neurais Convolucionais (CNN). Analytics Vidhya. https://www.analyticsvidhya.com/blog/2021/05/convolutional-neural-networks-cnn/.
  3. YouTube. (2020, 14 de outubro). Explicação simples da rede neural convolucional | Tutorial de aprendizado profundo 23 (Tensorflow e Python). YouTube. https://www.youtube.com/watch?v=zfiSAzpy9NM&list=PLeo1K3hjS3uvCeTYTeyfe0-rN5r8zn9rw&index=61. 

 

Artigo traduzido Analytics Vidhya : Classification of Handwritten Digits Using CNN.

Fonte de pesquisa: Deep Learning Book

 

Categorias
Bolsas Full Stack Não categorizado Vagas

Vagas para bolsistas: Desenvolvedor Full Stack especialista em interoperabilidade

O Insight Lab está com vagas para bolsistas de graduação e graduados para atuarem no Projeto de Aceleração da Transformação Digital do Governo do Ceará. Os selecionados irão trabalhar como desenvolvedor para soluções de Interoperabilidade e receberão bolsa Funcap. Saiba os requisitos para se candidatar.

Desenvolvedor Full Stack especialista em Interoperabilidade
Responsável por:
  • estudar tecnologias que se adequem às necessidades dos produtos;
  • contribuir para a tomada de decisões tecnológicas;
  • atuar na arquitetura e desenvolvimento de plataformas;
  • liderar squads de desenvolvimento;
  • desenvolver soluções para integrar e interoperar sistemas das secretarias do Estado do Ceará.
Competências e habilidades:
  • API Rest;
  • Docker;
  • Desenvolvimento Web.
Desejável conhecimento em: 
  • Arquitetura Microsserviços;
  • Serverless.

 

?Modalidade de Contratação 

Bolsa de graduando FUNCAP (20h semanais): R$ 800,00

Bolsa de graduado FUNCAP (40h semanais): R$ 2.500,00

 

?Etapas da seleção
Inscrições até 12/07
Entrevista e análise de currículo 13/07
Resultado Parcial 14/07
Envio do desafio 14 a 28/07
Entrevista técnica 29/07
Resultado final 30/07

 

?Formulário

Acesse aqui o link do formulário para enviar seus dados, histórico escolar e currículo Vitae.

Siga o Insight Lab nas redes sociais para acompanhar mais novidades ou entrar em contato conosco.

 

Categorias
Análise de Dados Dataframes Pandas

10 funções mais usadas para manipular dataframes no Pandas

O Pandas é uma das bibliotecas mais utilizadas para analisar dados em Python, além de ser uma ferramenta poderosa, flexível e confiável para muitos analistas de dados. Existem algumas funções conhecidas, bem como técnicas não tão formais que podem tornar a vida mais fácil para qualquer analista de dados, seja ele um profissional ou um entusiasta.

Neste artigo, serão discutidas algumas funções úteis e técnicas significativas, todas  com exemplos. Com certeza você já usou algumas dessas funções com frequência, mas elas podem não ser tão familiares para todos. No geral, você enriquecerá suas habilidades em Análise de Dados.

No decorrer deste artigo você verá as seguintes funções:

  • unique e nunique 
  • describe
  • sort_values
  • value_counts
  • isnull 
  • fillna 
  • groupby 
  • map e seu uso para codificação categórica
  • apply e lambda
  • pivot
Vamos começar

Antes de usar as funções mencionadas acima, você pode criar um dataframe usando o dataset Kaggle Titanic, você pode baixá-lo aqui . Dessa forma, uma variedade de opções pode ser explorada. Como alternativa, qualquer conjunto de dados de código aberto pode ser usado para a prática.

 

1.  unique e nunique

A função unique no Pandas retorna uma lista dos elementos únicos com base na ocorrência. Esta função é mais rápida do que a unique do NumPy e também inclui valores NaN. Isso é particularmente útil para verificar os diferentes valores em um campo categórico.

data['Embarked'].unique()

Saída:

array (['S', 'C', 'Q', nan], dtype = objeto)

A função Nunique, por outro lado, conta os valores distintos das colunas. Os valores NaN podem ser ignorados. Isso mostra apenas o número de categorias diferentes presentes em uma coluna de um dataframe.

data['Embarked'].nunique()

Saída: 3

 

2. describe

Esta função mostra estatísticas descritivas, como média, desvio padrão, máximo, mínimo e outras tendências centrais, além da forma da distribuição. Isso exclui os valores NaN do resumo. Isso é útil para se ter uma ideia sobre a distribuição dos campos de dados e outliers, se houver. O percentil da saída pode ser personalizado mencionando a faixa de percentis no parâmetro da função.

data.describe()

data.describe()

 

Saída:

3. sort_values

Esta função altera a ordem dos valores em uma coluna classificando-a. Portanto, podemos usar isso para mostrar o dataset de acordo com nossa necessidade, classificando em ordem crescente ou decrescente.

Podemos definir o parâmetro “ascending” verdadeiro ou falso, que por padrão é verdadeiro. Também podemos alterar a classificação por índice ou coluna definindo o parâmetro “eixo” 0 ou 1. Além disso, podemos classificar várias colunas mencionando-as em uma lista, por exemplo:

(e.g. data.sort_values(by=[‘Age’,’Pclass’, ascending=[False,True])
data.sort_values(by='Age',ascending=False)

Saída:

 

4. value_counts

Esta função retorna o valor da contagem para cada item exclusivo presente na coluna. Os valores são exibidos em ordem decrescente para que o elemento mais frequente venha primeiro. Isso exclui os valores nulos. Aqui, veremos o número de homens e mulheres a bordo em diferentes classes, chamando a função value_counts () da seguinte maneira:

data[['Pclass','Sex']].value_counts()

 

Saída:

5. isnull 

Esta função descobre se há algum valor ausente presente em um objeto do tipo array. Esta função retorna valores booleanos após verificar os valores ausentes. Estamos criando uma lista com um valor nulo e quando ela é passada pela função isnull (), ela dá saída com uma lista booleana.

Isso também pode ser útil quando verificamos se há valores ausentes em um grande dataframe. Podemos calcular o número total de valores ausentes de uma coluna adicionando a função sum () ao final da função isnull (). Aqui, pegamos nosso dataset  e verificamos para cada coluna se há algum valor ausente e mostramos o mesmo.

 

#tirando cada coluna do dataframe

forcolindata.columns:

#verificando se há algum nulo na coluna

ifdata[col].isnull().sum()&amp;amp;gt;0:

#se for nulo, número total de nulos nas colunas armazenadas

total_null=data[col].isnull().sum() print('Column{}hastotalnull{},i.e.{}%'.format(col,total_null,round(total_null*100/len(data),2)))

 

Saída:

 

6. fillna

Esta função é usada para preencher os valores ausentes com base no método especificado. Fillna usa parâmetros como valor (um valor que é usado para preencher o valor ausente) e método (como bfill, ffill, etc). Em nosso conjunto de dados de exemplo, o campo “Idade” tem um total de 177 valores ausentes. Vamos preenchê-lo com a mediana de “Idade” usando a função fillna ().

 

data['Age'].fillna(value=data['Age'].median(),inplace=True)
data['Age'].isnull().sum()

Saída: 0

O parâmetro “valor” de fillna () também pode ser obtido de outro groupby complexo ou dataframe ou dicionário.

 

7. groupby 

A função Pandas groupby( ) é usada para dividir os dados e ajudar a aplicação de alguma função a eles e no final combinar o resultado para outro objeto. Frequentemente precisamos dividir os dados e aplicar alguma agregação (por exemplo, soma, média, contagem, etc.) ou transformá-los (por exemplo, para preencher valores ausentes ou padronizar dados), a função groupby é útil nessas situações.

 

# queremos ver para cada campo de gênero máximo, mínimo, média e mediana de idade

data.groupby(['Sex'])['Age'].agg(['max','min','mean','median'])

Saída:

 

8. map 

A função map ( ) no Pandas é usada para mapear séries e substituir valores de uma série por outro valor associado a um dicionário, série ou função. Esta função é frequentemente usada para substituir valores de uma coluna de um dataframe ou uma série, mas lembre-se que todos os valores têm de ser do mesmo tipo!

Em nosso dataset, suponha que queremos converter o campo de gênero em um campo binário, ou seja, substituir “masculino” pelo valor 1 e feminino pelo valor 0. O mesmo pode ser feito facilmente da seguinte maneira:

data['Sex'].head()

 

Saída:

#crie um dicionário para substituir os valores
gender = {'male':1, 'female':0}
#chame a função map e passe o dicionário para mapear os valores da coluna
data['Sex'].map(gender).head()

 

Saída:

 

9. apply

A função apply() no Pandas certamente é uma das funções mais versáteis entre todas. Nós podemos utilizar uma função apply() e ela se aplicará a todo o dataframe (ou a uma série particular). Isso ajuda a modificar os dados de acordo com a condição de uma maneira muito flexível. Vamos ver um exemplo simples, aqui temos um dataframe e uma das colunas tem marcas que queremos converter em uma porcentagem.

df=pd.DataFrame({'Name':['X','Y','Z'],'Marks':[150,120,175]})
df

 

Saída:

def percentage_marks(x):
return x/2
df['Marks'].apply(percentage_marks)

 

Saída:

Aplicar função também pode ser usada com função anônima ou função lambda. Suponha que tenhamos que converter um campo contínuo como “idade” em uma coluna de faixa etária diferente ou converter um campo categórico em um campo codificado por rótulo e, em seguida, aplicar a função junto com a função lambda é muito útil nessas situações.

data['Age_bin']=data['Age'].apply(lambda x : 1 if x&amp;amp;lt;=30 else
(2 if x&amp;amp;gt;30 and x&amp;amp;lt;=45 else&lt;/pre&gt;
&amp;amp;nbsp;(3 if x&amp;amp;gt;45 and x&amp;amp;lt;=60 else 4)))

 

A coluna Age_bin será criada da seguinte forma

 

10. pivot

A função pivot remodela o dataset por valores de índice ou coluna. Essa função é basicamente semelhante à tabela dinâmica. Ele usa o valor exclusivo de uma coluna para formar um índice de um dataset. Ao contrário da função groupby, o pivot não oferece suporte à agregação de dados. Veja exemplo abaixo:

df=pd.DataFrame({'Class':['1st','2nd','3rd','1st','2nd','3rd'],'Section':&lt;/pre&gt;
&lt;pre&gt;['A','A','A','B','B','B'],'Gr':[1,2,3,4,5,6]})&lt;/pre&gt;
&lt;pre&gt;df

 

Saída:

 

df.pivot(index='Class',columns='Section',values='Gr')

 

Saída:

__  __  __

 

Esperamos que estas funções contribuam ainda mais na sua Análise de Dados, especialmente para você que está iniciando no  mundo do Python e Pandas. Acompanhe o nosso blog para saber sempre mais!

Artigo original, Analytics Vidhya

 

Categorias
Big Data Ciência de Dados Dados

Conheça as joias do infinito na Ciência de Dados

Quais são as joias do infinito da Ciência de Dados? As seis joias do universo Marvel Comics você já deve conhecer: Espaço, Mente, Alma, Realidade, Tempo e Poder.  Quando usadas em conjunto, dão ao seu portador poderes que o torna capaz de controlar todo o universo!

Mas como seriam estes poderosos artefatos usados na Data Science (DS)? Você pode unir diversos poderes para dominar o universo dos dados e assim se tornar um super Cientista de Dados!

Quer saber quais são essas joias? Então vamos lá!

 

? Pedra da Realidade 

A Pedra da Realidade concede ao usuário o poder de manipular a matéria.

Presumivelmente, para manipular a realidade, temos que entendê-la. Essa parece ser uma analogia boa (o suficiente) para a importância do conhecimento do domínio (uma vez que um bom cientista de dados não manipula a realidade, certo?).

Iniciar um projeto de DS sem uma compreensão do domínio do projeto não é apenas uma má ideia, como resultado final provavelmente não retratará a  realidade. Assim como não permitimos que atletas competentes que nunca aprenderam as regras do beisebol joguem  da mesma forma, não devemos esperar ser capazes de realizar Ciência de Dados de maneira competente em um domínio que não entendemos, independentemente de nossas habilidades estatísticas, analíticas, técnicas e relacionadas.

O que exatamente constitui conhecimento de domínio? É relativo. Você está fazendo uma análise descritiva superficial de algum aplicativo de namoro? Ou você está empreendendo algum projeto de análise preditiva aprofundado em finanças para uma organização que se especializou em alguma estratégia obscura de investimento em títulos? O conhecimento necessário do domínio de “namoro” para realizar o primeiro feito é provavelmente insignificante, mas quaisquer insights úteis sobre o segundo certamente exigirão um conhecimento financeiro sólido.

 

? Pedra do Espaço 

 

A Pedra do Espaço dá ao usuário poder sobre o espaço.

Poder sobre o espaço, hein? Que tal poder sobre o espaço de dados? E como alguém obteria poder sobre seu espaço de dados? Conhecimento íntimo, por meio de análise exploratória de dados.

Mas quanta Análise de Dados e exatamente de que tipo de análise estamos falando? Isso vai te surpreender, mas … é relativo. Se estamos interessados ​​em Análise Descritiva – isto é, nenhuma previsão, ao longo das linhas de uma análise de dados direta – quanto mais intimamente estivermos familiarizados com os dados, melhor. O fim é o meio neste caso, e portanto a qualidade de descrever, visualizar e compartilhar os dados, como um analista de dados, está altamente correlacionada com a intimidade da exploração.

Quando se trata de Análise Preditiva e empreendimentos de Machine Learning, existem opiniões divergentes sobre o quanto a análise exploratória de dados é útil. Existem também opiniões divergentes sobre o nível de análise exploratória de datasets que não estão sendo usados ​​para treinamento (ou seja, conjuntos de validação e teste). Deixando isso de lado, para garantir que o poder máximo sobre seu espaço de dados seja alcançado, certifique-se de se proteger contra as armadilhas potenciais de análises de dados exploratórias deficientes ou visualizações de má qualidade, como a falácia da correlação, o paradoxo de Simpson e a falácia ecológica.

Quando realizada de maneira adequada, a análise exploratória de dados fornecerá uma compreensão de seus dados de uma forma que permita o acompanhamento de uma Ciência de Dados bem-sucedida.

 

? Pedra do Tempo

A Pedra do Tempo concede ao seu proprietário o poder de rebobinar ou avançar o tempo.

Se você estudou a complexidade do algoritmo, sabe que a escolha do algoritmo pode impactar severamente o tempo que leva para completar uma determinada tarefa de computação, mesmo com os mesmos dados, e é por esta razão que a seleção do algoritmo e do método é o nosso equivalente a ser capaz de manipular o tempo.

Isso se aplica tanto à seleção completa de algoritmos quanto à configuração de hiperparâmetros, que também têm impacto no tempo de execução. As arquiteturas de rede neural podem ser incrivelmente complexas, mas um par de redes neurais simples equivalentes pode ter tempos de convergência muito diferentes ao usar taxas de aprendizado muito desiguais.

Você sabe sobre a compensação de viés-variância, mas também há uma compensação de espaço-tempo, bem como uma compensação de complexidade-velocidade que pode ser feita. Um modelo de Regressão Logística pode não funcionar tão bem quanto um de Random Forest de milhares de árvores, mas esse impacto no desempenho pode valer a pena para você em troca de velocidade, para não falar do aumento na aplicabilidade que o modelo de Regressão Logística pode fornecer frente ao Random Forest (se essa for sua escolha).

Isso não quer dizer que você deva escolher um algoritmo mais rápido (ou menos complexo, ou menos intensivo em computação ou mais explicável), mas você precisa ter em mente que é uma das compensações que você está fazendo e uma das melhores maneiras que temos de controlar o fluxo do tempo.

 

? Pedra do Poder 

 

A Pedra do Poder concede ao seu portador uma grande quantidade de energia – o tipo de energia que você poderia usar para destruir um planeta inteiro.

Isso soa como muita energia. Onde encontramos esse tipo de energia no mundo da Ciência de Dados? Poder computacional!

Poder computacional (ou “computação”) são os recursos computacionais coletivos que temos para lançar em um problema particular. A computação ilimitada já foi considerada a essência e o fim de tudo da computação, e por um bom motivo. Considere quão pouca computação havia uma, duas ou três décadas atrás, em comparação com hoje. Imagine cientistas pensando sobre problemas que poderiam resolver, se ao menos tivessem mais do que um punhado de MHz de computação à sua disposição. O céu seria o limite!

Claro, não foi exatamente assim que as coisas aconteceram. Temos muito mais computação à nossa disposição agora do que jamais tivemos no passado na forma de supercomputadores, a nuvem, APIs publicamente disponíveis apoiadas por grandes quantidades de computação e até mesmo nossos próprios notebooks e smartphones. Todos os tipos de problemas que nunca poderíamos imaginar que teriam computação suficiente para resolver agora são tratáveis, e isso é um grande desenvolvimento. Precisamos ter em mente, no entanto, que “inteligente” é um grande contrapeso para computar, e muitos avanços na Ciência de Dados e suas tecnologias de apoio foram possibilitados pelo cérebro em vez da força.

Idealmente, um equilíbrio perfeito de cérebro e força muscular poderia ser usado para atacar todos os problemas existentes, com o uso inteligente para configurar uma abordagem algorítmica perfeita e a computação necessária disponível para apoiá-la. Talvez esta seja uma área que a Ciência de Dados um dia venha a provar ser útil.

Até então, tenha certeza de que há computação disponível até mesmo para as abordagens menos que perfeitas para a solução de problemas.

 

Pedra da alma

Não está claro quais são os poderes da Pedra da Alma no universo cinematográfico. Nos quadrinhos, a joia permite que o portador capture e controle as almas dos outros.

“Capture e controle as almas dos outros” soa ameaçador, e mais do que apenas um pouco tortuoso. Mas se dermos uma visão mais positiva do conceito de Pedra da Alma, poderíamos forçar uma equivalência entre ela e o poder de predição. Estamos treinando modelos para controlar a essência mais íntima dos dados não rotulados – sua alma – fazendo previsões informadas sobre o que realmente contém.

Isso não é um exagero. Certo!?

A Pedra da Alma, então, é análoga ao poder de predição, o que quer dizer que está no cerne absoluto da Data Science. O que os cientistas de dados estão tentando realizar? Eles estão tentando responder a perguntas interessantes com os dados disponíveis, a fim de fazer previsões que se alinham o mais próximo possível com a realidade. Essa parte da previsão parece bastante crucial.

E, por ser tão crucial, deve ficar evidente que os resultados devem ser tratados com o máximo cuidado. A alma do nosso trabalho é o valor que ele pode criar seja para negócios, instituições de caridade, governo ou sociedade em geral.

A Ciência de Dados é uma luta pela alma, juntamente com a próxima batalha pela mente.

 

? Pedra da Mente 

A Pedra da Mente permite ao usuário controlar as mentes dos outros.

E no mundo do Data Science, nada melhor para ajudar a controlar as mentes dos outros do que uma apresentação de dados bem elaborada, incluindo uma história atraente e visualizações eficazes.

A modelagem está completa. As previsões foram feitas. Os insights são perspicazes. Agora é hora de informar as partes interessadas do projeto sobre os resultados. Mas os demais profissionais que trabalham em uma equipe, além dos cientistas de dados, não têm os mesmos entendimentos sobre os dados e seu processo, então precisamos ser claros ao apresentar nossas descobertas a eles de uma forma que entendam.

Lembre-se, se seus insights não estiverem claros, então seu trabalho não está completo. Cabe a você convencer os outros do valor do seu trabalho. Uma vez convencidos, eles podem agir e a mudança por meio da ação é a verdadeira recompensa de qualquer projeto de Ciência de Dados.

 

Este artigo foi traduzido de Matthew Mayo no KDnuggets.

Categorias
Ciência de Dados Twitter

10 Cientistas de Dados que você precisa seguir no Twitter

Se você está sempre on-line nas redes sociais, em especial no Twitter, e não desperdiça a oportunidade de ter acesso a excelentes dicas e conteúdos, então você vai gostar do que preparamos aqui. Como você, diversos pesquisadores e cientistas também compartilham suas experiências na rede social do passarinho azul. São aprendizados, projetos, artigos e pesquisas compartilhados abertamente por cientistas de destaque no mundo e que vale a pena acompanhar o que eles têm a dizer. Confira esses perfis valiosos que selecionamos.

 

1️⃣ Nando de Freitas 

Professor de ciência da computação na Universidade de Oxford, Nando é especialista em Machine Learning (ML) com ênfase em redes neurais, otimização e inferência bayesiana e Deep Learning. Como cientista principal do Google DeepMind, ele ajuda a organização em sua missão de usar tecnologias para amplo benefício público e descobertas científicas, garantindo a segurança e a ética. Seu trabalho em ML lhe rendeu vários prêmios, incluindo prêmios de melhor artigo na Conferência Internacional sobre Aprendizado de Máquina e na Conferência Internacional sobre Representações de Aprendizagem, ambas em 2016.

 

2️⃣ Fei-Fei Li 

Professora de Ciência da Computação em Stanford University e co-diretora do Human-Centered AI Institute de Stanford, Li é uma pioneira em IA, Machine Learning e neurociência cognitiva. Ela é uma escritora e pesquisadora produtiva, tendo publicado cerca de 180 artigos revisados ​​por pares. Em 2007, como professora assistente na Universidade de Princeton, ela liderou uma equipe de pesquisadores para criar o projeto ImageNet, um enorme banco de dados visual para ser usado com um software que reconhece objetos visuais. Esse trabalho influenciou a revolução do “Deep Learning” na década seguinte. Enquanto atuava como diretora do Stanford Artificial Intelligence Lab (SAIL) de 2013 a 2018, Li cofundou a organização sem fins lucrativos AI4ALL, que se esforça para aumentar a diversidade e inclusão no campo da IA.

 

3️⃣ Bernard Marr 

Bernard é autor, futurista, palestrante frequente e consultor estratégico em Percepções de Dados para empresas e governos. Ele aconselha e treina muitas das organizações mais conhecidas do mundo e foi eleito pelo LinkedIn como um dos cinco maiores influenciadores de negócios do mundo e o influenciador número 1 no Reino Unido. Ele contribui para o Fórum Econômico Mundial e é autor de muitos artigos e livros, incluindo Big Data: Using SMART Big Data, Analytics and Metrics to Make Better Decisions and Improve Performance.

 

4️⃣ Hilary Mason

Hilary fundou o Fast Forward Labs e atuou como cientista-chefe na Bitly por quatro anos. Atualmente no conselho do Instituto Anita Borg para Mulheres e Tecnologia, ela cofundou o HackNY e é membro do NYCResistor, um coletivo de hackers no Brooklyn. 

 

 

5️⃣ Dean Abbott 

Cientista-chefe de dados, fundador e presidente da Abbott Analytics, Deant é autor de Applied Predictive Analytics: Principles and Techniques for the Professional Data Analyst  e coautor do IBM SPSS Modeler Cookbook . Desde 1987, ele desenvolveu e aplicou técnicas de mineração de dados, preparação de dados e métodos de visualização de dados para negócios e problemas de pesquisa.

 

6️⃣ Lillian Pierson  

Lillian é estrategista de dados, consultora e instrutora que trabalha com equipes executivas para oferecer supervisão e recomendações para operações de Engenharia e Ciência de Dados ideais. Ela se concentra na solução de problemas de negócios com várias tecnologias e métodos de dados que os empreendedores podem colocar em prática. Estrategista de dados na Data-Mania, fornece serviços de treinamento e consultoria de dados, desde 2012.

 

7️⃣ Andrew Ng 

Também fundador do deeplearning.ai, Andrew foi cientista-chefe da Baidu Research, é professor adjunto da Universidade de Stanford e fundador e presidente do conselho da Coursera, razão pela qual ele é considerado um pioneiro na educação online. Ele fundou o projeto Google Brain, que desenvolveu redes neurais artificiais em grande escala, incluindo uma que aprendeu a reconhecer gatos em vídeos. Ele é especialista em Deep Learning e publicou amplamente sobre Machine Learning e outros campos.

 

8️⃣ Kira Radinsky 

Kira iniciou o SalesPredict em 2012 para aconselhar os vendedores sobre como identificar e lidar com leads promissores. “Minha verdadeira paixão”, disse ela em um artigo da MIT Technology Review de 2013 , “é armar a humanidade com capacidades científicas para antecipar automaticamente e, em última instância, afetar os resultados futuros com base nas lições do passado”. Ela é considerada uma pioneira em análise preditiva, ganhou muitos prêmios e foi reconhecida em 2015 como uma estrela em ascensão da tecnologia empresarial na lista “Forbes 30 Under 30” .

9️⃣ Dez

Cientista-chefe de dados / CEO fundador – Sociaall Inc., Dez é um líder estratégico em negócios e transformação digital, com 25 anos de experiência nas indústrias de TI e telecomunicações, desenvolvendo estratégias e implementando iniciativas de negócios. Possui ampla experiência em tecnologias como Computação em Nuvem, Big Data e Analytics, Computação Cognitiva, Machine Learning e Internet das Coisas.

 

 

? Mine Çetinkaya-Rundel

Mine é professora sênior de Estatística e Ciência de Dados na Escola de Matemática da Universidade de Edimburgo, professora associada no Departamento de Ciência estatística da Duke University e também educadora profissional e cientista de dados na RStudio. Ah, sim, e ela também é Fellow do OpenIntro. 

Seu trabalho se concentra na inovação em pedagogia estatística, com ênfase na aprendizagem centrada no aluno, computação, pesquisa reprodutível e educação de código aberto. Ela também é muito ativa na educação de acesso aberto, tendo sido co-autora de três livros didáticos de estatística de código aberto como parte do projeto OpenIntro.

 

 

✔️ E essa foi mais uma seleção de primeira que o Insight fez para você seguir. Se quiser mais dicas sobre Ciência de Dados, nos acompanhe aqui e nas nossas redes sociais. Siga a ciência de dados com o Insight!

 

Fontes: ChiSquared innovations 

              Tech Beacon

Sair da versão mobile