====== Modelos de Inteligencia Artificial en la resolución de problemas ====== En esta unidad estudiaremos cómo seleccionar y utilizar distintos **modelos de Inteligencia Artificial para resolver problemas**, teniendo en cuenta no solo su rendimiento, sino también aspectos como la incertidumbre, la automatización, la interpretabilidad o el coste de los errores. Veremos modelos basados en reglas, razonamiento probabilístico, lógica difusa, árboles de decisión y redes neuronales, así como diferentes formas de evaluar cuál es el modelo más adecuado para cada problema. ===== 1. Resolver problemas con modelos de IA ===== Antes de elegir un algoritmo o entrenar un modelo, es necesario **formular correctamente el problema que queremos resolver**. Debemos identificar aspectos como: * El **objetivo** del sistema * Las **entradas** disponibles * La **salida esperada** * Las **restricciones** * Los usuarios que utilizarán el sistema * La frecuencia con la que será utilizado * El coste de los posibles errores Una buena especificación evita desarrollar un modelo técnicamente avanzado que, sin embargo, no resuelva correctamente la necesidad real. Por ejemplo, antes de crear un sistema de Inteligencia Artificial para detectar correos no deseados deberíamos determinar: * Qué información podrá analizar el sistema * Qué consideramos exactamente //spam// * Qué ocurre cuando el sistema se equivoca * Si es peor dejar pasar un correo no deseado o bloquear por error un correo legítimo La elección del modelo dependerá en gran medida de estas decisiones iniciales. ==== Requisitos básicos ==== Al diseñar un sistema de Inteligencia Artificial podemos distinguir diferentes tipos de requisitos. ^ Tipo de requisito ^ Descripción ^ Ejemplos ^ | **Funcionales** | Indican qué debe hacer el sistema | Clasificar, predecir, recomendar, planificar o explicar | | **No funcionales** | Definen condiciones de funcionamiento | Latencia, disponibilidad, coste, privacidad, seguridad o consumo | | **De datos** | Determinan las características que deben tener los datos | Esquema, unidades, valores ausentes, representatividad, licencia o actualización | La **variable objetivo** debe corresponder con la decisión real que queremos tomar. Esto es especialmente importante porque una etiqueta histórica no siempre representa una verdad objetiva. Por ejemplo, imaginemos que queremos crear un modelo que determine si un cliente es rentable utilizando como etiqueta si anteriormente recibió o no un crédito. En ese caso, el modelo no estaría aprendiendo únicamente qué clientes son rentables. También estaría aprendiendo las **decisiones tomadas anteriormente por la entidad financiera**. Por tanto, los datos históricos pueden incorporar decisiones, criterios o sesgos existentes previamente. **Idea clave** La función de pérdida utilizada para entrenar un modelo, la métrica empleada para compararlo y el coste real del error **no son necesariamente lo mismo**. Es necesario relacionar estos tres elementos para evitar optimizar una métrica que no represente correctamente el objetivo real del sistema. ==== Descomposición y línea base ==== Los sistemas de Inteligencia Artificial suelen formar parte de sistemas más grandes. Podemos dividir un sistema complejo en varias etapas: * **Captación de datos** * **Preprocesamiento** * **Inferencia** * **Postprocesamiento** * **Actuación** Por ejemplo, un sistema de detección automática de objetos mediante una cámara podría funcionar de la siguiente forma: * La cámara captura una imagen * La imagen se redimensiona y normaliza * El modelo identifica los objetos presentes * Se filtran detecciones poco fiables * El sistema realiza una acción Antes de utilizar un modelo complejo conviene construir una **línea base** o //baseline//. Una línea base es una solución sencilla que sirve como referencia para comprobar si el nuevo modelo aporta realmente una mejora. Algunos ejemplos son: * Elegir siempre la clase mayoritaria * Utilizar el promedio histórico * Aplicar una regla sencilla definida por un experto El nuevo modelo únicamente se justifica si mejora esta referencia de una forma **consistente y útil**. ===== 2. Clasificación de modelos ===== Los modelos de Inteligencia Artificial pueden clasificarse utilizando diferentes criterios. ==== Según la fuente del conocimiento ==== Podemos distinguir tres grandes tipos. ^ Tipo ^ Características ^ | **Basados en conocimiento** | Utilizan reglas explícitas introducidas por especialistas | | **Basados en datos** | Ajustan sus parámetros automáticamente a partir de ejemplos | | **Híbridos** | Combinan aprendizaje basado en datos con reglas o conocimiento experto | Por ejemplo, un sistema híbrido podría utilizar una red neuronal para reconocer patrones y posteriormente aplicar reglas para comprobar que la decisión cumple determinadas restricciones. Un sistema de concesión de crédito podría funcionar de esta manera: * Un modelo estima el riesgo del cliente * Un conjunto de reglas comprueba determinadas restricciones legales o empresariales * El resultado final combina ambas decisiones ==== Según el tipo de tarea ==== Otra forma de clasificar los modelos consiste en observar el tipo de problema que resuelven. ^ Tipo de tarea ^ Objetivo ^ Ejemplo ^ | **Clasificación** | Asignar una categoría | Determinar si un correo es spam | | **Regresión** | Predecir un valor numérico | Estimar el precio de una vivienda | | **Agrupamiento** | Descubrir grupos similares | Segmentar clientes | | **Detección de anomalías** | Localizar casos atípicos | Detectar operaciones bancarias sospechosas | | **Recomendación** | Ordenar o seleccionar opciones | Recomendar películas | | **Planificación** | Elegir una secuencia de acciones | Calcular las acciones de un robot | Un mismo conjunto de datos puede utilizarse para resolver diferentes tareas. Sin embargo, cada tarea puede necesitar: * Algoritmos diferentes * Métricas diferentes * Estrategias de validación diferentes ==== Según la forma de aprender ==== También podemos clasificar los sistemas según cómo aprenden. ^ Tipo de aprendizaje ^ Características ^ | **Supervisado** | Existen ejemplos formados por una entrada y su salida correcta | | **No supervisado** | Los datos no disponen de una etiqueta objetivo | | **Semisupervisado** | Combina pocos ejemplos etiquetados con muchos ejemplos sin etiquetar | | **Por refuerzo** | Un agente aprende utilizando recompensas obtenidas al realizar acciones | También podemos distinguir entre: **Aprendizaje en línea** El modelo se actualiza progresivamente a medida que recibe nuevos datos. **Aprendizaje por lotes** El modelo se entrena utilizando conjuntos de datos y posteriormente se generan versiones concretas del modelo. El aprendizaje por lotes facilita aspectos como: * Reproducir experimentos * Comparar versiones * Auditar modelos * Controlar cuándo se actualiza un sistema ===== 3. Automatización de tareas ===== Utilizar Inteligencia Artificial para automatizar una tarea **no implica necesariamente eliminar la intervención humana**. Existen diferentes niveles de automatización. ^ Estrategia ^ Funcionamiento ^ | **Human-in-the-loop** | Una persona valida las decisiones realizadas por el sistema | | **Human-on-the-loop** | El sistema actúa automáticamente, pero una persona supervisa y puede intervenir | | **Automatización limitada** | Solo se automatizan los casos considerados suficientemente seguros | Los modelos también pueden utilizar **umbrales de confianza**. Por ejemplo: * Si la confianza del modelo es superior al 95 %, la decisión se realiza automáticamente * Si está entre el 70 % y el 95 %, se solicita revisión humana * Si es inferior al 70 %, el sistema puede rechazar la decisión automática Esto permite que el modelo pueda **abstenerse** cuando no tiene suficiente confianza. ==== Flujos deterministas y probabilísticos ==== Podemos distinguir dos tipos de procesos. **Procesos deterministas** Una misma entrada produce siempre el mismo resultado. Por ejemplo: SI edad < 18 ENTONCES acceso = denegado **Procesos probabilísticos** El sistema devuelve una probabilidad o puntuación. Por ejemplo: Probabilidad de fraude = 0.87 En los sistemas reales suelen combinarse ambos enfoques. Por ejemplo: * Un modelo estima la probabilidad de fraude * Una regla comprueba si la probabilidad supera cierto valor * Otras reglas validan permisos, límites o restricciones * Finalmente se determina qué acción debe realizarse ==== Selección por coste esperado ==== No todos los errores tienen necesariamente el mismo coste. En un problema de clasificación binaria podemos distinguir: * **FP — Falso positivo** * **FN — Falso negativo** Si cada error tiene un coste diferente, podemos calcular el coste esperado mediante: C(τ) = C_FP · FP(τ) + C_FN · FN(τ) donde: * **τ** es el umbral utilizado para tomar la decisión * **C_FP** es el coste de un falso positivo * **C_FN** es el coste de un falso negativo * **FP(τ)** es el número de falsos positivos para ese umbral * **FN(τ)** es el número de falsos negativos para ese umbral No existe un **umbral universalmente correcto**. Su valor dependerá de factores como: * El tipo de problema * Las consecuencias de cada error * La capacidad de revisión humana * Los recursos disponibles ===== 4. Razonamiento probabilístico ===== Muchos problemas de Inteligencia Artificial contienen incertidumbre. El razonamiento probabilístico permite representar y trabajar con esta incertidumbre de forma matemática. ==== Regla de Bayes ==== La **regla de Bayes** permite actualizar una probabilidad utilizando nueva evidencia. Se expresa mediante: P(c | x) = P(x | c) · P(c) / P(x) donde: * **P(c | x)** es la probabilidad de la clase //c// después de observar //x// * **P(x | c)** es la probabilidad de observar //x// cuando pertenece a la clase //c// * **P(c)** es la probabilidad previa de la clase * **P(x)** es la probabilidad de observar //x// Un algoritmo basado en este principio es **Naive Bayes**. Naive Bayes supone que las características son **condicionalmente independientes** entre sí cuando conocemos la clase. Esta suposición puede ser poco realista, pero permite crear modelos: * Rápidos * Sencillos * Estables * Útiles como línea base En **Gaussian Naive Bayes**, las características numéricas se modelan utilizando una distribución normal para cada clase. ==== Interpretar probabilidades ==== Una puntuación producida por un modelo no siempre puede interpretarse directamente como una probabilidad fiable. Por ejemplo, imaginemos que un modelo asigna una probabilidad de: P = 0.8 a muchos casos. Si posteriormente observamos que únicamente el 60 % de esos casos son realmente positivos, el modelo está mostrando una **confianza excesiva**. Para analizar este comportamiento pueden utilizarse herramientas como: * Curvas de calibración * Medida de Brier También debemos recordar que: **Una probabilidad alta no demuestra causalidad.** Además, una probabilidad alta tampoco elimina la incertidumbre cuando aparecen nuevos datos diferentes a los utilizados durante el entrenamiento. ===== 5. Razonamiento impreciso y lógica difusa ===== La lógica clásica trabaja normalmente con dos valores: Verdadero Falso Sin embargo, muchos conceptos del mundo real no tienen límites claramente definidos. Por ejemplo: * Temperatura alta * Velocidad rápida * Persona joven * Distancia cercana La **lógica difusa** permite representar estos conceptos utilizando diferentes grados de pertenencia. Una función de pertenencia puede expresarse como: μA(x) ∈ [0,1] Por ejemplo: μAlta(30 °C) = 0.8 significa que una temperatura de 30 °C tiene un **grado de pertenencia de 0,8 al concepto "temperatura alta"**. Esto **no significa** que exista un 80 % de probabilidad de que la temperatura sea alta. La lógica difusa y la probabilidad representan conceptos diferentes. ^ Probabilidad ^ Lógica difusa ^ | Representa incertidumbre sobre un hecho | Representa el grado en el que algo pertenece a un concepto | | Ejemplo: 80 % de probabilidad de lluvia | Ejemplo: temperatura con grado 0,8 de pertenencia a "alta" | ==== Fusificación, inferencia y desfusificación ==== Un sistema de lógica difusa suele funcionar en tres etapas. === Fusificación === Las entradas numéricas se transforman en grados de pertenencia. Por ejemplo, una temperatura puede pertenecer simultáneamente a varios conjuntos: Temperatura = 28 °C Media = 0.4 Alta = 0.7 === Inferencia === Se evalúan reglas del tipo **SI-ENTONCES**. Por ejemplo: SI temperatura es alta Y carga es elevada ENTONCES ventilación es muy alta Para combinar condiciones pueden utilizarse operadores como: * **mínimo** para AND * **máximo** para OR === Desfusificación === El resultado difuso se transforma nuevamente en un valor numérico. Uno de los métodos utilizados es el **centroide**. **Ejemplo razonado** Un sistema de climatización podría utilizar la regla: SI temperatura es alta Y carga es elevada ENTONCES ventilación es muy alta Las funciones de pertenencia pueden solaparse. Gracias a ello, el sistema puede modificar gradualmente la ventilación en lugar de producir cambios bruscos cuando se supera un determinado umbral. ==== Diseño y validación ==== Los elementos de un sistema difuso deben diseñarse cuidadosamente: * Etiquetas lingüísticas * Funciones de pertenencia * Reglas * Métodos de inferencia * Métodos de desfusificación Estos elementos pueden proceder de: * Conocimiento experto * Datos * Una combinación de ambos Durante la validación deben comprobarse aspectos como: * Cobertura del espacio de entrada * Existencia de reglas contradictorias * Zonas en las que ninguna regla se activa * Continuidad de la salida * Comportamiento ante valores extremos ===== 6. Sistemas basados en reglas ===== Los sistemas basados en reglas representan el conocimiento mediante reglas de producción. Una regla contiene: * **Antecedentes:** condiciones que deben cumplirse * **Consecuentes:** acciones o conclusiones obtenidas Ejemplo: SI temperatura > 80 Y presión > 5 ENTONCES activar alarma Un sistema basado en reglas suele incluir varios componentes. ^ Componente ^ Función ^ | **Base de hechos** | Contiene la información conocida actualmente | | **Base de reglas** | Contiene las reglas del sistema | | **Motor de inferencia** | Determina qué reglas deben ejecutarse | | **Módulo de explicación** | Registra o explica la cadena de razonamiento | ==== Encadenamiento hacia adelante y hacia atrás ==== Existen dos estrategias principales para aplicar las reglas. === Encadenamiento hacia adelante === Parte de los **hechos conocidos** y aplica reglas hasta obtener nuevas conclusiones. Podemos representarlo como: HECHOS → REGLAS → NUEVOS HECHOS → CONCLUSIÓN Es especialmente adecuado para tareas de: * Monitorización * Control * Sistemas reactivos === Encadenamiento hacia atrás === Parte de una **hipótesis** e intenta comprobar si los hechos disponibles permiten demostrarla. HIPÓTESIS → REGLAS NECESARIAS → HECHOS Resulta útil en tareas como: * Diagnóstico * Consulta * Sistemas expertos === Resolución de conflictos === En ocasiones varias reglas pueden ejecutarse simultáneamente. En ese caso aparece un **conflicto**. El sistema puede decidir qué regla ejecutar utilizando criterios como: * Prioridad * Especificidad * Novedad * Una estrategia de agenda Si esta política no se define explícitamente, el resultado podría depender accidentalmente del orden en el que estén programadas las reglas. ==== Árboles de decisión y reglas aprendidas ==== Los **árboles de decisión** dividen progresivamente el espacio de variables mediante preguntas. Por ejemplo: ¿Edad < 30? / \ Sí No / \ ¿Ingresos altos? ... / \ Sí No Una de sus principales ventajas es que pueden ser relativamente fáciles de interpretar. Además, un árbol puede transformarse en reglas. Por ejemplo: SI edad < 30 Y ingresos = altos ENTONCES clase = A Sin embargo, los árboles demasiado profundos pueden **memorizar los datos de entrenamiento**, produciendo sobreajuste. Este problema puede controlarse mediante parámetros como: * Profundidad máxima * Número mínimo de ejemplos por hoja * Poda del árbol ===== 7. Redes neuronales como modelo alternativo ===== Una **neurona artificial** realiza una combinación ponderada de sus entradas. Puede expresarse mediante: z = wᵀx + b donde: * **x** representa las entradas * **w** representa los pesos * **b** es el sesgo o //bias// Posteriormente se aplica una **función de activación**. Una red neuronal multicapa conecta múltiples neuronas formando diferentes capas. De forma simplificada: Entrada → Capa oculta → Capa oculta → Salida Durante el entrenamiento los pesos se modifican mediante técnicas como: * Descenso de gradiente * Retropropagación Las redes neuronales pueden representar relaciones complejas y no lineales. Sin embargo, normalmente requieren: * Escalado de variables * Ajuste de hiperparámetros * Cantidades suficientes de datos * Control del sobreajuste El rendimiento del modelo debe evaluarse utilizando **datos que no hayan sido utilizados durante el entrenamiento**. Un único resultado puede depender de cómo se hayan dividido aleatoriamente los datos. Por este motivo es habitual: * Fijar semillas aleatorias * Mantener un conjunto de prueba * Utilizar validación cruzada cuando sea adecuado ===== 8. Evaluación y elección del modelo ===== El objetivo final no consiste simplemente en encontrar el modelo con mayor precisión. Debemos seleccionar el modelo más adecuado para resolver el problema completo. ==== Matriz de confusión y métricas ==== En un problema de clasificación binaria podemos obtener cuatro tipos de resultados. ^ ^ Predicción positiva ^ Predicción negativa ^ | **Real positivo** | Verdadero positivo (**TP**) | Falso negativo (**FN**) | | **Real negativo** | Falso positivo (**FP**) | Verdadero negativo (**TN**) | A partir de ellos pueden calcularse diferentes métricas. === Precisión === Indica qué proporción de las predicciones positivas era realmente positiva. precision = TP / (TP + FP) === Sensibilidad o Recall === Indica qué proporción de los casos positivos reales ha detectado el modelo. recall = TP / (TP + FN) === F1 === La medida **F1** combina precisión y //recall// mediante su media armónica. En problemas multiclase pueden calcularse métricas: * Para cada clase * Promedio macro * Promedio micro * Promedio ponderado La **matriz de confusión** permite observar qué clases está confundiendo el modelo. Esto proporciona información que una única medida global de exactitud puede ocultar. ==== Robustez, interpretabilidad y mantenimiento ==== Un modelo no debe evaluarse únicamente utilizando datos ideales. También debemos analizar su **robustez** ante situaciones como: * Ruido * Datos ausentes * Cambios de escala * Valores extremos * Datos fuera del rango habitual Otro aspecto importante es la **interpretabilidad**. Algunos modelos son interpretables por su propia estructura. Por ejemplo: * Sistemas de reglas pequeños * Árboles de decisión poco profundos Otros modelos necesitan técnicas adicionales para intentar explicar sus decisiones. Sin embargo, una explicación local de una predicción concreta **no convierte automáticamente un modelo complejo en un modelo seguro o completamente interpretable**. Las explicaciones deben analizarse teniendo en cuenta: * Fidelidad * Estabilidad * Utilidad para la persona que debe tomar la decisión ==== Comparación de algunos modelos ==== ^ Modelo ^ Fortaleza ^ Principal limitación ^ Cantidad de datos ^ Uso típico ^ | **Naive Bayes** | Rápido | Suposición fuerte de independencia | Pocos-medios | Línea base | | **Árbol de decisión** | Legible | Sobreajuste | Pocos-medios | Reglas segmentadas | | **Lógica difusa** | Suavidad y lenguaje natural | Requiere diseño experto | Conocimiento | Sistemas de control | | **Red neuronal** | Modela relaciones no lineales | Opacidad y necesidad de ajuste | Medios-muchos | Patrones complejos | La elección final de un modelo debe considerar conjuntamente: * Rendimiento * Coste de los errores * Latencia * Explicabilidad * Recursos disponibles * Facilidad de actualización * Riesgo En muchos proyectos, la solución más adecuada consiste en una **arquitectura híbrida** en la que se combinan: * Un modelo estadístico o de aprendizaje automático * Validaciones deterministas * Reglas * Revisión humana ===== Síntesis de la unidad ===== Seleccionar un modelo de Inteligencia Artificial es fundamentalmente una **decisión de ingeniería**. El proceso puede resumirse de la siguiente forma: Definir el problema ↓ Establecer requisitos ↓ Crear una línea base ↓ Seleccionar modelos candidatos ↓ Entrenar y validar ↓ Comparar métricas y costes ↓ Analizar robustez e interpretabilidad ↓ Seleccionar el modelo ↓ Desplegar y mantener No debemos elegir un modelo únicamente porque obtenga la mejor métrica durante un experimento. El modelo más preciso **no siempre es el modelo más adecuado para utilizar en producción**. La decisión final debe considerar tanto el rendimiento técnico como las restricciones, los riesgos y las necesidades reales del sistema. ----