
Pengarang: Tony Zhang
Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.
Jelajahi basis data grafik dan ekstrak fitur grafik untuk menambah model pembelajaran mesin
Foto oleh Conny Schneider di Unsplash
Penipuan asuransi adalah masalah besar, dan industri asuransi telah memerangi penipuan untuk waktu yang sangat lama. Mari kita lihat tajuk baru dan statistik berikut:
Penipuan asuransi merugikan konsumen AS setidaknya $80 miliar setiap tahun, menurut The Coalition Against Insurance Fraud (CAIF). CAIF juga memperkirakan bahwa penipuan asuransi kompensasi pekerja saja telah merugikan perusahaan asuransi dan pemberi kerja sebesar $30 miliar per tahun. FBI melaporkan bahwa porsi asuransi non-kesehatan dari keseluruhan masalah berjumlah $40 miliar per tahun. Pada akhirnya, cakupan masalah yang sangat besar dapat berarti bahwa rata-rata keluarga AS akan membayar premi tambahan sebesar $400 dan $700 per tahun.
Penipuan asuransi kesehatan adalah jenis aktivitas kerah putih di mana klaim tidak jujur diajukan untuk mendapatkan keuntungan. Aktivitas penipuan mungkin melibatkan rekan penyedia, dokter, dan penerima manfaat yang bertindak bersama untuk membuat klaim penipuan. Oleh karena itu, sulit untuk mendeteksi aktivitas penipuan mengingat kompleksitas pihak-pihak yang terlibat. Perilaku anomali bisa menjadi cincin penipuan di mana penyedia, dokter, dan klien mengajukan klaim kecil dari waktu ke waktu. Klaim kecil seperti itu bisa sulit dideteksi dengan alat tradisional, yang melihat klaim secara individual dan tidak dapat mengungkap hubungan antara berbagai pemain.
Basis data grafik dirancang untuk mengisi celah dengan menyimpan dan menangani data yang sangat terhubung di mana hubungannya sama pentingnya dengan titik data individual. Oleh karena itu, kita dapat menggunakan analisis grafik untuk memahami hubungan. Dalam artikel ini, Anda akan belajar:
Grafik pencarian dan kueri Grafik dasar untuk memahami hubungan Tingkatkan model pembelajaran mesin dengan fitur grafik
Dasar grafik
Apa itu grafik?
Dalam matematika, dan lebih khusus lagi dalam teori graf, graf adalah struktur yang terdiri dari sekumpulan objek di mana beberapa pasang objek dalam beberapa hal “berhubungan”. Objek sesuai dengan abstraksi matematika yang disebut simpul (juga disebut simpul atau titik) dan masing-masing pasangan simpul yang terkait disebut tepi (juga disebut tautan atau garis).
Konsep grafik, gambar oleh penulis
Sederhananya, grafik adalah representasi matematis dari semua jenis jaringan dengan:
Vertex, terkadang disebut node, dalam konteks asuransi, dapat berupa:
– Mengeklaim
– Ujung Pemegang Polis adalah hubungan/interaksi/perilaku antara node:
– Pemegang polis klaim
– Klaim diasuransikan
Konsep algoritma grafik akan diperkenalkan di bab ketiga — Menambah model pembelajaran mesin dengan fitur grafik.
Pencarian dan kueri grafik
Basis data grafik dibuat khusus untuk menyimpan dan menavigasi hubungan yang memanfaatkan konektivitas antar simpul. Pengguna akhir tidak perlu melakukan penggabungan yang tak terhitung jumlahnya karena bahasa kueri grafik adalah tentang pencocokan pola antar node. Ini lebih alami untuk digunakan dan dapat dengan mudah digunakan oleh pengguna bisnis yang umpan baliknya dapat dimasukkan ke dalam sistem deteksi penipuan.
Visualisasi grafik melalui bahasa kueri grafik membantu menganalisis sejumlah besar data dan mengidentifikasi pola yang menunjukkan aktivitas penipuan. Di bagian ini, saya akan membagikan beberapa skenario, dan visualisasinya didasarkan pada:
Peringatan sinyal penipuan
Temukan semua klaim yang diajukan oleh pemegang polis klaim penipuan “C4377” dan tunjukkan penyakit pasien klaim “C4377”.
Sinyal klaim penipuan potensial, gambar oleh penulis
Untuk mendalami pemegang polis ini (PH3759), kami melihat bahwa orang ini melihat dokter yang berbeda di penyedia yang berbeda, yang tidak normal.
Gambar oleh penulis
Koneksi pemegang polis terkait dengan klaim penipuan
Grafik menunjukkan hubungan profil berisiko tinggi yang memiliki klaim penipuan “C4377”. Kami melihat satu pemegang polis berisiko tinggi dalam koneksi tingkat 1 dan pemegang polis berisiko tinggi lainnya dalam koneksi tingkat ke-3.
Gambar oleh penulis
Tingkatkan model pembelajaran mesin dengan fitur grafik
Rekayasa fitur adalah seni merumuskan fitur yang berguna dari data yang ada. Definisinya adalah:
Rekayasa fitur adalah proses mengubah data mentah menjadi fitur yang lebih mewakili masalah mendasar ke model prediktif, menghasilkan peningkatan akurasi model pada data yang tidak terlihat.
Banyak aplikasi pembelajaran mesin biasanya mengandalkan model data tabular dan menghilangkan hubungan & data kontekstual, yang merupakan prediktor perilaku terkuat. Ini sangat penting karena setiap klaim/penyedia individu mungkin terlihat sah dengan menghindari tanda bahaya.
Di bagian ini, saya akan membahas contoh konkret tentang cara mengubah data tabular menjadi grafik dan mengekstrak fitur grafik untuk menambah model pembelajaran mesin. Pendekatan keseluruhan adalah:
Menyerap data tabular ke dalam struktur grafik di Python Rekayasa fitur pada data grafik Menggabungkan fitur grafik ke dalam alur pembelajaran mesin
Peringatan:
kami memprediksi apakah klaim itu curang atau tidak berdasarkan tanda penipuan penyedia, idenya adalah untuk menunjukkan proses pembuatan fitur prediktif potensial dan menambah alur pembelajaran mesin saat ini
Menyerap Data Tabular ke dalam Struktur Grafik
Di bagian ini, saya akan menggunakan:
Kumpulan data berasal dari Medicare dan terdiri dari klaim yang diajukan oleh penyedia serta informasi tentang penerima untuk setiap klaim:
Fitur terkait pasien: usia, jenis kelamin, lokasi, kondisi kesehatan, dll. Fitur terkait klaim: tanggal mulai & berakhir, jumlah klaim, kode diagnosis, kode prosedur, penyedia, dokter yang merawat, dokter operasi, dll.
Node dalam artikel ini adalah penyedia dan dokter yang merawat yang masing-masing menjadi sumber dan target.
# paket impor
dari igraph import * # gunakan split berbasis waktu untuk menghindari kebocoran data
Train_Inpatient_G = Train_Inpatient[Train_Inpatient[‘ClaimStartDt’] < '2009-10-01'][['Provider', 'AttendingPhysician', 'ClaimID']].reset_index(jatuhkan = Benar)
Kereta_Rawat Jalan_G = Kereta_Rawat Jalan[Train_Outpatient[‘ClaimStartDt’] < '2009-10-01'][['Provider', 'AttendingPhysician', 'ClaimID']].reset_index(drop = True) # menggabungkan data rawat inap dan rawat jalan
G_df = pd.concat([Train_Inpatient_G, Train_Outpatient_G]abaikan_index = Benar, urutkan = Salah)
G_df.shape # implement edge dengan bobot
G_df = G_df[[‘Provider’, ‘AttendingPhysician’, ‘ClaimID’]]
G_df = G_df.groupby([‘Provider’, ‘AttendingPhysician’]).size().to_frame(‘Berat’).reset_index()
G_df.shape source = ‘Penyedia’
target = ‘Dokter Pendamping’
berat = ‘Berat’ G_df[source] = G_df[source].astype(str)
G_df[target] = G_df[target].astype(str)
G_df.shape # buat grafik dari dataframe
G = Graph.DataFrame(G_df, diarahkan=False)
Rekayasa fitur pada data grafik
Dengan menggunakan algoritme grafik, saya membuat fitur baru yang potensial dan bermakna, seperti metrik konektivitas dan fitur pengelompokan berdasarkan hubungan. Untuk mencegah kebocoran target, saya menggunakan pembagian berbasis waktu untuk menghasilkan fitur grafik. Pada bagian ini, saya akan memberikan kode untuk fitur grafik:
Derajat
Node dapat didefinisikan sebagai jumlah edge yang datang ke sebuah node.
derajat = pd.DataFrame({‘Node’: G.vs[“name”],
‘Gelar’: G.strength(bobot = G.es[‘Weight’])})
derajat.bentuk
Kedekatan
Dalam graf terhubung, kedekatan sentralitas (atau kedekatan) dari sebuah node adalah ukuran sentralitas dalam jaringan, dihitung sebagai kebalikan dari jumlah panjang jalur terpendek antara node dan semua node lain dalam grafik.
kedekatan = pd.DataFrame({‘Node’: G.vs[“name”],
‘Kedekatan’: G.kedekatan(bobot = G.es[‘Weight’])})
kedekatan.bentuk
peta info
Infomap adalah algoritma pengelompokan grafik yang mampu mencapai komunitas berkualitas tinggi.
community_infomap = pd.DataFrame({‘Node’: G.vs[“name”],
‘communities_infomap’: G.community_infomap(edge_weights = G.es[‘Weight’]).keanggotaan})
community_infomap.shape
Metrik yang dihasilkan dari algoritma grafik diubah menjadi tabel sehingga fitur yang dihasilkan dapat digunakan dalam model pembelajaran mesin.
# gabungkan fitur grafik
grafik_fitur = [degree, closeness, eigenvector_centrality, pagerank, communities_infomap, community_multilevel]
graph_feature = mengurangi(lambda kiri,kanan: pd.merge(kiri,kanan, bagaimana = ‘kiri’,on=’Node’), graph_feature)
Menggabungkan fitur grafik ke dalam alur pembelajaran mesin
Fitur grafik digabungkan ke dalam data siap model mentah, dan pemisahan berbasis waktu digunakan untuk menyiapkan data untuk model pembelajaran mesin.
kereta = Final_Dataset_Train[Final_Dataset_Train[‘ClaimStartDt’] < '2009-10-01'].reset_index(drop = True).drop('ClaimStartDt', axis = 1)
print(kereta.bentuk)
tes = 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 = kereta api[‘PotentialFraud’]
x_val = test.drop(axis=1,columns=[‘PotentialFraud’])
y_val = tes[‘PotentialFraud’]
Dalam artikel ini, saya menjelajahi 6 skenario dengan kombinasi 2 algoritma dan 3 ruang fitur:
Algoritma:
– Regresi logistik
– Ruang Fitur Hutan Acak:
– fitur asli
– fitur asli + fitur tingkat simpul
– fitur asli + fitur tingkat simpul + fitur pengelompokan 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]
Di sini saya menggunakan AUC sebagai metrik evaluasi pada set tes dan kurva ROC di bawah ini:
Perbandingan AUC, gambar oleh penulis
Secara umum, seperti plot di atas, kita dapat meringkas:
Performa lebih baik dari model dengan fitur grafik Performa lebih baik dari Random Forest dengan level node dan fitur pengelompokan
Dalam artikel ini, saya tidak menyelam jauh ke dalam interpretasi model dan diagnosis model. Sebelumnya, saya menulis artikel tentang interpretasi model — Interpretasi Model Pembelajaran Mendalam Menggunakan SHAP, yang mungkin menarik bagi Anda.
Kesimpulan
Basis data grafik dapat ditanyakan, divisualisasikan, dan dianalisis oleh pengguna bisnis untuk menemukan skema penipuan, terutama untuk aktivitas penipuan yang mencoba bersembunyi melalui struktur jaringan yang kompleks, yang bisa menjadi tugas yang cukup sulit dalam struktur data konvensional. Memasukkan informasi hubungan dan menambahkan fitur prediktif potensial ini ke dalam alur pembelajaran mesin saat ini dapat meningkatkan kinerja model, terutama untuk skenario di mana banyak pihak terlibat dalam aktivitas penipuan.
Referensi
https://www.iii.org/article/background-on-insurance-fraud
https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
https://github.com/IBM/analyzing-insurance-claims-using-ibm-db2-graph
https://github.com/vesoft-inc/nebula
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
Deteksi Penipuan Asuransi dengan Analisis Grafik awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI