machine learning

O que é R?

A cada minuto é criado uma quantidade gigantesca de dados. Mas apenas ter essa grande massa de dados não é o suficiente, é preciso transformá-los e organizá-los, para que possamos ter informações relevantes. Essa manipulação de dados é fundamental.

No meio dessas análises muitas vezes precisamos realizar procedimentos que acabam envolvendo matemática e estatística. Falando essas palavras pode até nos assustar um pouco, mas para nos ajudar temos uma linguagem que veio evoluindo e amadurecendo, tendo se popularizado muito neste meio, fazendo com que diversas empresas passem a utilizá-la para aprimorar suas análises, a linguagem R.

R - Fundamentos
Curso de R - Fundamentos
CONHEÇA O CURSO

R é uma linguagem e ambiente de desenvolvimento, sendo muito utilizada para a área matemática e estatística, sob a licença GNU. Quando dizemos que ele também é um ambiente de desenvolvimento, isso significa que o próprio programa funciona como ambiente que interpreta a linguagem, fazendo com que tudo aconteça em tempo real.

Falando um pouco sobre sua criação, o R é uma linguagem que foi derivada do S (linguagem de programação estatística), lançada em 1993. Os criadores tomaram a linguagem S como base para criar sua própria linguagem e ambiente, possuindo muito mais recursos. O nome “R” vem das iniciais de seus criadores, Ross Ihaka e Robert Gentleman. Sua utilização é totalmente gratuita, o que facilitou muito a adoção por quem a utiliza.

O que pode ser feito?

O R ajuda muito na análise de grandes conjuntos de dados, onde você pode aplicar modelos estatísticos e até importar/exportar para banco de dados relacionais.
Vimos que seu propósito principal é em análises estatísticas, mas com a utilização da linguagem R você pode instruí-lo a fazer algo que ele não faça naturalmente, como análises mais complexas, por exemplo. Essa é uma das grandes vantagens de também ser uma linguagem de programação, pois você pode programar (ensinar) a fazer coisas novas.

Além disso, a possibilidade da criação de gráficos faz do R uma forte ferramenta de visualização, o que auxilia muito na visualização de dados de forma muito amigável. Você pode inclusive criar visualizações customizadas ao que você necessita, através de uma lista de pacotes que ele possui, onde você pode instalar e criar os gráficos customizados.

R - Introdução ao Machine Learning
Curso de R - Introdução ao Machine Learning
CONHEÇA O CURSO

Por que aprender R?

Como pudemos ver, a linguagem R se popularizou muito neste meio. Se você se interessa pela área da ciência de dados, Big Data, Machine Learning, a linguagem R é uma das melhores ferramentas para isso, além de estar sendo uma das mais utilizadas.

É uma opção a mais para seu trabalho no dia a dia. Quanto mais ferramentas/linguagens você conhece e consegue utilizar, mais coisas você consegue resolver. Empresas gigantes como a Oracle e a Microsoft já integraram a linguagem R aos seus produtos de análise de dados, ou seja, se eles estão investindo nisso, é legal você começar a dar uma olhada também. Se você se interessou e não sabe por onde começar, temos um curso específico de R onde você pode conhecer um pouco mais e um outro mais focado no Machine Learning.

Até a próxima!

O que é e como funciona Machine Learning?

Olá Web Developer!

Você provavelmente já deve ter ouvido o termo Machine Learning. Há momentos que parece algo muito fora da realidade, vindo de ficção científica. Porém, veremos aqui de forma bem simplificada o que é Machine Learning e como é possível as máquinas aprenderem.

O que é Machine Learning?

Machine Learning (também conhecido como Aprendizado de Máquina) é a aplicação da Inteligência Artificial de modo a permitir que máquinas possam aprender. Assim, podemos obter certos resultados sem precisar programar um sistema manualmente.

Onde podemos usar Machine Learning?

Qualquer sistema que precise tomar alguma decisão pode se beneficiar de Machine Learning, principalmente quando temos que tomar decisões baseadas em imensas quantidades de dados.

O exemplo mais comum são os carros autônomos. Outro exemplo bem conhecido é o catálogo de séries e filmes da Netflix, que te indica algo que provavelmente você gostará ao comparar o seu perfil com o de outros usuários parecidos.

Também podemos analisar movimentações bancárias para identificar fraudes, fazer previsões metereológicas, fazer uma análise do mercado financeiro, realizar diagnósticos médicos, etc.

Desenvolvedor Python Pleno
Formação: Desenvolvedor Python Pleno
Aprenda como trabalhar com banco de dados relacionais em aplicações Python utilizando a DB API e o MySQL.
CONHEÇA A FORMAÇÃO

Programação Comum vs Machine Learning

Se você desenvolve softwares sabe que ao programar nós precisamos de duas coisas: regras (o código que escreveremos) e dados (conjuntos de valores, normalmente fornecidos pelo usuário). Com esses dois itens, nosso programa nos entrega uma resposta.

Como exemplo, imagine que a gente queira criar um programa que indica se uma cor é clara ou escura. E então a gente precisa criar uma lógica para saber se uma cor é clara ou escura para finalmente escrevermos o código. Depois, nosso código irá receber as cores para então dar uma resposta, indicando se a cor é clara ou escura.

No Machine Learning nós mudamos um pouco o fluxo. Se quiséssemos que um programa nos diga se uma cor é clara ou escura, nós indicaríamos algumas cores (dados) e já indicaríamos se determinada cor é clara ou escura (respostas).

Com isso nós recebemos a regra, a qual a máquina irá usar para dizer se outras cores que ela ainda não conhece são claras ou escuras. Com isso teremos um programa que faz o que queremos sem a necessidade de termos nos preocupado em criar uma lógica e passar isso para o código com alguma linguagem de programação.

Isso pode parecer bobo, já que podemos descobrir se uma cor é clara ou escura com uma simples fórmula que é encontrada facilmente na Internet e pode ser escrita em poucas linhas de código.

function isDark(R, G, B){
    return (( R * 299 + G * 587 + B * 114) / 1000) <= 127;
}

Porém, imagine que ao invés disso você precise programar um sistema para controlar um carro pela cidade, obedecendo a sinalização, leis, evitando obstáculos, etc. Você consegue imaginar quantas linhas (e quantos IF’s) teria que escrever? Sem contar no tanto de possibilidades incomuns que podem acontecer, que obrigatoriamente necessitaria do carro poder saber tomar uma decisão que não esteja em sua programação.

Seria totalmente inviável escrever manualmente um código assim, sendo muito mais simples ensinar o sistema o que se deve fazer em cada ocasião e ele aprender com erros e acertos, até chegar ao ponto dele poder tomar suas próprias decisões em futuros eventos para o qual ele não foi programado.

Mas como as máquinas tomam decisões?

Existem vários tipos de algoritmos utilizados para o aprendizado de máquinas como Naïve Bayes, SVM, K-means, etc. Quando estudamos Machine Learning aprendemos os principais para poder escolher qual é o melhor para cada situação. Você não precisa necessariamente saber programar estes algoritmos, pois normalmente você utilizará bibliotecas que já possuem funções que os implementam.

Um dos que eu mais gosto de mostrar como exemplo é o KNN (k-Nearest Neighbors – K vizinhos mais próximos). Imagine que a gente pegue o código de algumas cores e joguemos em um plano cartesiano, simplesmente para podermos ter uma ideia visual do que acontece.
Vamos imaginar que obtemos o seguinte resultado:

Vamos dizer que os pontos vermelhos indicam as cores claras e os pontos azuis indicam as cores escuras. Nós mesmos indicamos quais são as cores claras e escuras ao computador. Isso se chama treinamento, etapa em que ensinamos a máquina. Portanto, é importante assegurar que a gente não tenha dados incorretos.

Após o treinamento, imagine que a máquina acabou de receber uma cor que nunca viu antes, que será indicada pelo ponto verde na imagem a seguir:

E agora, é uma cor clara ou escura? O KNN verifica quem são os vizinhos mais próximos. Podemos indicar quantos vizinhos queremos analisar.

Veja que se formos olhar os três pontos mais próximos do ponto verde, teremos 2 vermelhos e 1 azul. Então o computador classificaria esta nova cor como uma cor clara.

Conclusão

Machine Learning é basicamente possibilitar que sistemas possam aprender a tomar decisões a partir de certos algoritmos que fazem análise de dados, os quais devem estar bem formatados e organizados para evitar passar informações erradas ao computador na fase de treinamento.

Os lugares onde podemos aplicar Machine Learning são inúmeros, nos possibilitando desenvolver sistemas cada vez mais inteligentes para auxiliar nossas vidas.

Criando um Chatbot com Python

Os chatbots são aplicações que trocam e gerenciam mensagens. Atualmente, várias empresas estão investindo neste segmento para a criação de assistentes virtuais (robôs que interagem com o usuário e realizam determinadas tarefas cotidianas).

Neste artigo veremos como criar um chatbot com Python que interage com o usuário e aprende enquanto conversa em um jogo de perguntas e respostas.

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Instalando as ferramentas

O primeiro passo para o desenvolvimento do nosso chatbot é instalar as ferramentas necessárias. Para isso, vamos precisar do Python, PIP e da biblioteca Chatterbot. Também vamos utilizar o PyCharm em sua versão Community para ajudar no desenvolvimento, mas seu uso é opicional.

O download do Python pode ser feita por meio do seu site oficial e o processo é bem simples (next > next > finish).

Já o PIP, gerenciador de pacotes do Python, pode ser baixado também por meio de seu site oficial. Todo o processo de instalação do PIP pode ser visto neste post do blog da TreinaWeb.

Por fim, com o Python e o PIP instalados, precisamos instalar a biblioteca Chatterbot. Para isso, após criar o projeto no PyCharm, vamos até a aba “Project Interpreter”, localizado em “Preferences” dentro do PyCharm. Lá, vamos buscar pela biblioteca Chatterbot e realizar sua instalação, como podemos ver abaixo:

Feito isso, todas as ferramentas necessárias já estão instaladas e prontas para serem utilizadas.

Criando o Chatbot

O processo de criação do Chatbot é bem simples. Basicamente, vamos criar uma lista de perguntas e respostas que serão usadas como aprendizado inicial do nosso Bot. A partir daí, utilizaremos alguns métodos para que todas as perguntas e respostas que vamos informando para ele, sejam analisadas, processadas e aprendidas conforme o tempo. Veremos abaixo todo o código detalhado:

from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot

O primeiro passo para a criação do nosso chatbot é importar o método ListTrainer responsável por permitir que uma lista de strings seja utilizada no processo de aprendizagem do Bot. Após isso, importamos o construtor Chatbot para que possamos criá-lo em nosso programa.

Feito isso, precisamos inicializar nosso Chatbot e determinar a lista inicial de mensagens que serão utilizadas como base para o aprendizado do Bot:

bot = ChatBot('TW Chat Bot')

conversa = ['Oi', 'Olá', 'Tudo bem?', 'Tudo ótimo', 
            'Você gosta de programar?', 'Sim, eu programo em Python']

bot.set_trainer(ListTrainer)
bot.train(conversa)

Com isso, nós registramos três perguntas. Por padrão, cada resposta se refere ao item anterior da lista. Por exemplo, a string ‘Olá’ se refere como resposta da pergunta ‘Oi’. Já a string ‘Tudo ótimo’ é resposta da pergunta ‘Tudo bem?’ e assim por diante.

Após isso, definimos, através do método train(), que utilizaremos a lista conversa como ponto de partida para o aprendizado do Bot.

Finalmente, criamos um loop infinito que vai capturar a pergunta do usuário, buscar uma possível resposta e retornar ao usuário. Definimos, também, que se o grau de confiança da resposta for menor que 0.5, o Bot vai informar que ainda não sabe responder tal pergunta:

while True:
    pergunta = input("Usuário: ")
    resposta = bot.get_response(pergunta)
    if float(resposta.confidence) > 0.5:
        print('TW Bot: ', resposta)
    else:
        print('TW Bot: Ainda não sei responder esta pergunta')

Sendo assim, o código final do nosso Chatbot pode ser visto abaixo:

from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot

bot = ChatBot('TW Chat Bot')

conversa = ['Oi', 'Olá', 'Tudo bem?', 'Tudo ótimo', 'Você gosta de programar?', 'Sim, eu programo em Python']

bot.set_trainer(ListTrainer)
bot.train(conversa)

while True:
    pergunta = input("Usuário: ")
    resposta = bot.get_response(pergunta)
    if float(resposta.confidence) > 0.5:
        print('TW Bot: ', resposta)
    else:
        print('TW Bot: Ainda não sei responder esta pergunta')

Vale ressaltar que as perguntas e respostas do nosso ChatBot vão sendo armazenadas em um banco de dados SQLite criado automaticamente. Um outro ponto importante é que o processo de aprendizado é um pouco lento, então você terá que conversar alguns minutos com seu ChatBot até que ele aprenda novas perguntas e suas respectivas respostas.

Após isso, podemos executar nosso ChatBot e conversar com nosso novo amigo. Para isso, clicamos com o botão direito no arquivo e selecionamos a opção “Run”:

Nosso ChatBot será inicializado e nós podemos trocar mensagens com ele. Após alguns minutos de conversa, você perceberá que o ChatBot fará perguntas que não estão cadastradas em nossa lista conversa. Estas perguntas são aprendidas com o tempo e armazenadas no banco de dados:

Nem sempre as respostas possuem exatidão, mas este processo vai melhorando com o tempo. Basta você indicar o caminho correto para o Bot que ele aprenderá mais rápido.

Concluindo

Neste artigo vimos como é simples criar um ChatBot com Python. O processo de aprendizado, no início, é demorado, mas vai melhorando com o tempo. Após alguns minutos de conversa, você terá um amigo pra dialogar nas horas vagas sobre os assuntos que você mais gosta. 😀

Python - Orientação a objetos
Curso de Python - Orientação a objetos
CONHEÇA O CURSO