{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 信用卡欺诈检测\n", "基于信用卡交易记录数据,建立分类模型来预测哪些交易记录是异常的,哪些是正常的。\n", "\n", "我整理好的数据地址:https://pan.baidu.com/s/18vPGelYCXGqp5OCWZWz36A 提取码:de0f\n", "\n", "kaggle数据地址:https://www.kaggle.com/mlg-ulb/creditcardfraud#creditcard.csv\n", "\n", "kesci数据地址:https://www.kesci.com/mw/dataset/5b56a592fc7e9000103c0442" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 任务目的:\n", "完成数据集中正常交易数据和异常交易数据的分类,并对测试数据进行预测 0/1进行分类。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 任务流程:\n", "* 加载数据,观测问题\n", "* 针对问题给出解决方案\n", "* 数据集划分\n", "* 评估方法对比\n", "* 逻辑回归模型\n", "* 建模结果分析\n", "* 方案效果对比\n", "\n", "### 主要解决问题:\n", " (1) 在此项目中,我们首先对数据进行观测,发现了其中样本不均衡的问题,其实我们做任务工作之前都一定要先进行数据检查,看看数据有什么问题,针对这些问题来选择解决方案。\n", " (2) 这里我们提出了两种方法,下采样和过采样,两条路线来进行对比实验,任何时间问题来了之后,我们都不会一条路走到黑,没有对比就没有优化,通常会得到一个基础模型,然后对各种方法进行对比,找到最合适的,然后在任务开始之前,一定得多想多准备,得到的结果才有可选择的余地。\n", " (3) 在建模之前,需要对数据进行各种预处理操作,比如数据标准化,缺失值填充等,这些都是必要操作,由于数据本身已经给定了特征,此处我们还没有提到特征工程这个概念,后续实战中我们会逐步引入,其实数据预处理的工作是整个任务中最为重要也是最优难度的一个阶段,数据决定上限,模型逼近这个上限。\n", " (4) 先选好评估方法,再进行建模。建模的目的是为了得到结果,但是我们不可能一次就得到最好的结果,肯定要尝试很多次,所以一定要有一个合适的评估方法,比如通用的AUC、ROC、召回率、精确率等,也可以根据实际问题自己指定评估指标。\n", " (5) 选择合适的算法,这里我们使用的逻辑回归,逻辑回归现在使用的很少,但在金融领域还是一个非常具有代表的算法,其简单并具有可推导及解释性,深受金融行业的爱戴。\n", " (6) 模型调参也是非常重要的,不用的调参会导致不同的结果,后续实战中我们也会有更多的调参细节,对于调参可以参考工具包的API文档,了解每个参数的意义,再来选择合适的参数值。\n", " (7) 得到结果一定是和实际任务结合在一起,有时候线下(开发)时效果不错,但是上线后效果差距很大,所以测试环境也是必不可少的。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# 导入工具包\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# 把图轻松的镶嵌到这个notebook中\n", "%matplotlib inline\n", "\n", "import warnings # 忽略普通警告,不打印太多东西\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Time | \n", "V1 | \n", "V2 | \n", "V3 | \n", "V4 | \n", "V5 | \n", "V6 | \n", "V7 | \n", "V8 | \n", "V9 | \n", "... | \n", "V21 | \n", "V22 | \n", "V23 | \n", "V24 | \n", "V25 | \n", "V26 | \n", "V27 | \n", "V28 | \n", "Amount | \n", "Class | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0.0 | \n", "-1.359807 | \n", "-0.072781 | \n", "2.536347 | \n", "1.378155 | \n", "-0.338321 | \n", "0.462388 | \n", "0.239599 | \n", "0.098698 | \n", "0.363787 | \n", "... | \n", "-0.018307 | \n", "0.277838 | \n", "-0.110474 | \n", "0.066928 | \n", "0.128539 | \n", "-0.189115 | \n", "0.133558 | \n", "-0.021053 | \n", "149.62 | \n", "0 | \n", "
1 | \n", "0.0 | \n", "1.191857 | \n", "0.266151 | \n", "0.166480 | \n", "0.448154 | \n", "0.060018 | \n", "-0.082361 | \n", "-0.078803 | \n", "0.085102 | \n", "-0.255425 | \n", "... | \n", "-0.225775 | \n", "-0.638672 | \n", "0.101288 | \n", "-0.339846 | \n", "0.167170 | \n", "0.125895 | \n", "-0.008983 | \n", "0.014724 | \n", "2.69 | \n", "0 | \n", "
2 | \n", "1.0 | \n", "-1.358354 | \n", "-1.340163 | \n", "1.773209 | \n", "0.379780 | \n", "-0.503198 | \n", "1.800499 | \n", "0.791461 | \n", "0.247676 | \n", "-1.514654 | \n", "... | \n", "0.247998 | \n", "0.771679 | \n", "0.909412 | \n", "-0.689281 | \n", "-0.327642 | \n", "-0.139097 | \n", "-0.055353 | \n", "-0.059752 | \n", "378.66 | \n", "0 | \n", "
3 | \n", "1.0 | \n", "-0.966272 | \n", "-0.185226 | \n", "1.792993 | \n", "-0.863291 | \n", "-0.010309 | \n", "1.247203 | \n", "0.237609 | \n", "0.377436 | \n", "-1.387024 | \n", "... | \n", "-0.108300 | \n", "0.005274 | \n", "-0.190321 | \n", "-1.175575 | \n", "0.647376 | \n", "-0.221929 | \n", "0.062723 | \n", "0.061458 | \n", "123.50 | \n", "0 | \n", "
4 | \n", "2.0 | \n", "-1.158233 | \n", "0.877737 | \n", "1.548718 | \n", "0.403034 | \n", "-0.407193 | \n", "0.095921 | \n", "0.592941 | \n", "-0.270533 | \n", "0.817739 | \n", "... | \n", "-0.009431 | \n", "0.798278 | \n", "-0.137458 | \n", "0.141267 | \n", "-0.206010 | \n", "0.502292 | \n", "0.219422 | \n", "0.215153 | \n", "69.99 | \n", "0 | \n", "
5 rows × 31 columns
\n", "\n", " | V1 | \n", "V2 | \n", "V3 | \n", "V4 | \n", "V5 | \n", "V6 | \n", "V7 | \n", "V8 | \n", "V9 | \n", "V10 | \n", "... | \n", "V21 | \n", "V22 | \n", "V23 | \n", "V24 | \n", "V25 | \n", "V26 | \n", "V27 | \n", "V28 | \n", "Class | \n", "normAmount | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "-1.359807 | \n", "-0.072781 | \n", "2.536347 | \n", "1.378155 | \n", "-0.338321 | \n", "0.462388 | \n", "0.239599 | \n", "0.098698 | \n", "0.363787 | \n", "0.090794 | \n", "... | \n", "-0.018307 | \n", "0.277838 | \n", "-0.110474 | \n", "0.066928 | \n", "0.128539 | \n", "-0.189115 | \n", "0.133558 | \n", "-0.021053 | \n", "0 | \n", "0.244964 | \n", "
1 | \n", "1.191857 | \n", "0.266151 | \n", "0.166480 | \n", "0.448154 | \n", "0.060018 | \n", "-0.082361 | \n", "-0.078803 | \n", "0.085102 | \n", "-0.255425 | \n", "-0.166974 | \n", "... | \n", "-0.225775 | \n", "-0.638672 | \n", "0.101288 | \n", "-0.339846 | \n", "0.167170 | \n", "0.125895 | \n", "-0.008983 | \n", "0.014724 | \n", "0 | \n", "-0.342475 | \n", "
2 | \n", "-1.358354 | \n", "-1.340163 | \n", "1.773209 | \n", "0.379780 | \n", "-0.503198 | \n", "1.800499 | \n", "0.791461 | \n", "0.247676 | \n", "-1.514654 | \n", "0.207643 | \n", "... | \n", "0.247998 | \n", "0.771679 | \n", "0.909412 | \n", "-0.689281 | \n", "-0.327642 | \n", "-0.139097 | \n", "-0.055353 | \n", "-0.059752 | \n", "0 | \n", "1.160686 | \n", "
3 | \n", "-0.966272 | \n", "-0.185226 | \n", "1.792993 | \n", "-0.863291 | \n", "-0.010309 | \n", "1.247203 | \n", "0.237609 | \n", "0.377436 | \n", "-1.387024 | \n", "-0.054952 | \n", "... | \n", "-0.108300 | \n", "0.005274 | \n", "-0.190321 | \n", "-1.175575 | \n", "0.647376 | \n", "-0.221929 | \n", "0.062723 | \n", "0.061458 | \n", "0 | \n", "0.140534 | \n", "
4 | \n", "-1.158233 | \n", "0.877737 | \n", "1.548718 | \n", "0.403034 | \n", "-0.407193 | \n", "0.095921 | \n", "0.592941 | \n", "-0.270533 | \n", "0.817739 | \n", "0.753074 | \n", "... | \n", "-0.009431 | \n", "0.798278 | \n", "-0.137458 | \n", "0.141267 | \n", "-0.206010 | \n", "0.502292 | \n", "0.219422 | \n", "0.215153 | \n", "0 | \n", "-0.073403 | \n", "
5 rows × 30 columns
\n", "