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
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()>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<=30 else
(2 if x>30 and x<=45 else</pre>
 (3 if x>45 and x<=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':</pre>
<pre>['A','A','A','B','B','B'],'Gr':[1,2,3,4,5,6]})</pre>
<pre>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.

Sair da versão mobile