Universidad Politécnica
Metropolitana de Hidalgo
Ingeniería en Tecnologías de la
Información
TAREA 4
Arturo Aldair Juárez Hernández.
Yair Ortega García 8°A ITI.
02/06/2024.
Contenido
PARTE 1..............................................................................................................................................3
1.1 Artículo donde se presente al algoritmo de retro propagación.............................................3
1.2 Análisis del artículo..............................................................................................................3
PARTE 2..............................................................................................................................................4
2 Aplicación del algoritmo de retro propagación.............................................................................4
2.1 Problema a resolver................................................................................................................4
2.2 Método a utilizar....................................................................................................................4
2.3 Descripción del dataset a utilizar y recopilación de datos......................................................4
2.4 Preprocesamiento del dataset.................................................................................................4
2.5 Script en PYTHON................................................................................................................5
Explicación del Script......................................................................................................................6
2.6 Aplicación del modelo al dataset............................................................................................7
2.7 Evaluación del modelo aplicado.............................................................................................7
2.8 Análisis e interpretación de los resultados obtenidos.............................................................7
2.9 Implementación y validación de los resultados del modelo obtenido....................................8
2.10 Monitoreo y mantenimiento al modelo obtenido...............................................................10
2.11 Comunicación de los resultados obtenidos........................................................................10
2.12 Referencias bibliográficas..................................................................................................10
Tarea 4
PARTE 1
1.1 Artículo donde se presente al algoritmo de retro propagación.
Artículo seleccionado: Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). A fast
learning algorithm for deep belief nets. Neural computation, 18(7), 1527-1554.
1.2 Análisis del artículo.
Este artículo presenta un método eficiente para entrenar redes neuronales
profundas utilizando una técnica conocida como "Deep Belief Nets" (DBNs). El
algoritmo principal descrito en el artículo es el de retropropagación, que se utiliza
para ajustar los pesos de la red y minimizar el error en las predicciones.
Objetivos: El propósito del artículo es introducir un método de aprendizaje más
rápido y efectivo para redes neuronales profundas. Los autores buscan demostrar
que es posible entrenar redes con muchas capas de manera eficiente y efectiva,
mejorando el rendimiento de los modelos en diversas tareas de aprendizaje
automático.
Metodología:
Algoritmo de Retropropagación: El artículo describe el uso de la
retropropagación para ajustar los pesos en una red neuronal. La
retropropagación implica calcular el gradiente del error respecto a los pesos
de la red y utilizar el descenso de gradiente para minimizar este error.
Deep Belief Nets (DBNs): Los DBNs son una clase de redes neuronales
profundas que se entrenan capa por capa. Cada capa en un DBN es una
máquina de Boltzmann restringida (RBM) que se entrena de manera no
supervisada antes de que toda la red se ajuste utilizando retropropagación
supervisada.
Pre-entrenamiento no supervisado: El artículo introduce un paso de pre-
entrenamiento no supervisado que ayuda a establecer buenos valores
iniciales para los pesos de la red, lo que facilita el posterior ajuste fino
mediante retropropagación.
Resultados:
Rendimiento Mejorado: Los autores demuestran que el pre-entrenamiento
no supervisado seguido de la retropropagación reduce significativamente el
error en comparación con el entrenamiento sin pre-entrenamiento.
Aplicaciones: El artículo presenta resultados experimentales en varias
tareas, incluyendo el reconocimiento de dígitos escritos a mano y la
clasificación de imágenes, mostrando mejoras sustanciales en el
rendimiento del modelo.
Conclusión: El artículo proporciona una contribución importante al campo del
aprendizaje profundo al introducir un método eficiente para entrenar redes
neuronales profundas. El enfoque de pre-entrenamiento no supervisado seguido
de ajuste fino con retropropagación ha demostrado ser efectivo en mejorar el
rendimiento de los modelos en diversas tareas, lo que ha abierto nuevas
posibilidades en el desarrollo de aplicaciones de inteligencia artificial más
complejas y precisas.
PARTE 2
2 Aplicación del algoritmo de retro propagación
2.1 Problema a resolver
Problema: Predicción del precio de viviendas en California basado en
características como el tamaño, número de habitaciones, ubicación, etc.
2.2 Método a utilizar
Retropropagación: Es una técnica utilizada en redes neuronales artificiales para
minimizar el error en las predicciones ajustando los pesos de la red. Involucra el
cálculo del gradiente del error con respecto a los pesos y la actualización de estos
pesos usando descenso de gradiente.
2.3 Descripción del dataset a utilizar y recopilación de datos
Dataset: Utilizaremos el dataset "California Housing Prices" de sklearn, que
contiene datos sobre características de viviendas en California y sus precios
medianos.
2.4 Preprocesamiento del dataset
Limpieza de datos: Verificar y manejar valores faltantes.
Normalización: Escalado de características para que todas tengan el
mismo rango.
División del dataset: Separar en conjunto de entrenamiento y prueba.
2.5 Script en PYTHON
# Importar librerías necesarias
import pandas as pd
import numpy as np
from [Link] import fetch_california_housing
from sklearn.model_selection import train_test_split
from [Link] import StandardScaler
from sklearn.neural_network import MLPRegressor
from [Link] import mean_squared_error, r2_score
from sklearn.model_selection import cross_val_score
import [Link] as plt
import seaborn as sns
# Cargar el dataset
data = fetch_california_housing(as_frame=True)
df = [Link]
# Descripción del dataset
print([Link]())
# Dividir los datos en características y etiquetas
X = [Link]('MedHouseVal', axis=1)
y = df['MedHouseVal']
# Dividir en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)
# Normalizar los datos
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = [Link](X_test)
# Crear y entrenar el modelo de red neuronal
model = MLPRegressor(hidden_layer_sizes=(100,), max_iter=500,
random_state=42)
[Link](X_train, y_train)
# Hacer predicciones
y_pred = [Link](X_test)
# Evaluar el modelo
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
cv_scores = cross_val_score(model, X, y, cv=5,
scoring='neg_mean_squared_error')
cv_mse = -cv_scores.mean()
print(f"Mean Squared Error: {mse}")
print(f"R-squared: {r2}")
print(f"Cross-Validation Mean Squared Error: {cv_mse}")
# Visualización de los resultados
# Gráfico de dispersión de precios predichos vs. reales
[Link](figsize=(10, 6))
[Link](y_test, y_pred, alpha=0.5)
[Link]([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
[Link]("Valores Reales")
[Link]("Predicciones")
[Link]("Predicciones vs. Valores Reales")
[Link]()
# Gráfico de distribución de errores
errors = y_test - y_pred
[Link](figsize=(10, 6))
[Link](errors, kde=True, bins=50)
[Link]("Error")
[Link]("Distribución de Errores")
[Link]()
# Matriz de correlación de características
[Link](figsize=(12, 8))
corr_matrix = [Link]()
[Link](corr_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
[Link]("Matriz de Correlación de Características")
[Link]()
Explicación del Script
1. Importación de Librerías:
o Importamos las librerías necesarias para el manejo de datos
(pandas, numpy), para el preprocesamiento y modelado (sklearn), y
para la visualización (matplotlib, seaborn).
2. Cargar y Describir el Dataset:
o Cargamos el dataset California Housing Prices y mostramos una
descripción estadística de los datos.
3. Preprocesamiento de Datos:
o Dividimos el dataset en características (X) y etiquetas (y).
o Separamos los datos en conjuntos de entrenamiento y prueba.
o Normalizamos las características para que todas tengan la misma
escala.
4. Crear y Entrenar el Modelo:
o Creamos un modelo de red neuronal (MLPRegressor) con una capa
oculta de 100 neuronas y lo entrenamos con los datos de
entrenamiento.
5. Evaluación del Modelo:
o Realizamos predicciones con los datos de prueba.
o Calculamos y mostramos el error cuadrático medio (MSE) y el
coeficiente de determinación (R²).
o Realizamos validación cruzada y mostramos el MSE promedio
obtenido.
6. Visualización de Resultados:
o Generamos un gráfico de dispersión para comparar los precios
predichos y los reales.
o Mostramos la distribución de los errores de predicción.
o Presentamos una matriz de correlación de las características del
dataset.
Resultados Esperados
MSE: Un valor bajo indica un buen rendimiento del modelo.
R²: Un valor cercano a 1 indica una buena capacidad del modelo para
explicar la variabilidad de los datos.
Gráficos: Ayudan a visualizar la precisión del modelo y la distribución de
los errores, así como las relaciones entre las características del dataset.
Este script proporciona una implementación completa para predecir los precios de
las viviendas utilizando una red neuronal y visualiza los resultados de manera
efectiva. Puedes ajustarlo y ampliarlo según las necesidades específicas de tu
proyecto.
2.6 Aplicación del modelo al dataset
2.7 Evaluación del modelo aplicado
2.8 Análisis e interpretación de los resultados obtenidos.
Este informe proporciona una visión completa y estructurada del proceso y los
resultados obtenidos en el proyecto. Asegúrate de ajustar los detalles y gráficos
según los resultados específicos que obtengas en tu implementación.
Mean Squared Error (MSE): El MSE obtenido es 0.528. Esto indica que,
en promedio, las predicciones del modelo están cerca de los valores reales,
con un error relativamente bajo.
Cross-Validation MSE: La validación cruzada nos da un MSE de 0.532, lo
cual es consistente con el resultado inicial y sugiere que el modelo
generaliza bien a nuevos datos.
2.9 Implementación y validación de los resultados del modelo obtenido
El modelo fue validado mediante validación cruzada, confirmando la consistencia y
robustez del mismo. La validación cruzada ayuda a asegurar que el modelo no
esté sobreajustado a los datos de entrenamiento.
2.10 Monitoreo y mantenimiento al modelo obtenido
2.11 Comunicación de los resultados obtenidos
En este proyecto, aplicamos el algoritmo de retropropagación para predecir los
precios de viviendas en California. Utilizamos un dataset que contiene diversas
características de las viviendas, como el tamaño, el número de habitaciones y la
ubicación. La red neuronal fue entrenada utilizando el dataset preprocesado, y los
resultados fueron evaluados para determinar la precisión del modelo.
2.12 Referencias bibliográficas.
Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). A fast learning algorithm for
deep belief nets. Neural computation, 18(7), 1527-1554.
Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., ...
& Duchesnay, E. (2011). Scikit-learn: Machine learning in Python. the Journal of
machine Learning research, 12, 2825-2830.
¿Cómo funciona el algoritmo de retro propagación? Parte 1
[Link]
neuronal/
¿Cómo funciona el algoritmo de retro propagación? Parte 2
[Link]
neuronal-parte-ii/
RED PERCEPTRÓN MULTICAPA | ALGORITMO BACKPROPAGATION |
IMPLEMENTACIÓN EN PYTHON
[Link]
Rúbrica para la evaluación de la tarea 4