Исследуйте базу данных графов и извлекайте функции графов, чтобы дополнить модель машинного обучения.
Мошенничество в страховании является огромной проблемой, и страховая индустрия уже очень давно борется с мошенничеством. Давайте посмотрим на следующие главные новости и статистику:
Мошенничество в сфере медицинского страхования — это вид деятельности «белых воротничков», при котором нечестные претензии подаются с целью получения прибыли. В мошеннической деятельности могут участвовать равные поставщики, врачи и бенефициары, действующие вместе для подачи заявлений о мошенничестве. Следовательно, трудно обнаружить мошеннические действия, учитывая сложность вовлеченных сторон. Аномальное поведение может быть мошеннической сетью, когда поставщики, врачи и клиенты предъявляют небольшие претензии с течением времени. Такие небольшие претензии может быть трудно обнаружить с помощью традиционных инструментов, которые рассматривают претензии по отдельности и не могут выявить связи между различными игроками.
База данных графов предназначена для заполнения пробела за счет хранения и обработки сильно связанных данных, где взаимосвязь так же важна, как и отдельные точки данных. Следовательно, мы можем использовать аналитику графов, чтобы понять отношения. В этой статье вы узнаете:
- График базовый
- Графический поиск и запрос, чтобы понять отношения
- Дополните модель машинного обучения функциями графа
График базовый
Что такое граф?
В математике, а точнее в теории графов, граф — это структура, состоящая из набора объектов, в котором некоторые пары объектов в некотором смысле «связаны». Объекты соответствуют математическим абстракциям, называемым вершинами (также называемыми узлами или точками), и каждая из связанных пар вершин называется граница (также называемая ссылка или линия).
Проще говоря, граф — это математическое представление любого типа сети с:
- Вершина, иногда называемая узлом, в страховом контексте может быть:
- Требование
- Страхователь - Edge — это отношения/взаимодействие/поведение между узлами:
— Страхователь претензии
— Страхователь претензии
Концепции графового алгоритма будут представлены в третьей главе — Дополнить модель машинного обучения функциями графа.
Графический поиск и запрос
База данных графов специально создана для хранения и навигации по отношениям, использующим связность между вершинами. Конечным пользователям не нужно выполнять бесчисленные объединения, поскольку язык запросов графа основан на сопоставлении шаблонов между узлами. Это более естественно для работы и может быть легко использовано бизнес-пользователями, чьи отзывы могут быть переданы в систему обнаружения мошенничества.
Визуализация графов с помощью языка запросов к графам помогает анализировать большой объем данных и выявлять шаблоны, указывающие на мошеннические действия. В этом разделе я поделюсь несколькими сценариями, и визуализации основаны на:
- Источник данных: Анализ страховых случаев с использованием графа IBM Db2
- База данных графов: Nebula Graph
Предупреждение о мошенничестве
Найдите все претензии, поданные страхователем по мошеннической претензии «C4377», и покажите болезни пациента по претензии «C4377».
Чтобы глубже изучить этого страхователя (PH3759), мы видим, что этот человек посещал разных врачей у разных поставщиков, что ненормально.
Связи страхователя, связанные с мошенническим требованием
На графике показаны соединения профиля высокого риска с заявлением о мошенничестве «C4377». Мы видим одного держателя полиса с высоким риском в соединении 1-й степени и другого держателя полиса с высоким риском в соединении 3-й степени.
Дополните модель машинного обучения функциями графа
Разработка функций — это искусство формулирования полезных функций на основе существующих данных. Определение:
Инженерия признаков – это процесс преобразования необработанных данных в функции, которые лучше представляют основную проблему для прогностических моделей, что приводит к повышению точности модели на невидимых данных.
Многие приложения машинного обучения обычно полагаются на табличные модели данных и опускают отношения и контекстные данные, которые являются самыми сильными предикторами поведения. Это очень важно, поскольку каждое отдельное требование/поставщик может выглядеть законным, избегая красных флажков.
В этом разделе я рассмотрю конкретный пример того, как преобразовать табличные данные в график и извлечь функции графика для расширения модели машинного обучения. Общий подход таков:
- Вставка табличных данных в структуру графика в Python
- Разработка признаков на графических данных
- Включите функции графа в конвейер машинного обучения.
Предупреждения:
- мы прогнозируем, является ли претензия мошеннической или нет, основываясь на пометке поставщика о мошенничестве
- идея состоит в том, чтобы показать процесс создания потенциальных прогностических функций и дополнить текущий конвейер машинного обучения
Вставка табличных данных в структуру графика
В этом разделе я буду использовать:
- Источник данных: АНАЛИЗ МОШЕННИЧЕСТВА С ПОСТАВЩИКАМИ ЗДРАВООХРАНЕНИЯ
- Графический пакет Python: iGraph
Набор данных предоставлен 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://www.kaggle.com/datasets/rohitrox/healthcare-provider-fraud-detection-analysis
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