Ciência de Dados

Leia os últimos artigos sobre Ciência de Dados em Infosimples.com



Segmentação de Strings com Aprendizado de Máquina
Gravatar publicou em

Ciência de Dados Programação

O uso de inteligência artificial na linguagem vêm apresentando interessantes resultados, principalmente na área de tradução. Outros exemplos incluem sugestões de correção em erros ortográficos e até mesmo o reconhecimento de fala.

Para testar um algoritmo simples que trabalha com elementos de uma linguagem, foi desenvolvido um programa com o objetivo de conseguir separar as palavras de uma string que não contenha espaços. Por exemplo, ao receber "thisishowitshouldwork", o programa deveria retornar "this is how it should work". 

O problema consiste em determinar o que deve ser considerado uma palavra, visto que é impossível listar todas as palavras conhecidas em Inglês e não há como construir um modelo eficiente que consiga generalizar sua estrutura.

A abordagem foi utilizar aprendizado supervisionado e uma grande quantidade de texto como base de treinamento para que o programa conseguisse passar a identificar as diversas palavras que compõem a língua inglesa. A vantagem de utilizar textos ao invés de uma simples lista contendo todas as palavras conhecidas é a possibilidade de verificar a frequência com que cada uma aparece. Conhecendo a probabilidade de aparição de cada palavra, pode-se calcular a mais provável divisão da string recebida.

Portanto, é possível determinar que a probabilidade de uma certa divisão da string é função das probabilidades de cada palavra obtida na divisão. Para aumentar a qualidade dos resultados, poderia ser considerada a probabilidade de uma palavra ocorrer após outra certa palavra, mas devido à relativa pequena quantidade de texto utilizado na etapa de treinamento, foi considerada apenas a probabilidade individual de cada palavra.

Outra questão a ser considerada é como lidar com palavras que nunca apareceram na base de treinamento. É impossível garantir, por maior que seja seu texto, que ele contém todas as palavras existentes na língua. Foi utilizada Suavização de Laplace para o cálculo das probabilidades, de modo a evitar que palavras não encontradas tenham probabilidade zero. Por fim, foi realizada uma normalização para possibilitar a comparação entre divisões da string de diferentes números de palavras.

Continue a ler...










Introdução a Aprendizado de Máquina
Gravatar publicou em

Ciência de Dados

De maio a agosto de 2014, estagiei na Infosimples e tive a oportunidade de estudar o curso de Introdução à Inteligência Artificial oferecido pelos professores Sebastian Thrun e Peter Norvig, disponível na Udacity. Abrangendo uma grande variedade de assuntos, suas aulas sobre aprendizado de máquina são sem dúvida as mais empolgantes. Esse artigo de três partes busca repassar alguns dos conhecimentos adquiridos e demonstrar algumas aplicações de técnicas de aprendizado de máquina apresentadas no curso.

Inteligência Artificial e Aprendizado de Máquina

Presentes atualmente em diversos campos de atuação, programas de inteligência artificial vêm apresentando avanços surpreendentes nos últimos anos e são cada vez mais parte do dia-a-dia. Seja na medicina, robótica, internet ou até mesmo na área de finanças, podem ser identificados diversos exemplos de programas que utilizam inteligência artificial para realizar o trabalho adequadamente. Além de grandes marcos como o computador Deep Blue da IBM, que em 1997 derrotou o então campeão mundial de xadrez Garry Kasparov, até o recém anunciado carro que dispensa motorista pelo Google, há milhares de outras aplicações para técnicas dessa área.

Um agente inteligente, como podem ser chamados esses programas, é capaz de interagir com o ambiente e, a partir das informações recebidas, determinar qual ação deve ser realizada a seguir. Construir um bom programa de inteligência artificial está diretamente relacionado a encontrar a melhor função que mapeie os diversos dados de entrada com os de saída.

Na grande maioria dos casos, o agente trabalha com espaços em que não há uma maneira eficiente de se programar manualmente uma função que lide com todos os casos possíveis, seja porque o ambiente em que atua não é discreto, por possuir uma certa aleatoriedade ou por não ser possível observá-lo completamente.   

Diante de problemas como esse, a utilização de aprendizado de máquina em aplicações de inteligência artificial muitas vezes destaca-se pela eficiência nos resultados e por permitir que se cubra um grande número de estados sem ser necessário programar individualmente cada um deles. Essas aplicações passam por um período de "aprendizado", em que recebem as informações necessárias para determinar como devem se comportar em situações futuras.

As aplicações de aprendizado de máquina podem ser divididas em três categorias: 

Aprendizado supervisionado é utilizado quando se conhece o modelo que o programa deve seguir e a partir dele generaliza-se de modo a conseguir aplicá-lo a qualquer entrada. Um exemplo é a classificação de e-mails como spam: a partir de alguns spams como referência, determina-se uma função que procura por certas características em um e-mail qualquer e verifica a probabilidade de se tratar de um spam.

Já em aprendizado não supervisionado, não há conhecimento adequado de como os dados se comportam, e são utilizados algoritmos que tentam organizá-los de modo a classificá-los. Procura-se um certo padrão que consiga descrever um comportamento aproximado dos dados recebidos.

Por fim, em aprendizado por reforço realiza-se um feedback sobre os resultados obtidos, atribuindo pontuações positivas a resultados considerados corretos e penalizando os incorretos. Diante dessa pontuação, o agente consegue ajustar seu comportamento de modo a buscar o melhor resultado.

Nas próximas partes desse artigo, planeja-se demonstrar duas aplicações simples de aprendizado de máquina, uma de aprendizado supervisionado e outra de aprendizado por reforço.

Segmentação de Strings com Aprendizado de Máquina

Inteligência Artificial para Jogo da Velha










Curso de Aprendizado de Máquina no Coursera
Gravatar publicou em

Ciência de Dados

Recentemente, eu decidi realizar o curso online de Aprendizado de Máquina do Coursera. Neste artigo, eu vou explicar um pouco sobre a estrutura geral do curso e os assuntos que ele cobre.

Objetivo do curso

O curso de Aprendizado de Máquina do Coursera é ministrado por Andrew Ng, co-fundador do Coursera e diretor do laboratório de Inteligência artificial de Stanford.

O curso tem como objetivo ensinar alguns algoritmos para resolução de problemas usando a inteligência artificial, assim como a intuição por trás destes algoritmos.

Metodologia

O curso é dividido em 10 aulas sobre variados algoritmos de Aprendizado de Máquina. Cada aula é composta por:

  • Vídeos: explicam o funcionamento do algoritmo e sua aplicação e apresentam diversos exemplos reais;
  • Testes objetivos: testam o aprendizado do aluno sobre os assuntos explicados nos vídeos;
  • Exercícios programa: aplicam de maneira direta os conceitos estudados na aula e auxiliam sua compreensão.

Algoritmos

Os algoritmos ensinados durante o curso podem ser divididos nas seguintes categorias:

  1. Aprendizado supervisionado
  2. Aprendizado não supervisionado

O aprendizado supervisionado refere-se a algoritmos que tentam prever uma saída dado como entrada um conjunto de dados. Nesses casos, para ensinar o algoritmo, é necessário uma base de dados com as entradas e as saídas corretas. Este modelo de aprendizado se divide em duas subcategorias:

  • Regressão: neste caso, as saídas do algoritmo são valores contínuos, ou seja, podem assumir uma quantidade infinita de valores. Por exemplo, a determinação do preço de venda de uma casa a partir de algumas informações sobre ela, tais como número de quartos e tamanho, é considerado um problema de regressão.
  • Classificação: as saídas de algoritmos desta subcategoria são valores discretos, contidos dentro de um subconjunto definido. Por exemplo, um algoritmo que decide se um email é um spam ou não gera uma saída 0 ou 1 e, portanto, pode ser considerado de classificação.

O aprendizado não supervisionado refere-se a algoritmos que tentam agrupar dados em conjuntos que tenham determinadas semelhanças entre si. Por exemplo, pode-se usar este tipo de algoritmos para agrupar pessoas que tenham características comuns em uma rede social.

Neste curso, os principais algoritmos de aprendizado supervisionado ensinados são  Regressão Linear, Regressão Logística, Redes Neurais e Support Vector Machine. Já os algoritmos de aprendizado não supervisionado abordados são K-Means, Detecção de Anomalias e Sistemas de Recomendação.













Leia mais sobre: