Estás leyendo la publicación: Powershap: un método de selección de funciones de Shapley
Elegir características es un paso importante en la construcción de modelos de aprendizaje automático potentes. La dificultad de elegir variables de entrada que sean útiles para predecir un valor objetivo para cada ocurrencia en un conjunto de datos se conoce como selección de características. Este artículo se centra en el método contenedor de selección de características que utiliza los valores de Shapley. Este método se implementaría utilizando la biblioteca python de Powershap. Los siguientes son los temas a tratar.
Tabla de contenido
- Descripción del valor de Shapley
- ¿Cómo se usaría el valor de Shapley para la selección de características?
- El componente de explicación
- El componente central
- Implementando la selección de características con Powershap
El promedio ponderado de las contribuciones marginales es el valor de Shapley. La técnica trata de explicar por qué un modelo ML devuelve los resultados que da en la entrada dada. Profundicemos en los valores de Shapley.
Descripción del valor de Shapley
El valor de Shapley es una noción de solución de la teoría de juegos que implica compartir equitativamente tanto las ganancias como los costos entre numerosos agentes que operan en la coalición. Cuando dos o más jugadores o componentes están involucrados en una estrategia para obtener un resultado o pago deseado, esto se conoce como teoría del juego.
El valor de Shapley es más aplicable cuando las contribuciones de cada actor son desiguales, pero cada persona trabaja en conjunto para lograr la ganancia o el pago. El valor de Shapley asegura que cada actor reciba lo mismo o más de lo que recibiría si estuviera operando por separado. El valor obtenido es crucial ya que no hay motivación para que los actores interactúen de otra manera.
Por ejemplo, para un modelo que determine si se debe otorgar una tarjeta de crédito a una solicitud, nos gustaría saber por qué a un jubilado (digamos, la persona A) se le ha rechazado una solicitud de tarjeta de crédito, o por qué el modelo estima que la probabilidad de incumplimiento es 80 %
Aquí existe la necesidad de una razón detrás del rechazo de la persona A mientras que otras no lo son, o por qué se cree que esa persona tiene un 80 % de probabilidad de incumplimiento cuando el solicitante típico obtiene solo un 20 % de probabilidad del modelo.
Al comparar todos los candidatos aprobados, se descubre que las razones comunes para el rechazo, como la necesidad del individuo A de mejorar significativamente su salario. Sin embargo, al comparar al individuo A con todos los demás candidatos jubilados aceptados, los individuos pueden descubrir que la alta tasa de incumplimiento esperada se debe a una deuda superior al promedio. Los valores de Shapley se contextualizan usando grupos de comparación de esta manera.
Como resultado, la técnica del valor de Shapley toma el resultado del modelo sobre el individuo, así como sobre algún grupo de comparación de solicitantes, y atribuye qué parte de la diferencia entre la persona y el grupo de comparación se explica por cada característica. Por ejemplo, hay una brecha del 70 % que explicar entre una tasa de incumplimiento prevista del 80 % y una tasa de incumplimiento esperada del 10 % para los solicitantes jubilados aceptados. Shapley puede asignar el 50 % de la deuda de préstamo de una persona, el 15 % a patrimonio neto bajo y el 5 % a ingresos bajos durante la jubilación, según la contribución marginal promedio de cada característica a la diferencia de puntuación total.
¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.
¿Cómo se usaría el valor de Shapley para la selección de características?
La técnica se basa en la suposición de que una característica aleatoria conocida debería tener una influencia menor en las predicciones que una característica informativa. El algoritmo se compone de dos partes que trabajan juntas para lograr la selección de características.
El componente Explicar
Se introduce una única función uniforme aleatoria conocida (RandomUniform) en el conjunto de funciones para entrenar un modelo de aprendizaje automático en el componente Explicar. El uso de los valores de Shapley en un subconjunto de datos fuera de la muestra le permite cuantificar la influencia de cada característica en el resultado. Para determinar la influencia imparcial real, los valores de Shapley se prueban en datos no vistos. Finalmente, el valor absoluto de todos los valores de Shapley se calcula y promedia para obtener la influencia promedio general de cada característica. Aquí se emplea un único valor medio, lo que facilita las comparaciones estadísticas.
Además, cuando se utilizan valores absolutos de Shapley, tanto los valores positivos como los negativos se incluyen en el efecto general, lo que puede resultar en una distribución diferente a la del significado de Gini. Luego, este procedimiento se repite varias veces, con cada iteración volviendo a entrenar el modelo con una característica aleatoria diferente y usando un subconjunto diferente de los datos para cuantificar los valores de Shapley, lo que da como resultado una distribución empírica de impactos promedio que se usará para la comparación estadística.
El componente central
Dado el impacto promedio de cada función para cada iteración, se puede comparar la influencia de la función aleatoria en el componente central de powershap. La fórmula percentil se utiliza para cuantificar esta comparación, que consiste en una matriz de valores de Shapley promedio para una característica única con la misma longitud que el número de repeticiones, un valor único y la función de indicador. Esta fórmula calcula la proporción de iteraciones en las que un solo valor fue mayor que el valor de forma promedio de la iteración y, por lo tanto, puede considerarse como el valor p. La fórmula produce valores p que son más bajos de lo que debería verse. Los valores de p más pequeños son más frecuentes a medida que se reduce el número de iteraciones.
Dado que la hipótesis indica que el impacto de la característica aleatoria debería ser menor en promedio que el impacto de cualquier característica informativa, todos los impactos de la característica aleatoria se promedian nuevamente, lo que arroja un valor único que se puede utilizar en la función de percentil. Esto produce un valor p para cada característica única. Este valor p muestra la proporción de situaciones en las que la característica es menos esencial que una característica aleatoria en promedio. Se puede realizar una implementación heurística de una prueba estadística menor de Student-t de una cola de una muestra utilizando la hipótesis y estas estimaciones de valor p.
- Hipótesis nula (H0): La característica aleatoria no es más importante que la característica probada.
- Hipótesis alternativa (H1): La característica aleatoria es más importante que la característica probada.
Como resultado, en esta prueba estadística, la clase positiva indica una hipótesis nula correcta. A diferencia de una prueba estadística t de Student normal, que asume una distribución gaussiana típica, este enfoque heurístico no supone que una distribución en la característica probada afecte las puntuaciones. Entonces se puede encontrar la colección de características informativas y se le da a la salida un valor p de umbral.
Implementando la selección de características con Powershap
Este artículo utiliza un conjunto de datos relacionado con la clasificación del agua potable segura en función de diferentes características como valor de ph, dureza, TDS, etc. Para obtener un conocimiento detallado de las características, lea aquí.
Powershap es un enfoque de selección de características basado en envoltorios que emplea pruebas de hipótesis estadísticas y cálculos de potencia en los valores de Shapley para permitir una selección de características rápida y sencilla.
Comencemos instalando el paquete Powershap.
! pip instalar powershap
Importar bibliotecas necesarias
importar pandas como pd desde powershap importar PowerShap desde sklearn.model_selection importar train_test_split desde sklearn.linear_model importar LogisticRegressionCV desde sklearn.ensemble importar GradientBoostingClassifier
Lectura de datos y preprocesamiento
data=pd.read_csv(‘water_potability.csv’) datos[:5]
data_utils=datos.dropna(eje=0) X=data_utils.drop([‘Potability’],eje=1) y=data_utils[‘Potability’]
Dividir los datos en prueba y entrenamiento estándar de relación 30:70, respectivamente.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, shuffle=True, random_state=42)
Cree la función Powershap definiendo los modelos que se utilizarán para la clasificación. Actualmente, solo sklearn es compatible con el paquete Powershap. Para este artículo, estamos construyendo dos selectores, uno con el algoritmo Clasificador de aumento de gradiente y el otro con el algoritmo CV de regresión logística.
selector = PowerShap( modelo = GradientBoostingClassifier(), automatic=True, limit_automatic=100) selector.fit(X_train, y_train)
selector.transform(X_test)
Esto dará las características con valores de alto impacto y con una verdadera hipótesis nula de que la característica dada es más importante que la característica aleatoria.
De acuerdo con el algoritmo, hay tres características importantes de cada 10 al usar el modelo base Gradient Boosting Classifier. También podemos ver el puntaje de impacto y otros valores estadísticos usando este código.
selector._formas_procesadas_df
De manera similar, verificando el otro selector.
selector_2 = PowerShap( modelo = LogisticRegressionCV(max_iter=200), automatic=True, limit_automatic=100, ) selector_2.fit(X_train, y_train)
selector_2.transformar(X_prueba)
Según el algoritmo, hay cinco características importantes de cada 10 al usar el CV de regresión logística para 200 iteraciones.
selector_2._formas_procesadas_df
Conclusión
Los valores de Shapley y las pruebas estadísticas para un enfoque de selección de características envolventes se utilizaron para determinar la relevancia de las características, y los hallazgos fueron significativos. Para lograr una selección de funciones rápida, sólida y confiable, powershap realiza cálculos de potencia para optimizar la cantidad de iteraciones necesarias en un modo automatizado. Con este artículo, hemos entendido el uso de los valores de Shapley para la selección e implementación de características con Powershap.