1. Introducción a la Inteligencia Artificial (IA) [0]

La Inteligencia Artificial (IA) es una rama de la informática que se enfoca en crear máquinas que actúan y reaccionan de manera similar a los humanos, lo que la convierte en un campo de estudio fascinante y en constante evolución.

1.1. ¿Qué es la Inteligencia Artificial? [6]

  1. La Inteligencia Artificial (IA) es una rama de la informática dedicada a crear máquinas inteligentes que trabajan y reaccionan como los humanos. [9]
    1. El desarrollo actual de la IA se compara con la forma en que se ve y reacciona junto a un humano. [10]
  2. Un ejemplo de IA es un robot que puede traer una taza de café, lo que parece avanzado, pero no está tan lejos de la realidad. [18]
    1. Ya existen dispositivos como cafeteras automáticas y sistemas que mueven objetos, como las entregas de Amazon. [20]
    2. Estas tecnologías existentes demuestran que estamos al borde de avances significativos en IA, lo que la convierte en un tema emocionante. [22]

1.2. Cuatro tipos principales de Inteligencia Artificial [24]

  1. Las máquinas reactivas son el primer tipo de IA, han existido durante mucho tiempo y son puramente reactivas. [30]
    1. No tienen la capacidad de formar recuerdos ni de usar experiencias pasadas para tomar decisiones. [32]
    2. Estas máquinas están diseñadas para realizar trabajos específicos, como una cafetera programable que hace café o lavadoras con equilibradores de carga automáticos. [33]
  2. La memoria limitada es el tipo de IA en el que nos encontramos actualmente. [38]
    1. Utiliza experiencias pasadas y datos presentes para tomar decisiones. [39]
    2. Los coches autónomos son un ejemplo de IA de memoria limitada, ya que usan imágenes y videos de eventos pasados para aprender a conducir. [40]
    3. Sin embargo, no evolucionan nuevas ideas por sí mismos; requieren reprogramación externa para realizar cambios. [44]
  3. La teoría de la mente se refiere a máquinas de IA que pueden socializar y comprender las emociones humanas. [46]
    1. Estas máquinas aún no se han desarrollado completamente, aunque hay mucha investigación en curso para permitir que la IA comprenda cognitivamente a las personas basándose en el entorno y las características faciales. [47]
  4. La autoconciencia es el futuro de la IA, donde las máquinas serán superinteligentes, sensibles y conscientes. [49]
    1. Serán capaces de reaccionar de manera muy similar a los seres humanos, pero con su propio "sabor" o personalidad. [51]

2. Cómo se logra la Inteligencia Artificial [53]

La Inteligencia Artificial se logra principalmente a través del aprendizaje automático y el aprendizaje profundo, que permiten a las máquinas aprender de los datos y simular redes neuronales humanas.

2.1. Aprendizaje automático y aprendizaje profundo [53]

  1. El aprendizaje automático es la principal forma de lograr la IA en la actualidad, ya que le proporciona la capacidad de aprender. [53]
    1. Esto se logra mediante el uso de algoritmos para descubrir patrones y generar información a partir de los datos a los que están expuestos. [54]
  2. El aprendizaje profundo es una subcategoría del aprendizaje automático que permite a la IA imitar la red neuronal del cerebro humano. [57]
    1. Puede dar sentido a patrones, ruido y fuentes de confusión en los datos. [59]
    2. Un ejemplo es la segregación de fotos: la máquina examina las características de cada foto (extracción de características) para distinguirlas y clasificarlas, como paisajes o retratos. [60]
    3. Google Fotos utiliza esta tecnología para buscar imágenes específicas, como fotos de perros. [66]

2.2. Redes neuronales para el aprendizaje profundo [69]

  1. El modelo más básico utilizado en el aprendizaje profundo es una red neuronal, que consta de tres capas principales. [70]
    1. La capa de entrada recibe los datos, como las fotos que se desean segregar. [72]
    2. Las capas ocultas son responsables de todos los cálculos matemáticos o la extracción de características de las entradas. [76]
      1. Las líneas entre las capas representan pesos, que son números decimales que se multiplican por el valor de la capa de entrada. [77]
      2. La suma de estos pesos en cada punto de la capa oculta produce un valor. [79]
      3. Múltiples capas ocultas permiten procesar datos más complejos y aumentan la precisión de la salida predicha. [81]
    3. La capa de salida proporciona las fotos segregadas basándose en los pesos calculados, clasificándolas como retratos o paisajes. [84]

2.3. Predicción de precios de billetes de avión [91]

  1. El aprendizaje automático se puede utilizar para predecir los precios de los billetes de avión. [94]
    1. Los factores clave para la predicción incluyen las aerolíneas, el aeropuerto de origen, el aeropuerto de destino y la fecha de salida. [95]
  2. Se utilizan datos históricos de precios de billetes para entrenar la máquina. [98]
    1. Una vez entrenada, la máquina utiliza estos datos antiguos (memoria) para comparar nuevas entradas y predecir nuevos precios. [100]
    2. Esto es útil para planificar viajes con antelación, ya que los precios de los billetes fluctúan mucho. [106]

3. Aplicaciones de la Inteligencia Artificial [108]

La Inteligencia Artificial tiene diversas aplicaciones prácticas en la vida cotidiana, desde la automatización del hogar hasta el entretenimiento.

3.1. Automatización del hogar [108]

  1. Los sensores en una habitación pueden detectar la presencia de una persona y encender las luces automáticamente. [113]
    1. Este es un ejemplo de máquinas sin memoria, ya que simplemente reaccionan a la presencia sin recordar eventos pasados. [114]
    2. Los modelos más nuevos pueden predecir la presencia de una persona para encender las luces antes de que entren en la habitación, lo que ayuda a ahorrar energía. [116]
  2. Los termostatos inteligentes pueden adivinar cuándo se levanta una persona por la mañana para encender la calefacción en el momento adecuado. [117]
  3. Cuando una persona sale de la habitación, los sensores detectan su ausencia y apagan las luces. [121]

3.2. Entretenimiento y dispositivos inteligentes [123]

  1. Los sensores de sonido en un televisor pueden detectar la voz de una persona y encender el televisor. [123]
    1. Dispositivos como Google Chromecast y Google Home Mini permiten controlar el televisor con comandos de voz. [124]
  2. El Amazon Fire Stick y otros electrodomésticos inteligentes con IA están transformando la forma en que interactuamos con la tecnología en el hogar. [127]
  3. Estas aplicaciones demuestran que la IA está en la vanguardia del desarrollo y ofrece numerosas posibilidades. [129]

4. Caso de uso: Predicción de diabetes con TensorFlow en Python [130]

Se presenta un caso de uso detallado sobre cómo predecir el riesgo de diabetes en una persona utilizando el entorno de Python con la biblioteca TensorFlow.

4.1. Planteamiento del problema y características [130]

  1. El objetivo es predecir si una persona tiene diabetes o, más apropiadamente, si tiene un alto riesgo de diabetes. [131]
  2. Las características (datos registrados de hospitales) utilizadas para la predicción incluyen: [137]
    1. Número de embarazos. [138]
    2. Concentración de glucosa. [139]
    3. Presión arterial. [140]
    4. Edad (un factor importante). [140]
    5. Nivel de insulina. [141]

4.2. Configuración del entorno y carga de datos [143]

  1. Se utiliza Anaconda Jupyter Notebook como editor en línea para trabajar con Python. [145]
    1. Jupyter Notebook permite ejecutar código en celdas individuales, añadir comentarios y es muy visual. [148]
  2. Se importa la biblioteca pandas (como pd) para la gestión de conjuntos de datos. [158]
    1. Pandas es similar a una hoja de cálculo de Excel, ya que añade columnas, encabezados y funcionalidades para ver los datos. [164]
  3. Los datos de diabetes se leen desde un archivo CSV (valores separados por comas) y se asignan a una variable llamada diabetes. [166]
  4. El comando diabetes.head() de pandas muestra las primeras cinco líneas del conjunto de datos, incluyendo los títulos de las columnas como número de embarazos, concentración de glucosa y presión arterial. [173]
    1. Es importante comprender el dominio de los datos para saber qué significa cada información. [185]

4.3. Limpieza y normalización de datos [189]

  1. Se importa TensorFlow (como tf), una biblioteca desarrollada por Google y de código abierto. [192]
  2. Se seleccionan columnas específicas (número de embarazos, glucosa, etc.) que pueden leerse como números flotantes para la normalización. [209]
    1. La normalización (también llamada escalado) es crucial para que todos los valores estén en el mismo rango, generalmente entre cero y uno. [215]
    2. Esto evita que valores más grandes (como el número de embarazos) sesguen los resultados en comparación con valores más pequeños (como el nivel de insulina). [220]
    3. Se aplica una función lambda para normalizar los datos, restando el valor mínimo y dividiendo por el rango (máximo menos mínimo). [222]
  3. La edad se tratará de manera diferente, agrupándola en "cubos" o rangos para el análisis estadístico. [213]

4.4. Definición de características para TensorFlow [244]

  1. Se informa al modelo de TensorFlow sobre las variables creando columnas de características. [244]
    1. Para las columnas numéricas normalizadas, se usa tf.feature_column.numeric_column para indicar que son valores flotantes entre cero y uno. [250]
  2. La columna "grupo" (A, B, C, D) se define como una columna categórica con una lista de vocabulario (tf.feature_column.categorical_column_with_vocabulary_list). [275]
    1. Esto es importante porque los valores categóricos no deben tratarse como números flotantes (por ejemplo, C no es igual a A + B). [284]
  3. La columna "clase" (si tienen diabetes o no) se reservará para el final, ya que es lo que se está intentando predecir. [259]

4.5. Visualización de datos y creación de cubos de edad [263]

  1. Se importa la biblioteca matplotlib.pyplot (como plt) para la visualización de datos. [293]
    1. La línea %matplotlib inline es crucial en Jupyter Notebook para mostrar los gráficos directamente en la página. [296]
  2. Se crea un histograma de la edad con 20 "bins" (cubos) utilizando diabetes['age'].hist(bins=20). [300]
    1. El histograma muestra que la mayoría de los participantes tienen alrededor de 22 años, y el número disminuye gradualmente con la edad. [304]
    2. Esta tendencia es común en los datos censales, donde los grupos más jóvenes son más grandes. [308]
  3. Se crearán cubos de edad para agrupar a las personas en rangos de edad, lo que facilita el análisis. [310]

4.6. Creación y entrenamiento del modelo de TensorFlow [315]

  1. Se crea una función de entrada (input_function) específica para TensorFlow. [320]
    1. Esta función define los datos de entrenamiento (x_train, y_train). [331]
    2. El número de épocas (pases completos sobre el conjunto de datos) se establece en 1000, aunque 200 suele ser suficiente para esta cantidad de datos. [332]
    3. El tamaño del lote (batch_size) se establece en 10, lo que significa que se procesan 10 líneas de datos a la vez para evitar problemas con grandes volúmenes de datos. [337]
    4. Los datos se barajan (shuffle=True) para mezclar el orden y evitar sesgos. [341]
  2. Se crea el modelo utilizando tf.estimator.LinearClassifier. [344]
    1. Se le pasan las columnas de características definidas previamente. [344]
    2. n_classes=2 indica que la salida es binaria (0 o 1), es decir, tiene o no tiene diabetes (o alto riesgo). [345]
  3. El modelo se entrena utilizando model.train(), pasándole la función de entrada y el número de pasos. [347]
    1. Durante el entrenamiento, se muestra información sobre la pérdida y el paso global. [358]
    2. Una vez entrenado, el modelo contiene la información necesaria para realizar predicciones. [362]

4.7. Ejecución de predicciones y evaluación del modelo [363]

  1. Se ejecuta una función de predicción (predict_input_function) utilizando los datos de prueba (x_test) sin las respuestas (y). [364]
    1. El tamaño del lote es 10, y shuffle=False es importante para rastrear las predicciones correctamente. [378]
  2. La salida de las predicciones es un diccionario que incluye probabilidades logísticas, IDs de clase y clases. [386]
    1. La clave "classes" indica la predicción del modelo, por ejemplo, "alto riesgo de diabetes" (1) o no (0). [391]
    2. La "B" delante del número indica una salida binaria. [399]
  3. Para evaluar el modelo, se crea una función de entrada de evaluación (eval_input_function) que incluye tanto x_test como y_test (las respuestas correctas). [404]
    1. Se utiliza model.evaluate() para obtener los resultados de la evaluación. [413]
  4. La evaluación produce métricas como la precisión (accuracy), la pérdida promedio (average_loss) y la precisión de la predicción (precision_prediction). [417]
    1. En este caso, el modelo logró una precisión del 71.65% (aproximadamente 71%) en la predicción del riesgo de diabetes. [422]
    2. Esta precisión se considera bastante buena para la cantidad de datos utilizada. [425]
  5. El modelo se implementó en Python utilizando TensorFlow, una de las bibliotecas más complejas pero versátiles. [427]