Tarea 1
Total de 20 puntos (se reducirán a 10 puntos)
Reconocimiento de la actividad humana (HAR)
El reconocimiento de actividad humana (HAR) se refiere a la capacidad de las máquinas para identificar diversas actividades realizadas por los usuarios. El conocimiento adquirido de estos sistemas/algoritmos se integra en muchas aplicaciones donde el dispositivo asociado lo usa para identificar acciones o gestos y realiza tareas predefinidas en respuesta.
Conjunto de datos
Estamos interesados en clasificar las actividades humanas basadas en los datos del acelerómetro. Utilizaremos un conjunto de datos disponible públicamente llamado UCI-HAR. El conjunto de datos está disponible para descargar aquí. Solo para su referencia, aquí también está disponible un video de YouTube de los autores que recopilan los datos del acelerómetro del participante.
Tarea 1: Análisis de datos exploratorios (EDA) [3 marcas]
Preprocesamiento
Usaremos los datos del acelerómetro sin procesar dentro de la carpeta inercial_signals. El script proporcionado, CombineScript.py
, organiza y clasifica los datos del acelerómetro, establece clases separadas para cada categoría y compila los datos de los participantes en estas clases. El script MakeDataset.py
se usa para leer todos los datos del participante y crear un solo conjunto de datos. El conjunto de datos se divide en tren, prueba y conjunto de validación. Nos centramos en los primeros 10 segundos de actividad, traduciendo a las 500 muestras de datos iniciales debido a una tasa de muestreo de 50Hz.
- Paso-1> Coloque el
CombineScript.py
y MakeDataset.py
en la misma carpeta que contiene el conjunto de datos UCI. Asegúrese de haberse mudado a la carpeta antes de ejecutar los scripts. Si está ejecutando los scripts desde una carpeta diferente, tendrá que jugar con los caminos en los scripts para que funcione. - Paso-2> Ejecutar
CombineScript.py
y proporcionar las rutas para probar y entrenar las carpetas en el conjunto de datos UCI. Esto creará una carpeta llamada Combined
que contendrá todos los datos de todos los participantes. Así es como se organizan la mayoría de los conjuntos de datos. Puede encontrar estructuras de conjunto de datos similares en el futuro. - Paso 3> Ejecutar
MakeDataset.py
y proporcionar la ruta a la carpeta Combined
. Esto creará un conjunto de datos que contendrá el conjunto de tren, prueba y validación. Puede usar este conjunto de datos para entrenar a sus modelos.
Preguntas
- Trace la forma de onda para una muestra de datos de cada clase de actividad. ¿Puede ver alguna diferencia/similitudes entre las actividades? Puede trazar una subtrama que tiene 6 columnas para mostrar diferencias/similitudes entre las actividades. ¿Crees que el modelo podrá clasificar las actividades basadas en los datos? [0.5 marcas]
- ¿Crees que necesitamos un modelo de aprendizaje automático para diferenciar entre actividades estáticas (colocación, sentada, de pie) y actividades dinámicas (caminar, caminar_downstairs, caminar_upstairs)? Mira la aceleración lineal $ (ACC_X^2+ACC_Y^2+ACC_Z^2) $ para cada actividad y justifique su respuesta. [0.5 marcas]
- Visualice los datos utilizando PCA. [1 Marcas]
- Use PCA (análisis de componentes principales) en la aceleración total $ (ACC_X^2+ACC_Y^2+ACC_Z^2) $ Para comprimir las Times de aceleración en dos características y trazar una trama de dispersión para visualizar diferentes clases de actividades.
- A continuación, use TSFEL (una biblioteca de largometrajes) para crear características (su elección, cuáles sienten que son útiles) y luego realice PCA para obtener dos características. Traza una trama de dispersión para visualizar diferentes clases de actividades.
- Ahora use las características proporcionadas por el conjunto de datos y realice PCA para obtener dos características. Traza una trama de dispersión para visualizar diferentes clases de actividades.
- Compare los resultados de PCA en la aceleración total, TSFEL y las características del conjunto de datos. ¿Qué método crees que es mejor para visualizar los datos?
- Calcule la matriz de correlación de las características obtenidas por TSFEL y se proporciona en el conjunto de datos. Identifique las características que están altamente correlacionadas entre sí. ¿Hay características redundantes? [1 Marcas]
Tarea 2: Árboles de decisión para el reconocimiento de actividad humana [3 marcas]
Preguntas
- Use la biblioteca Sklearn para capacitar a Decision Tress. [1.5 marcas]
- Entrena un modelo de árbol de decisión utilizando los datos del acelerómetro sin procesar. Informe la matriz de precisión, precisión, recuerdo y confusión del modelo.
- Entrena un modelo de árbol de decisión utilizando las características obtenidas por TSFEL. Informe la matriz de precisión, precisión, recuerdo y confusión del modelo.
- Capacite a un modelo de árbol de decisión utilizando las características proporcionadas en el conjunto de datos. Informe la matriz de precisión, precisión, recuerdo y confusión del modelo.
- Compare los resultados de los tres modelos. ¿Qué modelo crees que es mejor?
- Entrena el árbol de decisión con profundidades variables (2-8) utilizando todos los métodos superiores a 3. Trace la precisión del modelo en los datos de prueba frente a la profundidad del árbol. [1 Marcas]
- ¿Hay algún participante/ activitivías donde el modelo funcione es malo? Si es así, ¿por qué? [0.5 marca]
Tarea 3: Ingeniería rápida para modelos de idiomas grandes (LLM) [4 marcas]
Cero-shot y pocos disparos de disparo:
La solicitud de disparo cero implica proporcionar un modelo de lenguaje con un mensaje o un conjunto de instrucciones que le permite generar texto o realizar una tarea sin ningún datos de capacitación explícitos o ejemplos etiquetados. Se espera que el modelo genere un texto de alta calidad o realice la tarea con precisión basada únicamente en la solicitud y su conocimiento interno.
Peque indicación de disparo es similar a la solicitud de disparo cero, pero implica proporcionar al modelo un número limitado de ejemplos o indicaciones etiquetadas que son relevantes para la tarea o el conjunto de datos específico. Entonces se espera que el modelo genere texto de alta calidad o realice la tarea con precisión en función de los pocos ejemplos etiquetados y su conocimiento interno.
Descripción de la tarea:
Se le ha proporcionado un cuaderno de Python que demuestra cómo usar el indicador cero y pocos disparos con un modelo de idioma (LLM). El ejemplo en el cuaderno involucra tareas basadas en texto, pero LLMS también se puede aplicar a una amplia gama de tareas (los estudiantes interesados en aprender más pueden leer aquí y aquí).
Las consultas se proporcionarán en forma de datos del acelerómetro caracterizado y el modelo debe predecir la actividad realizada.
- Aprendizaje de disparos cero : el modelo debería poder predecir la actividad basada en los datos del acelerómetro sin ningún datos de entrenamiento explícitos o ejemplos etiquetados.
- Pocos aprendizaje de disparos : el modelo también debería poder predecir la actividad en función de un número limitado de ejemplos o indicaciones etiquetadas que son relevantes para la tarea específica.
Preguntas
- Demuestre cómo usar el aprendizaje de disparo cero y el aprendizaje de pocos disparos para clasificar las actividades humanas basadas en los datos del acelerómetro caracterizado. Demuestre cualitativamente el rendimiento del aprendizaje de pocos disparos con aprendizaje de cero disparos. ¿Qué método funciona mejor? ¿Por qué? [1 Marcas]
- Compare cuantitativamente la precisión del aprendizaje de pocos disparos con los árboles de decisión (puede usar un subconjunto del conjunto de pruebas si encuentra problemas de limitación de velocidad). ¿Qué método funciona mejor? ¿Por qué? [1 Marcas]
- ¿Cuáles son las limitaciones del aprendizaje de disparo cero y el aprendizaje de pocos disparos en el contexto de la clasificación de actividades humanas basadas en datos de acelerómetro caracterizados? [1 Marcas]
- ¿Qué clasifica el modelo cuando se le da información de una actividad completamente nueva que no había visto antes? [0.5 marca]
- Pruebe el modelo con datos aleatorios (asegurando que los datos tengan las mismas dimensiones y rango que la entrada anterior) e informe los resultados. [0.5 marca]
Tarea 4: Recopilación de datos en la naturaleza [4 marcas]
Descripción de la tarea
Para esto, las marcas de ejercicio no dependerán de los números que obtenga, pero del proceso que siguió utilizan aplicaciones como Physics Toolbox Suite
de su teléfono inteligente para recopilar sus datos en formato .csv/.txt. Asegúrese de recopilar al menos 15 segundos de datos, recortando bordes para obtener 10 segundos de datos relevantes. También grabe un video de usted mismo mientras graba datos. Este video será requerido en algunas tareas futuras. Recoja 3-5 muestras por clase de actividad.
Cosas de las que cuidar:
- Asegúrese de que el teléfono se coloque en la misma posición para todas las actividades.
- Asegúrese de que el teléfono esté en la misma alineación durante la actividad, ya que cambiar la alineación cambiará los datos recopilados y afectará el rendimiento del modelo.
- Asegúrese de tener al menos 10 de datos por archivo para capacitación. Como los datos se recopilan a 50Hz, tendrá 500 muestras de datos.
Preguntas
- Use el modelo de árbol de decisión capacitado en el conjunto de datos UCI-HAR para predecir las actividades que realizó. Informe la matriz de precisión, precisión, recuerdo y confusión del modelo. Tiene tres versión del conjunto de datos UCI que puede usar a) datos sin procesar del acelerómetro, b) TSFEL DATOS ACTURADOS, C) características proporcionadas por el autor. Elija qué versión usar, asegurando que sus datos de prueba sean similares a sus datos de capacitación. ¿Cómo funcionó el modelo? [1 Marcas]
- Use los datos que recopiló para predecir las actividades que realizó. Decide si aplicar preprocesamiento y caracterización, y de ser así, elige los métodos apropiados. ¿Cómo funcionó el modelo? [1 Marcas]
- Use el método de solicitación de pocos disparos utilizando el conjunto de datos UCI-HAR para predecir las actividades que realizó. Asegúrese de que tanto sus ejemplos como la consulta de prueba se sometan a un preprocesamiento similar. ¿Cómo funcionó el modelo? [1 Marcas]
- Use el método de solicitación de pocos disparos utilizando los datos que recopiló para predecir las actividades que realizó. Adopte los métodos de procesamiento adecuados según sea necesario. ¿Cómo funcionó el modelo? [1 Marcas]
NOTA :
- Para obtener la clave API, visite la consola de desarrollador de GroqCloud en https://console.groq.com/login. Siga la guía QuickStart para obtener su clave API.
- No comparta su clave API con nadie ni lo haga público o lo suba a ningún repositorio público, como para esta tarea. Si la clave se encuentra en el código, será penalizado con una deducción de 1.0 marcas.
- Se recomienda escribir un archivo de Markdown (.md) o usar un cuaderno de Python (.IPYNB) para demostrar su razonamiento, resultados y hallazgos.
Implementación del árbol de decisión [6 marcas]
Complete la implementación del árbol de decisión en árbol/base.py. El código debe escribirse en Python y no usar bibliotecas existentes que no sean las compartidas en clase o ya importadas en el código. Su árbol de decisión debe funcionar para cuatro casos: i) características discretas, producción discreta; ii) características discretas, salida real; iii) características reales, salida discreta; Características reales, salida real. Su modelo solo debe aceptar entradas reales (para entradas discretas, puede convertir los atributos en vectores codificados únicos). Su árbol de decisión debe poder usar InformationGain utilizando entropía o GiniIndex como criterios para dividir la producción discreta. Su árbol de decisión debe poder usar InformationGain utilizando MSE como criterios para dividir la producción real. Su código también debe poder trazar/mostrar el árbol de decisión. [2.5 marcas]
Debería editar los siguientes archivos.
metrics.py
: complete las funciones de Métricas de rendimiento en este archivo.
usage.py
: ejecute este archivo para verificar sus soluciones.
Árbol (directorio): módulo para el árbol de decisión.
-
base.py
: clase de árbol de decisión completa. -
utils.py
: complete todas las funciones de utilidad. -
__init__.py
: no edite esto
Debe ejecutar Usage.py para verificar sus soluciones.
Genere su conjunto de datos utilizando las siguientes líneas 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) Muestre el uso de su árbol de decisión en el conjunto de datos anterior. El primer 70% de los datos deben usarse para fines de capacitación y el 30% restante para fines de prueba. Muestre la precisión, la precisión por clase y el recuerdo del árbol de decisión que implementó en el conjunto de datos de prueba. [0.5 marca]
b) Use una validación cruzada de 5 veces en el conjunto de datos. El uso de validación cruzada anidada encuentra la profundidad óptima del árbol. [1 marca]
Debe estar editando classification-exp.py
para el código que contiene los experimentos anteriores.
a) Muestre el uso de su árbol de decisión para el problema de eficiencia automotriz. [0.5 marcas]
b) Compare el rendimiento de su modelo con el módulo de árbol de decisión de Scikit Learn. [0.5 marcas]
Debe estar editando auto-efficiency.py
para el código que contiene los experimentos anteriores.
Cree algunos datos falsos para hacer algunos experimentos sobre la complejidad del tiempo de ejecución del algoritmo de árbol de decisión. Cree un conjunto de datos con N muestras y características binarias M. Varíe M y N para trazar el tiempo tomado para: 1) Aprender el árbol, 2) predecir los datos de la prueba. ¿Cómo se comparan estos resultados con la complejidad del tiempo teórico para la creación y predicción del árbol de decisión? Debe hacer la comparación de los cuatro casos de árboles de decisión. [1 Marcas]
Debe estar editando experiments.py
para el código que contiene los experimentos anteriores.
Debe responder a las preguntas de Asunto (visualización, análisis de tiempo, visualización de gráficos) creando Asst#<task-name>_<Q#>.md
Instrucciones genrales:
- Muestre sus resultados en un cuaderno Jupyter o un archivo MD. Si opta por usar un archivo MD, también debe incluir el código.
- Puede utilizar la implementación de Scikit-Learn del árbol de decisión para el reconocimiento de la actividad humana.
- Esta tarea es de 20 puntos y se reducirá a 10 puntos.