/CMoveis

Projeto da disciplina ES-290 Comunicações Móveis

Primary LanguageJupyter NotebookMIT LicenseMIT

Projeto ES290 - Comunicações Móveis

1. Definição do problema

Identificar a localização (latitude e longitude) de um móvel a partir da potência do sinal enviada pelas antenas (BST's) para o dispositivo móvel.

2. Ferramentas utilizadas

  • Python 3
  • Jupyter notebook
  • Bibliotecas de python para machine learning
    • scikit
    • pandas
    • numpy
    • seaborn
  • Biblioteca auxiliar de calculo de distâncias geográficas: PyRadioLoc

3. Solução proposta

Usar random forest para gerar fingerprints e estimar as posições (latitude e longitude) dos pontos de teste. Também comparar com uso de Random Forest, MLP e K-NN para previsão direta da loacalização do usuário (latitude e longitude).

4. Resultados

4.1 Análise dos dados

Da base de dadas LocTreino_Equipe_4.csv compararion_map_1

4.2 Métodos de localização propostos

  • Baseline: Fingerprint 20 x 20 + medições usando modelo de propagação Cost231Hata
  • Solução: Três modelos de machine learning para servir como modelo de propagação na geração do fingerprint e para previsão direta de latitude longitude
    • Random forest
    • Multi Layer Perceptron (MLP)
    • K-NN Regressor

4.3 Erro de localização em metros

Método 1: Apenas medições
Método 2: Apenas fingerprint 20 x 20
Método 3: Fingerprint 20 x 20 + medições
Método 4: Random forest
Método 5: MLP
Método 6: Fingerprint + Random Forest (sem otimização)
Método 7: Fingerprint + Random Forest (com otimização)
Método 8: K-NN normalizado

erros

4.4 Histograma dos erros em metros

Apenas Medições
histogram_1

Apenas Fingerprint 20 x 20
histogram_2

Fingerprint 20 x 20 + medições
histogram_3

Random Forest
histogram_4

MLP
histogram_5

Fingerprint + Random Forest (sem otimização)
histogram_6

Fingerprint + Random Forest (com otimização)
histogram_7

K-NN Normalizado
histogram_8

4.5 BoxPlot dos erros em metros

Apenas Medições
boxplot_1

Apenas Fingerprint 20 x 20
boxplot_2

Fingerprint 20 x 20 + medições
boxplot_3

Random Forest
boxplot_4

MLP
boxplot_5

Fingerprint + Random Forest (sem otimização)
boxplot_6

Fingerprint + Random Forest (com otimização)
boxplot_7

K-NN Normalizado
boxplot_8

4.6 Mapa de comparação posições preditas vs. posições reais

Apenas Medições
compararion_map_1

Apenas Fingerprint 20 x 20
compararion_map_2

Fingerprint 20 x 20 + medições
compararion_map_3

Random Forest
compararion_map_4

MLP
compararion_map_5

Fingerprint + Radom Forest (sem otimização) compararion_map_6

Fingerprint + Radom Forest (com otimização) compararion_map_7

K-NN Normalizado
compararion_map_8

5. Conclusão e dificuldades

As principais dificuldades foram:

  • Implementar o modelo teórico, fingerprint
  • A geração dos resultados leva parte considerável do tempo (Sugestão: uma lib que gere os gráficos e resultados de uma única vez poderia ajudar)
  • Tratamento com os dados, durante um bom tempo não tinhamos percebido que devíamos usar a dist (KM) para avaliar o algoritmo
  • Modelos de machine learning são complexos e a escolha dos parâmetros que vai definir a qualidade do resultado. A função de grid do scikit, apesar de bastante útil, leva bastante tempo para encontrar os melhores modelos o que a torna impraticável para aplicar sobre todos os modelos.
  • O fingerprint não foi efetivo em prever as localização, pois o modelo de propagação não leva em conta antenas setoriais (azimute), apenas leva em conta latitude e longitude.

Analisando os dados pode-se concluir que os melhores modelos foram o Random Forest e K-NN normalizado. Pode-se notar também que o uso de machine learning para gerar o mapa de propagação de rádio obteve resultados superiores em comparação ao modelo teórico de propagação.