Detección de fraude de seguros con Graph Analytics: hacia la IA

Estás leyendo la publicación: Detección de fraude de seguros con Graph Analytics: hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

Explore la base de datos de gráficos y extraiga características de gráficos para aumentar el modelo de aprendizaje automático

El fraude de seguros es un problema enorme y la industria de seguros ha estado luchando contra el fraude durante mucho tiempo. Veamos el siguiente titular de novedades y estadísticas:

Costos de fraude de seguros A NOSOTROS consumidores por lo menos $80 mil millones cada año, según la Coalición contra el Fraude de Seguros (CAIF). CAIF también estima que el fraude al seguro de accidentes de trabajo por sí solo le cuesta a las aseguradoras y a los empleadores $ 30 mil millones un año. El FBI informa que la porción del problema general no relacionada con los seguros de salud asciende a $40 mil millones anuales. En última instancia, el alcance masivo del problema puede significar que la familia estadounidense promedio pagará $ 400 y $ 700 adicionales por año en primas.

El fraude de seguros de salud es un tipo de actividad de cuello blanco en la que se presentan reclamos deshonestos para obtener ganancias. La actividad fraudulenta puede involucrar a pares de proveedores, médicos y beneficiarios que actúan juntos para presentar reclamos de fraude. Por lo tanto, es difícil detectar actividades fraudulentas dada la complejidad de las partes involucradas. El comportamiento anómalo podría ser una red de fraude donde los proveedores, médicos y clientes presentan reclamos menores a lo largo del tiempo. Estos reclamos menores pueden ser difíciles de detectar con las herramientas tradicionales, que analizan los reclamos individualmente y no pueden descubrir las conexiones entre los distintos actores.

Una base de datos de gráficos está diseñada para llenar el vacío al almacenar y manejar los datos altamente conectados donde la relación es tan importante como el punto de datos individual. Por lo tanto, podemos utilizar análisis de gráficos para comprender las relaciones. En este artículo, aprenderá:

  • Gráfico básico
  • Búsqueda y consulta de gráficos para comprender las relaciones.
  • Aumente el modelo de aprendizaje automático con funciones gráficas

Gráfico básico

¿Qué es el gráfico?

En matemáticas, y más específicamente en teoría de grafos, un gráfico es una estructura que equivale a un conjunto de objetos en los que algunos pares de objetos están en algún sentido “relacionados”. Los objetos corresponden a abstracciones matemáticas denominadas (también denominadas o ) y cada uno de los pares de vértices relacionados se denominan (también denominadas o ).

🔥 Recomendado:  El OnePlus 10T acaba de filtrarse con algunos cambios decepcionantes

En pocas palabras, un gráfico es una representación matemática de cualquier tipo de red con:

  • Vértice, a veces llamado nodo, en el contexto de seguros, puede ser:
    – Afirmar
    – Titular de la póliza
  • Edge es la relación/interacción/comportamiento entre los nodos:
    – Tomador del siniestro
    – Asegurado de siniestro

Los conceptos de algoritmos gráficos se presentarán en el tercer capítulo: aumentar el modelo de aprendizaje automático con características gráficas.

Búsqueda y consulta de gráficos

La base de datos de gráficos está diseñada específicamente para almacenar y navegar por las relaciones utilizando la conectividad entre los vértices. Los usuarios finales no necesitan ejecutar innumerables uniones, ya que el lenguaje de consulta de gráficos se trata de la coincidencia de patrones entre nodos. Esto es más natural para trabajar y puede ser utilizado fácilmente por usuarios comerciales cuyos comentarios pueden ingresar al sistema de detección de fraude.

La visualización de gráficos a través del lenguaje de consulta de gráficos ayuda a analizar una gran cantidad de datos e identificar patrones que indican actividades fraudulentas. En esta sección, compartiré algunos escenarios y las visualizaciones se basan en:

Alerta de señal de fraude

Encuentre todos los reclamos presentados por el titular de la póliza del reclamo fraudulento “C4377” y muestre las enfermedades del paciente del reclamo “C4377”.

Para profundizar en este titular de póliza (PH3759), vemos que esta persona vio a diferentes médicos en diferentes proveedores, lo cual no es normal.

Conexiones del titular de la póliza relacionadas con el reclamo fraudulento

El gráfico muestra las conexiones del perfil de alto riesgo que tiene el reclamo de fraude “C4377”. Vemos un titular de póliza de alto riesgo en la conexión de primer grado y otro titular de póliza de alto riesgo en la conexión de tercer grado.

Aumente el modelo de aprendizaje automático con funciones gráficas

La ingeniería de características es el arte de formular características útiles a partir de datos existentes. La definición es:

Muchas aplicaciones de aprendizaje automático generalmente se basan en modelos de datos tabulares y omiten la relación y los datos contextuales, que son los predictores más fuertes del comportamiento. Esto es crucial ya que cada reclamo/proveedor individual puede parecer legítimo al evitar las señales de alerta.

En esta sección, analizaré un ejemplo concreto de cómo transformar los datos tabulares en un gráfico y extraer características del gráfico para aumentar el modelo de aprendizaje automático. El enfoque general es:

  • Ingerir datos tabulares en la estructura del gráfico en Python
  • Ingeniería de características en los datos del gráfico
  • Incorpore características gráficas en la canalización de aprendizaje automático

Advertencias:

  • estamos prediciendo si un reclamo es fraudulento o no basado en la bandera fraudulenta del proveedor
  • la idea es mostrar el proceso de creación de funciones predictivas potenciales y aumentar la canalización actual de aprendizaje automático
🔥 Recomendado:  ¿Es necesario etiquetar como patrocinados los enlaces en las publicaciones de invitados? Averigua con un experto en SEO

Ingerir datos tabulares en la estructura del gráfico

En esta sección, usaré:

El conjunto de datos es de Medicare y consta de reclamaciones presentadas por los proveedores, así como información sobre el beneficiario de cada reclamación:

  • Características relacionadas con el paciente: edad, sexo, ubicación, condiciones de salud, etc.
  • Características relacionadas con el reclamo: fecha de inicio y finalización, monto del reclamo, código de diagnóstico, código de procedimiento, proveedor, médico tratante, médico operador, etc.

Los nodos en este artículo son proveedores y médicos tratantes que son origen y destino, respectivamente.

# paquete de importación
from igraph import * # use una división basada en el tiempo para evitar la fuga de datos
Train_Inpatient_G = Train_Inpatient[Train_Inpatient[‘ClaimStartDt’] < '2009-10-01'][['Provider', 'AttendingPhysician', 'ClaimID']].reset_index(soltar = Verdadero)
Tren_Externo_G = Tren_Externo[Train_Outpatient[‘ClaimStartDt’] < '2009-10-01'][['Provider', 'AttendingPhysician', 'ClaimID']].reset_index(drop = True) # combinar datos de pacientes hospitalizados y ambulatorios
G_df = pd.concat([Train_Inpatient_G, Train_Outpatient_G]ignore_index = Verdadero, ordenar = Falso)
G_df.shape # borde del implemento con peso
G_df = G_df[[‘Provider’, ‘AttendingPhysician’, ‘ClaimID’]]
G_df = G_df.groupby([‘Provider’, ‘AttendingPhysician’]).size().to_frame(‘Peso’).reset_index()
Fuente G_df.shape = ‘Proveedor’
target = ‘Médico a cargo’
peso = ‘Peso’ G_df[source] = G_df[source].astype(cadena)
G_df[target] = G_df[target].astype(cadena)
G_df.shape # crear gráfico a partir de marco de datos
G = Graph.DataFrame (G_df, dirigido = Falso)

Ingeniería de características en datos gráficos

Usando algoritmos gráficos, creo nuevas características significativas potenciales, como métricas de conectividad y características de agrupación basadas en la relación. Para evitar la fuga de objetivos, uso la división basada en el tiempo para generar características gráficas. En esta sección, proporcionaré el código para las características del gráfico:

Grado

El nodo se puede definir como el número de aristas incidentes en un nodo.

grado = pd.DataFrame({‘Node’: G.vs[“name”],
‘Grado’: G.fuerza(pesos = G.es[‘Weight’])})
grado.forma

Cercanía

En un gráfico conectado, la centralidad de cercanía (o cercanía) de un nodo es una medida de centralidad en una red, calculada como el recíproco de la suma de la longitud de los caminos más cortos entre el nodo y todos los demás nodos en el gráfico.

cercanía = pd.DataFrame({‘Node’: G.vs[“name”],
‘Cercanía’: G.cercanía(pesos = G.es[‘Weight’])})
cercanía.forma

infomapa

Infomap es un algoritmo de agrupación de gráficos capaz de lograr comunidades de alta calidad.

community_infomap = pd.DataFrame({‘Node’: G.vs[“name”],
‘communities_infomap’: G.community_infomap(edge_weights = G.es[‘Weight’]).afiliación})
comunidades_infomap.shape

Las métricas resultantes de los algoritmos gráficos se transforman en una tabla para que las funciones generadas se puedan usar en un modelo de aprendizaje automático.

# fusionar características del gráfico
característica_gráfica = [degree, closeness, eigenvector_centrality, pagerank, communities_infomap, community_multilevel]
graph_feature = reducir (lambda izquierda, derecha: pd.merge (izquierda, derecha, cómo = ‘izquierda’, encendido = ‘Nodo’), graph_feature)

Incorpore características gráficas en la canalización de aprendizaje automático

Las características del gráfico se fusionan con los datos listos para el modelo sin procesar, y la división basada en el tiempo se utiliza para preparar los datos para el modelo de aprendizaje automático.

🔥 Recomendado:  Bon Appétit: cómo este chef gana $ 2,000 por mes con un blog de comida

tren = Final_Dataset_Train[Final_Dataset_Train[‘ClaimStartDt’] < '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', eje = 1)
imprimir (tren.forma)
prueba = Final_Dataset_Train[Final_Dataset_Train[‘ClaimStartDt’] >= ‘2009-10-01’].reset_index(drop = True).drop(‘ClaimStartDt’, eje = 1)
print(prueba.forma) x_tr = tren.drop(eje=1,columnas=[‘PotentialFraud’])
y_tr = tren[‘PotentialFraud’]
x_val = test.drop(eje=1,columnas=[‘PotentialFraud’])
y_val = prueba[‘PotentialFraud’]

En este artículo, exploré 6 escenarios con la combinación de 2 algoritmos y 3 espacios de funciones:

  • Algoritmo:
    – Regresión logística
    – Bosque aleatorio
  • Espacio de funciones:
    – características originales
    – características originales + características a nivel de nodo
    – funciones originales + funciones a nivel de nodo + funciones de agrupación

lr = LogisticRegression(penalización=’ninguna’, solver=’saga’, estado_aleatorio=42, n_trabajos=-1)
rf = RandomForestClassifier(n_estimators=300, max_ depth=5, min_samples_leaf=50,
max_features=0.3, random_state=42, n_jobs=-1)
lr.fit(x_tr, y_tr)
rf.fit(x_tr, y_tr)
preds_lr = lr.predict_proba(x_val)[:,1]
preds_rf = rf.predict_proba(x_val)[:,1]

Aquí uso AUC como la métrica de evaluación en el conjunto de prueba y la curva ROC está a continuación:

En general, como el gráfico anterior, podemos resumir:

  • Desempeño superior por el modelo con características gráficas
  • Rendimiento superior por Random Forest con nivel de nodo y características de agrupación

En este artículo, no profundicé en la interpretación y el diagnóstico de modelos. Anteriormente, escribí un artículo sobre la interpretación de modelos:Interpretación del modelo de aprendizaje profundo usando SHAPque te puede interesar.

Conclusión

  • Los usuarios comerciales pueden consultar, visualizar y analizar una base de datos de gráficos para descubrir esquemas de fraude, especialmente para las actividades fraudulentas que intentan ocultarse a través de estructuras de red complejas, lo que podría ser una tarea bastante difícil en una estructura de datos convencional.
  • La incorporación de información de relaciones y la adición de estas características predictivas potenciales en la canalización actual de aprendizaje automático puede mejorar el rendimiento del modelo, especialmente para escenarios en los que varias partes están involucradas en actividades fraudulentas.

Referencia

https://www.iii.org/article/background-on-insurance-fraud

https://en.wikipedia.org/wiki/Graph_(matemáticas_discretas)

https://github.com/IBM/analyzing-insurance-claims-using-ibm-db2-graph

https://github.com/vesoft-inc/nebulosa

https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

https://www.kaggle.com/datasets/rohitrox/healthcare-provider-fraud-detection-analysis

https://igraph.org/python/

https://en.wikipedia.org/wiki/Degree_(graph_theory)

https://en.wikipedia.org/wiki/Closeness_centrality

https://towardsdatascience.com/deep-learning-model-interpretation-using-shap-a21786e91d16


Detección de fraude de seguros con Graph Analytics se publicó originalmente en Towards AI en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

Publicado a través de Hacia la IA