Detecção do Modo de Transporte com modelos de Redes Neurais por Convolução (CNN) e modelos de Redes Neurais Recorrentes (RNN)
Visão geral do projeto
Identificar os modos de transporte através de observações dos usuários, ou observação do ambiente, é um tópico crescente de pesquisa, com muitas aplicações no planejamento da mobilidade urbana. A detecção do modo de transporte fornece informações para o diagnóstico do uso da malha viária, da ocupação do solo, do deslocamento de cargas e, principalmente, dos deslocamentos das pessoas nas cidades.
O reconhecimento do modo de transporte do usuário pode ser considerado como uma tarefa de HAR (Human Activity Recognition). Seu objetivo é identificar que modo de transporte — caminhar, dirigir etc. — uma pessoa está usando. Historicamente, os dados dos sensores para reconhecimento de atividades eram difíceis e caros de coletar, exigindo hardware personalizado. Agora, telefones inteligentes e outros dispositivos de rastreamento pessoal usados para monitoramento de saúde e fitness são baratos e onipresentes. Como tal, os dados de sensores destes dispositivos são mais baratos de coletar, mais comuns e, portanto, são uma versão mais comumente estudada do problema geral de reconhecimento de atividades.
Visando a obtenção de um modelo de Detecção do Modo de Transporte utilizando dados de sensores de telefones celulares, foi desenvolvido este projeto onde foram aplicadas redes neurais por convolução e redes neurais recorrentes num conjunto de dados (http://cs.unibo.it/projects/us-tm2017/download.html) desenvolvido na Universidade de Bolonha .
A escolha pelos modelos de redes neurais profundas se deu em virtude de estarem alcançando resultados de ponta para o reconhecimento da atividade humana. Eles são capazes de realizar o aprendizado de recursos automáticos a partir dos dados brutos do sensor e os modelos de desempenho superior se ajustam a recursos específicos do domínio criados manualmente.
CNN
Nas Redes Neurais Convolucionais (CNN), cada camada de rede atua como um filtro de detecção para a presença de características ou padrões específicos presentes nos dados originais. As primeiras camadas em um CNN detectam recursos que podem ser reconhecidos e interpretados de forma relativamente fácil. Camadas posteriores detectam recursos cada vez mais específicos. A última camada da CNN é capaz de fazer uma classificação ultra específica, combinando todos os recursos específicos detectados pelas camadas anteriores nos dados de entrada.
RNN
A lógica das Redes Neurais Recorrentes (RNNs) é fazer uso de informações seqüenciais. Em uma rede neural tradicional, se assume que todas as entradas (e saídas) são independentes umas das outras. Mas, para muitas tarefas, não é uma boa abordagem. Querendo-se prever a próxima palavra em uma frase, é importante saber quais palavras vieram antes dela. Os RNNs são chamados de recorrentes porque executam a mesma tarefa para cada elemento de uma sequência, com a saída sendo dependente dos cálculos anteriores. Outra maneira de pensar sobre as RNNs é que elas têm uma “memória” que captura informações sobre o que foi calculado até o momento. Na teoria, os RNNs podem fazer uso de informações em sequências arbitrariamente longas, mas, na prática, limitam-se a olhar para trás apenas alguns passos.
Descrição do problema
O problema consiste na detecção do modo de transporte utilizado dada uma captura de dados instantânea por um determinado número de tipos de sensores. Enquadrado como uma tarefa de classificação de série temporal multivariada, é um problema desafiador, pois não há maneiras óbvias ou diretas de relacionar os dados do sensor registrado à atividades humanas específicas e cada sujeito pode realizar uma atividade com variação significativa, resultando em variações nos dados do sensor gravado. Foram utilizados dados registrados de sensores com as atividades correspondentes para assuntos específicos, com modelos ajustados a partir desses dados. Por fim, foi obtido um modelo otimizado que classifica a atividade de novos assuntos não vistos a partir de seus dados de sensor.
Métricas
A métrica de avaliação que foi utilizada para quantificar o desempenho tanto do modelo de benchmark como dos modelos de solução apresentados foi a Acurácia.
Acurácia geral com todos os quatro algoritmos de classificação do modelo de benchmark:
II. Análise
Exploração dos dados
O conjunto de dados utilizados no projeto (http://cs.unibo.it/projects/us-tm2017/download.html) foi desenvolvido na Universidade de Bolonha com o esforço de diferentes pessoas:
- Marco Di Felice • Professor Associado • email: marco.difelice3@unibo.it
- Luciano Bononi • Professor Associado • email: luciano.bononi@unibo.it
- Luca Bedogni • Professor Assistente • email: luca.bedogni4@unibo.it
- Vincenzo Lomonaco • Estudante de doutorado • email: vincenzo.lomonaco@unibo.it
Colaboradores anteriores
- Claudia Carpineti • Mestranda • e-mail: claudia.carpineti@studio.unibo.it
- Matteo Cappella • Aluno de mestrado • email: matteo.cappella@studio.unibo.it
- Simone Passaretti • Aluno de mestrado • email: simone.passaretti@studio.unibo.it
A coleta de dados foi controlada por um aplicativo Android em execução no telefone dos usuários enquanto eles realizavam atividades. Esse aplicativo, por meio de uma interface gráfica simples, permitiu que os voluntários gravassem seu nome, iniciassem e interrompessem a coleta de dados e rotulassem a atividade que estava sendo executada. Foi pedido aos usuários para usar o aplicativo durante atividades específicas, como caminhar, estar em um carro, em um trem, em um ônibus ou ficar parado. As atividades foram rotuladas com estas abreviações:
T M = {bus, car, train, still, walking}
- ‘bus’: Ônibus
- ‘car’: Carro
- ‘train’: Trem
- ‘still’: Parado
- ‘walking’: Caminhando
O aplicativo registra cada evento do sensor com uma frequência máxima de 20 Hz. Os eventos ocorrem toda vez que um sensor detecta uma alteração nos parâmetros que está medindo, fornecendo quatro informações:
- o nome do sensor que acionou o evento;
- o timestamp do evento;
- a acurácia do evento;
- os dados brutos do sensor que acionaram o evento.
Atributos
- Accelerometer: Acelerômetro
- Sound: Som
- Orientation: Orientação
- Linear acceleration: Aceleração Linear
- Speed: Velocidade
- Gyroscope: Giroscópio
- Rotation vector: Vetor de rotação
- Game rotation vector: Vetor de rotação para jogos
- Gyroscope uncalibrated: Giroscópio sem calibração
Foram gerados recursos estatísticos baseados nas múltiplas leituras dos sensores. Para cada sensor, 4 recursos diferentes:
- ‘max’: Máximo valor obtido dentro da janela observada¹
- ‘min’: Mínimo valor obtido dentro da janela observada¹
- ‘mean’: Valor médio calculado dentro da janela observada¹
- ‘std’: Desvio padrão calculado dentro da janela observada¹
[1] Uma abordagem direta de preparação de dados que foi usada tanto para métodos clássicos de aprendizado de máquina quanto para redes neurais envolve dividir os dados do sinal de entrada em janelas de sinais, onde uma janela pode ter de um a alguns segundos de observação dos dados. Isso geralmente é chamado de “sliding window” (janela deslizante).
“O reconhecimento da atividade humana visa inferir as ações de uma ou mais pessoas a partir de um conjunto de observações captadas por sensores. Normalmente, isso é feito seguindo uma abordagem de “sliding window” de comprimento fixo para a extração de recursos, onde dois parâmetros devem ser corrigidos: o tamanho da janela e o deslocamento.”
— A Dynamic Sliding Window Approach for Activity Recognition, 2011
Cada janela também está associada a uma atividade específica. Uma determinada janela de dados pode ter várias variáveis, como os eixos x, y e z de um sensor acelerômetro.
No projeto foram utilizadas as janelas de 5 segundos, equivalente a 1% dos dados brutos, e de 0,5 segundos, equivalente a 10% dos dados brutos.
Visualização exploratória
Os gráficos abaixo apresentam a contagem de dados por Modo de Transporte para as janelas de 0.5 segundos e 5 segundos:
- Janela de 0.5 segundos
- Janela de 5 segundos
Percebe-se que a amostra de dados para cada um dos Modos de Transporte está bem equilibrada.
- Distribuição dos dados por atributos
A seguir são apresentados gráficos da distrubuição dos dados para cada um dos Modos de Transporte por atributo:
Percebe-se uma grande variação na escala dos dados, sendo necessário tratá-los para evitar que o desempenho preditivo dos algoritmos seja prejudicado.
Por isso, os dados foram tratados com o MinMaxScaler da biblioteca Scikit-Learn. Nesta abordagem, os dados são escalados para um intervalo fixo — geralmente de 0 a 1. Com esse intervalo limitado, eliminam-se desvios padrão menores, o que pode suprimir o efeito de outliers.
O dimensionamento Min-Max é feito por meio da seguinte equação:
Algoritmos e técnicas
Neste projeto foram aplicados os modelos de redes neurais por convolução e modelos de redes neurais recorrentes.
Modelos de redes neurais profundas estão alcançando resultados de ponta para o reconhecimento da atividade humana. Eles são capazes de realizar o aprendizado de recursos automáticos a partir dos dados brutos do sensor e os modelos de desempenho superior se ajustam a recursos específicos do domínio criados manualmente.
“[…], Os procedimentos de extração de características e construção de modelos são freqüentemente executados simultaneamente nos modelos de aprendizagem profunda. Os recursos podem ser aprendidos automaticamente através da rede, em vez de serem projetados manualmente. Além disso, a rede neural profunda também pode extrair uma representação de alto nível na camada profunda, o que a torna mais adequada para tarefas complexas de reconhecimento de atividades.”
— Deep Learning for Sensor-based Activity Recognition: A Survey, 2018.
Existem duas abordagens principais para as redes neurais que são apropriadas para a classificação de séries temporais e que demonstraram ter um bom desempenho no reconhecimento de atividades usando dados de sensores de telefones inteligentes e dispositivos de rastreamento de condicionamento físico.
Eles são modelos de redes neurais por convolução e modelos de redes neurais recorrentes.
“Recomenda-se que a RNN e a LSTM reconheçam atividades curtas que tenham ordem natural, enquanto a CNN é melhor em inferir atividades repetitivas a longo prazo. A razão é que a RNN poderia fazer uso da relação de ordem do tempo entre as leituras do sensor, e a CNN é mais capaz de aprender recursos profundos contidos em padrões recursivos.”
— Deep Learning for Sensor-based Activity Recognition: A Survey, 2018.
Benchmark
O modelo de referência foi o trabalho de detecção de modo de transporte realizado por equipe da Universidade de Bolonha, Itália:
@article {carpineti18,
Author = {Claudia Carpineti, Vincenzo Lomonaco, Luca Bedogni, Marco Di Felice, Luciano Bononi},
Journal = {Proc. of the 14th Workshop on Context and Activity Modeling and Recognition (IEEE COMOREA 2018)},
Title = {Custom Dual Transportation Mode Detection by Smartphone Devices Exploiting Sensor Diversity},
Year = {2018}
}
Pré-impressão disponível: https://arxiv.org/abs/1810.05596
Em seu trabalho, utilizaram 3 conjuntos de dados, aplicando 4 algoritmos. Para cada conjunto, foram construídos quatro modelos com quatro algoritmos de classificação diferentes:
- Decision Trees (DT)
- Random Forest (RF)
- Support Vector Machines(SVM)
- Neural Network (NN)
Os sensores incluídos no primeiro conjunto (parâmetro 1) foram acelerômetro, som e giroscópio. Esses três sensores possuem os maiores valores de precisão obtidos individualmente.
O primeiro conjunto de dados é formado por doze recursos, quatro para cada sensor. Foi realizada a classificação com os quatro algoritmos de classificação mencionados anteriormente. A precisão geral dos algoritmos está entre 82% e 88%. Mesmo que a floresta aleatória produza os maiores valores de precisão (88%), todos os algoritmos têm um desempenho substancialmente bom. Ao expandir o conjunto de dados adicionando todos os outros sensores relevantes, exceto a velocidade, para fins de economia de bateria, foram alcançados melhores resultados em termos de precisão. Com o segundo conjunto de dados, formado por oito sensores e trinta e dois recursos, a precisão aumenta até valores entre 86% e 93%.
Por fim, foi treinado um modelo no terceiro conjunto de dados formado por todos os nove sensores relevantes e trinta e seis recursos, diferindo do anterior apenas para recursos derivados de velocidade. O resultado mostra como se considera a velocidade, aumentando ainda mais a capacidade do modelo de inferir qual modo de transporte o usuário está usando no momento. Neste último caso, a precisão atingiu um nível de alcance entre 91% e 96%.
Acurácia geral com todos os quatro algoritmos de classificação do modelo de benchmark:
III. Metodologia
Pré-processamento de dados
Optou-se pela utilização dos dados já balanceados, fornecidos pela equipe da Universidade de Bolonha. Nesses dados já houve um pré-processamento no sentido de equilibrar o número de amostras para cada um dos Modos de Transporte.
Da mesma forma, a equipe já fornece os dados com janelas de 5 segundos, equivalente a 1% dos dados brutos, e de 0,5 segundos, equivalente a 10% dos dados brutos.
Com esses dados, foram criadas 6 bases de dados, 3 para cada janela. O primeiro conjunto de dados teve a utilização das informações do acelerômetro, giroscópio e som. O segundo conjunto de dados teve as informações de 8 sensores e o terceiro conjunto de dados utilizou todos os nove sensores relevantes e trinta e seis recursos, diferindo do anterior apenas para recursos derivados de velocidade. Além dos atributos provenientes dos sensores, todas as bases de dados possuem o atributo tempo (‘time’).
Criadas as 6 bases de dados, foram tratados os valores faltantes com a ferramenta fillna() da biblioteca Pandas.
Após a divisão das bases de dados nas bases de treino e teste, foi utiliza a ferramenta MinMaxScaler da biblioteca Scikit-Learn, quando os dados foram escalados.
As variáveis dependentes (‘y_train’ e ‘y_test’) foram codificadas e, com a ferramenta to_categorical da biblioteca Keras, os dados de vetor de classe (integers) foram convertidos em matriz de classe binária.
Finalmente, as matrizes com as variáveis independentes (‘X_train’ e ‘X_test’) tiveram as suas formas expandidas com a inserção de um novo eixo com a ferramenta expand_dims da biblioteca Numpy.
Implementação
- CNNs
Inicialmente foi definida uma função evaluate_model(), que utiliza os dados de treino e teste, ajusta um modelo no conjunto de dados de treinamento, avalia-o no conjunto de dados de teste e retorna uma estimativa do desempenho do modelo.
Definiu-se o modelo CNN usando a biblioteca de aprendizagem profunda Keras, com duas camadas 1D CNN, seguidas por uma camada de Dropout para regularização e depois uma camada de Pooling.
A escolha pelas duas camadas 1D CNN se deu pela possibilidade de melhorar as chances de aprendizagem com os dados de entrada.
Como as CNNs aprendem rapidamente, a camada de Dropout desacelera um pouco o processo de aprendizado visando um melhor modelo final.
A camada de Pooling reduz os recursos aprendidos para 1/4 de seu tamanho, consolidando-os apenas nos elementos mais essenciais.
Após o CNN e o pooling, os recursos aprendidos são achatados em um vetor longo e passam por uma camada totalmente conectada antes da camada de saída usada para fazer uma previsão. A camada totalmente conectada idealmente fornece um buffer entre os recursos aprendidos e a saída com a intenção de interpretar os recursos aprendidos antes de fazer uma previsão.
Foram utilizadas configurações de ‘filters’ com tamanho 64 e um tamanho de kernel de 3. Os ‘filters’ são mapas de recursos, mais precisamente o número de vezes que a entrada é processada ou interpretada, enquanto o tamanho do kernel é o número de etapas de tempo de entrada em que a sequência de entrada é lida ou processada nos mapas de recursos.
A versão do gradiente descendente estocástico ‘Adam’ foi usada para otimizar a rede e também a função de perda de entropia cruzada categórica foi utilizada, uma vez que se trata de um problema de classificação de várias classes.
O modelo foi ajustado para um número fixo de épocas, neste caso 10, e um tamanho de lote de 32 amostras, onde 32 janelas de dados são expostas ao modelo antes que os pesos do modelo sejam atualizados.
Depois que o modelo é ajustado, ele é avaliado no conjunto de dados de teste e a precisão é retornada.
Entretanto, não podemos julgar a habilidade do modelo a partir de uma única avaliação.
A razão para isso é que as redes neurais são estocásticas, o que significa que a cada avaliação um modelo diferente resultará ao treinar a mesma configuração com os mesmos dados.
Esta é uma característica da rede na medida em que dá ao modelo sua capacidade adaptativa, mas requer uma avaliação um pouco mais complexa.
A avaliação do modelo é repetida um determinado número de vezes e, em seguida, é realizado um resumo do desempenho do modelo em cada uma dessas execuções. Por exemplo, evaluate_model () pode ser executado num total de 10 vezes. Isso resultará em uma população de pontuações de avaliação de modelo que devem ser resumidas.
A amostra de pontuações pode ser resumida calculando e relatando a média e o desvio padrão do desempenho. A média fornece a precisão média do modelo no conjunto de dados, enquanto o desvio padrão fornece a variância média da precisão da média.
- RNNs
Inicialmente foi definida uma função evaluate_model(), que utiliza os dados de treino e teste, ajusta um modelo no conjunto de dados de treinamento, avalia-o no conjunto de dados de teste e retorna uma estimativa do desempenho do modelo.
Foi definido um modelo LSTM usando a biblioteca de aprendizagem profunda Keras, tendo uma única camada oculta.
Em seguida, uma camada de dropout destinada a reduzir o overfitting do modelo para os dados de treinamento.
Finalmente, uma camada densa totalmente conectada é usada para interpretar os recursos extraídos pela camada oculta do LSTM, antes que uma camada de saída final seja usada para fazer previsões.
O modelo é ajustado para um número fixo de épocas, neste caso 15, e um tamanho de lote de 64 amostras será usado, onde 64 janelas de dados serão expostas ao modelo antes que os pesos do modelo sejam atualizados.
Ajustado o modelo, ele é avaliado no conjunto de dados de teste e a precisão é retornada.
Entretanto, assim como nas CNNs, não podemos julgar a habilidade do modelo a partir de uma única avaliação.
A razão disso é que as redes neurais são estocásticas, o que significa que um modelo específico diferente resultará ao treinar a mesma configuração de modelo nos mesmos dados.
Esta é uma característica da rede na medida em que dá ao modelo sua capacidade adaptativa, mas requer uma avaliação um pouco mais complexa do modelo.
A avaliação do modelo é repetida várias vezes e, em seguida, é resumido o desempenho do modelo em cada uma dessas execuções. Por exemplo, pode ser chamado evaluate_model () um total de 10 vezes. Isso resultará em uma população de pontuações de avaliação de modelo que devem ser resumidas.
A amostra de pontuações pode ser resumida calculando e relatando a média e o desvio padrão do desempenho. A média fornece a precisão média do modelo no conjunto de dados, enquanto o desvio padrão fornece a variância média da precisão da média.
Refinamento
- CNNs
No processo de aperfeiçoamento do modelo, foram explorados vários hiperparâmetros..
Número de filtros (‘Filters’)
Um hiperparâmetro importante para a CNN é o número de mapas de filtro. Foram experimentados uma gama de valores diferentes, de menos a muitos mais do que os 64 usados no primeiro modelo desenvolvido.
Especificamente, foram testados os seguintes números de mapas de recursos:
n_params = [8, 16, 32, 64, 128, 256]
Tamanho do Kernel
O tamanho do kernel é outro hiperparâmetro importante da CND 1D para se ajustar.
O tamanho do kernel controla o número de etapas de tempo consideradas em cada “leitura” da sequência de entrada, que é então projetada no mapa de características (através do processo convolucional).
Um tamanho de kernel grande significa uma leitura menos rigorosa dos dados, mas pode resultar em um instantâneo mais generalizado da entrada.
Foi usada a mesma configuração experimental e testado um conjunto de diferentes tamanhos de kernel, além do padrão de três etapas de tempo. A lista completa de valores é a seguinte:
n_params = [2, 3, 5]
Rede Neural Convolucional Multi-Headed
Outra abordagem popular com CNNs é ter um modelo de múltiplas cabeças, onde cada cabeçote do modelo lê os passos de tempo de entrada usando um kernel de tamanho diferente.
Por exemplo, um modelo de três cabeças pode ter três tamanhos diferentes de kernel de 3, 5, 11, permitindo que o modelo leia e interprete os dados da sequência em três resoluções diferentes. As interpretações de todas as três cabeças são então concatenadas dentro do modelo e interpretadas por uma camada totalmente conectada antes que uma previsão seja feita.
Número de épocas (‘Epochs’)
O número de épocas é um hiperparâmetro que define o número de vezes que o algoritmo de aprendizado funcionará em todo o conjunto de dados de treinamento.
Uma época significa que cada amostra no conjunto de dados de treinamento teve a oportunidade de atualizar os parâmetros do modelo interno. Uma época é composta por um ou mais lotes.
Especificamente, foram testados os seguintes números épocas:
n_params = [10, 20, 40, 80]
Tamanho do lote (‘Batch Size’)
O tamanho do lote é um hiperparâmetro que define o número de amostras para trabalhar antes de atualizar os parâmetros internos do modelo.
Um lote pode ser pensado como um loop para iterar sobre uma ou mais amostras e fazer previsões. No final do lote, as previsões são comparadas com as variáveis de saída esperadas e um erro é calculado. A partir desse erro, o algoritmo de atualização é usado para melhorar o modelo, por exemplo, mover para baixo ao longo do gradiente de erro.
Foram testados os seguintes tamanhos de lote:
n_params = [32, 64, 128]
- RNNs
Os modelos com RNN apresentaram um maior tempo de processamento e resultados inferiores em relação aos modelos com CNN.
Por isso, buscando um refinamento e no intuito de agregar as qualidades das CNNs, foi testada uma arquitetura CNN LSTM, que envolve o uso de camadas CNN (Convolutional Neural Network) para extração de características em dados de entrada combinados com LSTMs (RNN) para suportar a previsão de seqüências.
IV. Resultados
Modelo de avaliação e validação
Ao longo do projeto foram testados um total de 8 modelos, 6 utilizando a base de dados com janela de 5 segundos e 2 utilizando a janela de 0.5 segundos.
O modelo que obteve a melhor performance e que aqui será discutido utilizou Redes Neurais por Convolução com a base de dados utilizando dados de 9 sensores e janela de 0.5 segundos.
São apresentados a seguir os resultados dos testes com alguns parâmetros:
Epochs
Batch Size
Filters
Kernel
Numa primeira abordagem, para o modelo final, foram utilizados os melhores resultados para cada um dos parâmetros:
- Filters: 256
- Kernel: 5
- Epochs: 80
- Batch Size: 32
Entretanto, com a utilização dos hiperparâmetros acima, o modelo apresentou alta variância, talvez decorrente de um sobreajuste (Overfitting).
Assim, o modelo final utilizou os seguintes parâmetros:
- Filters: 64
- Kernel: 5
- Epochs: 80
- Batch Size: 32
O modelo obteve a pontuação a seguir descrita:
- #1: 95.246
- #2: 96.109
- #3: 93.657
- #4: 92.690
- #5: 94.727
- #6: 96.485
- #7: 93.393
- #8: 95.358
- #9: 95.310
- #10: 94.687
[95.24646480786132, 96.10929136374531, 93.65662698729727, 92.68994167979233, 94.72717104737556, 96.48478069872657, 93.39298554014225, 95.35831269473516, 95.31037788655112, 94.68722537349204]
Accuracy: 94.766% (+/-1.143)
Justificativa
- Benchmark
- Projeto
* Janela de 0.5 segundos.
As Redes Neurais Convolucionais (CNN) alcançaram muito bom resultado com a base de dados mais robusta (9 sensores e janela de 0.5 segundos), demonstrando ser uma solução significativa para resolver o problema da detecção do Modo de Transporte com a utilização de dados provenientes dos sensores de telefones celulares.
V. Conclusão
Tamanho da base de dados
Um importante aspecto que pode ser observado ao longo do projeto foi que o aprendizado profundo e outras técnicas modernas de aprendizado de máquina não-linear melhoram com mais dados.
Num primeiro momento se procurou obter a melhor performance possível com a menor base de dados possível, visando a utilização ótima dos recursos computacionais
Entranto, a utilização de uma base de dados mais robusta trouxe pontuações mais substanciais para o modelo, sem prejuízo considerável no tempo de processamento.
O gráfico abaixo demonstra como os algoritmos de aprendizagem profunda tem uma melhor performance com uma maior quantidade de dados em relação aos demais algoritmos de aprendizagem de máquina:
Reflexão
A utilização das Redes Neurais por Convolução e Redes Neurais Recorrentes foi um grande desafio, tanto nas questões referentes à dimensionalidade dos dados esperada pelo algoritmo, quanto nas questões dos ajustes nos hiperparâmetros.
A otimização de modelos é um dos maiores desafios na implementação de soluções de aprendizado de máquina.
Ramos inteiros de aprendizado de máquina e teoria de aprendizagem profunda foram dedicados à otimização de modelos. Normalmente, pensamos na otimização de modelos como um processo de modificação regular do código do modelo para minimizar o erro de teste. No entanto, a otimização da aprendizagem profunda geralmente envolve elementos de ajuste fino que vivem fora do modelo, mas que podem influenciar fortemente seu comportamento. Esses elementos, os hiperparâmetros, são um dos componentes mais críticos de qualquer aplicativo de aprendizado de máquina.
Apesar desse desafio imposto, acredito que foi obtido um modelo muito bom de detecção do Modo de Transporte com a utilização de dados provenientes dos sensores de telefones celulares.
Melhorias
Limitado pelas questões de tempo e recursos, os modelos foram testados até 80 épocas. Avaliando os Boxplot, acredito que mais épocas para o aprendizado dos modelos poderiam trazer uma performance ainda melhor.
Outra questão que pode ser melhorada é a implementação das RNNs. As variaçães nas performances com o ajuste do seus hiperparâmetros não foram tão perceptíveis quanto o que foi observado com as CNNs.
Referências
- http://cs.unibo.it/projects/us-tm2017/index.html
- https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767
- https://www.tensorflow.org/tutorials/estimators/cnn
- https://machinelearningmastery.com/deep-learning-models-for-human-activity-recognition/
- https://machinelearningmastery.com/cnn-models-for-human-activity-recognition-time-series-classification/
- https://machinelearningmastery.com/how-to-develop-rnn-models-for-human-activity-recognition-time-series-classification/
- https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/