这是一个检测信用卡欺诈的程序。它通过学习大量的交易数据,找出可疑的欺诈交易。
-
数据不平衡:
- 正常交易很多,欺诈交易很少(比如1000笔里只有1笔是欺诈)
- 解决方法:给欺诈交易更大的权重(
pos_weight=10.0
)
-
特征处理:
- 对金额、时间等数字进行标准化(变成0附近的数)
- 把所有特征转成电脑容易理解的格式(
StandardScaler
处理)
-
批量学习:
- 每次拿10000笔交易一起学习(
batch_size=10000
) - 这样学习更快,也更稳定
- 每次拿10000笔交易一起学习(
-
重点关注:
- 用特殊的计分方式(
BCEWithLogitsLoss
) - 让程序更关注欺诈交易
- 宁可多怀疑,也不放过
- 用特殊的计分方式(
-
动态调整:
- 学习速度会慢慢变慢(
learning_rate
从0.0001开始降低) - 找到最好的判断标准(自动调整
threshold
) - 保存最好的模型参数
- 学习速度会慢慢变慢(
-
召回率(Recall):
- 在所有真实欺诈中,找出了多少
- 越高越好,说明漏掉的越少
-
精确率(Precision):
- 在所有怀疑是欺诈的交易中,真正是欺诈的比例
- 要保持在70%以上,避免误报太多
-
平衡点:
- 程序会自动找到最佳平衡点
- 画出图表显示不同标准的效果
-
准备数据:
data = load_dataset("credit-card-fraud")
-
开始训练:
python credit.py
-
看结果:
- 终端会显示训练进度
- 保存的图表显示检测效果
threshold_metrics.png
显示最佳判断标准
-
硬件要求:
- 需要NVIDIA显卡
- 内存8GB以上
- 硬盘要有足够空间保存模型
-
训练时间:
- 完整训练要几个小时
- 中间会自动保存最好的结果
- 可以随时停止,下次继续
-
效果判断:
- 看召回率是否在提高
- 精确率不要低于70%
- 关注F1分数的变化趋势