Una introducción suave a la estimación de densidad de probabilidad

Tweet Compartir Compartir

Última actualización el 24 de julio de 2020

La densidad de probabilidad es la relación entre las observaciones y sus probabilidad.

Algunos resultados de una variable aleatoria tendrán una densidad de probabilidad baja y otros resultados tendrán una densidad de probabilidad alta.

La forma general de la densidad de probabilidad se denomina probabilidad distribución, y el cálculo de probabilidades para resultados específicos de una variable aleatoria se realiza mediante una función de densidad de probabilidad, o PDF para abreviar.

Es útil conocer la función de densidad de probabilidad para una muestra de datos en orden para saber si una observación determinada es improbable, o tan improbable que se considere un valor atípico o una anomalía, y si debe eliminarse. También es útil para elegir métodos de aprendizaje apropiados que requieren que los datos de entrada tengan una distribución de probabilidad específica.

Es poco probable que se conozca la función de densidad de probabilidad para una muestra aleatoria de datos. Como tal, la densidad de probabilidad debe aproximarse mediante un proceso conocido como estimación de densidad de probabilidad.

En este tutorial, descubrirá una introducción suave a la estimación de densidad de probabilidad.

Después de completar este tutorial, sabrá:

  • Los gráficos de histograma proporcionan una forma rápida y confiable de visualizar la densidad de probabilidad de una muestra de datos.
  • La estimación de densidad de probabilidad paramétrica implica seleccionar una distribución común y estimar los parámetros para la función de densidad a partir de una muestra de datos.
  • La estimación de densidad de probabilidad no paramétrica implica el uso de una técnica para ajustar un modelo a la distribución arbitraria de los datos, como la estimación de la densidad del núcleo.

Ponga en marcha su proyecto con mi nuevo libro Probability for Machine Learning, que incluye tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

Empecemos.

Una suave introducción n a la estimación de densidad de probabilidad
Foto de Alistair Paterson, algunos derechos reservados.

Descripción general del tutorial

Este tutorial se divide en cuatro partes; son:

  1. Densidad de probabilidad
  2. Resumir la densidad con un histograma
  3. Estimación de densidad paramétrica
  4. Estimación de densidad no paramétrica

Densidad de probabilidad

Una variable aleatoria x tiene una distribución de probabilidad p (x).

La relación entre los resultados de una variable aleatoria y su probabilidad es denominada densidad de probabilidad, o simplemente «densidad».

Si una variable aleatoria es continua, entonces la probabilidad se puede calcular mediante la función de densidad de probabilidad, o PDF para abreviar. La forma de la densidad de probabilidad La función en todo el dominio para una variable aleatoria se conoce como distribución de probabilidad y las distribuciones de probabilidad comunes tienen nombres, como uniforme, normal, exponencial, etc.

Dada una variable aleatoria, estamos interesados en la densidad de sus probabilidades.

Por ejemplo, dada una muestra aleatoria de una variable, podríamos querer saber cosas como la forma de la distribución de probabilidad bution, el valor más probable, la dispersión de valores y otras propiedades.

Conocer la distribución de probabilidad de una variable aleatoria puede ayudar a calcular los momentos de la distribución, como la media y la varianza, pero también puede ser útil para otras consideraciones más generales, como determinar si una observación es improbable o muy improbable y podría ser un valor atípico o una anomalía.

El problema es que es posible que no conozcamos la distribución de probabilidad de una variable aleatoria. Rara vez conocemos la distribución porque no tenemos acceso a todos los resultados posibles para una variable aleatoria. De hecho, todo lo que tenemos acceso es una muestra de observaciones. Como tal, debemos seleccionar una distribución de probabilidad.

Este problema se conoce como estimación de densidad de probabilidad, o simplemente «estimación de densidad», ya que estamos usando las observaciones en una muestra aleatoria para estimar la densidad general de probabilidades más allá de la muestra de datos que tenemos disponible.

Hay algunos pasos en el proceso de estimación de densidad para una variable aleatoria.

El primer paso es revisar la densidad de observaciones en la muestra aleatoria con un histograma simple. A partir del histograma, podríamos identificar una distribución de probabilidad común y bien entendida que se pueda utilizar, como una distribución normal. De lo contrario, es posible que tengamos que ajustar un modelo a estimar la distribución.

En las siguientes secciones, veremos más de cerca cada uno de estos pasos.

Nos centraremos en datos univariados, por ejemplo, una variable aleatoria, en esta publicación para simplificar. Aunque los pasos son aplicables para datos multivariados, pueden volverse más desafiantes ng a medida que aumenta el número de variables.

¿Quieres aprender probabilidad para el aprendizaje automático?

Realiza ahora mi curso intensivo gratuito de 7 días por correo electrónico (con código de muestra).

Haga clic para registrarse y también obtener una versión gratuita del libro electrónico en PDF del curso.

Descargue su minicurso GRATIS

Resumir la densidad con un histograma

El primer paso en la estimación de densidad es crear un histograma de las observaciones en la muestra aleatoria.

Un histograma es un gráfico que implica agrupar primero las observaciones en contenedores y contar el número de eventos que caen en cada contenedor. Los recuentos, o frecuencias de observaciones, en cada intervalo se trazan luego como un gráfico de barras con los intervalos en el eje xy la frecuencia en el eje y.

La elección del número de intervalos es importante ya que controla la aspereza de la distribución (número de barras) y, a su vez, qué tan bien se traza la densidad de las observaciones. Es una buena idea experimentar con diferentes tamaños de contenedor para una muestra de datos determinada para obtener múltiples perspectivas o vistas sobre los mismos datos.

Se puede crear un histograma usando la biblioteca Matplotlib y la función hist (). Los datos se proporcionan como el primer argumento y el número de bins se especifica mediante el argumento «bins», ya sea como un número entero (por ejemplo, 10) o como una secuencia de los límites de cada bin (por ejemplo).

El siguiente fragmento crea un histograma con 10 contenedores para una muestra de datos.

1
2
3
4

# trazar un histograma de la muestra
pyplot.hist (muestra, bins = 10)
pyplot.show ()

Podemos crear una muestra aleatoria extraída de una distribución normal yp Supongamos que no conocemos la distribución y luego cree un histograma de los datos. La función normal () NumPy logrará esto y generaremos 1,000 muestras con una media de 0 y una desviación estándar de 1, p. Ej. un gaussiano estándar.

El ejemplo completo se muestra a continuación.

1
2
3
4
5
6
7
8

# ejemplo de trazado de un histograma de una muestra aleatoria
de matplotlib import pyplot
de numpy.random import normal
# generar una muestra
sample = normal (size = 1000)
# trazar un histograma de la muestra
pyplot.hist (sample, bins = 10)
pyplot.show ()

Ejecutando el example extrae una muestra de observaciones aleatorias y crea el histograma con 10 contenedores. Podemos ver claramente la forma de la distribución normal.

Tenga en cuenta que sus resultados serán diferentes dada la naturaleza aleatoria de la muestra de datos. Intente ejecutar el ejemplo varias veces.

Gráfico de histograma con 10 contenedores de una muestra de datos aleatorios

Ejecutar el ejemplo con bins establecidos en 3 hace que la distribución normal sea menos obvia.

Gráfico de histograma con 3 contenedores de una muestra de datos aleatorios

Revisar un histograma de una muestra de datos con un rango de diferentes números de contenedores ayudará a identificar si la densidad se ve como una distribución de probabilidad común o no.

En la mayoría de los casos, verá una distribución unimodal, como la familiar forma de campana de la normal, la forma plana del uniforme o la forma descendente o ascendente de una distribución exponencial o de Pareto.

También puede ver distribuciones complejas, como múltiples picos que no desaparecen con diferentes números de bins, lo que se conoce como una distribución bimodal, o múltiples picos, que se conoce como un distribución multimodal. También puede ver un gran aumento en la densidad para un valor dado o un pequeño rango de valores que indican valores atípicos, que a menudo ocurren en la cola de una distribución lejos del resto de la densidad.

Estimación de densidad paramétrica

La forma de un histograma de la mayoría de las muestras aleatorias coincidirá con una distribución de probabilidad conocida.

Las distribuciones comunes son comunes porque ocurren una y otra vez en dominios diferentes y a veces inesperados.

Familiarícese con las distribuciones de probabilidad comunes, ya que le ayudarán a identificar una distribución dada de un histograma.

Una vez identificado, puede intentar estimar la densidad de la variable aleatoria con una distribución de probabilidad elegida. Esto se puede lograr estimando los parámetros de la distribución a partir de una muestra aleatoria de datos.

Por ejemplo, la distribución normal tiene dos parámetros: la media y la desviación estándar. Dados estos dos parámetros, ahora conocemos la función de distribución de probabilidad. Estos parámetros se pueden estimar a partir de los datos calculando la media de la muestra y la desviación estándar de la muestra.

Nos referimos a este proceso como estimación de densidad paramétrica.

La razón es que estamos usando funciones predefinidas para resumir la relación entre las observaciones y su probabilidad que se puede controlar o configurar con parámetros, por lo tanto «paramétrico».

Una vez que hemos estimado la densidad, podemos comprobar si es un buen ajuste. Esto se puede hacer de muchas formas, como:

  • Trazar la función de densidad y comparar la forma con el histograma.
  • Muestrear la función de densidad y comparar la muestra generada con la muestra real.
  • Usando una prueba estadística para confirmar que los datos se ajustan a la distribución.

Podemos demostrar esto con un ejemplo.

puede generar una muestra aleatoria de 1000 observaciones a partir de una distribución normal con una media de 50 y una desviación estándar de 5.

1
2
3

# generar una muestra
muestra = normal (loc = 50, escala = 5, tamaño = 1000)

Entonces podemos fingir que no conocemos la distribución de probabilidad y tal vez mirar un histograma y adivinar que es normal. Suponiendo que sea normal, podemos calcular los parámetros de la distribución, específicamente la media y la desviación estándar.

No esperaríamos que la media y la desviación estándar fueran 50 y 5 exactamente dado el pequeño tamaño de la muestra. y ruido en el proceso de muestreo.

Luego, ajuste la distribución con estos parámetros, la llamada estimación de densidad paramétrica de nuestra muestra de datos.

En este caso, podemos usar la norma ( ) Función SciPy.

1
2
3

# definir la distribución
dist = norm (sample_mean, sam ple_std)

Luego, podemos muestrear las probabilidades de esta distribución para un rango de valores en nuestro dominio, en este caso entre 30 y 70.

Finalmente, podemos trazar un histograma de la muestra de datos y superponer un gráfico de líneas de las probabilidades calculadas para el rango de valores de el PDF.

Es importante destacar que podemos convertir los recuentos o frecuencias en cada intervalo del histograma a una probabilidad normalizada para garantizar que el eje y del histograma coincida con el eje y del gráfico lineal. Esto se puede lograr configurando el argumento «densidad» en «Verdadero» en la llamada a hist ().

1
2
3
4

# trace el histograma y el pdf
pyplot.hist (muestra, bins = 10, densidad = Verdadero)
pyplot.plot (valores, probabilidades)

Al vincular estos fragmentos, a continuación se muestra el ejemplo completo de estimación de densidad paramétrica.

Ejecutar el ejemplo primero genera la muestra de datos , luego estima los parámetros de la probabilidad normal distribución.

Tenga en cuenta que sus resultados diferirán dada la naturaleza aleatoria de la muestra de datos. Intente ejecutar el ejemplo varias veces.

En este caso, podemos ver que la media y la desviación estándar tienen algo de ruido y son ligeramente diferentes de los valores esperados de 50 y 5 respectivamente. El ruido es menor y se espera que la distribución siga siendo un buen ajuste.

1

Media = 49.852 , Desviación estándar = 5.023

A continuación, el PDF se ajusta el uso de los parámetros estimados y el histograma de los datos con 10 intervalos se compara con las probabilidades de un rango de valores muestreados del PDF.

Podemos ver que el PDF es una buena coincidencia para nuestros datos.

Histograma de muestra de datos con superposición de función de densidad de probabilidad para la distribución normal

Es posible que los datos coincidan con una distribución de probabilidad común, pero requiere una transformación antes de la estimación de densidad paramétrica.

Por ejemplo, puede tener valores atípicos que están lejos de la media o centro de masa de la distribución. Esto puede tener el efecto de dar estimaciones incorrectas de los parámetros de distribución y, a su vez, causar un ajuste deficiente de los datos. Estos valores atípicos deben eliminarse antes de estimar los parámetros de distribución.

Otro ejemplo es que los datos pueden tener un sesgo o estar desplazados hacia la izquierda o hacia la derecha. En este caso, es posible que deba transformar los datos antes de estimar los parámetros, como tomar el registro o la raíz cuadrada, o más en general, usar una transformación de potencia como la transformación de Box-Cox.

Estos tipos de modificaciones a los datos puede no ser obvio y la estimación de densidad paramétrica efectiva puede requerir un proceso iterativo de:

  • Bucle hasta que el ajuste de la distribución a los datos sea suficientemente bueno:
    • 1. Estimación de los parámetros de distribución
    • 2. Revisar el PDF resultante con los datos
    • 3. Transformar los datos para que se ajusten mejor a la distribución

Estimación de densidad no paramétrica

En algunos casos, una muestra de datos puede no parecerse a una probabilidad común distribución o no se puede ajustar fácilmente a la distribución.

Este suele ser el caso cuando los datos tienen dos picos (distribución bimodal) o muchos picos (distribución multimodal).

En este En este caso, la estimación de densidad paramétrica no es factible y se pueden utilizar métodos alternativos que no utilicen una distribución común. En su lugar, se utiliza un algoritmo para aproximar la distribución de probabilidad de los datos sin una distribución predefinida, lo que se conoce como método no paramétrico.

Las distribuciones seguirán teniendo parámetros pero no se pueden controlar directamente de la misma manera. como distribuciones de probabilidad simples. Por ejemplo, un método no paramétrico podría estimar la densidad usando todas las observaciones en una muestra aleatoria, de hecho haciendo que todas las observaciones en la muestra sean «parámetros».

Quizás el enfoque no paramétrico más común para estimar la función de densidad de probabilidad de una variable aleatoria continua se llama suavizado de kernel, o estimación de densidad de kernel, KDE para abreviar.

  • Estimación de densidad de kernel: método no paramétrico para usar un conjunto de datos para estimar probabilidades de nuevos puntos.

En este caso, un kernel es una función matemática que devuelve una probabilidad para un valor dado de una variable aleatoria. El kernel suaviza o interpola de manera efectiva las probabilidades en el rango de resultados para una variable aleatoria de manera que la suma de probabilidades es igual a uno, un requisito de probabilidades con buen comportamiento.

La función del núcleo pondera la contribución de las observaciones de una muestra de datos en función de su relación o distancia a una muestra de consulta determinada para la cual t Se solicita la probabilidad.

Un parámetro, llamado parámetro de suavizado o ancho de banda, controla el alcance, o ventana de observaciones, de la muestra de datos que contribuye a estimar la probabilidad para una muestra dada. Como tal, la estimación de la densidad del kernel a veces se denomina ventana Parzen-Rosenblatt, o simplemente ventana Parzen, en honor a los desarrolladores del método.

  • Parámetro de suavizado (ancho de banda): parámetro que controla el número de muestras o ventana de muestras utilizada para estimar la probabilidad de un nuevo punto.

Una ventana grande puede resultar en una densidad gruesa con pocos detalles, mientras que una ventana pequeña puede tener demasiados detalles y no ser lo suficientemente suave o general para cubrir correctamente ejemplos nuevos o invisibles.La contribución de muestras dentro de la ventana se puede configurar utilizando diferentes funciones, a veces denominadas funciones de base, p. Ej. normal uniforme, etc., con diferentes efectos sobre la suavidad de la función de densidad resultante.

  • Función de base (kernel): La función elegida utilizada para controlar la contribución de las muestras en el conjunto de datos para estimar la probabilidad de un nuevo punto.

Como tal, puede ser útil experimentar con diferentes tamaños de ventana y diferentes funciones de contribución y evaluar los resultados contra histogramas de los datos.

Podemos demostrar esto con un ejemplo.

Primero, podemos construir una distribución bimodal combinando muestras de dos distribuciones normales diferentes. Específicamente, 300 ejemplos con una media de 20 y una desviación estándar de 5 (el pico más pequeño) y 700 ejemplos con una media de 40 y una desviación estándar de 5 (el pico más grande). Las medias se eligieron juntas para garantizar que las distribuciones se superpongan en la muestra combinada.

El ejemplo completo de cómo crear esta muestra con una distribución de probabilidad bimodal y trazar el histograma se enumera a continuación.

Al ejecutar el ejemplo, se crea la muestra de datos y se traza el histograma.

Tenga en cuenta que los resultados serán diferentes dada la naturaleza aleatoria de la muestra de datos. Intente ejecutar el ejemplo varias veces.

Tenemos menos muestras con una media de 20 que muestras con una media de 40, lo que podemos ver reflejado en el histograma con una mayor densidad de muestras alrededor de 40 que alrededor 20.

Los datos con esta distribución no encajan bien en una distribución de probabilidad común, por diseño. Es un buen caso para usar un método de estimación de densidad de kernel no paramétrico.

Gráfico de histograma de muestra de datos Con una distribución de probabilidad bimodal

La biblioteca de aprendizaje automático scikit-learn proporciona la clase KernelDensity que implementa la estimación de la densidad del kernel.

Primero, la clase se construye con el ancho de banda deseado (tamaño de la ventana) y argumentos del kernel (función básica). Es una buena idea probar diferentes configuraciones en sus datos. En este caso, probaremos un ancho de banda de 2 y un kernel gaussiano.

La clase luego se ajusta a una muestra de datos mediante la función fit (). La función espera que los datos tengan una forma 2D con el formulario, por lo tanto, podemos remodelar nuestra muestra de datos para que tenga 1,000 filas y 1 columna.

1
2
3
4
5

# ajustar densidad
modelo = KernelDensity (ancho de banda = 2, kernel = «gaussian»)
sample = sample.reshape ((len (sample), 1))
model.fit (muestra)

Luego podemos evaluar qué tan bien la estimación de densidad coincide con nuestros datos calculando las probabilidades para un rango de obs ervaciones y comparar la forma con el histograma, tal como hicimos para el caso paramétrico en la sección anterior.

La función score_samples () en KernelDensity calculará la probabilidad logarítmica para una matriz de muestras. Podemos crear un rango de muestras de 1 a 60, sobre el rango de nuestro dominio, calcular las probabilidades logarítmicas y luego invertir la operación logarítmica calculando el exponente o exp () para devolver los valores al rango 0-1 para probabilidades normales. .

Por último, podemos crear un histograma con frecuencias normalizadas y un gráfico de líneas superpuestas de valores a probabilidades estimadas.

1
2
3
4
5

# trazar el histograma y pdf
pyplot.hist (muestra, bins = 50, densidad = Verdadero)
pyplot.plot (valores, probabilidades)
pyplot.show ()

Al unir esto, el ejemplo completo de estimación de densidad de kernel para una muestra de datos bimodales se enumera a continuación.

Ejecutar el ejemplo crea la distribución de datos, se ajusta al modelo de estimación de densidad de kernel y luego traza el histograma de la muestra de datos y el PDF del modelo KDE.

Tenga en cuenta que sus resultados diferirán dada la naturaleza aleatoria de la muestra de datos. Intente ejecutar el ejemplo varias veces.

En este caso, podemos ver que el PDF se ajusta bien al histograma. No es muy fluido y podría mejorarse estableciendo el argumento «bandwidth» en 3 muestras o más. Experimente con diferentes valores del ancho de banda y la función del kernel.

Gráfica de función de densidad de histograma y probabilidad estimada mediante estimación de densidad de kernel para una muestra de datos bimodales

La clase KernelDensity es poderosa y admite la estimación del PDF para datos multidimensionales.

Lectura adicional

Esta sección proporciona más recursos sobre el tema si está buscando profundizar.

Libros

  • Reconocimiento de patrones y aprendizaje automático, 2006.
  • Aprendizaje automático: una perspectiva probabilística, 2012.
  • Los elementos del aprendizaje estadístico: minería de datos, inferencia y Prediction, 2009.

API

  • scipy.stats.gaussian_kde API.
  • Métodos no paramétricos, API de Statsmodels, no paramétricos.
  • Modelos de estadísticas de estimación de densidad de kernel Exa mple.
  • Estimación de densidad, API Scikit-Learn.

Artículos

  • Estimación de densidad, Wikipedia.
  • Histograma, Wikipedia.
  • Estimación de densidad de kernel, Wikipedia.
  • Estimación de densidad de kernel multivariante, Wikipedia.
  • Estimación de densidad de kernel mediante el método de ventana de Parzen-Rosenblatt, 2014.
  • En profundidad: Estimación de densidad de kernel.

Resumen

En este tutorial, descubrió una introducción suave a la estimación de densidad de probabilidad.

Específicamente, aprendió:

  • Los gráficos de histograma brindan una manera rápida y confiable de visualizar la densidad de probabilidad de una muestra de datos.
  • Densidad de probabilidad paramétrica La estimación implica seleccionar una distribución común y estimar los parámetros para la función de densidad a partir de una muestra de datos.
  • La estimación de densidad de probabilidad no paramétrica implica el uso de una técnica para ajustar un modelo a la distribución arbitraria de los datos, como estimaciones de densidad de kernel en.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.

¡Controle la probabilidad para el aprendizaje automático!

Desarrolle su comprensión de la probabilidad

… con solo unas pocas líneas de código Python

Descubra cómo en mi nuevo libro electrónico:
Probability for Machine Learning

Proporciona autoestudio tutoriales y proyectos de extremo a extremo sobre:
Teorema de Bayes, Optimización Bayesiana, Distribuciones, Máxima probabilidad, Entropía cruzada, Calibración de modelos
y mucho más …

Finalmente, aproveche la incertidumbre en Tus proyectos

Sáltate los académicos. Solo resultados. Vea lo que hay dentro

Tweet Share Share

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *