Preprocesamiento de datos y evaluación de modelos [aprendizaje automático, inteligencia artificial, ejemplos prácticos]

Preprocesamiento de datos y evaluación de modelos en aprendizaje automático.

En el campo del aprendizaje automático, el preprocesamiento de datos y la evaluación de modelos son dos pasos cruciales. Garantizan que los modelos de aprendizaje automático que construimos puedan aprender eficazmente de los datos y hacer predicciones precisas. Este artículo presentará en detalle los conceptos de preprocesamiento de datos y evaluación de modelos e ilustrará su estrecha relación a través de ejemplos de la vida real.

Preprocesamiento de datos

¿Qué es el preprocesamiento de datos?

El preprocesamiento de datos es un paso indispensable en el aprendizaje automático, que incluye dos aspectos principales: limpieza de datos e ingeniería de funciones.

Limpieza de datos

La limpieza de datos implica identificar y procesar errores, anomalías o valores faltantes en los datos. Estos problemas pueden hacer que el entrenamiento del modelo sea inestable o produzca predicciones inexactas. Los pasos clave en la limpieza de datos incluyen:

  • Manejo de valores faltantes : identifique y maneje los valores faltantes, o elija eliminar muestras que contengan valores faltantes. Por ejemplo, en los datos de ventas, si faltan datos de precios de un producto, podemos usar la media o la mediana para completarlos.

  • Detección y manejo de valores atípicos : descubra y maneje valores atípicos para evitar que afecten el rendimiento del modelo. Los valores atípicos pueden deberse a errores en la recopilación de datos u otros motivos. Por ejemplo, si hay valores negativos en sus datos de peso, esto es obviamente una anomalía y debe corregirse o eliminarse.

ingeniería de características

La ingeniería de funciones implica seleccionar, transformar y crear funciones para su uso en modelos de aprendizaje automático. Una buena ingeniería de funciones puede mejorar significativamente el rendimiento del modelo. Los pasos clave en la ingeniería de características incluyen:

  • Selección de funciones : seleccione funciones relevantes para el problema y elimine funciones redundantes o irrelevantes. Esto ayuda a reducir la complejidad del modelo y mejorar las capacidades de generalización.

  • Transformación de características : transforma características para que se ajusten mejor al modelo. Por ejemplo, una transformación logarítmica puede transformar datos sesgados a la derecha en una distribución casi normal, lo que resulta beneficioso para los modelos lineales.

Ejemplo: preprocesamiento de conjuntos de datos médicos

Tomemos un ejemplo de un conjunto de datos médicos que incluye la edad, el sexo, el peso, la presión arterial y el estado de la enfermedad del paciente. Antes del preprocesamiento de datos, podemos encontrar los siguientes problemas:

  1. Valores faltantes : faltan datos de peso para algunos pacientes. Podemos optar por utilizar el peso corporal promedio para completar estos valores faltantes y mantener la integridad de los datos.

  2. Valor atípico : hay un registro de un paciente de 200 años en los datos, lo que obviamente es un valor atípico. Necesitamos eliminarlo o arreglarlo.

  3. Selección de características : el género puede ser una característica irrelevante en la predicción del estado de la enfermedad. Podemos optar por eliminarlo del conjunto de datos.

  4. Transformación de características : si los datos de presión arterial muestran una distribución sesgada a la derecha, podemos transformarlos logarítmicamente para cumplir mejor con los supuestos del modelo.

A través de estos pasos de preprocesamiento, podemos preparar datos que sean más adecuados para entrenar modelos de aprendizaje automático.

A continuación se muestra un ejemplo de código para el procesamiento de datos utilizando NumPy y Pandas para demostrar los pasos reales del preprocesamiento de datos con más detalle.

import numpy as np
import pandas as pd

# 创建一个示例数据集
data = {
    
    'Age': [25, 30, 35, 40, 45],
        'Weight': [70, 75, np.nan, 80, 85],
        'BloodPressure': [120, 130, 140, 150, 160],
        'DiseaseStatus': [0, 1, 0, 1, 1]}

df = pd.DataFrame(data)

# 处理缺失值
mean_weight = df['Weight'].mean()
df['Weight'].fillna(mean_weight, inplace=True)

# 处理异常值
df = df[df['Age'] < 100]

# 特征选择和变换
# 假设我们决定在建模时不考虑性别,可以将其从数据集中删除
df.drop('Gender', axis=1, inplace=True)

# 对血压进行对数变换
df['BloodPressure'] = np.log(df['BloodPressure'])

# 打印预处理后的数据集
print(df)

El código anterior primero crea un conjunto de datos de muestra, luego usa Pandas para manejar los valores faltantes y los valores atípicos, y realiza la selección y transformación de características. Estos pasos son parte del preprocesamiento de datos, lo que garantiza que los datos sean adecuados para entrenar modelos de aprendizaje automático.

Evaluación y selección de modelos.

¿Qué es la evaluación de modelos?

En el camino del aprendizaje automático, una vez que entrenamos un modelo, debemos evaluar completamente su desempeño. Este proceso se llama 模型评估y es un paso crítico para garantizar que nuestros modelos sean lo suficientemente robustos para manejar las necesidades de las aplicaciones del mundo real.

Validación cruzada

Para evaluar el rendimiento y la capacidad de generalización de un modelo, utilizamos una técnica ampliamente reconocida llamada validación cruzada. El principio de la validación cruzada es dividir el conjunto de datos en múltiples subconjuntos que no se superponen, una parte se usa para el entrenamiento del modelo y la otra parte se usa para validar el modelo. La ventaja de este enfoque es que puede repetir el entrenamiento y la validación varias veces para estimar con mayor precisión el rendimiento del modelo.

Seleccionar métricas de evaluación

Sin embargo, para obtener información sobre el desempeño del modelo, debemos elegir métricas de evaluación que sean apropiadas para el problema y la tarea. Diferentes problemas requieren diferentes indicadores para medir la efectividad del modelo. A continuación se muestran algunas métricas de evaluación comunes:

  • Precisión : Esta es una métrica común utilizada para problemas de clasificación binaria o múltiple. Mide la proporción de muestras clasificadas correctamente por el modelo. Pero cuidado, cuando las clases están desequilibradas, la precisión puede inducirnos a error.

  • Precisión y recuperación : estas métricas son muy importantes para abordar problemas de desequilibrio de clases. La precisión mide con qué precisión el modelo predice clases positivas, mientras que la recuperación mide la capacidad del modelo para descubrir clases positivas. Las compensaciones entre ellos dependen del escenario de aplicación específico.

  • Error cuadrático medio (MSE) : en problemas de regresión, generalmente usamos MSE para medir el desempeño del modelo. Mide la diferencia promedio entre los valores predichos del modelo y los valores reales. Un MSE más pequeño indica que las predicciones del modelo están más cerca de la situación real.

Al elegir las métricas de evaluación adecuadas, podemos comprender mejor cómo se desempeña el modelo en diferentes situaciones y realizar ajustes y mejoras según sea necesario. Este proceso es una parte integral del desarrollo de modelos y ayuda a garantizar que nuestros modelos funcionen bien en aplicaciones del mundo real.

Resolver el sobreajuste y el desajuste

sobreajuste

El sobreajuste se produce cuando un modelo funciona bien con datos de entrenamiento pero tiene un rendimiento deficiente con datos de prueba invisibles. Esto se debe a que el modelo es demasiado complejo y sobreajusta el ruido en los datos de entrenamiento.

Falta de adaptación

Un ajuste insuficiente significa que el modelo no puede ajustarse bien a los datos de entrenamiento, lo que da como resultado un rendimiento deficiente tanto en los datos de entrenamiento como en los de prueba. A menudo esto se debe a que el modelo es demasiado simple y no puede capturar las relaciones complejas de los datos.

¿Cómo solucionar el sobreajuste y el desajuste?

  • Para resolver el sobreajuste
    : se pueden adoptar métodos como reducir la complejidad del modelo, aumentar la cantidad de datos de entrenamiento y utilizar métodos de regularización (como la regularización L1 o L2).

  • Resolver el desajuste : puede aumentar la complejidad del modelo, mejorar la ingeniería de funciones, aumentar el tiempo de capacitación, etc.

Mediante el preprocesamiento de datos y la evaluación de modelos, podemos comprender y utilizar mejor los datos para crear modelos de aprendizaje automático de alto rendimiento. Estos pasos son factores clave en el éxito de los proyectos de aprendizaje automático del mundo real, ya que ayudan a evitar problemas comunes como el sobreajuste y el desajuste, además de mejorar la confiabilidad y la capacidad de generalización del modelo.

Ejemplo práctico: predicción del precio de la vivienda

Supongamos que estamos trabajando en un proyecto de aprendizaje automático para predecir el precio de la vivienda. Tenemos un conjunto de datos que incluye las características de la casa y los precios correspondientes, y nuestro objetivo es construir un modelo que pueda predecir el precio de una casa en función de las características de entrada. En este escenario, el preprocesamiento de datos y la evaluación del modelo son muy críticos.

Preprocesamiento de datos

Primero, debemos preprocesar los datos para asegurarnos de que sean adecuados para entrenar el modelo. A continuación se detallan algunos pasos de preprocesamiento de datos que es posible que debamos realizar:

  1. Manejo de valores faltantes : verifique sus datos en busca de valores faltantes, como las dimensiones de la casa o el número de dormitorios. Podemos usar la media, la mediana u otras estadísticas para completar estos valores faltantes.

  2. Manejo de valores atípicos : busque y maneje valores atípicos, como precios extremadamente altos o bajos, para evitar que afecten el rendimiento del modelo. Los valores atípicos se pueden manejar mediante truncamiento o reemplazo.

  3. Ingeniería de funciones : seleccione las funciones adecuadas según el conocimiento del dominio o la importancia de la función. Por ejemplo, se podrían crear nuevas características, como la superficie total de una casa, para captar mejor los cambios en los precios.

  4. Normalización de datos : para algunos algoritmos de aprendizaje automático, como la regresión lineal, la estandarización (normalización) de los datos puede ayudar en el entrenamiento del modelo. Esto se puede lograr restando la media y dividiendo por la desviación estándar.

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# 加载数据集
data = pd.read_csv('house_prices.csv')

# 处理缺失值
data.fillna(data.mean(), inplace=True)

# 处理异常值(例如,删除价格小于1000的记录)
data = data[data['Price'] >= 1000]

# 特征工程:创建总面积特征
data['TotalArea'] = data['LivingArea'] + data['GarageArea']

# 数据标准化
scaler = StandardScaler()
data[['TotalArea', 'Bedrooms']] = scaler.fit_transform(data[['TotalArea', 'Bedrooms']])

# 分割数据集为训练集和测试集
X = data[['TotalArea', 'Bedrooms']]
y = data['Price']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Evaluación del modelo

Una vez que hayamos completado el preprocesamiento de datos, podemos comenzar a entrenar y evaluar el modelo. En este ejemplo, utilizamos la regresión lineal como modelo y elegimos el error cuadrático medio (RMSE) como métrica de evaluación.

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算均方根误差(RMSE)来评估模型性能
rmse = mean_squared_error(y_test, y_pred, squared=False)
print(f'Root Mean Squared Error (RMSE): {
      
      rmse}')

En este ejemplo, evaluamos 均方根误差el rendimiento del modelo utilizando . Un valor RMSE más bajo indica que la predicción del modelo está más cerca del precio real de la vivienda, que es un indicador de evaluación importante.

Cuando se trata de los problemas de sobreajuste y desajuste de los modelos de aprendizaje automático, podemos ilustrar estos dos problemas y cómo abordarlos con algunos códigos de ejemplo y soluciones.

problema de sobreajuste

El sobreajuste se produce cuando un modelo funciona bien con datos de entrenamiento pero tiene un rendimiento deficiente con datos de prueba invisibles. Esto suele suceder cuando el modelo es demasiado complejo y se intenta capturar el ruido y los matices de los datos de entrenamiento. El siguiente es un ejemplo que muestra cómo se manifiesta el problema de sobreajuste en un modelo de predicción del precio de la vivienda y cómo resolverlo:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np
import matplotlib.pyplot as plt

# 创建一个带有噪声的示例数据集
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - np.random.rand(16))

# 拟合一个高阶多项式模型
degree = 15
model = LinearRegression()
X_poly = np.vander(X.ravel(), degree)
model.fit(X_poly, y)
y_pred = model.predict(X_poly)

# 计算训练集和测试集的均方根误差(RMSE)
rmse_train = np.sqrt(mean_squared_error(y, y_pred))

# 绘制数据和拟合曲线
plt.scatter(X, y, s=20, label='Data')
plt.plot(X, y_pred, color='r', label=f'Polynomial Degree {
      
      degree}\nTrain RMSE: {
      
      rmse_train:.2f}')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

En este ejemplo, utilizamos un modelo polinomial de alto orden (orden 15) para ajustar los datos ruidosos. Como se muestra en la figura, el modelo se ajusta a los datos de entrenamiento casi a la perfección, pero puede funcionar mal con los datos de prueba, lo cual es una situación típica de sobreajuste.

Métodos para resolver el problema de sobreajuste:
  1. Reducir la complejidad del modelo : puede intentar reducir la complejidad del modelo, como reducir el orden del polinomio o reducir el número de capas de la red neuronal.

  2. Aumente la cantidad de datos de entrenamiento : más datos pueden ayudar a que el modelo se generalice mejor.

  3. Utilice métodos de regularización : las técnicas de regularización como la regularización L1 o L2 pueden limitar la complejidad del modelo.

Problema de desajuste

El desajuste se produce cuando el modelo no se ajusta bien a los datos de entrenamiento, generalmente porque el modelo es demasiado simple y no puede capturar las características de los datos 复杂关系.

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np
import matplotlib.pyplot as plt

# 创建一个带有噪声的示例数据集
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])

# 拟合一个线性模型
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)

# 计算训练集的均方根误差(RMSE)
rmse_train = np.sqrt(mean_squared_error(y, y_pred))

# 绘制数据和拟合线
plt.scatter(X, y, s=20, label='Data')
plt.plot(X, y_pred, color='r', label=f'Linear Model\nTrain RMSE: {
      
      rmse_train:.2f}')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

En este ejemplo, utilizamos un modelo lineal para ajustar datos sinusoidales ruidosos. Como se muestra en la figura, el modelo lineal no puede ajustarse bien a la relación no lineal de los datos, lo cual es una manifestación típica del problema de desajuste.

Métodos para resolver el problema del ajuste insuficiente:
  1. Aumente la complejidad del modelo : puede intentar utilizar modelos más complejos, como la regresión polinómica o las redes neuronales profundas.

  2. Mejore la ingeniería de funciones : agregue funciones más relevantes o realice transformaciones de funciones.

  3. Incrementar el tiempo de entrenamiento : Aumente el tiempo de entrenamiento del modelo, permitiéndole ajustarse mejor a los datos.

  4. Aprendizaje conjunto : utilice métodos de aprendizaje conjunto, como bosques aleatorios o árboles potenciados por gradiente, para mejorar el rendimiento del modelo.

Supongo que te gusta

Origin blog.csdn.net/qq_22841387/article/details/133432863
Recomendado
Clasificación