Photo by Adrian Rosebrock on pyimagesearch

Por que usar machine learning nos seus projetos ?

Neto Oliveira
Ensina.AI
Published in
7 min readJun 15, 2018

--

Há tempos, nós desenvolvedores nos deparamos com diversas soluções no dia-a-dia, porém, a maior parte está no escopo comum e convencional. Com a chegada da inteligência artificial se ouviu muitos rumores e ideias de como utilizá-la. De fato muitos projetos poderiam ser melhorados com o uso de Machine Learning (ML), mas nem só de ML se vive uma aplicação.

Aprender a ramificação do ML é importante antes de qualquer implementação em seu projeto, entender como funciona e porque ele deve ser utilizado, principalmente saber se seu projeto suporta os ganhos e as “perdas” que o ML pode te dar.

Se você leu perdas e se assustou, é porque ainda lhe falta alguns conceitos sobre a área.

Tipos de Machine Learning

Machine Learning está divido em 3 subcategorias de aprendizagem, que são elas: Supervisionado, Não Supervisionado e por Reforço. Cada uma com sua particularidade e ramo de pesquisa, não é possível definir qual é a melhor em todas as situações.

Aprendizagem Supervisionada

Isso é um cachorro ou um gato? Devo conceder crédito para esse cliente? Quanto será que ganharei em dinheiro por ter produzido esse filme? O valor das minhas ações irão subir ou descer? O quanto minhas ações irão valorizar?

Em problemas de aprendizagem supervisionada é necessário que haja um conjunto de dados rotulados, que representem o conjunto de dados de características. Por exemplo, se nos é dado um conjunto de dados sobre características de gatinhos, como: tamanho dos olhos, cor do pelo, peso e tamanho da patinha, é necessário também rotular o conjunto dessas características, para que o algoritmo a ser utilizado faça a relações entre esses dados, sendo capaz de classificar gatinhos que não estejam rotulados.

Esses problemas podem ser classificados em dois tipos: Regressão e Classificação. Para explicar cada um, é necessário saber o conceito de tipos de rótulos, podem ser: Numérica Contínuo (datas, tamanhos e comprimentos) ou Categórica (gênero, tipo de material e método de pagamento).

Os rótulos são denominados pela letra Y, enquanto o conjunto de características pertencentes a Y são denominados X, para facilitar a compreensão, separaremos essas duas letras para representar nosso dataset.

Casos de teste

Separar casos de teste é uma maneira eficiente de calcular a acurácia de seu modelo. O teste é feito utilizando uma porcentagem do seu dataset, mas por que? Pelo fato de você já saber quais são os Y do seu X, então a partir do Y do seu dataset é possível comparar com os dados preditos pelo modelo.

Classificação

A classificação utiliza o rótulo ou Y do tipo categórico, já que o seu objetivo é determinar a classe que o conjunto X pertence. Veja o caso abaixo.

Para calcular a acurácia do seu algoritmo é simples, basta utilizar os casos de teste e verificar se a resposta dada pelo modelo é igual as do dataset.

Regressão

Já a regressão utiliza o rótulo do tipo numérico, que o permite estimar um valor baseado nas características do elemento. Vamos pegar esse caso para teste:

A saída esperada também é do tipo numérico contínuo, mas como podemos ver, a estimativa funciona de modo aproximado podendo errar muito ou pouco, para isso existe um modo de medir o erro aproximado para determinar se a saída obteve sucesso ou não.

Existem algoritmos responsáveis por calcular esse erro, o mais conhecido é o RMSE (root-mean-square error), que faz um cálculo do desvio padrão da diferença entre o valor predito com o valor real.

Aprendizagem Não Supervisionada

Diferente da aprendizagem supervisionada, que precisa ter rótulos sobre seu conjunto de dados, essa aprendizagem nos permite obter um agrupamento dos conjuntos, mesmo sem serem categorizados. Por outro lado, por ser subjetivo, é difícil definir métricas de quão bem está o modelo.

Pode ser utilizada também para identificar tendências ou diminuir o número de características de um conjunto de dados, concentrando somente nos atributos mais relevantes.

A técnica de agrupamento é chamada clustering, sua vantagem se dá pelo fato de a máquina não ficar limitada aos rótulos dados pelo dataset, então é capaz de formar grupos por si só, levando em consideração as características mais importantes.

No âmbito de data mining é comum obter dados totalmente desestruturados e o conteúdo é muitas vezes desconhecido. Nesses casos é possível obter uma percepção da estrutura dos dados, podendo ser útil para classificá-los posteriormente.

Aprendizagem Por Reforço

Já a aprendizagem por reforço, um agente aprende como se comportar em um ambiente a partir da exploração de estratégias possíveis, ou seja, tentativa e erro, recebendo feedbacks à medida que as ações são tomadas. Esses feedbacks podem ser positivos ou negativos, dependendo da ação em que o agente está tomando, entretanto, seu objetivo é maximizar os ganhos.

A aprendizagem por reforço é totalmente inspirada no estudo do comportamento, já que no decorrer da sessão do programa ele obtém experiências que podem levá-lo a ter ganhos ou perdas.

Pode ser utilizado em diferentes áreas como, video games, robôs/veículos autônomos, labirintos e etc.

Overfitting

O Overfitting acontece quando seu modelo aprende perfeitamente seus dados de treinamento, não sendo capaz de reproduzi-lo com outros dados futuros, basicamente ele se molda para que sempre acerte seu conjunto, mas isso o torna menos eficiente em utilizações futuras, que representam o mundo real.

Quer dizer que seu modelo preditivo não é genérico o suficiente para ser usado em demais casos, isso o torna seu modelo inteiramente complexo por se adaptar a essas únicas situações.

Afinal, há maneiras de resolver o overfitting ?

A mais comum é fornecer um dataset de treinamento maior do que o atual, como o modelo preditivo se baseia nos casos de teste para ser gerado, quanto mais casos de testes maior a chance de obter um modelo genérico.

Dilema do Trade-off

Agora que você já conhece os termos e sabe como o ML funciona, deve estar pensando em colocar em prática todos esses conceitos na sua aplicação, deixá-la super mega power inteligente, mas aí vêm o banho de água fria. Independente da sua aplicação, existem focos a serem tomados, sejam eles: Velocidade ou Confiabilidade.

Normalmente é difícil uma aplicação utilizando ML obter velocidade e confiabilidade juntas, pelo fato de que, quanto mais acurácia você obtiver, mais cálculos o device terá que realizar.

Esse trade-off pode ser contornado pelo escopo da sua aplicação, por exemplo, se a velocidade importa muito pro usuário e seu sistema se permite errar, é comum obter uma resposta rápida que possa não ser exatamente o resultado esperado, mas o importante é que houve uma resposta. Esses fatores precisam ser bem pensados para atender de forma coesa a expectativa do usuário.

Resposta do título

O processo evolutivo da tecnologia culmina em um único caminho: Executar tarefas repetitivas da melhor maneira possível. Com o ML não é diferente, não é distante o fato dele começar a ocupar cargos de profissões que não tem características inovadoras, tampouco programadores estão salvos.

Sabe-se que diariamente são construídos e disponibilizados milhares de programas para as vezes poucos usuários, isso quer dizer que há números gigantes de aplicações repetidas, cuja o objetivo é sanar um pequeno problema sem se importar muito com o ganho social. Utilizar ML em aplicações os tornam mais personalizados, criam vínculos e laços com os usuários.

É possível aplicar ML em diferentes áreas como: IOT, Saúde, Educação, Direito e etc. Todas as áreas precisam de algum tipo de inteligência que não possuem hoje. Pode-se também utilizar ML em aplicações super conhecidas como alarmes, calendários, fotos, calculadoras e etc, todas poderiam se adequar ao contexto do usuário e entregar um valor agregado.

Portanto, antes de construir sua aplicação pese todas as opções de tecnologias, inclusive o custo de implantação de uma inteligência artificial ou um sistema de recomendação.

--

--

Neto Oliveira
Ensina.AI

Desenvolvedor de Internet das Coisas e Inteligência artificial. Coordenador da comunidade AI.BRASIL. Linkedin: https://www.linkedin.com/in/netoolii/