Cómo resolver el problema de la distribución inconsistente del conjunto de entrenamiento y el conjunto de prueba

Primero, ¿por qué la distribución del conjunto de entrenamiento y el conjunto de prueba deben ser consistentes?

La distribución del conjunto de entrenamiento y el conjunto de prueba es inconsistente, es decir, el conjunto de datos está compensado y su división y distribución uniformes tienen un impacto en los resultados de predicción del modelo final. Por supuesto, los modelos de redes y algoritmos más robustos e inteligentes que puedan aparecer en el futuro pueden necesitar esta división inconsistente para mejorar la solidez y la eficacia real de la red, pero por el momento, no afecta a nuestro modelo. gran impacto, lo que conducirá a puntajes más bajos después de que se envíe la predicción del conjunto de prueba, lo que dará como resultado resultados insatisfactorios.

Hay dos razones principales para ello (hay varias razones):

  1. Sesgo de selección de muestra : el conjunto de entrenamiento se obtiene mediante un método sesgado, como la selección no uniforme (Selección no uniforme), lo que da como resultado un espacio de muestra real que no puede ser bien representado por el conjunto de entrenamiento.
  2. Desequilibrio ambiental (es decir, diferentes tiempos y espacios tienen diferentes situaciones) : este problema ocurre cuando el entorno de recopilación de datos del conjunto de entrenamiento es inconsistente con el conjunto de prueba, generalmente debido a cambios en el tiempo o el espacio.

Por ejemplo, en tareas de clasificación (clasificación de imágenes, clasificación NLP, etc.), la división aleatoria del conjunto de datos o el propio conjunto de datos original no tiene en cuenta el problema del equilibrio de clases, por el contrario, o tanto en el entrenamiento conjunto y el conjunto de prueba, la categoría 1 es mucho más grande que la categoría 2; o cierto tipo de datos en el conjunto de entrenamiento representa la gran mayoría o una minoría, mientras que el conjunto de prueba para este tipo de datos representa la gran mayoría o mayoría , etc. Este tipo de problema de sesgo de selección de la muestra conducirá a la poca robustez del modelo entrenado en el conjunto de prueba, porque el conjunto de entrenamiento no cubre bien todo el espacio muestral . Además, además de la variable objetivo, las características de entrada también pueden tener problemas de sesgo de selección de muestra Por ejemplo, para predecir la tasa de supervivencia de los pasajeros del Titanic, las características de entrada del conjunto de entrenamiento son más masculinas bajo el "género", mientras que el "género" en el conjunto de prueba es más femenino, lo que también hará que el modelo tenga un desempeño deficiente en el conjunto de prueba. La desviación provocada por las características de entrada se debe principalmente al hecho de que la etapa de ingeniería de características no procesa bien el conjunto de datos , lo que conduce a una puntuación baja y poca robustez del modelo en el conjunto de prueba.

En cuanto al mes parcial de datos causado por el desequilibrio ambiental, esto se debe principalmente a la influencia de varios factores objetivos y subjetivos durante la recopilación de datos , lo que genera inconsistencia en los datos.

En segundo lugar, cómo juzgar

  1. Gráfica de distribución KDE (Kernel Density Estimation)
    KDE es una prueba no paramétrica para estimar funciones de densidad para las que se desconoce la distribución. Al dibujar el histograma de la función de densidad de probabilidad o el gráfico de estimación de densidad kernel para comparar y observar la distribución del conjunto de entrenamiento y el conjunto de prueba en el conjunto de datos, puede observar intuitivamente la distribución entre los dos.

#Función utilizada principalmente: sns.kdeplot()

Código de muestra:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 创建样例特征
train_mean, train_cov = [0, 2], [(1, .5), (.5, 1)]
test_mean, test_cov = [0, .5], [(1, 1), (.6, 1)]
train_feat, _ = np.random.multivariate_normal(train_mean, train_cov, size=50).T
test_feat, _ = np.random.multivariate_normal(test_mean, test_cov, size=50).T

# 绘KDE对比分布
sns.kdeplot(train_feat, shade = True, color='r', label = 'train')
sns.kdeplot(test_feat, shade = True, color='b', label = 'test')
plt.xlabel('Feature')
plt.legend()
plt.show()
  1. Prueba KS
    La prueba KS también es un método de prueba no paramétrico (es decir, la prueba se realiza sin conocer la distribución de datos). Se basa en CDF (función de distribución acumulativa) para probar si la distribución entre dos conjuntos de datos es consistente.

Ejemplo:
inserte la descripción de la imagen aquí
como se muestra en la figura anterior, la figura muestra las curvas CDF bajo dos conjuntos de datos diferentes, y la diferencia vertical máxima en la figura se puede usar para describir la diferencia de distribución .

#Función utilizada principalmente: scipy.stats.ks_2samp()[Usado para obtener el valor estadístico de KS (diferencia vertical máxima) y valor p bajo prueba de hipótesis ]

código:

from scipy import stats
stats.ks_2samp(train_feat,test_feat)

Cuando el valor del estadístico KS es pequeño y el valor de p es grande, se acepta la hipótesis nula H0, es decir, las dos distribuciones de datos son consistentes; cuando el valor de p es <0,01, se rechaza la hipótesis nula.

  1. Verificación adversarial
    Construimos un clasificador para clasificar el conjunto de entrenamiento y el conjunto de prueba.Si el modelo puede clasificar claramente, significa que hay una clara diferencia entre el conjunto de entrenamiento y el conjunto de prueba (es decir, la distribución es inconsistente)

(1) El conjunto de entrenamiento y el conjunto de prueba se fusionan y se agrega la etiqueta 'Is_Test' para marcar la muestra del conjunto de entrenamiento como 0 y la muestra del conjunto de prueba como 1.

(2) Cree un clasificador (como LGB, XGB, etc.) para entrenar el conjunto de datos mixtos (se puede usar la validación cruzada) y ajuste la etiqueta de destino 'Is_Test'.

(3) Generar la puntuación AUC óptima en la validación cruzada. Cuanto mayor sea el AUC (más cercano a 1), más inconsistente será la distribución del conjunto de entrenamiento y el conjunto de prueba.

Tercero, cómo resolver la distribución inconsistente de conjuntos de datos

  1. Construir un conjunto de validación adecuado (para construir un conjunto de validación que sea similar a la distribución del conjunto de prueba)

(1) Dividir manualmente el conjunto de verificación
para tomar series de tiempo como ejemplo, porque el conjunto de prueba general también serán datos futuros, por lo que también debemos asegurarnos de que el conjunto de entrenamiento sean datos históricos y el conjunto de verificación dividido sean datos futuros, de lo contrario Se producirá un "viaje en el tiempo" El problema de la fuga de datos hizo que el modelo se ajustara demasiado (por ejemplo, usar el futuro para predecir datos históricos). En este momento, hay dos métodos de división de verificación que se pueden usar como referencia:

a. TimeSeriesSplit: b. TimeSeriesSplit proporcionado por Sklearn
.

Método de división deslizante de ventana fija: ventana de tiempo fijo, deslizándose continuamente en el conjunto de datos, para obtener el conjunto de entrenamiento y el conjunto de verificación.
inserte la descripción de la imagen aquí
Además de los datos de series temporales, la división del conjunto de validación de otros conjuntos de datos debe seguir un principio, es decir, ajustarse al patrón de datos del conjunto de prueba tanto como sea posible.

(2) Seleccione la muestra más similar al conjunto de prueba como conjunto de validación

Verificación contradictoria, entrenamos un clasificador para clasificar el conjunto de entrenamiento y el conjunto de prueba, luego, naturalmente, también podemos predecir la probabilidad de que el conjunto de entrenamiento pertenezca al conjunto de prueba (es decir, el conjunto de entrenamiento predice la probabilidad bajo la etiqueta 'Is_Test' ), nuestro conjunto de entrenamiento La probabilidad pronosticada se ordena en orden descendente, y la división de muestra del 20% superior con la mayor probabilidad se selecciona como el conjunto de verificación , de modo que podamos obtener un conjunto de verificación con una distribución cercana al conjunto de prueba de la conjunto de datos originales. Luego, también podemos evaluar la distribución del conjunto de verificación y el conjunto de prueba divididos. **Método de evaluación: **Haga una verificación antagónica en el conjunto de verificación y el conjunto de prueba. Si el AUC es más pequeño, indica la distribución del conjunto de verificación dividido. y conjunto de prueba Cuanto más cerca esté (es decir, más indistinguible es el clasificador del conjunto de validación y el conjunto de prueba).
inserte la descripción de la imagen aquí
(3) Validación cruzada ponderada

Si damos mayores pesos de muestra a las muestras cuya distribución en el conjunto de entrenamiento está más sesgada hacia la distribución del conjunto de prueba, y damos pesos más pequeños a las muestras en el conjunto de entrenamiento que no son consistentes con la distribución del conjunto de prueba, puede también nos ayuda a reducir el jitter fuera de línea hasta cierto punto. En los parámetros de inicialización del conjunto de datos de la biblioteca lightgbm, se proporciona el peso del parámetro ponderado de muestra; consulte el documento [8] para obtener más detalles. En la Figura 7, la probabilidad Is_Test del conjunto de entrenamiento predicho por el clasificador frente a la verificación se puede utilizar como peso.

  1. Eliminar entidades con distribución incoherente

Cuando encontramos funciones con una distribución inconsistente y funciones menos importantes, podemos optar por eliminar dichas funciones directamente.

Para aquellas características cuya distribución es inconsistente pero muy importante, necesitamos coordinar la relación entre la distribución de características y la importancia de las características de acuerdo con la situación real y realizar un procesamiento determinado.

  1. Corrija la salida de predicción con distribución inconsistente

Examine la distribución de las características de destino para ver si hay lugar para la corrección. Es decir, el procesamiento de corrección se realiza en el resultado del modelo después del entrenamiento. (ajustar en consecuencia para obtener resultados mejores y más eficientes)

  1. Arreglar entradas de características con distribuciones inconsistentes

Cuando comparamos y observamos el KDE (mapa de probabilidad de densidad del núcleo) del conjunto de entrenamiento y el conjunto de prueba, si encontramos que las operaciones matemáticas en los datos (como suma, resta, multiplicación y división) o la adición y eliminación de muestras pueden corregir la distribución, de modo que la distribución sea cercana a la misma, entonces los datos pueden ser corregidos.Dicho preprocesamiento se realiza para entrenar mejor el modelo.

  1. pseudo-etiqueta

El pseudoetiquetado es un método semisupervisado que utiliza datos no etiquetados para el entrenamiento.

Métodos y pasos generales:
(1) Use el conjunto de entrenamiento etiquetado para entrenar el modelo M;

(2) Luego use el modelo M para predecir el conjunto de prueba sin etiquetar;

(3) seleccionar muestras con alta confianza de predicción en el conjunto de prueba para unirse al conjunto de entrenamiento;

(4) Usar muestras etiquetadas y muestras predichas de alta confianza para entrenar el modelo M';

(5) Predecir el conjunto de prueba y generar los resultados de la predicción.

El entrenamiento del modelo introduce algunas muestras del conjunto de prueba, lo que equivale a introducir una parte de la distribución del conjunto de prueba. Pero debe tenerse en cuenta: (1) En comparación con el método anterior, la pseudoetiqueta generalmente no funciona muy bien, porque introduce las muestras del conjunto de prueba con alta confianza , y es probable que estas muestras estén cerca de la distribución del conjunto de entrenamiento. , por lo que será La probabilidad pronosticada es alta. Por lo tanto, la distribución del conjunto de prueba introducido no es muy diferente, por lo que a menudo se produce un sobreajuste cuando se utiliza . (2) Tenga en cuenta que se introducen las muestras con alta confianza.Si se introducen muestras con baja confianza, traerá mucho ruido. Además, no se recomienda seleccionar demasiadas muestras de alta confianza para agregarlas al conjunto de entrenamiento, lo que también es para evitar el sobreajuste del modelo. (3) Las pseudoetiquetas se aplican un poco más al dominio de la imagen.

inserte la descripción de la imagen aquí

originales:
enlace

Este artículo es solo para aprender registros y compartir, intrusión y eliminación

Supongo que te gusta

Origin blog.csdn.net/qq_53250079/article/details/128385744
Recomendado
Clasificación