Aprendendo Machine Learning com o Andrew Ng

Silvia Benza Bareiro
Data Science Brigade
8 min readJan 15, 2018

Então para alegria de todos vou olhar os vídeos do Andrew Ng e anotar as coisas mais interessantes sobre o curso de Aprendizado de Máquina (Machine Learning). A ideia é aprender ensinando e de quebra compartilhar meus insights sobre o mesmo.

Neste primeiro post vou focar na primeira semana do curso. Se você se sente apreensivo com equações, não encontrará nenhuma neste.

Para alguém estudando Machine Learning, este curso é uma experiência tipo…

Fonte

Just do it. Sério. A menos que queira um certificado oficial do Coursera, o curso é gratuito. Além disso, o cara ensina muito bem e só pelo aprendizado já está valendo demais.

Antes de começar, você precisa saber: o mundo está virando multidisciplinar (meu lado acadêmico precisa falar disso). Tem que sair da zona de conforto e aprender que, para lidar com problemas complexos você vai precisar de apoio de pessoas de áreas diferentes. Assim também, aprender novas técnicas para solucionar esses problemas!

Por que falei isso? Bom, porque eu adoro trabalhar com problemas que nunca ouvi falar, quebrar a cabeça pra entender o que está acontecendo e ajudar com soluções. Como engenheira, eu ajudava com problemas da Biologia, onde meu trabalho consistia em assistir nas simulações dos experimentos. Criando scripts para assistir na utilização das ferramentas fechadas, chamadas também caixas pretas, porém a análise per se de dados biológicos não era realizada de maneira a eu entender o que acontecia por baixo dos panos. Por isso, decidi sair da minha zona de conforto, que estava muito longe da programação e dos cálculos pro meu gosto, e começar a entender o que está acontecendo enquanto os dados são analisados.

Fonte

Vamos falar sobre o Curso

Andrew começa falando sobre Arthur Samuel — um dos pioneiros da Inteligência Artificial — que diz:

Machine Learning é o campo de estudo que dá aos computadores a capacidade de aprender sem que sejam explicitamente programados.

Se você tem algum conhecimento prévio de programação, sabe que tradicionalmente o computador faz exatamente o que você manda ele fazer e nada além disso. Enquanto que, em Machine Learning, a máquina aprende através de exemplos. Então vamos pensar: como você faria se você fosse contratado para programar um filtro que define se um e-mail é ou não spam?

Fonte

Já consigo imaginar inúmeras estruturas condicionais e flags para indicar quais e-mails são ou não spam. Depois de muito trabalho, a chance ainda é grande de não conseguir levantar todas as condições em um tempo aceitável.

Enquanto que, os algoritmos de Machine Learning utilizam um conjunto de informações com o qual o computador verifica se está acertando na classificação e, através dos resultados dessa verificação, se retroalimenta e vai melhorando os resultados.

O Samuel, em 1949, criou um programa que ensinava ao computador a jogar Damas, onde o computador aprendia a jogar através de informações passadas de quais jogadas são boas — levam à vitória — e quais são ruins. Para coletar as informações que treinaria o algoritmo, Samuel fez com que este simulasse milhares de vezes distintos jogos. Até que, em um determinado momento, o computador já sabia quais jogadas seriam as melhores, inclusive melhor que o mestre!

Hoje em dia já temos muitas aplicações desenvolvidas com algoritmos de Machine Learning. O Medium é uma forma excelente de acompanhar o que outros falam sobre o assunto e descobrir o que é possível desenvolver baseado nessas técnicas. Hoje em dia, profissionais de diferentes áreas (como da Engenharia, Biologia e Medicina) já se unem para criar robôs ainda mais inteligentes. Porém estes estudos não ficam só nas áreas “clássicas”… cineastas já utilizaram Inteligência Artificial para escolher as cenas mais interessantes e criar o trailer ideal para um filme, no longínquo ano de 2016.

Portanto, vimos que através de Machine Learning podemos ensinar o computador a fazer coisas específicas, mas como nós ensinamos o computador a aprender? Andrew apresenta vários tipo de Aprendizado de Máquina, como o Aprendizado Supervisionado, Aprendizado Não Supervisionado e Sistemas de Recomendação (este já muito usado por Netflix, Spotify, Amazon…). Porém, neste primeiro momento vamos falar apenas sobre Aprendizado Supervisionado.

Aprendizado Supervisionado

Fonte

O Aprendizado Supervisionado é uma técnica de Machine Learning em que o computador aprende baseado em informações de entrada que já possuem uma resposta certa do problema.

“Respostas certas das informações de entrada”

Em uma aplicação no mercado imobiliário, podemos ter o objetivo de deduzir o preço ideal para a venda de um imóvel. Para isso, inicialmente possuímos um conjunto inicial de caraterísticas de cada casa que já está em venta assim como o preço atual de mercado, o qual consideramos como sendo a resposta da nossa informação. Os tipos de dados dessas respostas são chamadas de “valores contínuos”. Portanto, se formos considerar diferentes problemas, podemos ter respostas de valores contínuos como temperaturas, alturas das pessoas, etc, ou seja este tipo de resposta se caracteriza por pertencerem à gama de valores numéricos reais.

Por outro lado, se consideramos uma aplicação que infere a possibilidade de um tumor ser maligno, possuímos como informação inicial resultados de biópsias realizadas em mulheres com suspeita de câncer de mama. Onde após a biópsia os médicos determinaram se o tumor achado é Benigno ou Maligno. Neste caso, por mais que existam diferenças entre as mulheres, i.e., idade, peso, alimentação ou residência, o resultado vai ser sempre discreto, ou seja, Maligno ou Benigno, 0 ou 1, sim ou não. Os tipos de dados dessas respostas são consideradas como “valores discretos”.

Agora que sabemos que nossos dados podem nos dar respostas no universo dos números contínuos ou discretos, como tratar essas informações de maneira que sirvam para ensinar aos computadores, ou seja, como fazemos que nossos algoritmos sejam capazes de tomarem decisões como definir o preço de uma casa ou inferir se um tumor é maligno?

Dados Contínuos e Regressão

Quando estamos trabalhando com informações com respostas no universo contínuo podemos trabalhar com regressão. Para isso, coletamos informações de diversas casas diferentes e “treinamos o algoritmo” para que aprenda a fórmula perfeita para cálculo do preço que, no fim, será um número real.

No exemplo do curso, Andrew utiliza como característica somente o tamanho das casas, onde utiliza os valores do tamanho da casa como variáveis independentes e seu preço como variáveis dependentes, descrevendo assim através de uma equação uma curva para predecir os valores de preço de casas no mercado. Finalmente, após definir a melhor curva que descreve esses dados, podemos saber o preço de uma casa que não está no mercado através de aplicar a equação no valor do tamanho da casa alvo. Como vemos nesta imagem:

Fonte

Nela, cada X é uma casa com um tamanho determinado e o preço da mesma. É muito importante saber que simplesmente colocar uma equação de uma curva ou reta em cima dos dados pode não ser suficiente, na imagem podemos ver o desenho de duas equações distintas, e verificar que a escolha de uma ou outra pode dar uma diferença de mais de 50 mil dólares no preço para a mesma casa alvo que estamos querendo colocar no mercado.

Em um próximo post, vou falar mais sobre como escolher a melhor curva. Quando utilizar Regressão Linear ou Polinomial, e porque devemos analisar o que estamos fazendo sem correr e aceitar um modelo pronto que está passável porém aquém pra nossos dados.

Dados Discretos e Classificação

Quando estamos trabalhando no universo dos resultados discretos, consideramos esse tipo de problema como sendo de Classificação. Onde a partir das diferentes características dos dados podemos inferir que pertence a uma classe específica. No exemplo de inferir se um tumor é maligno ou benigno, nos referimos somente a 2 tipos, porém, podem existir diferentes tipos e estágios do tumor maligno. Percebam que a classificação através de Machine Learning pode sim reconhecer mais que 2 tipos de classes ou agrupamentos, na verdade é a gente quem define o nosso problema e com isso a quantidade de respostas que nosso classificador deve/pode retornar.

Voltando à nossa aplicação que verifica a possibilidade de um tumor ser maligno, similar ao caso anterior, devemos também levantar as características. Olhando a imagem podemos ver que não é tão simples plotar os nossos dados contra o resultado que possuímos.

Fonte

Utilizar regressão da mesma maneira que com os valores contínuos pode não ser indicado, pois não existe uma separação certa entre os diferentes valores, especialmente se consideramos somente o tamanho do tumor e o resultado do mesmo. No momento que ampliamos a quantidade de características que definem nosso problema, podemos obter uma separação mais visível.

Fonte

E com isso é possível criar uma equação que consiga separar ambos grupos, por exemplo, através da equação obtida após “treinar nosso algoritmo” é possível visualizar que tudo o que está abaixo da curva é benigno e tudo o que está pra cima da curva é maligno. Portanto, com essa separação é possível inferir com nosso aplicativo que um novo caso (a bolinha rosa) tem mais chances de ser benigno do que maligno.

Ambos exemplos sobre aprendizado supervisionado que foram dados nesta primeira semana do curso são bastante simples e de maneira introdutória, o foco é entender quais dados/problemas são bons para analisar com regressão e com quais realizar uma classificação. Porém, os problemas reais que você vai enfrentar não vão ser bonitinhos e com poucas características. Na verdade vão ser monstros de 1000 cabeças (que chamamos de características ou features). As quais vão ser difíceis de ver somente plotando os dados da maneira que foi feita nesses exemplos.

Não tenha medo! Vamos ver exemplos mais pesados, e o melhor: colocar a mão no código e ver as curvas separando nossos dados!

Já está sentindo o poder?

Fonte

Em um próximo post vou continuar falando sobre a primeira semana do curso, ainda tem muita coisa vindo!. Mas se ficou com vontade de aprender mais e não quer esperar até o próximo post, corre lá pro curso do Andrew!

--

--