课程导入与动机

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 交易约损失 $0.07
    • 非寿险理赔中,欺诈占理赔金额的 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 中的欺诈检测

Passons à la pratique !

R 中的欺诈检测

Preparing Video For Download...