Nelson198 / AA2

Aprendizagem Automática 2 - Trabalho Prático - 2019/2020
MIT License
2 stars 0 forks source link

Mestrado em Engenharia Informática - UMinho

Aprendizagem Automática 2

Trabalho Prático - 2019/2020

Logo

Contribuidores

João Imperadeiro
José Boticas
Nelson Teixeira
Rui Meira

Tema

O tema escolhido pelos 4 elementos deste grupo corresponde à opção relativa ao desenvolvimento de algoritmos / software no âmbito de aprendizagem máquina. Mais especificamente, optou-se pelo desenvolvimento de uma framework de AutoML.

Esta framework visa obter o melhor modelo para problemas de supervised learning de forma automática e com a menor intervenção possível por parte do programador. À framework idealizada foi atribuído o nome UnicornML.

Planificação

Dos objetivos inicialmente delineados por este grupo de trabalho, destacam-se os seguintes:

Implementação

Os problemas de aprendizagem supervisionada podem ser divididos em dois conjuntos: problemas de regressão e problemas de classificação. Como tal, é importante perceber qual dos dois problemas se vai tratar, de forma a que se possa poupar tempo e recursos de computação na procura do melhor modelo. Para isso, foi idealizada uma forma simples de identificar o tipo do problema. Caso a incógnita target de um determinado conjunto de dados seja uma variável discreta (valores float), o problema em causa é de classificação. Se esta última corresponder a uma variável contínua (valores inteiros) então trata-se de um problema de regressão. No entanto, este processamento é evitado se o utilizador indicar qual dos problemas os seus dados representam.

A UnicornML oferece também diversos algoritmos para cada um dos tipos de problemas mencionados acima. O utilizador pode escolher, dentro dos algoritmos disponíveis, quais os que quer que sejam testados. No entanto, estes só serão testados se estiverem disponíveis para o tipo de problema identificado pela framework ou indicado pelo mesmo. Caso o utilizador não indique quais os algoritmos que prefere que sejam testados, a framework testará todos os algoritmos disponíveis para o tipo de problema identificado pela mesma ou indicado pelo utilizador.

Para problemas de regressão, os algoritmos disponiveis são:

Para problemas de classificação, os algoritmos disponiveis são:

A procura dos melhores hiperparâmetros para o problema das redes neuronais vai ser realizada com o uso da biblioteca kerastuner. Para os restantes algoritmos, procede-se à utilização da função RandomizedSearchCV, disponibilizada pela biblioteca sklearn.

Estrutura do projeto

├─ Code
│  ├─ data
│  │  ├─ 50_startups.csv
│  │  ├─ abalone.csv
│  │  ├─ bank_notes.csv
│  │  ├─ housing.csv
│  │  ├─ ionosphere.csv
│  │  ├─ iris.csv
│  │  ├─ pregnant.csv
│  │  ├─ social_network_ads.csv
│  │  ├─ sonar.csv
│  │  ├─ swedish.csv
│  │  ├─ wheat.csv
│  │  └─ winequality-white.csv
│  ├─ tests
│  │  ├─ 00.py
│  │  ├─ 01.py
│  │  ├─ 02.py
│  │  ├─ 03.py
│  │  ├─ 04.py
│  │  ├─ 05.py
│  │  ├─ 06.py
│  │  ├─ 07.py
│  │  ├─ 08.py
│  │  ├─ 09.py
│  │  ├─ 10.py
│  │  ├─ 11.py
│  │  ├─ 12.py
│  │  └─ __init__.py
│  ├─ unicornml
│  │  ├─ classification
│  │  │  └─ __init__.py
│  │  ├─ images
│  │  │  └─ __init__.py
│  │  ├─ model
│  │  │  └─ __init__.py
│  │  ├─ neuralnetwork
│  │  │  └─ __init__.py
│  │  ├─ preprocessing
│  │  │  └─ __init__.py
│  │  ├─ regression
│  │  │  └─ __init__.py
│  │  └─ __init__.py
│  ├─ options.yaml
│  └─ setup.py
├─ Presentation
│  ├─ Diagram.png
│  └─ Presentation.pptx
├─ Proposal
│  ├─ Proposal.pdf
│  └─ Proposal.tex
├─ Report
│  ├─ V1 - Initial
│  │  ├─ Image
│  │  │  └─ EEUM_logo.png
│  │  ├─ Report.pdf
│  │  └─ Report.tex
│  ├─ V2 - Final
│  │  ├─ Images
│  │  │  ├─ Diagram.png
│  │  │  └─ EEUM_logo.png
│  │  ├─ Report.pdf
│  │  └─ Report.tex
├─ .gitignore
├─ LICENSE
├─ Logo.png
├─ Project.pdf
└─ README.md

Dado que este trabalho diverge de outros propostos pelos alunos desta unidade curricular, os elementos que compõem este grupo optaram pela elaboração de um relatório. Neste evidenciam-se todos os detalhes do trabalho prático, quer a nível computacional quer ao nível da estrutura da framework desenvolvida. Para além disso, são também exibidos todos os testes realizados sobre os conjuntos de dados disponibilizados pela mesma. Desta forma foi possível extrair resultados pernitentes na análise da plataforma em questão, validando, consequentemente, o seu funcionamento.

O documento em causa pode ser consultado a partir do seguinte link ou, de forma mais simples, pode ser vizualizado diretamente a partir da diretoria Report/V2 - Final/Report.pdf.


Instalação

cd Code/
python3 setup.py install --user

Testes

Documentação