SVM_信用卡欺诈

本文探讨了在信用卡欺诈检测问题中,由于数据不平衡导致的传统准确率评价不适用的问题。通过使用SVM(支持向量机),特别是LinearSVC,结合召回率和精确率进行模型评估。数据预处理包括字段筛选和数值型数据规范化。实验结果显示,SVM的精确率为0.843,召回率为0.717,F1值为0.775。文章还介绍了核函数选择及其对分类效果的影响,并提供了混淆矩阵的解释,强调在欺诈检测中召回率的重要性。
摘要由CSDN通过智能技术生成

概述

初衷是因为引用卡欺诈问题相对与其他机器学习问题略有不同,因为二分类数据量差距过大,导致以往的评价方法对其不适用,如下图的284807 笔交易中只有492笔是欺诈行为,如果用以为的准确率评价几乎都在99%以上,但是这并不能说明模型好,因为即使漏掉1个欺诈交易都是损失很大的,所以这篇里引入了召回率和精确率,进行综合评价,详细步骤如下:

  • 对数据源中不比较的字段进行删减,对数值型数据进行规范化,因为没有测试集数据,所以进行数据划分。
  • 数据建模使用的是LinearSVR,因为LinearSVC 对线性分类做了优化,对于数据量大的线性可分问题,使用 LinearSVC 的效率要高于 SVC。这里我们是假设特征是线性可分的(线性可分就可以理解成用一条线能把两个类别分开),当然也可以使用逻辑回归、决策树、或者是把核函数设置为rbf(高斯核函数)进行尝试。

实现过程

SVM介绍

model = svm.SVC(kernel=‘rbf’, C=1.0, gamma=‘auto’) 

kernel代表核函数的选择,它有四种选择,只不过默认是 rbf,即高斯核函数。linear:线性核函数poly:多项式核函数rbf:高斯核函数(默认)sigmoid:sigmoid 核函数这四种函数代表不同的映射方式。

此外引用一位知乎题主的回答,我觉得比较实用:
作者:Jason Gu
链接:https://www.zhihu.com/question/21883548/answer/19693213

  1. Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。
  2. RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。我个人的体会是:使用libsvm,默认参数,RBF核比Linear核效果稍差。通过进行大量参数的尝试,一般能找到比linear核更好的效果。至于到底该采用哪种核,要根据具体问题,有的数据是线性可分的,有的不可分,需要多尝试不同核不同参数。如果特征的提取的好,包含的信息量足够大,很多问题都是线性可分的。当然,如果有足够的时间去寻找RBF核参数,应该能达到更好的效果。

此外,sigmoid一般用于处理神经网络,pold虽然可以处理非线性问题,但是训练时间比较长。

数据源下载

数据源
链接:https://pan.baidu.com/s/14F8WuX0ZJntdB_r1EC08HA 提取码:58gp

说明:Class=0 为正常(非欺诈),Class=1 代表欺诈。

代码实现

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import confusion_matrix, precision_recall_curve
import warnings
import itertools
warnings.filterwarnings('ignore')

# 混淆矩阵可视化
def plot_confusion_matrix(cm, classes, normalize = False, title = 'Confusion matrix"', cmap = plt.cm.Blues) :
    plt.figure()
    plt.imshow
  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值