はじめに・動機

Rで学ぶ不正検知

Bart Baesens

Professor Data Science at KU Leuven

講師紹介

picture_Bart.png

Rで学ぶ不正検知

講師紹介

picture_BartTim.png

Rで学ぶ不正検知

講師紹介

picture_BartTimSebastiaan.png

Rで学ぶ不正検知

詐欺とは何か?

詐欺とは、まれに発生し、周到に計画され、巧みに隠蔽された、時間とともに変化する、しばしば組織的な犯罪であり、多様な形態をとる。

wolf_in_sheeps_clothing

Rで学ぶ不正検知

詐欺の影響

  • 詐欺は非常にまれだが、未検知の場合のコストは甚大
  • 具体例:
    • 組織は年間収益の5%を詐欺で失う
    • 企業の詐欺被害額は年間3.5兆ドル超
    • クレジットカード会社は取引の100ドルあたり約7セントを詐欺で損失
    • 損害保険の支払請求額の5〜10%が詐欺
Rで学ぶ不正検知

詐欺の種類

  • マネーロンダリング防止
  • 小切手詐欺
  • クレジットカード詐欺
  • 税関詐欺
  • 偽造
  • 個人情報窃取
  • 保険詐欺
  • 住宅ローン詐欺
  • 未配送詐欺
  • オンライン詐欺
  • 製品保証詐欺
  • 脱税
  • 通信詐欺
  • 在庫窃盗
  • チケット詐欺
  • 交通詐欺
  • 電信送金詐欺
  • 労災補償詐欺
Rで学ぶ不正検知

優れた不正検知モデルの主な特性

  • 統計的精度

robinhood

Rで学ぶ不正検知

優れた不正検知モデルの主な特性

  • 統計的精度
  • 解釈可能性

minorityreport

Rで学ぶ不正検知

優れた不正検知モデルの主な特性

  • 統計的精度
  • 解釈可能性
  • 規制遵守

regulatory

Rで学ぶ不正検知

優れた不正検知モデルの主な特性

  • 統計的精度
  • 解釈可能性
  • 規制遵守
  • 経済的影響

dagobert

Rで学ぶ不正検知

優れた不正検知モデルの主な特性

  • 統計的精度
  • 解釈可能性
  • 規制遵守
  • 経済的コスト
  • データ駆動型手法で専門家ベースのアプローチを補完

manmachine

Rで学ぶ不正検知

不正検知モデルの課題

  • 不均衡
    • 例:クレジットカード詐欺では通常 < 0.5%

haystack

Rで学ぶ不正検知

不正検知モデルの課題

  • 不均衡
    • 例:クレジットカード詐欺では通常 < 0.5%
  • 運用効率
    • 例:クレジットカード詐欺では意思決定時間 < 8秒

flash

Rで学ぶ不正検知

不正検知モデルの課題

  • 不均衡
    • 例:クレジットカード詐欺では通常 < 0.5%
  • 運用効率
    • 例:クレジットカード詐欺では意思決定時間 < 8秒
  • 正当な顧客への不当な疑いを避ける

goodcustomer

Rで学ぶ不正検知

不均衡データ

  • 大規模な嵐の後、保険会社は多くの請求を受理

    • 不正請求は1、正当な請求は0でラベル付け
  • データ内の不正割合は以下の関数で確認可能

    • table() および prop.table()
  • prop.table(table(...)) で不正の割合を算出

prop.table(table(fraud_label))
     0      1
0.9911 0.0089
Rで学ぶ不正検知

円グラフで不均衡を可視化

labels <- c("no fraud", "fraud")
labels <- paste(labels, round(100 * prop.table(table(fraud_label)), 2), "%")
pie(table(fraud_label), labels, col = c("blue", "red"),
      main = "Pie chart of storm claims")

stormclaims

Rで学ぶ不正検知

混同行列

不正検知モデルの評価に使用:

confusionmatrix

Rで学ぶ不正検知
  • 検知モデルを使用しない場合、全請求を正当とみなす:
predictions <- rep.int(0, times = nrow(claims))
predictions <- factor(predictions, levels = c("no fraud", "fraud"))
  • caret パッケージの confusionMatrix() 関数:
library(caret)
confusionMatrix(data = predictions, reference = fraud_label)
             Reference
 Prediction    0   1
            0 614  14
            1   0   0                                   
 Accuracy : 0.9777
Rで学ぶ不正検知

不正未検知の総コスト:請求の例

  • 詐欺の総コスト=不正請求金額の合計
  • 不正が検知されない場合の総コスト:
    > total_cost <- sum(claim_amount[fraud_label == "fraud"])
    > print(total_cost)
    
2301508
Rで学ぶ不正検知

練習しましょう!

Rで学ぶ不正検知

Preparing Video For Download...