Atribuição 1
Total de 20 marcas (será reduzido para 10 marcas)
Reconhecimento da atividade humana (HAR)
O reconhecimento de atividade humana (HAR) refere -se à capacidade das máquinas de identificar várias atividades realizadas pelos usuários. O conhecimento adquirido desses sistemas/algoritmos é integrado a muitos aplicativos em que o dispositivo associado o usa para identificar ações ou gestos e executa tarefas predefinidas em resposta.
Conjunto de dados
Estamos interessados em classificar as atividades humanas com base nos dados do acelerômetro. Usaremos um conjunto de dados disponível publicamente chamado UCI-HAR. O conjunto de dados está disponível para download aqui. Apenas para sua referência, um vídeo do YouTube dos autores que coleta os dados do acelerômetro do participante também está disponível aqui.
Tarefa 1: Análise de dados exploratórios (EDA) [3 marcas]
Pré -processamento
Usaremos os dados do acelerômetro bruto na pasta inercial_signals. O script fornecido, CombineScript.py
, organiza e classifica os dados do acelerômetro, estabelecendo classes separadas para cada categoria e compilando dados dos participantes nessas classes. O script MakeDataset.py
é usado para ler todos os dados do participante e criar um único conjunto de dados. O conjunto de dados é dividido no conjunto de trem, teste e validação. Nós nos concentramos nos primeiros 10 segundos de atividade, traduzindo para as 500 amostras iniciais de dados devido a uma taxa de amostragem de 50Hz.
- Etapa-1> Coloque o
CombineScript.py
e MakeDataset.py
na mesma pasta que contém o conjunto de dados UCI. Certifique -se de entrar para a pasta antes de executar os scripts. Se você estiver executando os scripts de uma pasta diferente, precisará brincar com os caminhos nos scripts para fazê -lo funcionar. - Etapa-2> Run
CombineScript.py
e forneça os caminhos para testar e treinar pastas no conjunto de dados UCI. Isso criará uma pasta chamada Combined
que conterá todos os dados de todos os participantes. É assim que a maioria dos conjuntos de dados é organizada. Você pode encontrar estruturas de dados semelhantes no futuro. - Etapa 3> Execute
MakeDataset.py
e forneça o caminho para a pasta Combined
. Isso criará um conjunto de dados que conterá o conjunto de trem, teste e validação. Você pode usar esse conjunto de dados para treinar seus modelos.
Questões
- Plote a forma de onda para uma amostra de dados de cada classe de atividade. Você pode ver alguma diferença/semelhanças entre as atividades? Você pode traçar uma subtrama com 6 colunas para mostrar diferenças/semelhanças entre as atividades. Você acha que o modelo poderá classificar as atividades com base nos dados? [0,5 marcas]
- Você acha que precisamos de um modelo de aprendizado de máquina para diferenciar entre atividades estáticas (deitando, sentado, em pé) e atividades dinâmicas (andando, andando_downstairs, walking_upstairs)? Veja a aceleração linear $ (acc_x^2+acc_y^2+acc_z^2) $ para cada atividade e justifique sua resposta. [0,5 marcas]
- Visualize os dados usando PCA. [1 marcas]
- Use PCA (análise de componentes principais) na aceleração total $ (acc_x^2+acc_y^2+acc_z^2) $ Para comprimir as séries de aceleração em dois recursos e traçar um gráfico de dispersão para visualizar diferentes classes de atividades.
- Em seguida, use o TSFEL (uma biblioteca de destaque) para criar recursos (sua escolha quais você acha que são úteis) e execute o PCA para obter dois recursos. Plote um gráfico de dispersão para visualizar diferentes classes de atividades.
- Agora use os recursos fornecidos pelo conjunto de dados e execute o PCA para obter dois recursos. Plote um gráfico de dispersão para visualizar diferentes classes de atividades.
- Compare os resultados do PCA na aceleração total, o TSFEL e os recursos do conjunto de dados. Qual método você acha que é melhor para visualizar os dados?
- Calcule a matriz de correlação dos recursos obtidos pelo TSFEL e fornecida no conjunto de dados. Identifique os recursos altamente correlacionados entre si. Existem recursos redundantes? [1 marcas]
Tarefa 2: Árvores de decisão para reconhecimento de atividades humanas [3 marcas]
Questões
- Use a Biblioteca Sklearn para treinar a Decision Tress. [1,5 marcas]
- Treine um modelo de árvore de decisão usando os dados do acelerômetro bruto. Relate a matriz de precisão, precisão, recall e confusão do modelo.
- Treine um modelo de árvore de decisão usando os recursos obtidos pelo TSFEL. Relate a matriz de precisão, precisão, recall e confusão do modelo.
- Treine um modelo de árvore de decisão usando os recursos fornecidos no conjunto de dados. Relate a matriz de precisão, precisão, recall e confusão do modelo.
- Compare os resultados dos três modelos. Qual modelo você acha que é melhor?
- Árvore de decisão de trem com profundidades variadas (2-8) usando todos os métodos acima de 3. Plote a precisão do modelo nos dados de teste versus a profundidade da árvore. [1 marcas]
- Existem participantes/ atividades em que o modelo de desempenho é ruim? Se sim, por quê? [0,5 marca]
Tarefa 3: Engenharia imediata para grandes modelos de idiomas (LLMS) [4 marcas]
Zero-shot e poucos tiro provocando:
O aviso de tiro zero envolve o fornecimento de um modelo de idioma com um rápido ou um conjunto de instruções que permite gerar texto ou executar uma tarefa sem dados de treinamento explícito ou exemplos rotulados. Espera-se que o modelo gere texto de alta qualidade ou execute a tarefa com precisão baseada apenas no prompt e em seu conhecimento interno.
O pedido de poucos tiro é semelhante ao acumulação zero, mas envolve fornecer ao modelo um número limitado de exemplos ou instruções rotuladas que são relevantes para a tarefa ou conjunto de dados específicos. Espera-se que o modelo gere texto de alta qualidade ou execute a tarefa com precisão com base nos poucos exemplos rotulados e em seu conhecimento interno.
Descrição da tarefa:
Você recebeu um notebook Python que demonstra como usar zero tiro e poucos acumulados com um modelo de idioma (LLM). O exemplo no caderno envolve tarefas baseadas em texto, mas os LLMs também podem ser aplicados a uma ampla gama de tarefas (os alunos interessados no aprendizado mais podem ler aqui e aqui).
As consultas serão fornecidas na forma de dados do acelerômetro de apresentação e o modelo deve prever a atividade realizada.
- Aprendizado zero de tiro : o modelo deve ser capaz de prever a atividade com base nos dados do acelerômetro sem dados de treinamento explícitos ou exemplos rotulados.
- Pouco aprendizado de tiro : o modelo também deve ser capaz de prever a atividade com base em um número limitado de exemplos ou instruções rotuladas que são relevantes para a tarefa específica.
Questões
- Demonstre como usar o aprendizado de tiro zero e o aprendizado de poucos anos para classificar as atividades humanas com base nos dados do acelerômetro de apresentação. Demonstrar qualitativamente o desempenho da aprendizagem de poucos tiros com aprendizado zero. Qual método tem um desempenho melhor? Por que? [1 marcas]
- Compare quantitativamente a precisão da aprendizagem de poucos anos com as árvores de decisão (você pode usar um subconjunto do conjunto de testes se encontrar problemas com limitação de taxa). Qual método tem um desempenho melhor? Por que? [1 marcas]
- Quais são as limitações da aprendizagem de tiro zero e da aprendizagem de poucos anos no contexto de classificar as atividades humanas com base em dados do acelerômetro apresentado? [1 marcas]
- O que o modelo classifica quando recebe a entrada de uma atividade totalmente nova que ele nunca viu antes? [0,5 marca]
- Teste o modelo com dados aleatórios (garantindo que os dados tenham as mesmas dimensões e intervalo da entrada anterior) e relate os resultados. [0,5 marca]
Tarefa 4: Coleta de dados em The Wild [4 marcas]
Descrição da tarefa
Para esta marca de exercício, não dependerá de quais números você obtém, mas do processo que você seguiu, utilize aplicativos como Physics Toolbox Suite
do seu smartphone para coletar seus dados no formato .csv/.txt. Certifique -se de que pelo menos 15 segundos de dados sejam coletados, aparando as bordas para obter 10 segundos de dados relevantes. Também grave um vídeo seu ao gravar dados. Este vídeo será necessário em algumas tarefas futuras. Colete 3-5 amostras por classe de atividade.
Coisas para cuidar de:
- Verifique se o telefone está colocado na mesma posição para todas as atividades.
- Verifique se o telefone está no mesmo alinhamento durante a atividade que a alteração do alinhamento alterará os dados coletados e afetará o desempenho do modelo.
- Certifique -se de ter pelo menos 10s de dados por arquivo para treinamento. Como os dados são coletados em 50Hz, você terá 500 amostras de dados.
Questões
- Use o modelo de árvore de decisão treinado no conjunto de dados UCI-HAR para prever as atividades que você executou. Relate a matriz de precisão, precisão, recall e confusão do modelo. Você tem três versão do conjunto de dados UCI que pode usar a) dados brutos do acelerômetro, b) dados do tsfel apresentados, c) Recursos fornecidos pelo autor. Escolha qual versão usar, garantindo que seus dados de teste sejam semelhantes aos seus dados de treinamento. Como o modelo se saiu? [1 marcas]
- Use os dados coletados para prever as atividades que você executou. Decida se deseja aplicar o pré -processamento e a apresentação e, em caso afirmativo, escolha os métodos apropriados. Como o modelo se saiu? [1 marcas]
- Use o método de poucos anos usando o conjunto de dados UCI-HAR para prever as atividades que você executou. Certifique -se de que seus exemplos e consultas de teste sofrem pré -processamento semelhante. Como o modelo se saiu? [1 marcas]
- Use o método de poucos anos de solicitação usando os dados coletados para prever as atividades que você executou. Adote métodos de processamento adequados, conforme necessário. Como o modelo se saiu? [1 marcas]
OBSERVAÇÃO :
- Para obter a chave da API, acesse o console de desenvolvedor Groqcloud em https://console.groq.com/login. Siga o Guia do Quickstart para obter sua chave da API.
- Não compartilhe sua chave da API com ninguém ou torne -a pública ou envie -a a qualquer repositório público, como para esta tarefa. Se a chave for encontrada no código, você será penalizado com uma dedução de 1,0 marcas.
- É recomendável escrever um arquivo de marcação (.md) ou usar um notebook Python (.ipynb) para demonstrar seu raciocínio, resultados e descobertas.
Implementação de árvores de decisão [6 marcas]
Preencha a implementação da árvore de decisão em árvore/base.py. O código deve ser escrito no Python e não usar as bibliotecas existentes que não sejam as compartilhadas em sala de aula ou já importadas no código. Sua árvore de decisão deve funcionar para quatro casos: i) recursos discretos, saída discreta; ii) recursos discretos, saída real; iii) recursos reais, saída discreta; Recursos reais, saída real. Seu modelo deve aceitar apenas entradas reais (para entradas discretas, você pode converter os atributos em vetores codificados em um hot). Sua árvore de decisão deve poder usar o InformationGain usando entropia ou giniIndex como critério para dividir para saída discreta. Sua árvore de decisão deve poder usar o InformationGain usando o MSE como critério para dividir para saída real. Seu código também deve ser capaz de plotar/exibir a árvore de decisão. [2,5 marcas]
Você deve editar os seguintes arquivos.
metrics.py
: Preencha as funções de métricas de desempenho neste arquivo.
usage.py
: Execute este arquivo para verificar suas soluções.
Árvore (Diretório): Módulo para Árvore de Decisão.
-
base.py
: classe de árvore de decisão completa. -
utils.py
: Conclua todas as funções de utilidade. -
__init__.py
: Não edite isso
Você deve executar o uso.py para verificar suas soluções.
Gere seu conjunto de dados usando as seguintes linhas de código
from sklearn . datasets import make_classification
X , y = make_classification (
n_features = 2 , n_redundant = 0 , n_informative = 2 , random_state = 1 , n_clusters_per_class = 2 , class_sep = 0.5 )
# For plotting
import matplotlib . pyplot as plt
plt . scatter ( X [:, 0 ], X [:, 1 ], c = y )
a) Mostre o uso da sua árvore de decisão no conjunto de dados acima. Os primeiros 70% dos dados devem ser usados para fins de treinamento e os 30% restantes para fins de teste. Mostre a precisão, precisão por classe e recall da árvore de decisão que você implementou no conjunto de dados de teste. [0,5 marca]
b) Use validação cruzada de 5 dobras no conjunto de dados. Usando validação cruzada aninhada, encontre a profundidade ideal da árvore. [1 marca]
Você deve editar classification-exp.py
para o código que contém as experiências acima.
a) Mostre o uso da sua árvore de decisão para o problema de eficiência automotiva. [0,5 marcas]
b) Compare o desempenho do seu modelo com o módulo de árvore de decisão da Scikit Learn. [0,5 marcas]
Você deve editar auto-efficiency.py
para o código que contém as experiências acima.
Crie alguns dados falsos para fazer algumas experiências sobre a complexidade do tempo de execução do seu algoritmo de árvore de decisão. Crie um conjunto de dados com n amostras e recursos binários. Varie M e N para plotar o tempo necessário para: 1) Aprendendo a árvore, 2) prevendo os dados do teste. Como esses resultados se comparam à complexidade teórica do tempo para a criação e previsão de árvores de decisão. Você deve fazer a comparação para todos os quatro casos de árvores de decisão. [1 marcas]
Você deve editar experiments.py
para o código que contém as experiências acima.
Você deve responder às perguntas do sujeito (visualização, análise de tempo, gráficos de exibição) criando Asst#<task-name>_<Q#>.md
Instruções genrais:
- Mostre seus resultados em um notebook Jupyter ou um arquivo MD. Se você optar por usar um arquivo MD, também deve incluir o código.
- Você pode usar a implementação do Scikit-Learn da árvore de decisão para o reconhecimento de atividade humana.
- Esta tarefa é de 20 marcas e será reduzida para 10 marcas.