Nombre: Desarrollar componentes software específicos para sistemas de Inteligencia Artificial basados en aprendizaje automático
Competencia profesional:
EC1 Modelizar algoritmos de carácter general y específicos de Inteligencia Artificial, previa interpretación, usando lenguajes propios del sector para integrarlos en sistemas de Inteligencia Artificial.
IC1.1: Los problemas a resolver se interpretan, abstrayendo con pautas lógicas las guías y bases para elaborar los algoritmos que los solucionan, a partir de la documentación y gráficos de análisis y diseño del problema.
IC1.2: Los problemas a resolver se descomponen, modularizándolos usando estrategias 'top-down' o 'bottom-up'.
IC1.3: Los problemas a resolver se modelizan usando la herramienta de la abstracción lógica, siguiendo algoritmos y técnicas tales como gestión y ordenación de archivos, búsqueda ordenada y secuencial, divide y vencerás, programación dinámica, algoritmos voraces, recursividad, búsquedas con retroceso, ramificación y poda, programación lineal y reducciones y algoritmos recursivos, entre otros, para abordar su resolución de forma simplificada.
IC1.4: Los algoritmos se representan, usando herramientas al efecto de modularización y prototipado tales como pseudocódigo y diagramas de flujo.
EC2 Elaborar programas para Inteligencia Artificial bajo el paradigma de Programación Orientada a Objetos (POO) en lenguajes de uso propio del sector para aplicar los algoritmos elaborados, bajo las normas de calidad y las pautas de programación de la organización, siguiendo especificaciones de análisis y diseño.
IC2.1: Las clases definidas, sus atributos, métodos e interfaces se codifican utilizando el lenguaje de programación elegido y las técnicas metodológicas orientadas a objetos, interpretando los modelos desarrollados en el análisis.
IC2.2: Los tipos y estructuras de datos básicos tales como aquellos que representan caracteres, números y valores lógicos, entre otros y los tipos complejos como cadenas, vectores, tablas multidimensionales, árboles, grafos, pilas, colas, tablas hash y colecciones se gestionan, aplicándolos a los atributos, parámetros de métodos y/o clases, usando sus métodos predefinidos, siguiendo los algoritmos para la resolución de los problemas recibidos e interpretando los modelos desarrollados en el análisis.
IC2.3: Las herramientas estructuradas de programación tales como asignaciones, condiciones, bucles e iteraciones, entre otras, se aplican en los métodos, previa definición de sus parámetros de entrada y/o salida, siguiendo los algoritmos elaborados para resolver los problemas planteados.
IC2.4: Las relaciones entre clases se codifican, a partir de la documentación de análisis y diseño, derivando o extendiendo clases hija de las clases base o padre asociadas, manteniendo las restricciones, visibilidad, multiplicidades, herencia y otras características especificadas, tales como gestión del envío de mensajes e implementándolas con las técnicas y utilidades de la programación orientada a objetos tales como sobrecarga de constructores y métodos, uso de tipos abstractos y polimorfismo, entre otros.
IC2.5: Los objetos se determinan, interpretando las especificaciones establecidas en el análisis y diseño y los algoritmos, programando los constructores e instanciando las clases definidas.
IC2.6: El control de errores se implementa en el código, usando las sentencias y mecanismo propios del lenguaje tales como 'Try-Catch' u otros, de acuerdo a las normas de calidad de la organización.
IC2.7: Las herramientas de desarrollo y depuración se emplean para facilitar el proceso de generación del código, detectando y corrigiendo errores en el código.
IC2.8: Los componentes y librerías de terceros se utilizan, seleccionándolos según las necesidades, interpretando su documentación e implementando su uso, para reutilizar código y reducir el tiempo de desarrollo.
IC2.9: El acceso y manipulación de datos estructurados y no estructurados externos se programa, utilizando librerías disponibles e integrándolas en la aplicación, codificando programas a partir de ellas.
IC2.10: El plan de pruebas se ejecuta, siguiendo los protocolos y los criterios de calidad definidos en la organización, discriminando los tipos de prueba, resolviendo los problemas encontrados en la implementación, consultando la documentación técnica.
IC2.11: Los elementos elaborados susceptibles de ser compartidos, se integran en paquetes y librerías para su uso posterior en futuras aplicaciones.
EC3 Programar sistemas de redes neuronales de extracción del conocimiento de la Inteligencia Artificial para la predicción de tendencias o la organización y descripción de datos, codificando programas mediante técnicas y algoritmos al efecto bajo supervisión del científico de datos responsable.
IC3.1: Los algoritmos de aprendizaje automático supervisados (predictivos) se programan, usando redes neuronales con el objeto de predecir un dato (variable objetivo) desconocido a priori, a partir de otros datos conocidos.
IC3.2: Los algoritmos de aprendizaje automático no supervisados se programan, usando redes neuronales, buscando descubrir patrones (estructuras) y tendencias en los datos, con el objetivo de organizar los datos de la manera especificada para el proyecto o describir su estructura.
IC3.3: El código se programa siguiendo métodos de cuantización ('clustering') de vectores tales como 'K-mean', con el enfoque de examinar y presentar, datos complejos de manera más simple, para que el científico de datos responsable los analice.IC3.4: El espacio de entrada de las muestras de entrenamiento se representa, programando código que use técnicas tales como 'mapas auto organizativos de Kohonen', 'SOM-Self-Organizing Maps' (SOM), para discretizarlo.
IC3.5: Las redes asociativas se simulan, programando código en base a técnicas tales como 'Programación de Redes de Hopfield' o redes recursivas recurrentes para garantizar la convergencia a un mínimo local.
IC3.6: La resolución de problemas que no son linealmente separables se explora programando técnicas tales como Redes Neuronales con Perceptrones Multicapa u otras.
EC4 Programar software para la extracción de patrones preparatorios aplicables en aprendizaje automático ('Machine Learning' -ML-) usando librerías predefinidas, para aplicar un análisis estadístico de los datos, bajo supervisión del científico de datos responsable.
IC4.1: El software de análisis de datos se codifica, a partir de librerías tales como Numpy en Jupyter, usando array multidimensional homogéneo.
IC4.2: Los datos se manipulan, previo análisis, usando librerías tales como Pandas que proporciona estructuras de datos y funcionalidades al efecto tales como series y DataFrames.
IC4.3: Los datos se representan, usando librerías tipo 'Plotter' tales como Matplotlib y Seaborn y programación de rectas y curvas de regresión de los datos de ajuste.
IC4.4: Los datos se integran, unificando y uniformando instancias provenientes de distintas fuentes, eliminando atributos redundantes y limpiando los datos, tratando los valores faltantes y el ruido de datos.
IC4.5: Los repositorios de información se filtran, descubriendo y extrayendo información siguiendo un proceso tal como 'Knowledge Discovery in Data bases' (KDD) para obtener todo el conocimiento posible.
IC4.6: Los algoritmos tales como clasificación, regresión lineal, regresión logística, uso de árboles de decisión, uso de polinomios y variabilidad se aplican al análisis del lenguaje natural (NLP) y redes sociales, escribiendo el código para extraer y clasificar información.
EC5 Elaborar la documentación del código desarrollado para sistemas de Inteligencia Artificial según los estándares de la organización, para garantizar su futuro mantenimiento.
IC5.1: La documentación tal como manuales, guías para desarrolladores, administradores o usuarios, entre otras se redacta de acuerdo a las especificaciones del proyecto, incluyendo información de utilidad según el destinatario.
IC5.2: La documentación correspondiente a cada componente se redacta, de acuerdo con las normas y modelos incluidos en el diseño de la aplicación.
IC5.3: Los comentarios, identificadores con nombres autoexplicativos (mnemotécnicos), tabulaciones u otros, se añaden al código, documentándolo para la mejor comprensión del programa.
IC5.4: La documentación de un componente desarrollado se genera mediante las herramientas de producción automática de documentación a partir del texto incluido en el componente software.
IC5.5: Los procedimientos de ejecución de las pruebas unitarias y de regresión, así como los resultados de las mismas se documentan de acuerdo a los estándares definidos por la organización.
Contexto profesional:
Ámbito Profesional:
Sectores productivos:
Información utilizada o generada:
Normas externas de trabajo (normativa aplicable de protección de datos, propiedad intelectual e industrial). Normas internas de trabajo (plan de trabajo, plan de calidad, normas de codificación, proyecto software). Documentación técnica (Cursos, manuales de programación orientada a objetos en los lenguajes usados; estándares de modelización; documentación de librerías y componentes de terceros; documentación técnica de instalación y operación de lenguajes e IDE; documentación de hardware, sistemas operativos y software de base; sistemas de ayuda y soporte; documentación de los datos estructurados y no estructurados).
Ocupaciones y puestos de trabajo relevantes: