Tipos de sistemas de aprendizado de máquina
Tags: machinelearning, beginners
Published: 2020-02-26 13:16:47

Quando fala-se de machine learning (aprendizado de máquina), a maioria das pessoas pensa em um mordomo confiável ou um Exterminador do Futuro. Apesar desta idealização futurista, o aprendizado de máquina já é uma realidade há décadas. Sim, décadas. A primeira aplicação de sucesso foi o filtro de spam em 1990. 
Utilizando o Reconhecimento Ótico de Caracteres (OCR), uma máquina aprendeu a classificar quais e-mails eram ou não spam. Funcionou tão bem que hoje dificilmente precisamos marcar algum como tal.
Trinta anos depois os estudos e aplicações nessa área cresceram significativamente e tendem a continuar crescendo nos próximos anos, por isso é importante estar atenta a esta área da computação que ganha a cada dia mais espaço nos grupos de pesquisa e no mercado de trabalho. 

## Mas afinal, o que é Machine learning?

Acredita-se que há uma linha tênue entre ciência e arte da programação de computadores que permite que eles, os computadores, possam aprender com os dados que recebem, ou seja, é dar a eles a habilidade de aprender sem ser explicitamente programado.


## Quando utilizar aprendizado de máquina?

Atualmente, existe uma lista gigantesca de aplicações do machine learning, então além de procurar por exemplos já existentes, avalie se o problema que você precisa resolver encaixa-se em algum destes casos:

- Problemas que possuem soluções que exigem muita configuração manual ou que possuam muitas regras;
- Problemas complexos sem solução simples na abordagem tradicional;
- Contextos com muitas mudanças;
- Compreensão de problemas complexos e com grandes quantidades de dados.


## Tipos de sistema de aprendizagem da máquina

Existem tantos tipos de sistema de aprendizado que é necessário classificá-los pelo tipo de supervisão, se permitem aprendizado incremental e pela forma de generalização. Esses critérios não são exclusivos, ou seja, pode-se utilizar de mais de um sistema simultaneamente.

### 1) Tipo de supervisão
#### Supervisionado
Através de um conjunto de dados que contém as soluções desejadas é realizada a classificação da tarefa. No filtro de spam, por exemplo, o sistema é treinado com muitos exemplos de e-mails com ou sem spam.

Os algoritmos mais importantes do aprendizado supervisionado são:

- K-Nearest neighbors;
- Regressão linear;
- Regressão logística;
- Máquinas de vetores de suporte (SVM)
- Árvores de decisão;
- Florestas aleatórias;
- Redes neurais.

#### Não-supervisionado
Como o próprio nome já sugere, no aprendizado não-supervisionado não são passados rótulos para o sistema e o mesmo tenta aprender com base nos dados que são apresentados.
Os algoritmos classificam os dados com base em características semelhantes e criam grupos, às vezes subgrupos em busca de relações entre eles.

Os algoritmos mais importantes do aprendizado não-supervisionado são:

- Clustering
  - k-Means
  - Clustering Hierárquico (HCA)
  - Maximização a Expectativa
 - Visualização e redução da dimensionalidade
  - Análise de Componentes Principais (PCA)
  - Kernel PCA
  - Locally-Linear Embedding(LLE)
  - t-distributed Stochastic Neighbor Embedding(t-SNE)
- Aprendizado da regra da associação
  - Apriori
  - Eclat

#### Semi-supervisionado
Alguns algoritmos são capazes de lidar com dados de treinamento parcialmente rotulados, sem rótulos e alguns dados rotulados. Um ótimo exemplo é o Google fotos, pois em um conjunto de imagens ele é capaz de reconhecer que nas fotos 1, 4 e 8 aparece a mesma pessoa, enquanto que na 2, 4 e 7 outra (agrupamento não supervisionado). A partir do momento que você identificar a primeira pessoa em uma foto, ele será capaz de reconhecê-la em todas as outras.

Os algoritmos utilizados neste tipo de aprendizado, normalmente são uma mistura de supervisionados e não-supervisionados, assim como as Redes neurais de crenças profundas, que se baseiam em componentes não supervisionados - máquinas restritas de Boltzmann - empilhadas e posteriormente são treinadas sequencialmente de forma não supervisionada.

#### Por reforço
O aprendizado por reforço é o mais diferente de todos e baseia-se em uma política de obter a maior quantidade possível de recompensas, sendo assim, conforme as ações que o agente realiza ele recebe recompensas para o que é positivo e penalidades para o que for negativo. Normalmente robôs utilizam deste algoritmo para aprender a andar.

### 2) Incremental/não incremental

#### Aprendizado em lote
Este tipo de sistema é incapaz de aprender de forma incremental porque é treinado com todos os dados disponíveis. Isso normalmente demanda muito tempo e recursos computacionais, então, normalmente é feito offline e em seguida liberado para uso.

#### Aprendizado online
Este tipo de sistema permite o aprendizado incremental, pois ele é alimentado com pequenas instâncias ou pequeno grupos, também conhecidos como minilotes. Assim que cada uma dessas instâncias é interpretada ela pode ser descartada, o que é ideal para quem tem poucos recursos computacionais. Esse critério normalmente é utilizado para sistemas que necessitam adaptar-se rapidamente às mudanças de dados.

### 3) Generalização
Grande parte dos sistemas de aprendizado fazem previsões, sendo assim, a partir de um conjunto de exemplos de treinamento, o sistema precisa ser capaz de generalizar em exemplos que ele não viu anteriormente. Para tal, há duas formas de fazê-lo, por instância ou por modelo.

#### Aprendizado baseado em instância
No aprendizado baseado em instância o sistema aprende por meio de memorização e depois generaliza para novos casos utilizando uma medida que indique a qual item eles são semelhantes. Simplificando muito o exemplo, na classificação do e-mail spam, a classificação poderia ser feita através da quantidade de palavras em comum no novo e-mail e no que é spam.

#### Aprendizado baseado em modelo
Neste tipo de sistema, a generalização é feita através de um modelo criado baseado em um conjunto de exemplos. Imagine que dados de fontes diferentes são relacionados e identifica-se uma tendência a partir disso.  Essa tendência permite que um modelo seja criado e facilite a generalização. Por exemplo, relacionar a renda per capita dos países com a satisfação de vida por país. Existindo uma relação entre estes dados, cria-se o modelo e é possível prever a satisfação de vida a partir da renda per capita do país.


Enfim, chegamos ao final desta publicação que apresentou alguns conceitos iniciais sobre machine learning. Espero que essas informações tenham te ajudado e que te inspirem a estudar mais sobre esta área da computação de computadores.

Qualquer dúvida, comentário ou complemento let me know.