Mostrando postagens com marcador Machine Learning. Mostrar todas as postagens
Mostrando postagens com marcador Machine Learning. Mostrar todas as postagens

quinta-feira, 4 de fevereiro de 2021

Aplicações do Machine Learning

Introdução

O aprendizado de máquina é uma das tecnologias mais interessantes que alguém já encontrou. Como fica evidente pelo nome, ele confere ao computador aquilo que o torna mais parecido com o ser humano: a capacidade de aprender. O aprendizado de máquina está sendo usado ativamente hoje, talvez em muitos mais lugares do que seria de se esperar. Provavelmente usamos um algoritmo de aprendizado dezenas de vezes, mesmo sem saber. As aplicações de aprendizado de máquina incluem:

  • Mecanismo de busca na web: uma das razões pelas quais mecanismos de busca como google, bing etc funcionam tão bem é porque o sistema aprendeu como classificar as páginas por meio de um algoritmo de aprendizado complexo.
  • Aplicativos de marcação de fotos: seja no Facebook ou qualquer outro aplicativo de marcação de fotos, a capacidade de marcar amigos torna isso ainda mais acontecendo. Tudo isso é possível por causa de um algoritmo de reconhecimento de rosto executado por trás do aplicativo.
  • Detector de spam: nosso agente de e-mail, como Gmail ou Hotmail, faz um grande trabalho duro para nós, classificando os e-mails e movendo-os para a pasta de spam. Isso é novamente alcançado por um classificador de spam executado no back-end do aplicativo de e-mail.

Hoje, as empresas estão usando o aprendizado de máquina para melhorar as decisões de negócios, aumentar a produtividade, detectar doenças, prever o clima e fazer muito mais coisas. Com o crescimento exponencial da tecnologia, não só precisamos de melhores ferramentas para entender os dados que temos atualmente, mas também precisamos nos preparar para os dados que teremos. Para atingir esse objetivo, precisamos construir máquinas inteligentes. Podemos escrever um programa para fazer coisas simples. Mas, na maioria das vezes, conectar a inteligência com hardware é difícil. A melhor maneira de fazer isso é ter uma maneira de as próprias máquinas aprenderem as coisas. Um mecanismo de aprendizagem - se uma máquina pode aprender com a entrada, ela faz o trabalho difícil para nós. É aqui que o Machine Learning entra em ação. Alguns exemplos de aprendizado de máquina são:

  • Mineração de banco de dados para o crescimento da automação: as aplicações típicas incluem dados de cliques da Web para uma melhor experiência do usuário (experiência do usuário), registros médicos para uma melhor automação em saúde, dados biológicos e muito mais.
  • Aplicativos que não podem ser programados: Existem algumas tarefas que não podem ser programadas porque os computadores que usamos não são modelados dessa forma. Os exemplos incluem direção autônoma, tarefas de reconhecimento de dados não ordenados (reconhecimento facial / reconhecimento de caligrafia), processamento de linguagem natural, visão por computador etc.
  • Compreendendo a aprendizagem humana: isso é o mais próximo que entendemos e imitamos o cérebro humano. É o início de uma nova revolução, A verdadeira IA. Agora, após um breve insight, vamos chegar a uma definição mais formal de aprendizado de máquina.
  • Arthur Samuel (1959): “Aprendizado de máquina é um campo de estudo que dá aos computadores a capacidade de aprender sem ser explicitamente programado.” Samuel escreveu um programa de jogo Checker que poderia aprender com o tempo. No início, poderia ser facilmente vencido. Mas, com o tempo, aprendeu toda a posição do tabuleiro que o levaria à vitória ou derrota e, portanto, tornou-se um jogador de xadrez melhor que o próprio Samuel. Esta foi uma das primeiras tentativas de definir o Aprendizado de Máquina e é um pouco menos formal.
  • Tom Michel (1999): “Diz-se que um programa de computador aprende com a experiência E com relação a alguma classe de tarefas T e medida de desempenho P, se o seu desempenho nas tarefas em T, conforme medido por P, melhora com a experiência E.” Esta é uma definição mais formal e matemática. Para o programa de xadrez anterior.

No próximo tutorial, classificaremos os tipos de problemas de aprendizado de máquina e também discutiremos sobre pacotes úteis e ambiente de configuração para aprendizado de máquina e como podemos usá-lo para criar novos projetos.

Artigo escrito por Abhishek Sharma e traduzido por Acervo Lima de Machine Learning – Applications.

Desmistificando o Machine Learning

Aprendizado de máquina. Essa é uma palavra que tem um impacto! O aprendizado de máquina está na moda atualmente! E por que não séria assim? Quase todo novo desenvolvimento “atraente” no campo da Ciência da Computação e Desenvolvimento de Software em geral tem algo relacionado ao aprendizado de máquina por trás dos véus. Cortana da Microsoft - Aprendizado de Máquina. Reconhecimento de objetos e faces - Aprendizado de máquina e visão computacional. Programas avançados de melhoria de UX - Aprendizado de máquina (sim! A recomendação de produto da Amazon que você acabou de receber foi o esforço de processamento de números de algum algoritmo de aprendizado de máquina).

E nem é só isso. O aprendizado de máquina e a ciência de dados em geral estão EM TODA PARTE. É tão onipotente quanto o próprio Deus, se ele tivesse gostado de computadores! Por quê? Porque os dados estão em toda parte!

Portanto, é natural que qualquer pessoa que tenha cérebros acima da média e possa diferenciar os Paradigmas de Programação dando uma espiada no Código fique intrigada com o Aprendizado de Máquina.

Mas o que é aprendizado de máquina? E quão grande é o aprendizado de máquina? Vamos desmistificar o aprendizado de máquina de uma vez por todas. E para fazer isso, em vez de apresentar especificações técnicas, seguiremos uma abordagem “Entenda pelo Exemplo”.

Aprendizado de máquina: o que é realmente?

Bem, o Aprendizado de Máquina é um subcampo da Inteligência Artificial que evoluiu a partir da teoria do Reconhecimento de Padrões e Aprendizagem Computacional. Arthur Lee Samuel define Aprendizado de Máquina como: "Campo de estudo que dá aos computadores a capacidade de aprender sem serem programados explicitamente".

Então, basicamente, a área de Ciência da Computação e Inteligência Artificial “aprende” com dados sem intervenção humana.

Mas essa visão tem uma falha. Como resultado dessa percepção, sempre que a palavra Aprendizado de Máquina é usada, as pessoas geralmente pensam em "IA", "Redes Neurais que podem imitar cérebros humanos (a partir de agora, isso não é possível)", Carros que dirigem sozinho e mais. Mas o aprendizado de máquina está muito além disso. Abaixo, descobrimos algumas facetas esperadas e algumas facetas geralmente não esperadas da computação moderna, onde o aprendizado de máquina está em ação.

Aprendizado de máquina: O esperado

Começaremos com alguns lugares onde você pode esperar que o aprendizado de máquina desempenhe um papel.

  • Reconhecimento de fala (processamento de linguagem natural em termos mais técnicos): você conversa com Cortana em dispositivos Windows. Mas como ele entende o que você diz? Em seguida, surge o campo do Processamento de Linguagem Natural, ou PNL, que trata do estudo das interações entre Máquinas e Humanos, por meio da Lingüística. Adivinhe o que está no coração da PNL: Algoritmos e Sistemas de Aprendizado de Máquina (Modelos Ocultos de Markov sendo um).
  • Visão computacional: Visão computacional é um subcampo da IA ​​que lida com a interpretação (provável) de uma máquina do mundo real. Em outras palavras, todo reconhecimento facial, reconhecimento de padrões e técnicas de reconhecimento de caracteres pertencem à visão computacional. E o Aprendizado de Máquina, mais uma vez, com sua ampla variedade de Algoritmos, está no coração da Visão Computacional.
  • Carro autônomo do Google: bem. Você pode imaginar o que realmente o impulsiona. Mais vantagens do Machine Learning.

Mas essas eram aplicações esperadas. Até mesmo um pessimista teria um bom insight sobre esses feitos da tecnologia sendo trazidos à vida por alguma “magia de computador mística (e extremamente difícil) esmagadora de mente”.

Aprendizado de máquina: O inesperado

Vamos visitar alguns lugares que as pessoas normais não associam facilmente com o aprendizado de máquina:

  • Recomendações de produtos da Amazon: Você já se perguntou como a Amazon sempre tem uma recomendação que tenta aliviar sua carteira. Bem, esse é um algoritmo(s) de aprendizado de máquina chamado “Sistemas de recomendação” trabalhando em segundo plano. Ele aprende as preferências pessoais de cada usuário e faz recomendações de acordo com isso.
  • Youtube / Netflix: Eles funcionam exatamente como acima!
  • Data Mining / Big Data: Isso pode não ser um choque para muitos. Mas Data Mining e Big Data são apenas manifestações de estudo e aprendizagem de dados em uma escala maior. E onde quer que haja o objetivo de extrair informações dos dados, você encontrará o aprendizado de máquina à espreita.
  • Mercado de Capitais / Financiamento Habitacional / Imobiliário: Todos estes campos, incorporam muitos sistemas de Aprendizagem de Máquina para melhor avaliar o mercado, nomeadamente “Técnicas de Regressão”, para coisas tão medíocres como prever o preço de uma Casa, prever e analisando as tendências do mercado de ações.

Então, como você deve ter visto agora. O aprendizado de máquina realmente está em toda parte. De Pesquisa e Desenvolvimento à melhoria de negócios de Pequenas Empresas. Está em todo lugar. E, portanto, é uma opção de carreira e tanto, já que a indústria está em ascensão e o benefício não vai parar tão cedo.

Então, é isso por enquanto. Isso conclui nosso aprendizado de máquina 101. Esperamos nos encontrar novamente e, quando o fizermos, nos aprofundaremos em alguns detalhes técnicos do aprendizado de máquina, quais ferramentas são usadas no setor e como iniciar sua jornada para a proeza do aprendizado de máquina.

Artigo escrito por Sarthak Yadav e traduzido por Acervo Lima de Demystifying Machine Learning.

Introdução ao aprendizado de máquina

Este artigo discute as categorias de problemas de aprendizado de máquina e terminologias usadas no campo do aprendizado de máquina.

Tipos de problemas de aprendizado de máquina

Existem várias maneiras de classificar os problemas de aprendizado de máquina. Aqui, discutimos os mais óbvios.

1. Com base na natureza do "sinal" ou "feedback" de aprendizagem disponível para um sistema de aprendizagem.

  • Aprendizagem supervisionada: O computador é apresentado com exemplos de entradas e suas saídas desejadas, fornecidas por um “professor”, e o objetivo é aprender uma regra geral que mapeia entradas em saídas. O processo de treinamento continua até que o modelo atinja o nível desejado de precisão nos dados de treinamento. Alguns exemplos da vida real são:
    • Classificação de imagens: Você treina com imagens / rótulos. Então, no futuro, você fornece uma nova imagem esperando que o computador reconheça o novo objeto.
    • Previsão / regressão do mercado: você treina o computador com dados históricos do mercado e pede que ele preveja o novo preço no futuro.
  • Aprendizagem não supervisionada: nenhum rótulo é dado ao algoritmo de aprendizagem, deixando-o sozinho para encontrar a estrutura em sua entrada. É usado para agrupar a população em grupos diferentes. A aprendizagem não supervisionada pode ser um objetivo em si (descobrir padrões ocultos nos dados).
    • Clustering: você pede ao computador para separar dados semelhantes em clusters, isso é essencial na pesquisa e na ciência.
    • Visualização de alta dimensão: Use o computador para nos ajudar a visualizar dados de alta dimensão.
    • Modelos gerativos: depois que um modelo captura a distribuição de probabilidade de seus dados de entrada, ele será capaz de gerar mais dados. Isso pode ser muito útil para tornar seu classificador mais robusto.

Um diagrama simples que esclarece o conceito de aprendizagem supervisionada e não supervisionada é mostrado abaixo:

Como você pode ver claramente, os dados da aprendizagem supervisionada são rotulados, enquanto os dados da aprendizagem não supervisionada não são rotulados.

  • Aprendizagem semissupervisionada: os problemas em que você tem uma grande quantidade de dados de entrada e apenas alguns dos dados são rotulados são chamados de problemas de aprendizagem semissupervisionada. Esses problemas ficam entre o aprendizado supervisionado e o não supervisionado. Por exemplo, um arquivo de fotos onde apenas algumas das imagens estão etiquetadas (por exemplo, cachorro, gato, pessoa) e a maioria não está etiquetada.
  • Aprendizagem por reforço: um programa de computador interage com um ambiente dinâmico no qual deve realizar um determinado objetivo (como dirigir um veículo ou jogar um jogo contra um oponente). O programa recebe feedback em termos de recompensas e punições à medida que navega no espaço do problema.

2. Com base na "saída" desejada de um sistema aprendido por máquina

  • Classificação: as entradas são divididas em duas ou mais classes, e o aluno deve produzir um modelo que atribua entradas não vistas a uma ou mais (classificação multi-rótulo) dessas classes. Normalmente, isso é resolvido de forma supervisionada. A filtragem de spam é um exemplo de classificação, onde as entradas são mensagens de e-mail (ou outras) e as classes são “spam” e “não spam”.
  • Regressão: também é um problema de aprendizado supervisionado, mas as saídas são contínuas ao invés de discretas. Por exemplo, prever os preços das ações usando dados históricos.

Um exemplo de classificação e regressão em dois conjuntos de dados diferentes é mostrado abaixo:

  • Clustering: aqui, um conjunto de entradas deve ser dividido em grupos. Ao contrário da classificação, os grupos não são conhecidos de antemão, o que torna essa tarefa normalmente não supervisionada.
    Como você pode ver no exemplo abaixo, os pontos do conjunto de dados fornecidos foram divididos em grupos identificáveis ​​pelas cores vermelho, verde e azul.
  • Estimativa de densidade: A tarefa é encontrar a distribuição de entradas em algum espaço.
  • Redução de dimensionalidade: simplifica as entradas mapeando-as em um espaço de dimensão inferior. A modelagem de tópicos é um problema relacionado, em que um programa recebe uma lista de documentos em linguagem humana e tem a tarefa de descobrir quais documentos cobrem tópicos semelhantes.

Com base nessas tarefas / problemas de aprendizado de máquina, temos uma série de algoritmos que são usados ​​para realizar essas tarefas. Alguns algoritmos de aprendizado de máquina comumente usados ​​são Regressão Linear, Regressão Logística, Árvore de Decisão, SVM (máquinas de vetor de suporte), Naive Bayes, KNN (K vizinhos mais próximos), K-Means, Floresta Aleatória, etc.

Observação: todos esses algoritmos serão abordados em artigos futuros.

Terminologias de aprendizado de máquina

  • Modelo
    Um modelo é uma representação específica aprendida de dados aplicando algum algoritmo de aprendizado de máquina. Um modelo também é chamado de hipótese .
  • Recurso
    Um recurso é uma propriedade individual mensurável de nossos dados. Um conjunto de recursos numéricos pode ser convenientemente descrito por um vetor de recursos . Os vetores de recursos são alimentados como entrada para o modelo. Por exemplo, para prever uma fruta, pode haver características como cor, cheiro, sabor, etc.
    Nota: A escolha de características informativas, discriminativas e independentes é uma etapa crucial para algoritmos eficazes. Geralmente empregamos um extrator de recursos para extrair os recursos relevantes dos dados brutos.
  • Alvo (rótulo)
    Uma variável ou rótulo alvo é o valor a ser previsto por nosso modelo. Para o exemplo de fruta discutido na seção de recursos, o rótulo com cada conjunto de entrada seria o nome da fruta como maçã, laranja, banana, etc.
  • Treinamento
    A ideia é dar um conjunto de entradas (recursos) e suas saídas esperadas (rótulos), portanto, após o treinamento, teremos um modelo (hipótese) que mapeará os novos dados para uma das categorias treinadas.
  • Predição Assim
    que nosso modelo estiver pronto, ele pode ser alimentado com um conjunto de entradas para as quais fornecerá uma saída prevista (rótulo).

A figura mostrada abaixo esclarece os conceitos acima:

Artigos relacionados:

Referências:

Artigo escrito por Nikhil Kumar e traduzido por Acervo Lima de Getting started with Machine Learning.

Introdução aos dados no Machine Learning

DADOS: Pode ser qualquer fato, valor, texto, som ou imagem não processado que não esteja sendo interpretado e analisado. Os dados são a parte mais importante de todas as análises de dados, aprendizado de máquina e inteligência artificial. Sem dados, não podemos treinar nenhum modelo e toda a pesquisa e automação modernas serão em vão. As grandes empresas estão gastando muito dinheiro apenas para reunir o máximo de dados possível.

Exemplo: Por que o Facebook adquiriu o WhatsApp pagando um preço enorme de USS 19 bilhões?

A resposta é muito simples e lógica - é ter acesso às informações dos usuários que o Facebook pode não ter, mas o WhatsApp terá. Esta informação de seus usuários é de suma importância para o Facebook, pois facilitará a tarefa de melhoria em seus serviços.

INFORMAÇÃO: Dados que foram interpretados e manipulados e agora têm alguma inferência significativa para os usuários.

CONHECIMENTO: Combinação de informações inferidas, experiências, aprendizado e percepções. Resulta em conscientização ou construção de conceito para um indivíduo ou organização.

Como dividimos os dados no aprendizado de máquina?

  • Dados de treinamento: a parte dos dados que usamos para treinar nosso modelo. Esses são os dados que seu modelo realmente vê (entrada e saída) e com os quais aprende.
  • Dados de validação: A parte dos dados que é usada para fazer uma avaliação frequente do modelo, se ajusta ao conjunto de dados de treinamento junto com a melhoria dos hiperparâmetros envolvidos (inicialmente defina os parâmetros antes que o modelo comece a aprender). Esses dados desempenham sua parte quando o modelo está realmente em treinamento.
  • Dados de teste: uma vez que nosso modelo esteja completamente treinado, os dados de teste fornecem uma avaliação imparcial. Quando alimentamos as entradas de dados de teste, nosso modelo prevê alguns valores (sem ver a saída real). Após a previsão, avaliamos nosso modelo comparando-o com a saída real presente nos dados de teste. É assim que avaliamos e vemos o quanto nosso modelo aprendeu com as experiências alimentadas como dados de treinamento, definidas no momento do treinamento.

Considere um exemplo: há um proprietário de um Shopping Mart que conduziu uma pesquisa para a qual ele tem uma longa lista de perguntas e respostas que ele fez aos clientes, esta lista de perguntas e respostas é DATA. Agora, toda vez que ele quer inferir alguma coisa e não pode simplesmente passar por todas as perguntas de milhares de clientes para encontrar algo relevante, pois isso consumiria tempo e não seria útil. Para reduzir esta sobrecarga e desperdício de tempo e para facilitar o trabalho, os dados são manipulados através de software, cálculos, gráficos etc. conforme a própria conveniência, esta inferência dos dados manipulados é Informação. Portanto, os dados são essenciais para a informação. Agora Conhecimento tem o seu papel de diferenciar dois indivíduos com as mesmas informações. Na verdade, o conhecimento não é um conteúdo técnico, mas está vinculado ao processo de pensamento humano.

Propriedades dos dados:

  1. Volume: Escala de dados. Com o crescimento da população mundial e da tecnologia exposta, enormes dados são gerados a cada milissegundo.
  2. Variedade: diferentes formas de dados - saúde, imagens, vídeos, recortes de áudio.
  3. Velocidade: Taxa de streaming e geração de dados.
  4. Valor: Significância dos dados em termos de informações que os pesquisadores podem inferir deles.
  5. Veracidade: Certeza e correção nos dados que estamos trabalhando.

Alguns fatos sobre os dados:

  • Em comparação com 2005, 300 vezes, ou seja, 40 zetabytes (1ZB = 10 ^ 21 bytes) de dados serão gerados até 2020.
  • Em 2011, o setor de saúde tinha dados de 161 bilhões de Gigabytes
  • 400 milhões de tweets são enviados por cerca de 200 milhões de usuários ativos por dia
  • A cada mês, mais de 4 bilhões de horas de streaming de vídeo são feitas pelos usuários.
  • 30 bilhões de tipos diferentes de conteúdos são compartilhados todos os meses pelo usuário.
  • É relatado que cerca de 27% dos dados são imprecisos e, portanto, 1 em cada 3 idealistas ou líderes de negócios não confia nas informações sobre as quais estão tomando decisões.

Os fatos mencionados acima são apenas um vislumbre das enormes estatísticas de dados realmente existentes. Quando falamos em termos de cenário do mundo real, o tamanho dos dados atualmente presentes e gerados a cada momento está além de nossos horizontes mentais.

Artigo escrito por Mohit Gupta_OMG :) e traduzido por Acervo Lima de ML | Introduction to Data in Machine Learning.

Melhores bibliotecas Python para Machine Learning

Aprendizado de máquina, como o nome sugere, é a ciência da programação de um computador por meio do qual eles são capazes de aprender com diferentes tipos de dados. Uma definição mais geral dada por Arthur Samuel é - “Aprendizado de máquina é o campo de estudo que dá aos computadores a capacidade de aprender sem serem programados explicitamente”. Eles normalmente são usados ​​para resolver vários tipos de problemas da vida.

Antigamente, as pessoas costumavam realizar tarefas de aprendizado de máquina codificando manualmente todos os algoritmos e fórmulas matemáticas e estatísticas. Isso tornava o processo demorado, tedioso e ineficiente. Mas nos dias modernos, tornou-se muito mais fácil e eficiente em comparação com os velhos tempos por várias bibliotecas, estruturas e módulos Python. Hoje, Python é uma das linguagens de programação mais populares para essa tarefa e substituiu muitas linguagens na indústria, uma das razões é sua vasta coleção de bibliotecas. As bibliotecas Python usadas no aprendizado de máquina são:

  • Numpy
  • Scipy
  • Scikit-learn
  • Theano
  • TensorFlow
  • Keras
  • PyTorch
  • Pandas
  • Matplotlib

Numpy

NumPy é uma biblioteca python muito popular para grandes matrizes multidimensionais e processamento de matrizes, com a ajuda de uma grande coleção de funções matemáticas de alto nível. É muito útil para cálculos científicos fundamentais em Aprendizado de Máquina. É particularmente útil para álgebra linear, transformada de Fourier e recursos de números aleatórios. Bibliotecas de última geração, como TensorFlow, usam NumPy internamente para manipulação de tensores.

# Programa python usando
# a biblioteca Numpy para
# realizar algumas operações básicas

import numpy as np 

# Criando duas matriz de duas dimensões
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])

# Criando duas matrizes de um dimensão
v = np.array([9, 10])
w = np.array([11, 12])

# Produto interno de vetores
print(np.dot(v, w), "\n")

# Produto de matriz e vetor
print(np.dot(x, v), "\n")

# Matriz e produto da matriz
print(np.dot(x, y))

Saída:

219 

[29 67] 

[[19 22]
 [43 50]]

Para obter mais detalhes, consulte Numpy

SciPy

SciPy é uma biblioteca muito popular entre os entusiastas do Aprendizado de Máquina, pois contém diferentes módulos para otimização, álgebra linear, integração e estatística. Há uma diferença entre a biblioteca SciPy e a pilha SciPy. O SciPy é um dos pacotes principais que compõem a pilha do SciPy. SciPy também é muito útil para manipulação de imagens.

# Script python usando Scipy
# para manipulação de imagens

from scipy.misc import imread, imsave, imresize 

# Converte uma imagem JPEG para array numpy
img = imread('D:/Programs/cat.jpg') # Caminho da imagem
print(img.dtype, img.shape)

# Tingindo a imagem
img_tint = img * [1, 0.45, 0.3]

# Salvando a imagem tingida
imsave('D:/Programs/cat_tinted.jpg', img_tint)

$ redimencionando a imagem tingida para 300 x 300 pixels
img_tint_resize = imresize(img_tint, (300, 300))

# Salvando a imagem tingida e redimencionada
imsave('D:/Programs/cat_tinted_resized.jpg', img_tint_resize)

Imagem original:

Imagem matizada:

Imagem matizada redimensionada:

resized_tinted_image

Para obter mais detalhes, consulte a documentação.

Scikit-learn

Skikit-learn é uma das bibliotecas de ML mais populares para algoritmos de ML clássicos. É construído em cima de duas bibliotecas Python básicas, viz., NumPy e SciPy. O Scikit-learn oferece suporte à maioria dos algoritmos de aprendizagem supervisionados e não supervisionados. O Scikit-learn também pode ser usado para mineração e análise de dados, o que o torna uma ótima ferramenta para quem está começando com ML.

# Script Python usando Scikit-learn para classificador de árvore de decisão

# Classificador de árvore de decisão de amostra
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier

# carregar os conjuntos de dados da íris
dataset = datasets.load_iris()

# ajustar um modelo CART aos dados
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)

# fazer previsões
expected = dataset.target
predicted = model.predict(dataset.data)

# resumir o ajuste do modelo
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))

Saída:

DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
            max_features=None, max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, presort=False, random_state=None,
            splitter='best')
              precision    recall  f1-score   support

           0       1.00      1.00      1.00        50
           1       1.00      1.00      1.00        50
           2       1.00      1.00      1.00        50

   micro avg       1.00      1.00      1.00       150
   macro avg       1.00      1.00      1.00       150
weighted avg       1.00      1.00      1.00       150

[[50  0  0]
 [ 0 50  0]
 [ 0  0 50]]

Para obter mais detalhes, consulte a documentação.

Theano

Todos nós sabemos que o aprendizado de máquina é basicamente matemática e estatística. Theano é uma biblioteca python popular usada para definir, avaliar e otimizar expressões matemáticas envolvendo matrizes multidimensionais de maneira eficiente. Consegue-se otimizando a utilização da CPU e GPU. É amplamente utilizado para teste de unidade e autoverificação para detectar e diagnosticar diferentes tipos de erros. Theano é uma biblioteca muito poderosa que tem sido usada em projetos científicos de grande escala computacionalmente intensivos por um longo tempo, mas é simples e acessível o suficiente para ser usada por indivíduos em seus próprios projetos.

# Programa Python usando Theano para calcular uma função logística

import theano
import theano.tensor as T
x = T.dmatrix('x')
s = 1 / (1 + T.exp(-x))
logistic = theano.function([x], s)
logistic([[0, 1], [-1, -2]])

Saída:

array([[0.5, 0.73105858],
       [0.26894142, 0.11920292]])

Para obter mais detalhes, consulte a documentação.

TensorFlow

TensorFlow é uma biblioteca de código aberto muito popular para computação numérica de alto desempenho desenvolvida pela equipe do Google Brain no Google. Como o nome sugere, Tensorflow é uma estrutura que envolve a definição e execução de cálculos envolvendo tensores. Ele pode treinar e executar redes neurais profundas que podem ser usadas para desenvolver vários aplicativos de IA. O TensorFlow é amplamente utilizado no campo de pesquisa e aplicação de aprendizado profundo.

# Programa Python usando TensorFlow para multiplicar duas matrizes

import tensorflow as tf 

# Inicializando duas constantes
x1 = tf.constant([1, 2, 3, 4])
x2 = tf.constant([5, 6, 7, 8])

# Multiplicando
result = tf.multiply(x1, x2)

# Inicializando a sessão
sess = tf.Session()

# Mostarndo o resultado
print(sess.run(result))

# Encerrando a sessão
sess.close()

Saída:

[5 12 21 32]

Para obter mais detalhes, consulte a documentação.

Keras

Keras é uma biblioteca de aprendizado de máquina muito popular para Python. É uma API de redes neurais de alto nível capaz de ser executada em TensorFlow, CNTK ou Theano. Ele pode ser executado perfeitamente na CPU e GPU. Keras torna realmente para iniciantes em ML construir e projetar uma rede neural. Uma das melhores coisas sobre Keras é que ele permite uma prototipagem fácil e rápida.

Para obter mais detalhes, consulte a documentação.

PyTorch

PyTorch é uma biblioteca de aprendizado de máquina de código aberto popular para Python baseada no Torch, que é uma biblioteca de aprendizado de máquina de código aberto que é implementada em C com um wrapper em Lua. Ele tem uma ampla escolha de ferramentas e bibliotecas que oferecem suporte a Visão por Computador, Processamento de Linguagem Natural (PNL) e muitos outros programas de ML. Ele permite que os desenvolvedores realizem cálculos em tensores com aceleração de GPU e também ajuda na criação de gráficos computacionais.

# Programa Python usando PyTorch para definir tensores,
# ajustar uma rede de duas camadas para dados aleatórios
# e calcular a perda 
  
import torch

dtype = torch.float
device = torch.device("cpu")
# device = torch.device("cuda:0") para utilizar gpu
  
# N é o tamanho do lote; D_in é a dimensão de entrada;
# H é uma dimensão oculta; D_out é a dimensão de saída. 
N, D_in, H, D_out = 64, 1000, 100, 10

# Criando dados de entrada e saída aleatórios
x = torch.randn(N, D_in, device = device, dtype = dtype)
y = torch.randn(N, D_out, device = device, dtype = dtype)

# Inicializa os pesos de forma aleatória
w1 = torch.randn(D_in, H, device = device, dtype = dtype)
w2 = torch.randn(H, D_out, device = device, dtype = dtype)

learning_rate = 1e-6
for t in range(500):
    h = x.mm(w1) 
    h_relu = h.clamp(min = 0)
    y_pred = h_relu.mm(w2)

    loss = (y_pred - y).pow(2).sum().item() 
    print(t, loss) 

    grad_y_pred = 2.0 * (y_pred - y) 
    grad_w2 = h_relu.t().mm(grad_y_pred) 
    grad_h_relu = grad_y_pred.mm(w2.t()) 
    grad_h = grad_h_relu.clone() 
    grad_h[h < 0] = 0
    grad_w1 = x.t().mm(grad_h) 
  
    # Update weights using gradient descent 
    w1 -= learning_rate * grad_w1 
    w2 -= learning_rate * grad_w2

Saída:

0 47168344.0
1 46385584.0
2 43153576.0
...
...
...
497 3.987660602433607e-05
498 3.945609932998195e-05
499 3.897604619851336e-05

Para obter mais detalhes, consulte a documentação.

Pandas

Pandas é uma biblioteca Python popular para análise de dados. Não está diretamente relacionado ao aprendizado de máquina. Como sabemos, o conjunto de dados deve ser preparado antes do treinamento. Nesse caso, o Pandas é útil porque foi desenvolvido especificamente para extração e preparação de dados. Ele fornece estruturas de dados de alto nível e uma ampla variedade de ferramentas para análise de dados. Ele fornece muitos métodos embutidos para tatear, combinar e filtrar dados.

# Programa Python usando Pandas para organizar um determinado conjunto de dados em uma tabela

import pandas as pd

data = {"country": ["Brazil", "Russia", "India", "China", "South Africa"],
       "capital": ["Brasilia", "Moscow", "New Dehli", "Beijing", "Pretoria"],
       "area": [8.516, 17.10, 3.286, 9.597, 1.221],
       "population": [200.4, 143.5, 1252, 1357, 52.98] }

data_table = pd.DataFrame(data)
print(data_table)

Saída:

        country    capital    area  population
0        Brazil   Brasilia   8.516      200.40
1        Russia     Moscow  17.100      143.50
2         India  New Dehli   3.286     1252.00
3         China    Beijing   9.597     1357.00
4  South Africa   Pretoria   1.221       52.98

Matplotlib

matplotlibLogo

Matpoltlib é uma biblioteca Python muito popular para visualização de dados. Como o Pandas, não está diretamente relacionado ao aprendizado de máquina. É particularmente útil quando um programador deseja visualizar os padrões nos dados. É uma biblioteca de plotagem 2D usada para criar gráficos e plotagens 2D. Um módulo chamado pyplot facilita a plotagem de programadores, pois fornece recursos para controlar estilos de linha, propriedades de fonte, eixos de formatação etc. Ele fornece vários tipos de gráficos e plotagens para visualização de dados, viz., Histograma, gráficos de erro, bate-papos de barra, etc.


#  Python program using Matplotib for forming a linear plot 

import matplotlib.pyplot as plt 
import numpy as np 
  
# preparando os dados
x = np.linspace(0, 10, 100)

# Criando o grafico
plt.plot(x, x, label='linear')
  
# Adicionando legenda
plt.legend()
  
# Mostrando grafico
plt.show()

Saída:

linear_plot

Artigo escrito por Rahul_Roy e traduzido por Acervo Lima de Best Python libraries for Machine Learning.

O que é Machine Learning?

Arthur Samuel, um pioneiro no campo da inteligência artificial e jogos de computador, cunhou o termo “Aprendizado de Máquina” . Ele definiu o aprendizado de máquina como - “Campo de estudo que dá aos computadores a capacidade de aprender sem serem programados explicitamente”.

De uma maneira muito leiga, o Aprendizado de Máquina (AM) pode ser explicado como automatizando e melhorando o processo de aprendizagem de computadores com base em suas experiências sem serem realmente programados, ou seja, sem qualquer assistência humana. O processo começa alimentando dados de boa qualidade e, em seguida, treinando nossas máquinas (computadores), construindo modelos de aprendizado de máquina usando os dados e diferentes algoritmos. A escolha dos algoritmos depende de que tipo de dados temos e que tipo de tarefa estamos tentando automatizar.

Exemplo: Treinamento de alunos durante o exame.

Enquanto se preparam para os exames, os alunos não estudam o assunto, mas tentam aprendê-lo com total compreensão. Antes do exame, eles alimentam sua máquina (cérebro) com uma boa quantidade de dados de alta qualidade (perguntas e respostas de diferentes livros ou anotações do professor ou vídeo-aulas online). Na verdade, eles estão treinando seu cérebro tanto com entradas quanto com saídas, isto é, que tipo de abordagem ou lógica eles têm para resolver um tipo diferente de questões. Cada vez que resolvem os papéis dos testes práticos e encontram o desempenho (precisão / pontuação), comparando as respostas com a chave dada, Gradualmente, o desempenho vai aumentando, ganhando mais confiança com a abordagem adotada. É assim que os modelos são construídos,treinar a máquina com dados (entradas e saídas são fornecidas ao modelo) e, quando chegar a hora, teste os dados (apenas com entrada) e obtenha as pontuações do modelo comparando sua resposta com a saída real que não foi alimentada durante o treinamento. Os pesquisadores estão trabalhando com esforços assíduos para melhorar algoritmos e técnicas para que esses modelos tenham um desempenho ainda melhor.

Diferença básica em ML e programação tradicional?

  • Programação tradicional: Nós alimentamos DADOS (entrada) + PROGRAMA (lógica), rodamos na máquina e obtemos a saída.
  • Aprendizado de Máquina: Alimentamos DADOS (Entrada) + Saída, executamos na máquina durante o treinamento e a máquina cria seu próprio programa (lógica), que pode ser avaliado durante o teste.

O que exatamente aprender significa para um computador?

Diz-se que um computador está aprendendo com as Experiências com relação a alguma classe de Tarefas , se seu desempenho em uma dada Tarefa melhora com a Experiência.

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

Exemplo: jogar damas.

E = a experiência de jogar muitos jogos de damas.

T = a tarefa de jogar damas.

P = a probabilidade de o programa vencer o próximo jogo.

Em geral, qualquer problema de aprendizado de máquina pode ser atribuído a uma das duas classificações gerais:
Aprendizagem supervisionada e Aprendizagem não supervisionada.

Como as coisas funcionam na realidade:

  • Falando em compras online, existem milhões de usuários com uma gama ilimitada de interesses em relação a marcas, cores, faixa de preço e muito mais. Ao fazer compras online, os compradores tendem a pesquisar vários produtos. Agora, pesquisar um produto com frequência fará com que o comprador, as páginas da web, o mecanismo de pesquisa ou a loja online do comprador comece a recomendar ou mostrar ofertas para aquele produto específico. Não há ninguém sentado lá para codificar tal tarefa para cada usuário, toda essa tarefa é totalmente automática. Aqui, o ML desempenha seu papel. Pesquisadores, cientistas de dados, aprendizes de máquina constroem modelos na máquina usando boa qualidade e uma grande quantidade de dados e agora sua máquina está executando e até mesmo melhorando automaticamente com mais e mais experiência e tempo.
    Tradicionalmente, a propaganda era feita apenas em jornais, revistas e rádio, mas agora a tecnologia nos tornou inteligentes o suficiente para fazer propaganda direcionada (sistema de anúncios online), que é um método mais eficiente para atingir o público mais receptivo.
  • Mesmo na área da saúde, o ML está fazendo um trabalho fabuloso. Pesquisadores e cientistas prepararam modelos para treinar máquinas para detectar câncer apenas olhando para imagens de células deslizantes. Para os humanos realizarem essa tarefa, demoraria muito tempo. Mas agora, sem mais demora, as máquinas predizem as chances de ter ou não câncer com alguma precisão e os médicos só precisam dar uma chamada de garantia, é isso. A resposta para - como isso é possível é muito simples - tudo o que é necessário, é, máquina de alta computação, uma grande quantidade de dados de imagem de boa qualidade, modelo de ML com bons algoritmos para obter resultados de última geração.
    Os médicos estão usando ML até mesmo para diagnosticar pacientes com base em diferentes parâmetros em consideração.
  • Todos vocês podem ter usado classificações IMDB, Google Fotos, onde reconhece rostos, Google Lens, onde o modelo de reconhecimento de imagem de texto ML pode extrair texto das imagens que você alimenta, Gmail que usa categorias de e-mail como social, promoção, atualizações ou fórum classificação de texto, que faz parte do ML.

Como funciona o ML?

  • Coletar dados anteriores em qualquer forma adequada para processamento. Quanto melhor a qualidade dos dados, mais adequados serão para modelagem
  • Processamento de dados - às vezes, os dados coletados estão na forma bruta e precisam ser pré-processados.
    Exemplo: Algumas tuplas podem ter valores ausentes para determinados atributos, e, neste caso, deve ser preenchido com valores adequados para realizar o aprendizado de máquina ou qualquer forma de mineração de dados.
    Valores ausentes para atributos numéricos, como o preço da casa, podem ser substituídos pelo valor médio do atributo, enquanto valores ausentes para atributos categóricos podem ser substituídos pelo atributo com o modo mais alto. Isso invariavelmente depende dos tipos de filtros que usamos. Se os dados estiverem na forma de texto ou imagens, será necessário convertê-los para a forma numérica, seja uma lista ou array ou matriz. Simplesmente, os dados devem ser relevantes e consistentes. Deve ser convertido em um formato compreensível pela máquina
  • Divida os dados de entrada em conjuntos de treinamento, validação cruzada e teste. A proporção entre os respectivos conjuntos deve ser 6: 2: 2
  • Construir modelos com algoritmos e técnicas adequados no conjunto de treinamento.
  • Testar nosso modelo conceituado com dados que não foram fornecidos ao modelo no momento do treinamento e avaliar seu desempenho usando métricas como pontuação F1, precisão e recall.

Pré-requisitos para aprender ML

  • Álgebra Linear
  • Estatística e Probabilidade
  • Cálculo
  • Teoria dos grafos
  • Habilidades de programação - linguagem como Python, R, MATLAB, C ++ ou Octave

Artigo escrito por Mohit Gupta_OMG :) e traduzido por Acervo Lima de ML | What is Machine Learning?.