Исследуйте базу данных графов и извлекайте функции графов, чтобы дополнить модель машинного обучения.

Мошенничество в страховании является огромной проблемой, и страховая индустрия уже очень давно борется с мошенничеством. Давайте посмотрим на следующие главные новости и статистику:

По данным Коалиции против страхового мошенничества (CAIF), мошенничество со страховкой обходится потребителям США не менее чем в 80 миллиардов долларов в год. По оценкам CAIF, только мошенничество со страховкой компенсаций работникам обходится страховщикам и работодателям в 30 миллиардов долларов в год. ФБР сообщает, что часть общей проблемы, не связанная со страхованием здоровья, составляет 40 миллиардов долларов в год. В конечном счете, масштабы проблемы могут означать, что средняя семья в США будет платить дополнительные 400–700 долларов в год в качестве страховых взносов.

Мошенничество в сфере медицинского страхования — это вид деятельности «белых воротничков», при котором нечестные претензии подаются с целью получения прибыли. В мошеннической деятельности могут участвовать равные поставщики, врачи и бенефициары, действующие вместе для подачи заявлений о мошенничестве. Следовательно, трудно обнаружить мошеннические действия, учитывая сложность вовлеченных сторон. Аномальное поведение может быть мошеннической сетью, когда поставщики, врачи и клиенты предъявляют небольшие претензии с течением времени. Такие небольшие претензии может быть трудно обнаружить с помощью традиционных инструментов, которые рассматривают претензии по отдельности и не могут выявить связи между различными игроками.

База данных графов предназначена для заполнения пробела за счет хранения и обработки сильно связанных данных, где взаимосвязь так же важна, как и отдельные точки данных. Следовательно, мы можем использовать аналитику графов, чтобы понять отношения. В этой статье вы узнаете:

  • График базовый
  • Графический поиск и запрос, чтобы понять отношения
  • Дополните модель машинного обучения функциями графа

График базовый

Что такое граф?

В математике, а точнее в теории графов, граф — это структура, состоящая из набора объектов, в котором некоторые пары объектов в некотором смысле «связаны». Объекты соответствуют математическим абстракциям, называемым вершинами (также называемыми узлами или точками), и каждая из связанных пар вершин называется граница (также называемая ссылка или линия).

Проще говоря, граф — это математическое представление любого типа сети с:

  • Вершина, иногда называемая узлом, в страховом контексте может быть:
    - Требование
    - Страхователь
  • Edge — это отношения/взаимодействие/поведение между узлами:
    — Страхователь претензии
    — Страхователь претензии

Концепции графового алгоритма будут представлены в третьей главе — Дополнить модель машинного обучения функциями графа.

Графический поиск и запрос

База данных графов специально создана для хранения и навигации по отношениям, использующим связность между вершинами. Конечным пользователям не нужно выполнять бесчисленные объединения, поскольку язык запросов графа основан на сопоставлении шаблонов между узлами. Это более естественно для работы и может быть легко использовано бизнес-пользователями, чьи отзывы могут быть переданы в систему обнаружения мошенничества.

Визуализация графов с помощью языка запросов к графам помогает анализировать большой объем данных и выявлять шаблоны, указывающие на мошеннические действия. В этом разделе я поделюсь несколькими сценариями, и визуализации основаны на:

Предупреждение о мошенничестве

Найдите все претензии, поданные страхователем по мошеннической претензии «C4377», и покажите болезни пациента по претензии «C4377».

Чтобы глубже изучить этого страхователя (PH3759), мы видим, что этот человек посещал разных врачей у разных поставщиков, что ненормально.

Связи страхователя, связанные с мошенническим требованием

На графике показаны соединения профиля высокого риска с заявлением о мошенничестве «C4377». Мы видим одного держателя полиса с высоким риском в соединении 1-й степени и другого держателя полиса с высоким риском в соединении 3-й степени.

Дополните модель машинного обучения функциями графа

Разработка функций — это искусство формулирования полезных функций на основе существующих данных. Определение:

Инженерия признаков – это процесс преобразования необработанных данных в функции, которые лучше представляют основную проблему для прогностических моделей, что приводит к повышению точности модели на невидимых данных.

Многие приложения машинного обучения обычно полагаются на табличные модели данных и опускают отношения и контекстные данные, которые являются самыми сильными предикторами поведения. Это очень важно, поскольку каждое отдельное требование/поставщик может выглядеть законным, избегая красных флажков.

В этом разделе я рассмотрю конкретный пример того, как преобразовать табличные данные в график и извлечь функции графика для расширения модели машинного обучения. Общий подход таков:

  • Вставка табличных данных в структуру графика в Python
  • Разработка признаков на графических данных
  • Включите функции графа в конвейер машинного обучения.

Предупреждения:

  • мы прогнозируем, является ли претензия мошеннической или нет, основываясь на пометке поставщика о мошенничестве
  • идея состоит в том, чтобы показать процесс создания потенциальных прогностических функций и дополнить текущий конвейер машинного обучения

Вставка табличных данных в структуру графика

В этом разделе я буду использовать:

Набор данных предоставлен Medicare и состоит из требований, поданных поставщиками, а также информации о бенефициаре для каждого требования:

  • Характеристики, связанные с пациентом: возраст, пол, местонахождение, состояние здоровья и т. д.
  • Характеристики, связанные с претензией: дата начала и окончания, сумма претензии, код диагноза, код процедуры, поставщик, лечащий врач, оперирующий врач и т. д.

Узлы в этой статье — это поставщики и лечащие врачи, которые являются исходным и целевым соответственно.

# import package
from igraph import *
# create graph from dataframe
G = Graph.DataFrame(G_df, directed=False)

Разработка признаков на графических данных

Используя алгоритмы графов, я создаю новые потенциально значимые функции, такие как метрики подключения и функции кластеризации на основе отношений. Чтобы предотвратить целевую утечку, я использую разделение по времени для создания графических функций. В этом разделе я предоставлю код для графических функций:

Уровень

Узел можно определить как количество ребер, инцидентных узлу.

degree = pd.DataFrame({'Node': G.vs["name"],
        'Degree': G.strength()})
degree.shape

Близость

В связном графе центральность (или близость) узла является мерой центральности в сети, вычисляемой как величина, обратная сумме длин кратчайших путей между узлом и всеми другими узлами в графе.

closeness = pd.DataFrame({'Node': G.vs["name"],
        'Closeness': G.closeness()})
closeness.shape

Информационная карта

Infomap — это алгоритм кластеризации графов, способный создавать высококачественные сообщества.

communities_infomap = pd.DataFrame({'Node': G.vs["name"],
        'communities_infomap': G.community_infomap().membership})
communities_infomap.shape

Результирующие метрики из алгоритмов графа преобразуются в таблицу, чтобы сгенерированные функции можно было использовать в модели машинного обучения.

# merge graph features
graph_feature = [degree, closeness, communities_infomap]
graph_feature = reduce(lambda left,right: pd.merge(left,right, how = 'left',on='Node'), graph_feature)

Включите функции графа в конвейер машинного обучения.

Функции графика объединяются в необработанные данные, готовые к модели, а разделение по времени используется для подготовки данных для модели машинного обучения.

train = Final_Dataset_Train[Final_Dataset_Train['ClaimStartDt'] < '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', axis = 1)
print(train.shape)
test = Final_Dataset_Train[Final_Dataset_Train['ClaimStartDt'] >= '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', axis = 1)
print(test.shape)
x_tr = train.drop(axis=1,columns=['PotentialFraud'])
y_tr = train['PotentialFraud']
x_val = test.drop(axis=1,columns=['PotentialFraud'])
y_val = test['PotentialFraud']

В этой статье я рассмотрел 6 сценариев с комбинацией 2 алгоритмов и 3 функциональных пространств:

  • Алгоритм:
    - Логистическая регрессия
    - Случайный лес
  • Пространство признаков:
     — исходные функции
     – исходные функции + функции уровня узла
     – исходные функции + функции уровня узла + функции кластеризации
lr = LogisticRegression(penalty='none', solver='saga', random_state=42, n_jobs=-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]

Здесь я использую AUC в качестве оценочной метрики в тестовом наборе, а кривая ROC ниже:

В целом, как и на графике выше, мы можем резюмировать:

  • Превосходство модели с графическими функциями
  • Превышение производительности за счет случайного леса с функциями уровня узла и кластеризации

В этой статье я не углублялся в интерпретацию и диагностику моделей. Ранее я написал статью об интерпретации модели — Интерпретация модели глубокого обучения с использованием SHAP, которая может вас заинтересовать.

Заключение

  • Бизнес-пользователи могут запрашивать, визуализировать и анализировать базу данных графов для обнаружения схем мошенничества, особенно для мошеннических действий, которые пытаются скрыть через сложные сетевые структуры, что может быть довольно сложной задачей в обычной структуре данных.
  • Включение информации об отношениях и добавление этих потенциальных прогностических функций в текущий конвейер машинного обучения может повысить производительность модели, особенно для сценариев, в которых несколько сторон участвуют в мошеннических действиях.

Ссылка

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

https://en.wikipedia.org/wiki/График_(дискретная_математика)

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

https://github.com/vesoft-inc/туманность

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